From 276d805bf066f0730427342ce347ec85da44ed23 Mon Sep 17 00:00:00 2001 From: ncave <777696+ncave@users.noreply.github.com> Date: Thu, 19 Oct 2023 14:57:54 -0700 Subject: [PATCH] Updated fable-standalone to latest FCS --- build_old.fsx | 892 ++ src/Fable.Transforms/Dart/Replacements.fs | 15 + src/Fable.Transforms/Python/Replacements.fs | 17 + src/Fable.Transforms/Replacements.fs | 15 + src/Fable.Transforms/Rust/Replacements.fs | 15 + src/fable-standalone/src/Lexer.fs | 2 +- .../test/bench-compiler/bench-compiler.fsproj | 2 +- .../test/bench-compiler/global.json | 6 - src/fcs-fable/FSStrings.fs | 6 + src/fcs-fable/System.Collections.fs | 127 +- src/fcs-fable/codegen/FSComp.fs | 101 +- src/fcs-fable/codegen/codegen.fsproj | 16 +- src/fcs-fable/codegen/illex.fs | 130 +- src/fcs-fable/codegen/illex.fsi | 7 + src/fcs-fable/codegen/ilpars.fs | 529 +- src/fcs-fable/codegen/ilpars.fsi | 7 +- src/fcs-fable/codegen/lex.fs | 2928 ++-- src/fcs-fable/codegen/lex.fsi | 34 + src/fcs-fable/codegen/pars.fs | 11812 +++++++++------- src/fcs-fable/codegen/pars.fsi | 26 +- src/fcs-fable/codegen/pplex.fs | 79 +- src/fcs-fable/codegen/pplex.fsi | 10 + src/fcs-fable/codegen/pppars.fs | 119 +- src/fcs-fable/codegen/pppars.fsi | 5 +- src/fcs-fable/fcs-fable.fsproj | 22 +- src/fcs-fable/service_slim.fs | 16 +- src/fcs-fable/src/Compiler/AbstractIL/il.fs | 70 +- src/fcs-fable/src/Compiler/AbstractIL/il.fsi | 59 +- .../src/Compiler/AbstractIL/illex.fsl | 11 +- .../src/Compiler/AbstractIL/ilmorph.fs | 44 +- .../src/Compiler/AbstractIL/ilmorph.fsi | 4 +- .../src/Compiler/AbstractIL/ilpars.fsy | 14 - .../src/Compiler/AbstractIL/ilread.fs | 22 +- .../src/Compiler/AbstractIL/ilreflect.fs | 14 +- .../src/Compiler/AbstractIL/ilwrite.fs | 24 +- .../src/Compiler/AbstractIL/ilwrite.fsi | 1 + src/fcs-fable/src/Compiler/AbstractIL/ilx.fs | 33 +- .../Compiler/Checking/AttributeChecking.fs | 154 +- .../Checking/CheckComputationExpressions.fs | 71 +- .../Compiler/Checking/CheckDeclarations.fs | 708 +- .../src/Compiler/Checking/CheckExpressions.fs | 579 +- .../Compiler/Checking/CheckExpressions.fsi | 4 +- .../Compiler/Checking/CheckFormatStrings.fs | 68 +- .../Checking/CheckIncrementalClasses.fs | 293 +- .../Checking/CheckIncrementalClasses.fsi | 43 +- .../src/Compiler/Checking/CheckPatterns.fs | 75 +- .../Checking/CheckRecordSyntaxHelpers.fs | 56 +- .../Checking/CheckRecordSyntaxHelpers.fsi | 1 + .../src/Compiler/Checking/ConstraintSolver.fs | 336 +- .../Compiler/Checking/ConstraintSolver.fsi | 4 +- .../src/Compiler/Checking/FindUnsolved.fs | 293 +- .../src/Compiler/Checking/InfoReader.fs | 2 +- .../src/Compiler/Checking/MethodCalls.fs | 26 +- .../src/Compiler/Checking/MethodOverrides.fs | 2 +- .../src/Compiler/Checking/NameResolution.fs | 296 +- .../src/Compiler/Checking/NameResolution.fsi | 14 +- .../src/Compiler/Checking/NicePrint.fs | 352 +- .../src/Compiler/Checking/NicePrint.fsi | 5 + .../Checking/PatternMatchCompilation.fs | 340 +- .../Checking/PatternMatchCompilation.fsi | 1 - .../Compiler/Checking/PostInferenceChecks.fs | 1322 +- .../Compiler/Checking/PostInferenceChecks.fsi | 40 + .../Compiler/Checking/SignatureConformance.fs | 127 +- .../Checking/SignatureConformance.fsi | 12 +- .../src/Compiler/Checking/SignatureHash.fs | 528 + .../src/Compiler/Checking/SignatureHash.fsi | 16 + .../src/Compiler/Checking/TailCallChecks.fs | 834 ++ .../src/Compiler/Checking/TailCallChecks.fsi | 13 + .../src/Compiler/Checking/TypeHierarchy.fs | 73 +- .../src/Compiler/Checking/TypeRelations.fs | 41 +- src/fcs-fable/src/Compiler/Checking/import.fs | 44 +- src/fcs-fable/src/Compiler/Checking/infos.fs | 59 +- src/fcs-fable/src/Compiler/Checking/infos.fsi | 5 + .../src/Compiler/CodeGen/EraseUnions.fs | 254 +- .../src/Compiler/CodeGen/EraseUnions.fsi | 3 +- src/fcs-fable/src/Compiler/CodeGen/IlxGen.fs | 470 +- src/fcs-fable/src/Compiler/CodeGen/IlxGen.fsi | 2 +- .../src/Compiler/CodeGen/IlxGenSupport.fs | 239 + .../src/Compiler/CodeGen/IlxGenSupport.fsi | 24 + .../src/Compiler/Driver/CompilerConfig.fs | 15 +- .../src/Compiler/Driver/CompilerConfig.fsi | 6 + .../Compiler/Driver/CompilerDiagnostics.fs | 30 +- .../src/Compiler/Driver/CompilerImports.fs | 7 +- .../src/Compiler/Driver/CompilerOptions.fs | 47 +- .../src/Compiler/Driver/CreateILModule.fs | 10 +- .../src/Compiler/Driver/FxResolver.fs | 3 +- .../GraphChecking/DependencyResolution.fs | 261 +- .../GraphChecking/DependencyResolution.fsi | 12 +- .../GraphChecking/FileContentMapping.fs | 72 +- .../Driver/GraphChecking/GraphProcessing.fs | 3 +- .../Driver/GraphChecking/TrieMapping.fs | 314 +- .../Driver/GraphChecking/TrieMapping.fsi | 4 +- .../TypeCheckingGraphProcessing.fs | 104 - .../TypeCheckingGraphProcessing.fsi | 17 - .../Compiler/Driver/GraphChecking/Types.fs | 35 +- .../Compiler/Driver/GraphChecking/Types.fsi | 24 +- .../src/Compiler/Driver/OptimizeInputs.fs | 581 +- .../Compiler/Driver/ParseAndCheckInputs.fs | 306 +- .../src/Compiler/Driver/ScriptClosure.fs | 2 +- .../src/Compiler/Driver/StaticLinking.fs | 10 +- .../src/Compiler/Driver/StaticLinking.fsi | 3 +- src/fcs-fable/src/Compiler/Driver/fsc.fs | 80 +- .../Driver/parallel-optimization.drawio.svg | 4 + .../Compiler/Driver/parallel-optimization.md | 15 + src/fcs-fable/src/Compiler/FSComp.txt | 102 +- src/fcs-fable/src/Compiler/FSCompCheck.fsx | 32 + src/fcs-fable/src/Compiler/FSStrings.resx | 10 +- .../Compiler/FSharp.Compiler.Service.fsproj | 54 +- .../src/Compiler/Facilities/BuildGraph.fsi | 2 + .../Compiler/Facilities/CompilerLocation.fs | 2 + .../Compiler/Facilities/DiagnosticsLogger.fs | 94 +- .../Compiler/Facilities/DiagnosticsLogger.fsi | 35 +- .../Compiler/Facilities/LanguageFeatures.fs | 75 +- .../Compiler/Facilities/LanguageFeatures.fsi | 13 + .../Compiler/Facilities/TextLayoutRender.fs | 5 + .../Compiler/Facilities/TextLayoutRender.fsi | 5 + .../src/Compiler/Facilities/prim-lexing.fs | 83 +- .../src/Compiler/Facilities/prim-lexing.fsi | 20 +- .../Interactive/ControlledExecution.fs | 18 +- src/fcs-fable/src/Compiler/Interactive/fsi.fs | 157 +- .../src/Compiler/Optimize/Optimizer.fs | 13 +- .../src/Compiler/Optimize/Optimizer.fsi | 10 + .../Compiler/Service/FSharpCheckerResults.fs | 634 +- .../Compiler/Service/FSharpCheckerResults.fsi | 69 +- .../Service/FSharpParseFileResults.fs | 76 +- .../Service/FSharpParseFileResults.fsi | 9 + .../src/Compiler/Service/FSharpSource.fs | 19 +- .../src/Compiler/Service/FSharpSource.fsi | 4 +- .../src/Compiler/Service/IncrementalBuild.fs | 174 +- .../src/Compiler/Service/IncrementalBuild.fsi | 9 +- src/fcs-fable/src/Compiler/Service/ItemKey.fs | 168 +- .../src/Compiler/Service/ItemKey.fsi | 3 +- .../src/Compiler/Service/QuickParse.fs | 29 +- .../Service/SemanticClassification.fs | 28 +- .../src/Compiler/Service/ServiceAnalysis.fs | 2 +- .../Service/ServiceAssemblyContent.fs | 4 +- .../Service/ServiceDeclarationLists.fs | 27 +- .../Service/ServiceDeclarationLists.fsi | 1 + .../Service/ServiceInterfaceStubGenerator.fs | 9 +- .../src/Compiler/Service/ServiceLexing.fs | 164 +- .../src/Compiler/Service/ServiceLexing.fsi | 10 +- .../src/Compiler/Service/ServiceNavigation.fs | 4 +- .../Service/ServiceParamInfoLocations.fs | 6 +- .../Compiler/Service/ServiceParseTreeWalk.fs | 393 +- .../Compiler/Service/ServiceParseTreeWalk.fsi | 23 + .../Compiler/Service/ServiceParsedInputOps.fs | 615 +- .../Service/ServiceParsedInputOps.fsi | 31 +- .../src/Compiler/Service/ServiceStructure.fs | 27 +- .../Compiler/Service/ServiceXmlDocParser.fs | 7 +- src/fcs-fable/src/Compiler/Service/service.fs | 103 +- .../src/Compiler/Service/service.fsi | 2 +- src/fcs-fable/src/Compiler/Symbols/Exprs.fsi | 3 - .../src/Compiler/Symbols/FSharpDiagnostic.fs | 166 +- .../src/Compiler/Symbols/FSharpDiagnostic.fsi | 118 +- .../src/Compiler/Symbols/SymbolHelpers.fs | 27 +- src/fcs-fable/src/Compiler/Symbols/Symbols.fs | 56 +- .../src/Compiler/Symbols/Symbols.fsi | 9 + .../src/Compiler/SyntaxTree/LexFilter.fs | 1889 +-- .../src/Compiler/SyntaxTree/LexFilter.fsi | 3 +- .../src/Compiler/SyntaxTree/LexHelpers.fs | 16 +- .../src/Compiler/SyntaxTree/LexHelpers.fsi | 16 +- .../src/Compiler/SyntaxTree/ParseHelpers.fs | 103 +- .../src/Compiler/SyntaxTree/ParseHelpers.fsi | 66 +- .../src/Compiler/SyntaxTree/PrettyNaming.fs | 14 +- .../src/Compiler/SyntaxTree/SyntaxTree.fs | 82 +- .../src/Compiler/SyntaxTree/SyntaxTree.fsi | 66 +- .../src/Compiler/SyntaxTree/SyntaxTreeOps.fs | 114 +- .../src/Compiler/SyntaxTree/SyntaxTreeOps.fsi | 10 +- .../src/Compiler/SyntaxTree/SyntaxTrivia.fs | 40 +- .../src/Compiler/SyntaxTree/SyntaxTrivia.fsi | 33 +- .../src/Compiler/SyntaxTree/UnicodeLexing.fs | 17 +- .../src/Compiler/SyntaxTree/UnicodeLexing.fsi | 21 +- .../src/Compiler/SyntaxTree/XmlDoc.fs | 3 +- .../src/Compiler/SyntaxTree/XmlDoc.fsi | 3 +- .../src/Compiler/TypedTree/TcGlobals.fs | 153 +- .../src/Compiler/TypedTree/TypeProviders.fs | 15 +- .../src/Compiler/TypedTree/TypedTree.fs | 158 +- .../src/Compiler/TypedTree/TypedTree.fsi | 62 +- .../src/Compiler/TypedTree/TypedTreeOps.fs | 208 +- .../src/Compiler/TypedTree/TypedTreeOps.fsi | 36 + .../src/Compiler/TypedTree/TypedTreePickle.fs | 142 +- .../src/Compiler/Utilities/FileSystem.fs | 2 + .../src/Compiler/Utilities/FileSystem.fsi | 11 + .../Compiler/Utilities/InternalCollections.fs | 4 +- src/fcs-fable/src/Compiler/Utilities/illib.fs | 36 +- .../src/Compiler/Utilities/illib.fsi | 13 +- src/fcs-fable/src/Compiler/Utilities/lib.fs | 67 +- src/fcs-fable/src/Compiler/Utilities/lib.fsi | 7 - src/fcs-fable/src/Compiler/Utilities/range.fs | 14 + .../src/Compiler/Utilities/range.fsi | 15 + .../src/Compiler/Utilities/sformat.fs | 4 + .../src/Compiler/Utilities/sformat.fsi | 4 + src/fcs-fable/src/Compiler/lex.fsl | 480 +- src/fcs-fable/src/Compiler/pars.fsy | 1490 +- src/fcs-fable/src/Compiler/pplex.fsl | 13 +- src/fcs-fable/src/Compiler/pppars.fsy | 2 - .../src/Compiler/xlf/FSComp.txt.cs.xlf | 299 +- .../src/Compiler/xlf/FSComp.txt.de.xlf | 299 +- .../src/Compiler/xlf/FSComp.txt.es.xlf | 299 +- .../src/Compiler/xlf/FSComp.txt.fr.xlf | 299 +- .../src/Compiler/xlf/FSComp.txt.it.xlf | 299 +- .../src/Compiler/xlf/FSComp.txt.ja.xlf | 299 +- .../src/Compiler/xlf/FSComp.txt.ko.xlf | 299 +- .../src/Compiler/xlf/FSComp.txt.pl.xlf | 299 +- .../src/Compiler/xlf/FSComp.txt.pt-BR.xlf | 299 +- .../src/Compiler/xlf/FSComp.txt.ru.xlf | 299 +- .../src/Compiler/xlf/FSComp.txt.tr.xlf | 299 +- .../src/Compiler/xlf/FSComp.txt.zh-Hans.xlf | 299 +- .../src/Compiler/xlf/FSComp.txt.zh-Hant.xlf | 299 +- .../src/Compiler/xlf/FSStrings.cs.xlf | 10 + .../src/Compiler/xlf/FSStrings.de.xlf | 10 + .../src/Compiler/xlf/FSStrings.es.xlf | 10 + .../src/Compiler/xlf/FSStrings.fr.xlf | 10 + .../src/Compiler/xlf/FSStrings.it.xlf | 10 + .../src/Compiler/xlf/FSStrings.ja.xlf | 10 + .../src/Compiler/xlf/FSStrings.ko.xlf | 10 + .../src/Compiler/xlf/FSStrings.pl.xlf | 10 + .../src/Compiler/xlf/FSStrings.pt-BR.xlf | 10 + .../src/Compiler/xlf/FSStrings.ru.xlf | 10 + .../src/Compiler/xlf/FSStrings.tr.xlf | 10 + .../src/Compiler/xlf/FSStrings.zh-Hans.xlf | 10 + .../src/Compiler/xlf/FSStrings.zh-Hant.xlf | 10 + .../test/bench/fcs-fable-bench.fsproj | 6 +- src/fcs-fable/test/fcs-fable-test.fsproj | 4 +- 224 files changed, 25760 insertions(+), 14486 deletions(-) create mode 100644 build_old.fsx delete mode 100644 src/fable-standalone/test/bench-compiler/global.json create mode 100644 src/fcs-fable/codegen/illex.fsi create mode 100644 src/fcs-fable/codegen/lex.fsi create mode 100644 src/fcs-fable/codegen/pplex.fsi create mode 100644 src/fcs-fable/src/Compiler/Checking/SignatureHash.fs create mode 100644 src/fcs-fable/src/Compiler/Checking/SignatureHash.fsi create mode 100644 src/fcs-fable/src/Compiler/Checking/TailCallChecks.fs create mode 100644 src/fcs-fable/src/Compiler/Checking/TailCallChecks.fsi create mode 100644 src/fcs-fable/src/Compiler/CodeGen/IlxGenSupport.fs create mode 100644 src/fcs-fable/src/Compiler/CodeGen/IlxGenSupport.fsi delete mode 100644 src/fcs-fable/src/Compiler/Driver/GraphChecking/TypeCheckingGraphProcessing.fs delete mode 100644 src/fcs-fable/src/Compiler/Driver/GraphChecking/TypeCheckingGraphProcessing.fsi create mode 100644 src/fcs-fable/src/Compiler/Driver/parallel-optimization.drawio.svg create mode 100644 src/fcs-fable/src/Compiler/Driver/parallel-optimization.md create mode 100644 src/fcs-fable/src/Compiler/FSCompCheck.fsx diff --git a/build_old.fsx b/build_old.fsx new file mode 100644 index 0000000000..a50eb15941 --- /dev/null +++ b/build_old.fsx @@ -0,0 +1,892 @@ +#load "src/Fable.PublishUtils/PublishUtils.fs" + +open System +open System.Text.RegularExpressions +open PublishUtils + +// ncave FCS fork +let FCS_REPO = "https://github.com/ncave/fsharp" +let FCS_REPO_LOCAL = "../fsharp" +let FCS_REPO_FABLE_BRANCH = "fable" +let FCS_REPO_SERVICE_SLIM_BRANCH = "service_slim" + +let BUILD_ARGS = + fsi.CommandLineArgs + |> Array.skip 1 + |> List.ofArray + +let BUILD_ARGS_LOWER = + BUILD_ARGS + |> List.map (fun x -> x.ToLower()) + +module Util = + let cleanDirs dirs = + for dir in dirs do + printfn $"Clean {dir}" + removeDirRecursive dir + + // TODO: move to PublishUtils.fs ? + let copyFiles sourceDir searchPattern destDir = + printfn $"Copy {sourceDir searchPattern} to {destDir}" + for source in IO.Directory.GetFiles(sourceDir, searchPattern) do + let fileName = IO.Path.GetFileName(source) + let target = destDir fileName + IO.File.Copy(source, target, true) + + let resolveDir dir = + __SOURCE_DIRECTORY__ dir + + let updateVersionsInFableTransforms compilerVersion (libraryVersions: (string * string) list) = + let mutable updated = Set.empty + + let replaceVersion (lang: string option) version fileContent = + let prefix = + match lang with + | None -> "" + | Some lang -> $"{lang.ToUpperInvariant()}_LIBRARY_" + + Regex.Replace( + fileContent, + $@"^(\s*)let \[] {prefix}VERSION = ""(.*?)""", + (fun (m: Match) -> + match lang with + | Some lang when m.Groups[2].Value <> version -> + updated <- Set.add lang updated + | _ -> () + m.Groups[1].Value + $"let [] {prefix}VERSION = \"{version}\"" + ), + RegexOptions.Multiline) + + let filePath = "src/Fable.Transforms/Global/Compiler.fs" + readFile filePath + |> replaceVersion None compilerVersion + |> List.foldBack (fun (lang, version) fileContent -> + replaceVersion (Some lang) version fileContent) libraryVersions + |> writeFile filePath + + updated + + let updatePkgVersionInFsproj projFile version = + readFile projFile + |> replaceRegex Publish.NUGET_PACKAGE_VERSION (fun m -> + m.Groups[1].Value + version + m.Groups[3].Value) + |> writeFile projFile + + let runTSLint projectDir = + run ("npm run tslint -- --project " + projectDir) + + let runTypeScript projectDir = + run ("npm run tsc -- --project " + projectDir) + + let runTypeScriptWithArgs projectDir args = + run ("npm run tsc -- --project " + projectDir + " " + String.concat " " args) + + let runFableWithArgs projectDir args = + run ("dotnet run -c Release --project src/Fable.Cli -- " + projectDir + " " + String.concat " " args) + + let watchFableWithArgs projectDir args = + run ("dotnet watch --project src/Fable.Cli run -- " + projectDir + " --cwd ../.. " + String.concat " " args) + + let runFableWithArgsInDirAs release projectDir args = + let cliDir = resolveDir "src/Fable.Cli" + let cliArgs = args |> String.concat " " + let cliCmd = $"""dotnet run {if release then "-c Release" else ""} --project {cliDir} -- {cliArgs}""" + runInDir (resolveDir projectDir) cliCmd + + let runFableWithArgsInDir projectDir args = + runFableWithArgsInDirAs true projectDir args + + let runFableWithArgsAsync projectDir args = + runAsync ("dotnet run -c Release --project src/Fable.Cli -- " + projectDir + " " + String.concat " " args) + + let runNpx command args = + run ("npx " + command + " " + (String.concat " " args)) + + let runNpmScript script args = + run ("npm run " + script + " -- " + (String.concat " " args)) + + let runNpmScriptAsync script args = + runAsync ("npm run " + script + " -- " + (String.concat " " args)) + + let runFable projectDir = + runFableWithArgs projectDir [] + + let runMocha testDir = + runNpmScript "mocha" [$"{testDir} --reporter dot -t 10000"] + +open Util + +module Unused = + let downloadAndExtractTo (url: string) (targetDir: string) = + $"npx download --extract --out %s{targetDir} \"%s{url}\"" |> run + + let coverage() = + // report converter + // https://github.com/danielpalme/ReportGenerator + // dotnet tool install dotnet-reportgenerator-globaltool --tool-path tools + if not (pathExists "./bin/tools/reportgenerator") && not (pathExists "./bin/tools/reportgenerator.exe") then + runInDir "." "dotnet tool install dotnet-reportgenerator-globaltool --tool-path bin/tools" + let reportGen = + if pathExists "./bin/tools/reportgenerator" then "bin/tools/reportgenerator" + else "bin\\tools\\reportgenerator.exe" + + // if not (pathExists "build/fable-library") then + // buildLibrary() + + cleanDirs ["build/tests"] + runFable "tests" + + // JS + run "npx nyc mocha build/tests --require source-map-support/register --reporter dot -t 10000" + runInDir "." (reportGen + " \"-reports:build/coverage/nyc/lcov.info\" -reporttypes:Html \"-targetdir:build/coverage/nyc/html\" ") + + // .NET + //runInDir "tests/Main" "dotnet build /t:Collect_Coverage" + cleanDirs ["build/coverage/netcoreapp2.0/out"] + runInDir "." (reportGen + " \"-reports:build/coverage/netcoreapp2.0/coverage.xml\" -reporttypes:Html \"-targetdir:build/coverage/netcoreapp2.0/html\" ") + +// TARGETS --------------------------- + +// let buildLibraryJsWithOptions (opts: {| watch: bool |}) = +// let baseDir = __SOURCE_DIRECTORY__ + +// let projectDir = baseDir "src/fable-library" +// let buildDir = baseDir "build/fable-library" +// let fableOpts = [ +// "--outDir " + buildDir +// "--fableLib " + buildDir +// "--exclude Fable.Core" +// "--define FX_NO_BIGINT" +// "--define FABLE_LIBRARY" +// if opts.watch then "--watch" +// ] + +// cleanDirs [buildDir] +// runInDir baseDir "npm install" +// makeDirRecursive buildDir + +// copyFile (projectDir "package.json") buildDir + +// if opts.watch then +// Async.Parallel [ +// runNpmScriptAsync "tsc" [ +// "--project " + projectDir +// "--watch" +// ] +// runFableWithArgsAsync projectDir fableOpts +// ] |> runAsyncWorkflow +// else +// runTSLint projectDir +// runTypeScript projectDir +// runFableWithArgs projectDir fableOpts +// removeDirRecursive (buildDir ".fable") + +// let buildLibraryJs() = buildLibraryJsWithOptions {| watch = false |} + +// let buildLibraryJsIfNotExists() = +// if not (pathExists (__SOURCE_DIRECTORY__ "build/fable-library")) then +// buildLibraryJs() + +let buildLibraryTs() = + let baseDir = __SOURCE_DIRECTORY__ + let sourceDir = "./src/fable-library" + let buildDirTs = "./build/fable-library-ts" + let buildDirJs = "./build/fable-library" + + cleanDirs [buildDirTs; buildDirJs] + runInDir baseDir "npm install" + + runFableWithArgs sourceDir [ + "--outDir " + buildDirTs + "--fableLib " + buildDirTs + "--lang TypeScript" + "--typedArrays false" + "--exclude Fable.Core" + "--define FX_NO_BIGINT" + "--define FABLE_LIBRARY" + ] + + copyFiles sourceDir "*.ts" buildDirTs + copyFiles (sourceDir "ts") "*.json" buildDirTs + copyDirRecursive (sourceDir "lib") (buildDirTs "lib") + copyFile (sourceDir "package.json") buildDirTs + + // runTSLint buildDirTs + runTypeScriptWithArgs buildDirTs ["--outDir " + buildDirJs] + copyFile (buildDirTs "lib/big.d.ts") (buildDirJs "lib/big.d.ts") + copyFile (buildDirTs "package.json") buildDirJs + + copyFile (sourceDir "README.md") buildDirJs + +let buildLibraryTsIfNotExists() = + if not (pathExists (__SOURCE_DIRECTORY__ "build/fable-library-ts")) then + buildLibraryTs() + +let buildLibraryPy() = + let libraryDir = "./src/fable-library-py" + let projectDir = libraryDir "fable_library" + let buildDirPy = "./build/fable-library-py" + + cleanDirs [buildDirPy] + + runFableWithArgs projectDir [ + "--outDir " + buildDirPy "fable_library" + "--fableLib " + buildDirPy "fable_library" + "--lang Python" + "--exclude Fable.Core" + "--define FABLE_LIBRARY" + ] + + // Copy python related files from projectDir to buildDir + copyFiles libraryDir "*" buildDirPy + copyFiles projectDir "*.py" (buildDirPy "fable_library") + + // Fix issues with Fable .fsproj not supporting links + copyDirNonRecursive (buildDirPy "fable_library/fable-library") (buildDirPy "fable_library") + removeDirRecursive (buildDirPy "fable_library/fable-library") + +let buildLibraryPyIfNotExists() = + let baseDir = __SOURCE_DIRECTORY__ + if not (pathExists (baseDir "build/fable-library-py")) then + buildLibraryPy() + +let buildLibraryRust() = + let libraryDir = "src/fable-library-rust" + let sourceDir = libraryDir "src" + let buildDir = "build/fable-library-rust" + let outDir = buildDir "src" + let fableLib = "." + + cleanDirs [buildDir] + + runFableWithArgsInDir sourceDir [ + "--outDir " + resolveDir outDir + "--fableLib " + fableLib + "--lang Rust" + "--exclude Fable.Core" + "--define FABLE_LIBRARY" + "--noCache" + ] + + copyFiles libraryDir "*.toml" buildDir + copyFiles sourceDir "*.rs" outDir + copyDirRecursive (libraryDir "vendored") (buildDir "vendored") + + runInDir buildDir "cargo fmt" + runInDir buildDir "cargo fix --allow-no-vcs" + runInDir buildDir "cargo build" + +let buildLibraryRustIfNotExists() = + if not (pathExists (__SOURCE_DIRECTORY__ "build/fable-library-rust")) then + buildLibraryRust() + +let buildLibraryDart(clean: bool) = + let sourceDir = resolveDir "src/fable-library-dart" + let buildDir = resolveDir "build/fable-library-dart" + + if clean then + cleanDirs [buildDir] + makeDirRecursive buildDir + copyFiles sourceDir "pubspec.*" buildDir + copyFiles sourceDir "analysis_options.yaml" buildDir + + copyFiles sourceDir "*.dart" buildDir + + runFableWithArgsInDir sourceDir [ + "--outDir " + buildDir + "--fableLib " + buildDir + "--lang Dart" + "--exclude Fable.Core" + "--define FABLE_LIBRARY" + if clean then "--noCache" + ] + +let buildLibraryDartIfNotExists() = + if not (pathExists (__SOURCE_DIRECTORY__ "build/fable-library-dart")) then + buildLibraryDart(true) + +// Like testStandalone() but doesn't create bundles/packages for fable-standalone & friends +// Mainly intended for CI +let testStandaloneFast() = + runFableWithArgs "src/fable-standalone/src" [ + "--noCache" + ] + + runFableWithArgs "src/fable-compiler-js/src" [ + "--exclude Fable.Core" + "--define LOCAL_TEST" + ] + + let fableJs = "./src/fable-compiler-js/src/app.fs.js" + let testProj = "tests/Js/Main/Fable.Tests.fsproj" + let buildDir = "build/tests/Standalone" + run $"node {fableJs} {testProj} {buildDir}" + runMocha buildDir + +let buildWorker (opts: {| minify: bool; watch: bool |}) = + printfn "Building worker%s..." (if opts.minify then "" else " (no minification)") + + let projectDir = "src/fable-standalone/src" + let buildDir = "build/fable-standalone" + let distDir = "src/fable-standalone/dist" + + runFableWithArgs (projectDir + "/Worker") [ + "--outDir " + buildDir + "/worker" + ] + + let rollupTarget = + match opts.minify with + | true -> buildDir "worker.js" + | false -> distDir "worker.min.js" + + // make standalone worker dist + runNpmScript "rollup" [$"""{buildDir}/worker/Worker.js -o {rollupTarget} --format iife"""] + + if opts.minify then + // runNpx "webpack" [sprintf "--entry ./%s/worker.js --output ./%s/worker.min.js --config ./%s/../worker.config.js" buildDir distDir projectDir] + runNpmScript "terser" [$"{buildDir}/worker.js -o {distDir}/worker.min.js --mangle --compress"] + + // Put fable-library files next to bundle + printfn "Copying fable-library..." + buildLibraryTsIfNotExists() + let libraryDir = "build/fable-library" + let libraryTarget = distDir "fable-library" + copyDirRecursive libraryDir libraryTarget + +let buildStandalone (opts: {| minify: bool; watch: bool |}) = + buildLibraryTs() + + printfn "Building standalone%s..." (if opts.minify then "" else " (no minification)") + + let projectDir = "src/fable-standalone/src" + let buildDir = "build/fable-standalone" + let distDir = "src/fable-standalone/dist" + + let rollupTarget = + match opts.watch, opts.minify with + | true, _ -> + match BUILD_ARGS with + | _::rollupTarget::_ -> rollupTarget + | _ -> failwith "Pass the bundle output, e.g.: npm run build watch-standalone ../repl3/public/js/repl/bundle.min.js" + | false, true -> buildDir "bundle.js" + | false, false -> distDir "bundle.min.js" + + let rollupArgs = [ + buildDir "bundle/Main.js" + "-o " + rollupTarget + "--format umd" + "--name __FABLE_STANDALONE__" + ] + + // cleanup + if not opts.watch then + cleanDirs [buildDir; distDir] + makeDirRecursive distDir + + // build standalone bundle + runFableWithArgs projectDir [ + "--outDir " + buildDir "bundle" + if opts.watch then + "--watch" + "--run rollup" + yield! rollupArgs + "--watch" + ] + + // make standalone bundle dist + runNpmScript "rollup" rollupArgs + if opts.minify then + runNpmScript "terser" [ + buildDir "bundle.js" + "-o " + distDir "bundle.min.js" + "--mangle" + "--compress" + ] + + // build standalone worker + buildWorker opts + + // print bundle size + fileSizeInBytes (distDir "bundle.min.js") / 1000. |> printfn "Bundle size: %fKB" + fileSizeInBytes (distDir "worker.min.js") / 1000. |> printfn "Worker size: %fKB" + +let buildCompilerJs(minify: bool) = + let projectDir = "src/fable-compiler-js/src" + let buildDir = "build/fable-compiler-js" + let distDir = "src/fable-compiler-js/dist" + + if not (pathExists "build/fable-standalone") then + buildStandalone {|minify=minify; watch=false|} + + cleanDirs [buildDir; distDir] + makeDirRecursive distDir + + runFableWithArgs projectDir [ + "--outDir " + buildDir + "--exclude Fable.Core" + ] + + let rollupTarget = if minify then distDir "app.js" else distDir "app.min.js" + run $"npx rollup {buildDir}/app.js -o {rollupTarget} --format umd --name Fable" + if minify then + run $"npx terser {distDir}/app.js -o {distDir}/app.min.js --mangle --compress" + + // Copy fable-library + copyDirRecursive ("build/fable-library") (distDir "fable-library") + // Copy fable-metadata + copyDirRecursive ("src/fable-metadata/lib") (distDir "fable-metadata") + +let testStandalone(minify) = + let fableDir = "src/fable-compiler-js" + let buildDir = "build/tests/Standalone" + + if not (pathExists "build/fable-compiler-js") then + buildCompilerJs(minify) + + cleanDirs [buildDir] + + // Link fable-compiler-js to local packages + runInDir fableDir "npm link ../fable-metadata" + runInDir fableDir "npm link ../fable-standalone" + + // Test fable-compiler-js locally + run $"node {fableDir} tests/Js/Main/Fable.Tests.fsproj {buildDir}" + runMocha buildDir + + // // Another local fable-compiler-js test + // runInDir (fableDir "test") "node .. test_script.fsx" + // runInDir (fableDir "test") "node test_script.fsx.js" + + // Unlink local packages after test + runInDir fableDir "npm unlink ../fable-metadata && cd ../fable-metadata && npm unlink" + runInDir fableDir "npm unlink ../fable-standalone && cd ../fable-standalone && npm unlink" + +let testReact() = + runFableWithArgs "tests/React" ["--noCache"] + runInDir "tests/React" "npm i && npm test" + +let compileAndRunTestsWithMocha clean projectName = + let projectDir = "tests/Js/" + projectName + let buildDir = "build/tests/Js/" + projectName + + if clean then + cleanDirs [buildDir] + + runFableWithArgs projectDir [ + "--outDir " + buildDir + "--exclude Fable.Core" + ] + + runMocha buildDir + +let testProjectConfigs() = + [ "tests/Integration/ProjectConfigs/DebugWithExtraDefines", "Debug" + "tests/Integration/ProjectConfigs/CustomConfiguration", "Test" + "tests/Integration/ProjectConfigs/ReleaseNoExtraDefines", String.Empty + "tests/Integration/ProjectConfigs/ConsoleApp", String.Empty + ] + |> List.iter (fun (projectDir, configuration) -> + let buildDir = "build/"+ projectDir + + cleanDirs [ buildDir ] + runFableWithArgs projectDir [ + "--outDir " + buildDir + "--exclude Fable.Core" + if not(String.IsNullOrEmpty configuration) then + "--configuration " + configuration + ] + + runMocha buildDir + ) + +let testIntegration() = + buildLibraryTsIfNotExists() + runInDir "tests/Integration/Integration" "dotnet run -c Release" + runInDir "tests/Integration/Compiler" "dotnet run -c Release" + testProjectConfigs() + +let testJs() = + buildLibraryTsIfNotExists() + + compileAndRunTestsWithMocha true "Main" + + runInDir "tests/Js/Main" "dotnet run -c Release" + + // Adaptive tests must go in a different project to avoid conflicts with Queue shim, see #2559 + compileAndRunTestsWithMocha true "Adaptive" + + testReact() + + if envVarOrNone "CI" |> Option.isSome then + testStandaloneFast() + +let testTypeScript isWatch = + buildLibraryTsIfNotExists() + + let projectDir = "tests/TypeScript" + let buildDir = "build/tests/TypeScript" + let buildDir2 = "build/tests/TypeScriptCompiled" + + cleanDirs [buildDir; buildDir2] + + copyFile (projectDir "tsconfig.json") (buildDir "tsconfig.json") + + runFableWithArgsInDirAs (not isWatch) "." [ + projectDir + "--lang ts" + "--outDir " + buildDir + "--exclude Fable.Core" + if isWatch then + "--watch" + $"--runWatch npm run test-ts" + ] + + runNpmScript "test-ts" [] + +let testPython() = + buildLibraryPyIfNotExists() // NOTE: fable-library-py needs to be built separately. + + let projectDir = "tests/Python" + let buildDir = "build/tests/Python" + + cleanDirs [buildDir] + runInDir projectDir "dotnet test -c Release" + runFableWithArgs projectDir [ + "--outDir " + buildDir + "--exclude Fable.Core" + "--lang Python" + ] + + runInDir buildDir "poetry run pytest -x" + // Testing in Windows + // runInDir buildDir "python -m pytest -x" + +type RustTestMode = + | NoStd + | Default + | Threaded + +let testRust testMode = + // buildLibraryRustIfNotExists() + buildLibraryRust() + + let testAstDir = "src/Fable.Transforms/Rust/AST/Tests" + let projectDir = "tests/Rust" + let buildDir = "build/tests/Rust" + + // limited cleanup to reduce IO churn, speed up rebuilds, + // and save the ssd (target folder can get huge) + cleanDirs [buildDir "src"] + cleanDirs [buildDir "tests"] + cleanDirs [buildDir ".fable"] + + // copy rust only tests files (these must be present when running dotnet test as import expr tests for file presence) + makeDirRecursive (buildDir "tests" "src") + copyFiles (projectDir "tests/src") "*.rs" (buildDir "tests/src") + + // run .NET tests + runInDir testAstDir "dotnet test -c Release" + runInDir projectDir "dotnet test -c Release" + + // build Fable Rust tests + runFableWithArgs projectDir [ + "--outDir " + buildDir + "--exclude Fable.Core" + "--lang Rust" + "--fableLib fable-library-rust" + "--noCache" + if testMode = NoStd then "--define NO_STD_NO_EXCEPTIONS" + ] + + // copy project file + copyFile (projectDir "Cargo.toml") buildDir + + // rustfmt all tests + runInDir buildDir "cargo fmt" + // runInDir buildDir "cargo fix --allow-no-vcs" + runInDir buildDir "cargo build" + + // run Fable Rust tests + match testMode with + | Default -> + runInDir buildDir "cargo test" + | NoStd -> + runInDir buildDir "cargo test --features no_std" + | Threaded -> + runInDir buildDir "cargo test --features threaded" + +let testDart isWatch = + if not (pathExists "build/fable-library-dart") then + buildLibraryDart(true) + + let buildDir = resolveDir "build/tests/Dart" + let sourceDir = resolveDir "tests/Dart" + + cleanDirs [buildDir] + makeDirRecursive buildDir + copyFiles sourceDir "pubspec.*" buildDir + copyFiles sourceDir "analysis_options.yaml" buildDir + copyFiles sourceDir "*.dart" buildDir + + runFableWithArgsInDirAs (not isWatch) sourceDir [ + "src" + "--outDir " + (buildDir "src") + "--exclude Fable.Core" + "--lang Dart" + "--noCache" + if isWatch then + "--watch" + $"--runWatch dart test {buildDir}/main.dart" + ] + runInDir buildDir "dart test main.dart" + +let buildLocalPackageWith pkgDir pkgCommand fsproj action = + let version = Publish.loadReleaseVersion "src/Fable.Cli" + "-local-build-" + DateTime.Now.ToString("yyyyMMdd-HHmm") + action version + updatePkgVersionInFsproj fsproj version + run $"dotnet pack {fsproj} -p:Pack=true -c Release -o {pkgDir}" + + // Return install command + $"""dotnet {pkgCommand} --version "{version}" --add-source {fullPath pkgDir}""" + +let buildLocalPackage pkgDir = + buildLocalPackageWith pkgDir + "tool install fable" + (resolveDir "src/Fable.Cli/Fable.Cli.fsproj") (fun version -> + updateVersionsInFableTransforms version [] |> ignore + buildLibraryTs()) + +let testRepos() = + let repos = [ + "https://github.com/alfonsogarciacaro/FsToolkit.ErrorHandling:update-fable-3", "npm i && npm test" + "https://github.com/fable-compiler/fable-promise:master", "npm i && npm test" + "https://github.com/alfonsogarciacaro/Thoth.Json:nagareyama", "dotnet paket restore && npm i && dotnet fable tests -o tests/bin --run mocha tests/bin" + "https://github.com/alfonsogarciacaro/FSharp.Control.AsyncSeq:nagareyama", "cd tests/fable && npm i && npm test" + "https://github.com/alfonsogarciacaro/Fable.Extras:nagareyama", "dotnet paket restore && npm i && npm test" + "https://github.com/alfonsogarciacaro/Fable.Jester:nagareyama", "npm i && npm test" + "https://github.com/Zaid-Ajaj/Fable.SimpleJson:master", "npm i && npm run test-nagareyama" + ] + + let testDir = tempPath() "fable-repos" + printfn $"Cloning repos to: {testDir}" + + cleanDirs [testDir] + makeDirRecursive testDir + let pkgInstallCmd = buildLocalPackage (testDir "pkg") + + for (repo, command) in repos do + let url, branch = let i = repo.LastIndexOf(":") in repo[..i-1], repo[i+1..] + let name = url[url.LastIndexOf("/") + 1..] + runInDir testDir $"git clone {url} {name}" + let repoDir = testDir name + runInDir repoDir ("git checkout " + branch) + runInDir repoDir "dotnet tool uninstall fable" + runInDir repoDir pkgInstallCmd + runInDir repoDir "dotnet tool restore" + runInDir repoDir command + +let githubRelease() = + match envVarOrNone "GITHUB_USER", envVarOrNone "GITHUB_TOKEN" with + | Some user, Some token -> + try + let version, notes = Publish.loadReleaseVersionAndNotes "src/Fable.Cli" + let notes = notes |> Array.map (fun n -> $"""'{n.Replace("'", @"\'").Replace("`", @"\`")}'""") |> String.concat "," + run $"git commit -am \"Release {version}\" && git push" + runSilent $"""node --eval "require('ghreleases').create({{ user: '{user}', token: '{token}', }}, 'fable-compiler', 'Fable', {{ tag_name: '{version}', name: '{version}', body: [{notes}].join('\n'), }}, (err, res) => {{ if (err != null) {{ console.error(err) }} }})" """ + printfn $"Github release %s{version} created successfully" + with ex -> + printfn $"Github release failed: %s{ex.Message}" + | _ -> failwith "Expecting GITHUB_USER and GITHUB_TOKEN enviromental variables" + +let copyFcsRepo sourceDir = + let targetDir = "src/fcs-fable" + let path1 = "fcs/fcs-fable" + let path2 = "src/Compiler" + cleanDirs [targetDir] + copyDirRecursive (sourceDir path1) targetDir + copyDirRecursive (sourceDir path2) (targetDir path2) + removeFile (targetDir ".gitignore") + let projPath = (targetDir "fcs-fable.fsproj") + let projText = readFile projPath + let projText = + Regex.Replace(projText, + @"(\$\(MSBuildProjectDirectory\)).*?(<\/FSharpSourcesRoot>)", + "$1/src/Compiler$2") + // let projText = + // Regex.Replace(projText, + // @"artifacts\/bin\/FSharp.Core\/Release\/netstandard2.0", + // "lib/fcs") + projText |> writeFile projPath + +let syncFcsRepo() = + // FAKE is giving lots of problems with the dotnet SDK version, ignore it + let cheatWithDotnetSdkVersion dir f = + let path = dir "build.fsx" + let script = readFile path + Regex.Replace(script, @"let dotnetExePath =[\s\S]*DotNetCli\.InstallDotNetSDK", "let dotnetExePath = \"dotnet\" //DotNetCli.InstallDotNetSDK") |> writeFile path + f () + runInDir dir "git reset --hard" + + printfn $"Expecting %s{FCS_REPO} repo to be cloned at %s{FCS_REPO_LOCAL}" + + // TODO: Prompt to reset --hard changes + // service_slim + runInDir FCS_REPO_LOCAL ("git checkout " + FCS_REPO_SERVICE_SLIM_BRANCH) + runInDir FCS_REPO_LOCAL "git pull" + cheatWithDotnetSdkVersion (FCS_REPO_LOCAL "fcs") (fun () -> + runBashOrCmd (FCS_REPO_LOCAL "fcs") "build" "") + copyFile (FCS_REPO_LOCAL "artifacts/bin/FSharp.Compiler.Service/Release/netstandard2.0/FSharp.Compiler.Service.dll") "../fable/lib/fcs/" + copyFile (FCS_REPO_LOCAL "artifacts/bin/FSharp.Compiler.Service/Release/netstandard2.0/FSharp.Compiler.Service.xml") "../fable/lib/fcs/" + copyFile (FCS_REPO_LOCAL "artifacts/bin/FSharp.Compiler.Service/Release/netstandard2.0/FSharp.Core.dll") "../fable/lib/fcs/" + copyFile (FCS_REPO_LOCAL "artifacts/bin/FSharp.Compiler.Service/Release/netstandard2.0/FSharp.Core.xml") "../fable/lib/fcs/" + + // fcs-fable + runInDir FCS_REPO_LOCAL ("git checkout " + FCS_REPO_FABLE_BRANCH) + runInDir FCS_REPO_LOCAL "git pull" + cheatWithDotnetSdkVersion (FCS_REPO_LOCAL "fcs") (fun () -> + runBashOrCmd (FCS_REPO_LOCAL "fcs") "build" "CodeGen.Fable") + copyFcsRepo FCS_REPO_LOCAL + +let packages() = + ["Fable.AST", doNothing + "Fable.Core", doNothing + "Fable.Cli", (fun () -> + // TODO: Add library versions for other languages + let compilerVersion = Publish.loadReleaseVersion "src/Fable.Cli" + let updatedLibs = updateVersionsInFableTransforms compilerVersion [ + "js", getNpmVersion "src/fable-library" + ] + buildLibraryTs() + buildLibraryPy() + buildLibraryRust() + buildLibraryDart true + if updatedLibs.Contains("js") then + pushNpmWithoutReleaseNotesCheck "build/fable-library" + ) + "Fable.PublishUtils", doNothing + "fable-metadata", doNothing + "fable-standalone", fun () -> buildStandalone {|minify=true; watch=false|} + "fable-compiler-js", fun () -> buildCompilerJs true + ] + +let publishPackages restArgs = + let packages = + match List.tryHead restArgs with + | Some pkg -> packages() |> List.filter (fun (name,_) -> name = pkg) + | None -> packages() + for (pkg, buildAction) in packages do + if Char.IsUpper pkg[0] then + let projFile = "src" pkg pkg + ".fsproj" + pushFableNuget projFile ["Pack", "true"] buildAction + else + pushNpm ("src" pkg) buildAction + +let hasFlag flag = + BUILD_ARGS_LOWER |> List.contains flag + +match BUILD_ARGS_LOWER with +// | "check-sourcemaps"::_ -> +// ("src/quicktest/Quicktest.fs", "src/quicktest/bin/Quicktest.js", "src/quicktest/bin/Quicktest.js.map") +// |||> sprintf "nodemon --watch src/quicktest/bin/Quicktest.js --exec 'source-map-visualization --sm=\"%s;%s;%s\"'" +// |> List.singleton |> quicktest +// | "coverage"::_ -> coverage() +| ("test"|"test-js")::_ -> testJs() +| "test-mocha"::_ -> compileAndRunTestsWithMocha true "Main" +| "test-mocha-fast"::_ -> compileAndRunTestsWithMocha false "Main" +| "test-react"::_ -> testReact() +| "test-standalone"::_ -> + let minify = hasFlag "--no-minify" |> not + testStandalone(minify) +| "test-standalone-fast"::_ -> testStandaloneFast() +| "test-configs"::_ -> testProjectConfigs() +| "test-integration"::_ -> testIntegration() +| "test-repos"::_ -> testRepos() +| ("test-ts"|"test-typescript")::_ -> testTypeScript(false) +| ("watch-test-ts"|"watch-test-typescript")::_ -> testTypeScript(true) +| "test-py"::_ -> testPython() +| "test-rust"::_ -> testRust Default +| "test-rust-no_std"::_ -> testRust NoStd +| "test-rust-default"::_ -> testRust Default +| "test-rust-threaded"::_ -> testRust Threaded +| "test-dart"::_ -> testDart(false) +| "watch-test-dart"::_ -> testDart(true) + +| "quicktest"::_ -> + buildLibraryTsIfNotExists() + watchFableWithArgs "src/quicktest" ["--watch --exclude Fable.Core --noCache --runScript"] +| "quicktest-ts"::_ -> + buildLibraryTsIfNotExists() + let srcDir = "src/quicktest" + let outPath = "build/quicktest-ts/Quicktest.fs.js" + // Make sure outPath exists so nodemon doesn't complain + if not(pathExists outPath) then + makeDirRecursive (dirname outPath) + writeFile outPath "" + let runCmd = $"npx concurrently \"tsc -w -p {srcDir} --outDir {dirname outPath}\" \"nodemon -w {outPath} {outPath}\"" + watchFableWithArgs srcDir ["--lang ts --watch --exclude Fable.Core --noCache --run"; runCmd] +| ("quicktest-py"|"quicktest-python")::_ -> + buildLibraryPyIfNotExists() + watchFableWithArgs "src/quicktest-py" ["--lang py --watch --exclude Fable.Core --noCache --runScript"] +| "quicktest-dart"::_ -> + buildLibraryDartIfNotExists() + watchFableWithArgs "src/quicktest-dart" ["--lang dart --watch --exclude Fable.Core --noCache --runScript"] +| ("quicktest-rs"|"quicktest-rust")::_ -> + buildLibraryRustIfNotExists() + watchFableWithArgs "src/quicktest-rust" ["--lang rs -e .rs --watch --exclude Fable.Core --noCache --runScript"] +| "run"::_ -> + buildLibraryTsIfNotExists() + // Don't take args from pattern matching because they're lowered + let restArgs = BUILD_ARGS |> List.skip 1 |> String.concat " " + run $"""dotnet run -c Release --project {resolveDir "src/Fable.Cli"} -- {restArgs}""" + +| "package"::_ -> + let pkgInstallCmd = buildLocalPackage (resolveDir "temp/pkg") + printfn $"\nPackage has been created, use the following command to install it:\n {pkgInstallCmd}\n" +| "package-core"::_ -> + let pkgInstallCmd = buildLocalPackageWith (resolveDir "temp/pkg") "add package Fable.Core" (resolveDir "src/Fable.Core/Fable.Core.fsproj") ignore + printfn $"\nFable.Core package has been created, use the following command to install it:\n {pkgInstallCmd}\n" + +| ("fable-library"|"library")::_ +| ("fable-library-ts"|"library-ts")::_ -> buildLibraryTs() +| ("fable-library-py"|"library-py")::_ -> buildLibraryPy() +| ("fable-library-rust" | "library-rust")::_ -> buildLibraryRust() +| ("fable-library-dart" | "library-dart")::_ -> + let clean = hasFlag "--no-clean" |> not + buildLibraryDart(clean) + +| ("fable-compiler-js"|"compiler-js")::_ -> + let minify = hasFlag "--no-minify" |> not + buildCompilerJs(minify) +| ("fable-standalone"|"standalone")::_ -> + let minify = hasFlag "--no-minify" |> not + buildStandalone {|minify=minify; watch=false|} +| ("fable-worker"|"worker")::_ -> + let minify = hasFlag "--no-minify" |> not + buildWorker {|minify=minify; watch=false|} +| "watch-standalone"::_ -> buildStandalone {|minify=false; watch=true|} + +| "sync-fcs-repo"::_ -> syncFcsRepo() +| "copy-fcs-repo"::_ -> copyFcsRepo FCS_REPO_LOCAL + +| "publish"::restArgs -> publishPackages restArgs +| "github-release"::_ -> + publishPackages [] + githubRelease () + +| _ -> + printfn """Please pass a target name. Examples: + +- Use `test` to run tests: + dotnet fsi build.fsx test + +- Use `package` to build a local package: + dotnet fsi build.fsx package + +- Use `run` to compile a project with development version: + dotnet fsi build.fsx run ../path/to/my/project [Fable options] + +- Use `quicktest` to quickly test development version with src/quicktest project: + dotnet fsi build.fsx quicktest +""" + +printfn "Build finished successfully" diff --git a/src/Fable.Transforms/Dart/Replacements.fs b/src/Fable.Transforms/Dart/Replacements.fs index 781e0311b8..ade97692ed 100644 --- a/src/Fable.Transforms/Dart/Replacements.fs +++ b/src/Fable.Transforms/Dart/Replacements.fs @@ -1305,6 +1305,19 @@ let resizeArrays (com: ICompiler) (ctx: Context) r (t: Type) (i: CallInfo) (this Helper.InstanceCall(ar, "sublist", t, [makeIntConst 0], ?loc=r) |> Some | _ -> None +let collectionExtensions (com: ICompiler) (ctx: Context) r (t: Type) (i: CallInfo) (thisArg: Expr option) (args: Expr list) = + match i.CompiledName, thisArg, args with + | "AddRange", None, [ar; arg] -> + Helper.LibCall(com, "Array", "addRangeInPlace", t, [arg; ar], genArgs=i.GenericArgs, ?loc=r) |> Some + | "InsertRange", None, [ar; idx; arg] -> + Helper.InstanceCall(ar, "insertAll", t, [idx; arg], ?loc=r) |> Some + | _ -> None + +let readOnlySpans (com: ICompiler) (ctx: Context) r (t: Type) (i: CallInfo) (thisArg: Expr option) (args: Expr list) = + match i.CompiledName, args with + | "op_Implicit", [arg] -> arg |> Some + | _ -> None + let tuples (com: ICompiler) (ctx: Context) r (t: Type) (i: CallInfo) (thisArg: Expr option) (args: Expr list) = let changeKind isStruct = function | Value(NewTuple(args, _), r)::_ -> Value(NewTuple(args, isStruct), r) |> Some @@ -2688,6 +2701,8 @@ let private replacedModules = "System.Collections.IList", resizeArrays Types.icollectionGeneric, resizeArrays Types.icollection, resizeArrays + "System.Collections.Generic.CollectionExtensions", collectionExtensions + "System.ReadOnlySpan`1", readOnlySpans Types.hashset, hashSets Types.stack, bclType Types.queue, bclType diff --git a/src/Fable.Transforms/Python/Replacements.fs b/src/Fable.Transforms/Python/Replacements.fs index 56a1c41af6..b246e8b5ee 100644 --- a/src/Fable.Transforms/Python/Replacements.fs +++ b/src/Fable.Transforms/Python/Replacements.fs @@ -1775,6 +1775,21 @@ let resizeArrays (com: ICompiler) (ctx: Context) r (t: Type) (i: CallInfo) (this |> Some | _ -> None +let collectionExtensions (com: ICompiler) (ctx: Context) r (t: Type) (i: CallInfo) (thisArg: Expr option) (args: Expr list) = + match i.CompiledName, thisArg, args with + | "AddRange", None, [ar; arg] -> + Helper.LibCall(com, "Array", "addRangeInPlace", t, [ arg; ar ], ?loc = r) + |> Some + | "InsertRange", None, [ar; idx; arg] -> + Helper.LibCall(com, "array", "insert_range_in_place", t, [ idx; arg; ar ], ?loc = r) + |> Some + | _ -> None + +let readOnlySpans (com: ICompiler) (ctx: Context) r (t: Type) (i: CallInfo) (thisArg: Expr option) (args: Expr list) = + match i.CompiledName, args with + | "op_Implicit", [arg] -> arg |> Some + | _ -> None + let nativeArrayFunctions = dict [| //"Exists", "some" //"Filter", "filter" @@ -3796,6 +3811,8 @@ let private replacedModules = "System.Collections.IList", resizeArrays Types.icollectionGeneric, resizeArrays Types.icollection, resizeArrays + "System.Collections.Generic.CollectionExtensions", collectionExtensions + "System.ReadOnlySpan`1", readOnlySpans Types.hashset, hashSets Types.stack, bclType Types.queue, bclType diff --git a/src/Fable.Transforms/Replacements.fs b/src/Fable.Transforms/Replacements.fs index 1630b9b302..ad406ef2e7 100644 --- a/src/Fable.Transforms/Replacements.fs +++ b/src/Fable.Transforms/Replacements.fs @@ -1507,6 +1507,19 @@ let resizeArrays (com: ICompiler) (ctx: Context) r (t: Type) (i: CallInfo) (this Helper.InstanceCall(ar, "slice", t, args, ?loc=r) |> Some | _ -> None +let collectionExtensions (com: ICompiler) (ctx: Context) r (t: Type) (i: CallInfo) (thisArg: Expr option) (args: Expr list) = + match i.CompiledName, thisArg, args with + | "AddRange", None, [ar; arg] -> + Helper.LibCall(com, "Array", "addRangeInPlace", t, [arg; ar], ?loc=r) |> Some + | "InsertRange", None, [ar; idx; arg] -> + Helper.LibCall(com, "Array", "insertRangeInPlace", t, [idx; arg; ar], ?loc=r) |> Some + | _ -> None + +let readOnlySpans (com: ICompiler) (ctx: Context) r (t: Type) (i: CallInfo) (thisArg: Expr option) (args: Expr list) = + match i.CompiledName, args with + | "op_Implicit", [arg] -> arg |> Some + | _ -> None + let nativeArrayFunctions = dict [| "Exists", "some" "Filter", "filter" @@ -2920,6 +2933,8 @@ let private replacedModules = "System.Collections.IList", resizeArrays Types.icollectionGeneric, resizeArrays Types.icollection, resizeArrays + "System.Collections.Generic.CollectionExtensions", collectionExtensions + "System.ReadOnlySpan`1", readOnlySpans Types.hashset, hashSets Types.stack, bclType Types.queue, bclType diff --git a/src/Fable.Transforms/Rust/Replacements.fs b/src/Fable.Transforms/Rust/Replacements.fs index 7490b7e2b9..493d0d6b12 100644 --- a/src/Fable.Transforms/Rust/Replacements.fs +++ b/src/Fable.Transforms/Rust/Replacements.fs @@ -1535,6 +1535,19 @@ let resizeArrays (com: ICompiler) (ctx: Context) r (t: Type) (i: CallInfo) (this Helper.LibCall(com, "NativeArray", "new_copy", t, [ar], ?loc=r) |> Some | _ -> None +let collectionExtensions (com: ICompiler) (ctx: Context) r (t: Type) (i: CallInfo) (thisArg: Expr option) (args: Expr list) = + match i.CompiledName, thisArg, args with + | "AddRange", None, [ar; arg] -> + Helper.LibCall(com, "Array", "addRangeInPlace", t, [arg; ar], ?loc=r) |> Some + | "InsertRange", None, [ar; idx; arg] -> + Helper.LibCall(com, "Array", "insertRangeInPlace", t, [idx; arg; ar], ?loc=r) |> Some + | _ -> None + +let readOnlySpans (com: ICompiler) (ctx: Context) r (t: Type) (i: CallInfo) (thisArg: Expr option) (args: Expr list) = + match i.CompiledName, args with + | "op_Implicit", [arg] -> arg |> Some + | _ -> None + let tuples (com: ICompiler) (ctx: Context) r (t: Type) (i: CallInfo) (thisArg: Expr option) (args: Expr list) = let changeKind isStruct = function | Value(NewTuple(args, _), r)::_ -> Value(NewTuple(args, isStruct), r) |> Some @@ -2962,6 +2975,8 @@ let private replacedModules = "System.Collections.IList", resizeArrays Types.icollectionGeneric, collections Types.icollection, collections + "System.Collections.Generic.CollectionExtensions", collectionExtensions + "System.ReadOnlySpan`1", readOnlySpans Types.hashset, hashSets Types.stack, bclType Types.queue, bclType diff --git a/src/fable-standalone/src/Lexer.fs b/src/fable-standalone/src/Lexer.fs index b44ec7fb0b..c5006508ad 100644 --- a/src/fable-standalone/src/Lexer.fs +++ b/src/fable-standalone/src/Lexer.fs @@ -43,7 +43,7 @@ let tokenizeLine (args: string[]) lineStr = let defines = args |> Seq.choose (fun s -> if s.StartsWith "--define:" then Some s[9..] else None) |> Seq.toList - let sourceTokenizer = FSharpSourceTokenizer(defines, Some "/tmp.fsx") + let sourceTokenizer = FSharpSourceTokenizer(defines, Some "/tmp.fsx", None, None) let lineTokenizer = sourceTokenizer.CreateLineTokenizer lineStr let rec loop lexState acc = match lineTokenizer.ScanToken lexState with diff --git a/src/fable-standalone/test/bench-compiler/bench-compiler.fsproj b/src/fable-standalone/test/bench-compiler/bench-compiler.fsproj index fb97159c21..0b844d28bd 100644 --- a/src/fable-standalone/test/bench-compiler/bench-compiler.fsproj +++ b/src/fable-standalone/test/bench-compiler/bench-compiler.fsproj @@ -27,7 +27,7 @@ - + diff --git a/src/fable-standalone/test/bench-compiler/global.json b/src/fable-standalone/test/bench-compiler/global.json deleted file mode 100644 index acce767f1a..0000000000 --- a/src/fable-standalone/test/bench-compiler/global.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "sdk": { - "version": "7.0.200", - "rollForward": "latestMinor" - } -} diff --git a/src/fcs-fable/FSStrings.fs b/src/fcs-fable/FSStrings.fs index b4d6e985d6..67473ea5be 100644 --- a/src/fcs-fable/FSStrings.fs +++ b/src/fcs-fable/FSStrings.fs @@ -998,4 +998,10 @@ let resources = ( "ErrorFromAddingTypeEquationTuples", "Type mismatch. Expecting a tuple of length {0} of type\n {1} \nbut given a tuple of length {2} of type\n {3} {4}\n" ); + ( "ArgumentsInSigAndImplMismatch", + "The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling." + ); + ( "Parser.TOKEN.WHILE.BANG", + "keyword 'while!'" + ); ] \ No newline at end of file diff --git a/src/fcs-fable/System.Collections.fs b/src/fcs-fable/System.Collections.fs index 19602f414f..b9776db3af 100644 --- a/src/fcs-fable/System.Collections.fs +++ b/src/fcs-fable/System.Collections.fs @@ -6,19 +6,27 @@ namespace System.Collections module Generic = - type Queue<'T> = - inherit ResizeArray<'T> + type Queue<'T>() = + let xs = ResizeArray<'T>() - new () = Queue<'T>() + member _.Clear () = xs.Clear() - member x.Enqueue (item: 'T) = - x.Add(item) + member _.Enqueue (item: 'T) = + xs.Add(item) - member x.Dequeue () = - let item = x.Item(0) - x.RemoveAt(0) + member _.Dequeue () = + let item = xs.Item(0) + xs.RemoveAt(0) item + interface System.Collections.IEnumerable with + member _.GetEnumerator(): System.Collections.IEnumerator = + (xs.GetEnumerator() :> System.Collections.IEnumerator) + + interface System.Collections.Generic.IEnumerable<'T> with + member _.GetEnumerator(): System.Collections.Generic.IEnumerator<'T> = + xs.GetEnumerator() + module Immutable = open System.Collections.Generic @@ -26,28 +34,85 @@ module Immutable = type ImmutableArray<'T> = static member CreateBuilder() = ResizeArray<'T>() - // not immutable, just a Dictionary // TODO: immutable implementation - type ImmutableDictionary<'Key, 'Value>(comparer: IEqualityComparer<'Key>) = - inherit Dictionary<'Key, 'Value>(comparer) - static member Create(comparer) = ImmutableDictionary<'Key, 'Value>(comparer) - static member Empty = ImmutableDictionary<'Key, 'Value>(EqualityComparer.Default) - member x.Add (key: 'Key, value: 'Value) = x[key] <- value; x - member x.SetItem (key: 'Key, value: 'Value) = x[key] <- value; x + type ImmutableHashSet<'T>(values: 'T seq) = + let xs = HashSet<'T>(values) + + static member Create<'T>(values) = ImmutableHashSet<'T>(values) + static member Empty = ImmutableHashSet<'T>(Array.empty) + + member _.Add (value: 'T) = + let copy = HashSet<'T>(xs) + copy.Add(value) |> ignore + ImmutableHashSet<'T>(copy) + + member _.Union (values: seq<'T>) = + let copy = HashSet<'T>(xs) + copy.UnionWith(values) + ImmutableHashSet<'T>(copy) + + member _.Overlaps (values: seq<'T>) = + // xs.Overlaps(values) + values |> Seq.exists (fun x -> xs.Contains(x)) + + interface System.Collections.IEnumerable with + member _.GetEnumerator(): System.Collections.IEnumerator = + (xs.GetEnumerator() :> System.Collections.IEnumerator) + + interface IEnumerable<'T> with + member _.GetEnumerator(): IEnumerator<'T> = + xs.GetEnumerator() + + type ImmutableDictionary<'Key, 'Value when 'Key: equality>(pairs: KeyValuePair<'Key, 'Value> seq) = + let xs = Dictionary<'Key, 'Value>() + do for pair in pairs do xs.Add(pair.Key, pair.Value) + + static member CreateRange(items) = ImmutableDictionary<'Key, 'Value>(items) + static member Empty = ImmutableDictionary<'Key, 'Value>(Array.empty) + + member _.Item with get (key: 'Key): 'Value = xs[key] + member _.ContainsKey (key: 'Key) = xs.ContainsKey(key) + + member _.Add (key: 'Key, value: 'Value) = + let copy = Dictionary<'Key, 'Value>(xs) + copy.Add(key, value) + ImmutableDictionary<'Key, 'Value>(copy) + + member _.SetItem (key: 'Key, value: 'Value) = + let copy = Dictionary<'Key, 'Value>(xs) + copy[key] <- value + ImmutableDictionary<'Key, 'Value>(copy) + + member _.TryGetValue (key: 'Key): bool * 'Value = + match xs.TryGetValue(key) with + | true, v -> (true, v) + | false, v -> (false, v) + + interface System.Collections.IEnumerable with + member _.GetEnumerator(): System.Collections.IEnumerator = + (xs.GetEnumerator() :> System.Collections.IEnumerator) + + interface IEnumerable> with + member _.GetEnumerator(): IEnumerator> = + xs.GetEnumerator() module Concurrent = open System.Collections.Generic // not thread safe, just a ResizeArray // TODO: threaded implementation - type ConcurrentStack<'T> = - inherit ResizeArray<'T> - - new () = ConcurrentStack<'T>() + type ConcurrentStack<'T>() = + let xs = ResizeArray<'T>() - member x.Push (item: 'T) = - x.Add(item) + member _.Push (item: 'T) = xs.Add(item) + member _.PushRange (items: 'T[]) = xs.AddRange(items) + member _.Clear () = xs.Clear() + member _.ToArray () = xs.ToArray() - member x.PushRange (items: 'T[]) = - x.AddRange(items) + interface System.Collections.IEnumerable with + member _.GetEnumerator(): System.Collections.IEnumerator = + (xs.GetEnumerator() :> System.Collections.IEnumerator) + interface IEnumerable<'T> with + member _.GetEnumerator(): IEnumerator<'T> = + xs.GetEnumerator() // not thread safe, just a Dictionary // TODO: threaded implementation [] @@ -88,22 +153,22 @@ module Concurrent = // | true, v -> v // | _ -> let v = valueFactory(key, arg) in x.Add(key, v); v - // member x.TryUpdate (key: 'Key, value: 'Value, comparisonValue: 'Value): bool = - // match x.TryGetValue(key) with - // | true, v when v = comparisonValue -> x.[key] <- value; true - // | _ -> false + member x.TryUpdate (key: 'Key, value: 'Value, comparisonValue: 'Value): bool = + match x.TryGetValue(key) with + | true, v when Unchecked.equals v comparisonValue -> x[key] <- value; true + | _ -> false member x.AddOrUpdate (key: 'Key, value: 'Value, updateFactory: System.Func<'Key, 'Value, 'Value>): 'Value = match x.TryGetValue(key) with - | true, v -> let v = updateFactory.Invoke(key, v) in x.[key] <- v; v + | true, v -> let v = updateFactory.Invoke(key, v) in x[key] <- v; v | _ -> let v = value in x.Add(key, v); v // member x.AddOrUpdate (key: 'Key, valueFactory: 'Key -> 'Value, updateFactory: 'Key * 'Value -> 'Value): 'Value = // match x.TryGetValue(key) with - // | true, v -> let v = updateFactory(key, v) in x.[key] <- v; v + // | true, v -> let v = updateFactory(key, v) in x[key] <- v; v // | _ -> let v = valueFactory(key) in x.Add(key, v); v // member x.AddOrUpdate (key: 'Key, valueFactory: 'Key * 'Arg -> 'Value, updateFactory: 'Key * 'Arg * 'Value -> 'Value, arg: 'Arg): 'Value = // match x.TryGetValue(key) with - // | true, v -> let v = updateFactory(key, arg, v) in x.[key] <- v; v - // | _ -> let v = valueFactory(key, arg) in x.Add(key, v); v + // | true, v -> let v = updateFactory(key, arg, v) in x[key] <- v; v + // | _ -> let v = valueFactory(key, arg) in x.Add(key, v); v \ No newline at end of file diff --git a/src/fcs-fable/codegen/FSComp.fs b/src/fcs-fable/codegen/FSComp.fs index d764875e03..6d25b7715b 100644 --- a/src/fcs-fable/codegen/FSComp.fs +++ b/src/fcs-fable/codegen/FSComp.fs @@ -35,6 +35,8 @@ type internal SR private() = static member returnUsedInsteadOfReturnBang() = (sprintf "Consider using 'return!' instead of 'return'." ) static member yieldUsedInsteadOfYieldBang() = (sprintf "Consider using 'yield!' instead of 'yield'." ) static member tupleRequiredInAbstractMethod() = (sprintf "\nA tuple type is required for one or more arguments. Consider wrapping the given arguments in additional parentheses or review the definition of the interface." ) + static member parsUnexpectedSymbolDot() = (10, sprintf "Unexpected symbol '.' in member definition. Expected 'with', '=' or other token." ) + static member tcNamespaceCannotContainValues() = (201, sprintf "Namespaces cannot contain values. Consider using a module to hold your value declarations." ) static member unsupportedAttribute() = (202, sprintf "This attribute is currently unsupported by the F# compiler. Applying it will not achieve its intended effect." ) static member buildInvalidWarningNumber(a0 : System.String) = (203, sprintf "Invalid warning number '%s'" a0) static member buildInvalidVersionString(a0 : System.String) = (204, sprintf "Invalid version string '%s'" a0) @@ -72,7 +74,7 @@ type internal SR private() = static member buildSignatureWithoutImplementation(a0 : System.String) = (240, sprintf "The signature file '%s' does not have a corresponding implementation file. If an implementation file exists then check the 'module' and 'namespace' declarations in the signature and implementation files match." a0) static member buildArgInvalidInt(a0 : System.String) = (241, sprintf "'%s' is not a valid integer argument" a0) static member buildArgInvalidFloat(a0 : System.String) = (242, sprintf "'%s' is not a valid floating point argument" a0) - static member buildUnrecognizedOption(a0 : System.String) = (243, sprintf "Unrecognized option: '%s'" a0) + static member buildUnrecognizedOption(a0 : System.String) = (243, sprintf "Unrecognized option: '%s'. Use '--help' to learn about recognized command line options." a0) static member buildInvalidModuleOrNamespaceName() = (244, sprintf "Invalid module or namespace name" ) static member pickleErrorReadingWritingMetadata(a0 : System.String, a1 : System.String) = (sprintf "Error reading/writing metadata for the F# compiled DLL '%s'. Was the DLL compiled with an earlier version of the F# compiler? (error: '%s')." a0 a1) static member tastTypeOrModuleNotConcrete(a0 : System.String) = (245, sprintf "The type/module '%s' is not a concrete module or type" a0) @@ -197,10 +199,10 @@ type internal SR private() = static member typrelNeedExplicitImplementation(a0 : System.String) = (363, sprintf "The interface '%s' is included in multiple explicitly implemented interface types. Add an explicit implementation of this interface." a0) static member typrelNamedArgumentHasBeenAssignedMoreThenOnce(a0 : System.String) = (364, sprintf "The named argument '%s' has been assigned more than one value" a0) static member typrelNoImplementationGiven(a0 : System.String) = (365, sprintf "No implementation was given for '%s'" a0) - static member typrelNoImplementationGivenWithSuggestion(a0 : System.String) = (366, sprintf "No implementation was given for '%s'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'." a0) static member typrelNoImplementationGivenSeveral(a0 : System.String) = (365, sprintf "No implementation was given for those members: %s" a0) - static member typrelNoImplementationGivenSeveralWithSuggestion(a0 : System.String) = (366, sprintf "No implementation was given for those members: %sNote that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'." a0) static member typrelNoImplementationGivenSeveralTruncated(a0 : System.String) = (365, sprintf "No implementation was given for those members (some results omitted): %s" a0) + static member typrelNoImplementationGivenWithSuggestion(a0 : System.String) = (366, sprintf "No implementation was given for '%s'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'." a0) + static member typrelNoImplementationGivenSeveralWithSuggestion(a0 : System.String) = (366, sprintf "No implementation was given for those members: %sNote that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'." a0) static member typrelNoImplementationGivenSeveralTruncatedWithSuggestion(a0 : System.String) = (366, sprintf "No implementation was given for those members (some results omitted): %sNote that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'." a0) static member typrelMemberDoesNotHaveCorrectNumberOfArguments(a0 : System.String, a1 : System.String) = (367, sprintf "The member '%s' does not have the correct number of arguments. The required signature is '%s'." a0 a1) static member typrelMemberDoesNotHaveCorrectNumberOfTypeParameters(a0 : System.String, a1 : System.String) = (368, sprintf "The member '%s' does not have the correct number of method type parameters. The required signature is '%s'." a0 a1) @@ -316,6 +318,7 @@ type internal SR private() = static member csMethodFoundButIsStatic(a0 : System.String, a1 : System.String, a2 : System.String) = (sprintf "The type '%s' has a method '%s' (full name '%s'), but the method is static" a0 a1 a2) static member csMethodFoundButIsNotStatic(a0 : System.String, a1 : System.String, a2 : System.String) = (sprintf "The type '%s' has a method '%s' (full name '%s'), but the method is not static" a0 a1 a2) static member csStructConstraintInconsistent() = (472, sprintf "The constraints 'struct' and 'not struct' are inconsistent" ) + static member csUnmanagedConstraintInconsistent() = (473, sprintf "The constraints 'unmanaged' and 'not struct' are inconsistent" ) static member csTypeDoesNotHaveNull(a0 : System.String) = (sprintf "The type '%s' does not have 'null' as a proper value" a0) static member csNullableTypeDoesNotHaveNull(a0 : System.String) = (sprintf "The type '%s' does not have 'null' as a proper value. To create a null value for a Nullable type use 'System.Nullable()'." a0) static member csTypeDoesNotSupportComparison1(a0 : System.String) = (sprintf "The type '%s' does not support the 'comparison' constraint because it has the 'NoComparison' attribute" a0) @@ -419,7 +422,7 @@ type internal SR private() = static member parsGetAndOrSetRequired() = (555, sprintf "'get' and/or 'set' required" ) static member parsTypeAnnotationsOnGetSet() = (556, sprintf "Type annotations on property getters and setters must be given after the 'get()' or 'set(v)', e.g. 'with get() : string = ...'" ) static member parsGetterMustHaveAtLeastOneArgument() = (557, sprintf "A getter property is expected to be a function, e.g. 'get() = ...' or 'get(index) = ...'" ) - static member parsMultipleAccessibilitiesForGetSet() = (558, sprintf "Multiple accessibilities given for property getter or setter" ) + static member parsMultipleAccessibilitiesForGetSet() = (558, sprintf "When the visibility for a property is specified, setting the visibility of the set or get method is not allowed." ) static member parsSetSyntax() = (559, sprintf "Property setters must be defined using 'set value = ', 'set idx value = ' or 'set (idx1,...,idxN) value = ... '" ) static member parsInterfacesHaveSameVisibilityAsEnclosingType() = (560, sprintf "Interfaces always have the same visibility as the enclosing type" ) static member parsAccessibilityModsIllegalForAbstract() = (561, sprintf "Accessibility modifiers are not allowed on this member. Abstract slots always have the same visibility as the enclosing type." ) @@ -432,7 +435,6 @@ type internal SR private() = static member parsAllEnumFieldsRequireValues() = (568, sprintf "All enum fields must be given values" ) static member parsInlineAssemblyCannotHaveVisibilityDeclarations() = (569, sprintf "Accessibility modifiers are not permitted on inline assembly code types" ) static member parsUnexpectedIdentifier(a0 : System.String) = (571, sprintf "Unexpected identifier: '%s'" a0) - static member parsUnexpectedSymbolDot() = (10, sprintf "Unexpected symbol '.' in member definition. Expected 'with', '=' or other token." ) static member parsUnionCasesCannotHaveVisibilityDeclarations() = (572, sprintf "Accessibility modifiers are not permitted on union cases. Use 'type U = internal ...' or 'type U = private ...' to give an accessibility to the whole representation." ) static member parsEnumFieldsCannotHaveVisibilityDeclarations() = (573, sprintf "Accessibility modifiers are not permitted on enumeration fields" ) static member parsConsiderUsingSeparateRecordType() = (sprintf "Consider using a separate record type instead" ) @@ -488,7 +490,6 @@ type internal SR private() = static member tcParameterRequiresName() = (640, sprintf "A parameter with attributes must also be given a name, e.g. '[] Name : Type'" ) static member tcReturnValuesCannotHaveNames() = (641, sprintf "Return values cannot have names" ) static member tcMemberKindPropertyGetSetNotExpected() = (sprintf "SynMemberKind.PropertyGetSet only expected in parse trees" ) - static member tcNamespaceCannotContainValues() = (201, sprintf "Namespaces cannot contain values. Consider using a module to hold your value declarations." ) static member tcNamespaceCannotContainExtensionMembers() = (644, sprintf "Namespaces cannot contain extension members except in the same file and namespace declaration group where the type is defined. Consider using a module to hold declarations of extension members." ) static member tcMultipleVisibilityAttributes() = (645, sprintf "Multiple visibility attributes have been specified for this identifier" ) static member tcMultipleVisibilityAttributesWithLet() = (646, sprintf "Multiple visibility attributes have been specified for this identifier. 'let' bindings in classes are always private, as are any 'let' bindings inside expressions." ) @@ -516,7 +517,7 @@ type internal SR private() = static member tcExplicitTypeParameterInvalid() = (665, sprintf "Explicit type parameters may only be used on module or member bindings" ) static member tcOverridingMethodRequiresAllOrNoTypeParameters() = (666, sprintf "You must explicitly declare either all or no type parameters when overriding a generic abstract method" ) static member tcFieldsDoNotDetermineUniqueRecordType() = (667, sprintf "The field labels and expected type of this record expression or pattern do not uniquely determine a corresponding record type" ) - static member tcFieldAppearsTwiceInRecord(a0 : System.String) = (668, sprintf "The field '%s' appears twice in this record expression or pattern" a0) + static member tcMultipleFieldsInRecord(a0 : System.String) = (668, sprintf "The field '%s' appears multiple times in this record expression or pattern" a0) static member tcUnknownUnion() = (669, sprintf "Unknown union case" ) static member tcNotSufficientlyGenericBecauseOfScope(a0 : System.String) = (670, sprintf "This code is not sufficiently generic. The type variable %s could not be generalized because it would escape its scope." a0) static member tcPropertyRequiresExplicitTypeParameters() = (671, sprintf "A property cannot have explicit type parameters. Consider using a method instead." ) @@ -578,7 +579,6 @@ type internal SR private() = static member tcFieldNotLiteralCannotBeUsedInPattern() = (729, sprintf "This field is not a literal and cannot be used in a pattern" ) static member tcRequireVarConstRecogOrLiteral() = (730, sprintf "This is not a variable, constant, active recognizer or literal" ) static member tcInvalidPattern() = (731, sprintf "This is not a valid pattern" ) - static member tcUseWhenPatternGuard() = (sprintf "Character range matches have been removed in F#. Consider using a 'when' pattern guard instead." ) static member tcIllegalPattern() = (733, sprintf "Illegal pattern" ) static member tcSyntaxErrorUnexpectedQMark() = (734, sprintf "Syntax error - unexpected '?' symbol" ) static member tcExpressionCountMisMatch(a0 : System.Int32, a1 : System.Int32) = (735, sprintf "Expected %d expressions, got %d" a0 a1) @@ -746,7 +746,7 @@ type internal SR private() = static member tcMeasureDeclarationsRequireStaticMembers() = (897, sprintf "Measure declarations may have only static members" ) static member tcStructsMayNotContainDoBindings() = (sprintf "Structs cannot contain 'do' bindings because the default constructor for structs would not execute these bindings" ) static member tcStructsMayNotContainLetBindings() = (901, sprintf "Structs cannot contain value definitions because the default constructor for structs will not execute these bindings. Consider adding additional arguments to the primary constructor for the type." ) - static member tcStaticLetBindingsRequireClassesWithImplicitConstructors() = (902, sprintf "Static value definitions may only be used in types with a primary constructor. Consider adding arguments to the type definition, e.g. 'type X(args) = ...'." ) + static member tcStaticLetBindingsRequireClassesWithImplicitConstructors() = (902, sprintf "For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'." ) static member tcMeasureDeclarationsRequireStaticMembersNotConstructors() = (904, sprintf "Measure declarations may have only static members: constructors are not available" ) static member tcMemberAndLocalClassBindingHaveSameName(a0 : System.String) = (905, sprintf "A member and a local class binding both have the name '%s'" a0) static member tcTypeAbbreviationsCannotHaveInterfaceDeclaration() = (906, sprintf "Type abbreviations cannot have interface declarations" ) @@ -835,6 +835,8 @@ type internal SR private() = static member ilStructLayoutAttributeCouldNotBeDecoded() = (992, sprintf "The StructLayout attribute could not be decoded" ) static member ilDefaultAugmentationAttributeCouldNotBeDecoded() = (993, sprintf "The DefaultAugmentation attribute could not be decoded" ) static member ilReflectedDefinitionsCannotUseSliceOperator() = (994, sprintf "Reflected definitions cannot contain uses of the prefix splice operator '%%'" ) + static member packageManagerUnknown(a0 : System.String, a1 : System.String, a2 : System.String) = (998, sprintf "Package manager key '%s' was not registered in %s. Currently registered: %s. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager" a0 a1 a2) + static member packageManagerError(a0 : System.String) = (999, sprintf "%s" a0) static member optsProblemWithCodepage(a0 : System.Int32, a1 : System.String) = (1000, sprintf "Problem with codepage '%d': %s" a0 a1) static member optsCopyright() = (sprintf "Copyright (c) Microsoft Corporation. All Rights Reserved." ) static member optsCopyrightCommunity() = (sprintf "Freely distributed under the MIT Open Source License. https://github.com/Microsoft/visualfsharp/blob/master/License.txt" ) @@ -863,7 +865,7 @@ type internal SR private() = static member optsEmbedAllSource() = (sprintf "Embed all source files in the portable PDB file" ) static member optsEmbedSource() = (sprintf "Embed specific source files in the portable PDB file" ) static member optsSourceLink() = (sprintf "Source link information file to embed in the portable PDB file" ) - static member optsPdbMatchesOutputFileName() = (1503, sprintf "The pdb output file name cannot match the build output filename use --pdb:filename.pdb" ) + static member optsPdbMatchesOutputFileName() = (1001, sprintf "The pdb output file name cannot match the build output filename use --pdb:filename.pdb" ) static member srcFileTooLarge() = (sprintf "Source file is too large to embed in a portable PDB" ) static member optsResource() = (sprintf "Embed the specified managed resource" ) static member optsLinkresource() = (sprintf "Link the specified resource to this assembly where the resinfo format is [,[,public|private]]" ) @@ -902,9 +904,6 @@ type internal SR private() = static member optsResident() = (sprintf "Use a resident background compilation service to improve compiler startup times." ) static member optsPdb() = (sprintf "Name the output debug file" ) static member optsSimpleresolution() = (sprintf "Resolve assembly references using directory-based rules rather than MSBuild resolution" ) - static member optsUnrecognizedTarget(a0 : System.String) = (1048, sprintf "Unrecognized target '%s', expected 'exe', 'winexe', 'library' or 'module'" a0) - static member optsUnrecognizedDebugType(a0 : System.String) = (1049, sprintf "Unrecognized debug type '%s', expected 'pdbonly' or 'full'" a0) - static member optsInvalidWarningLevel(a0 : System.Int32) = (1050, sprintf "Invalid warning level '%d'" a0) static member optsShortFormOf(a0 : System.String) = (sprintf "Short form of '%s'" a0) static member optsClirootDeprecatedMsg() = (sprintf "The command-line option '--cliroot' has been deprecated. Use an explicit reference to a specific copy of mscorlib.dll instead." ) static member optsClirootDescription() = (sprintf "Use to override where the compiler looks for mscorlib.dll and framework components" ) @@ -916,9 +915,6 @@ type internal SR private() = static member optsHelpBannerMisc() = (sprintf "- MISCELLANEOUS -" ) static member optsHelpBannerLanguage() = (sprintf "- LANGUAGE -" ) static member optsHelpBannerErrsAndWarns() = (sprintf "- ERRORS AND WARNINGS -" ) - static member optsUnknownArgumentToTheTestSwitch(a0 : System.String) = (1063, sprintf "Unknown --test argument: '%s'" a0) - static member optsUnknownPlatform(a0 : System.String) = (1064, sprintf "Unrecognized platform '%s', valid values are 'x86', 'x64', 'Arm', 'Arm64', 'Itanium', 'anycpu32bitpreferred', and 'anycpu'. The default is anycpu." a0) - static member optsUnknownChecksumAlgorithm(a0 : System.String) = (1065, sprintf "Algorithm '%s' is not supported" a0) static member optsInternalNoDescription(a0 : System.String) = (sprintf "The command-line option '%s' is for test purposes only" a0) static member optsDCLONoDescription(a0 : System.String) = (sprintf "The command-line option '%s' has been deprecated" a0) static member optsDCLODeprecatedSuggestAlternative(a0 : System.String, a1 : System.String) = (sprintf "The command-line option '%s' has been deprecated. Use '%s' instead." a0 a1) @@ -934,8 +930,14 @@ type internal SR private() = static member optsUnknownSignatureData(a0 : System.String) = (1046, sprintf "Invalid value '%s' for --interfacedata, valid value are: none, file, compress." a0) static member optsOptimizationData() = (sprintf "Specify included optimization information, the default is file. Important for distributed libraries." ) static member optsUnknownOptimizationData(a0 : System.String) = (1047, sprintf "Invalid value '%s' for --optimizationdata, valid value are: none, file, compress." a0) + static member optsUnrecognizedTarget(a0 : System.String) = (1048, sprintf "Unrecognized target '%s', expected 'exe', 'winexe', 'library' or 'module'" a0) + static member optsUnrecognizedDebugType(a0 : System.String) = (1049, sprintf "Unrecognized debug type '%s', expected 'pdbonly' or 'full'" a0) + static member optsInvalidWarningLevel(a0 : System.Int32) = (1050, sprintf "Invalid warning level '%d'" a0) static member optsInvalidSubSystemVersion(a0 : System.String) = (1051, sprintf "Invalid version '%s' for '--subsystemversion'. The version must be 4.00 or greater." a0) static member optsInvalidTargetProfile(a0 : System.String) = (1052, sprintf "Invalid value '%s' for '--targetprofile', valid values are 'mscorlib', 'netcore' or 'netstandard'." a0) + static member optsUnknownArgumentToTheTestSwitch(a0 : System.String) = (1063, sprintf "Unknown --test argument: '%s'" a0) + static member optsUnknownPlatform(a0 : System.String) = (1064, sprintf "Unrecognized platform '%s', valid values are 'x86', 'x64', 'Arm', 'Arm64', 'Itanium', 'anycpu32bitpreferred', and 'anycpu'. The default is anycpu." a0) + static member optsUnknownChecksumAlgorithm(a0 : System.String) = (1065, sprintf "Algorithm '%s' is not supported" a0) static member typeInfoFullName() = (sprintf "Full name" ) static member typeInfoOtherOverloads(a0 : System.Int32) = (sprintf "and %d other overloads" a0) static member typeInfoUnionCase() = (sprintf "union case" ) @@ -956,6 +958,7 @@ type internal SR private() = static member typeInfoFromNext(a0 : System.String) = (sprintf "also from %s" a0) static member typeInfoGeneratedProperty() = (sprintf "generated property" ) static member typeInfoGeneratedType() = (sprintf "generated type" ) + static member suggestedName() = (sprintf "(Suggested name)" ) static member recursiveClassHierarchy(a0 : System.String) = (1089, sprintf "Recursive class hierarchy in type '%s'" a0) static member InvalidRecursiveReferenceToAbstractSlot() = (1090, sprintf "Invalid recursive reference to an abstract slot" ) static member eventHasNonStandardType(a0 : System.String, a1 : System.String, a2 : System.String) = (1091, sprintf "The event '%s' has a non-standard type. If this event is declared in another CLI language, you may need to access this event using the explicit %s and %s methods for the event. If this event is declared in F#, make the type of the event an instantiation of either 'IDelegateEvent<_>' or 'IEvent<_,_>'." a0 a1 a2) @@ -988,7 +991,7 @@ type internal SR private() = static member optFailedToInlineValue(a0 : System.String) = (1118, sprintf "Failed to inline the value '%s' marked 'inline', perhaps because a recursive value was marked 'inline'" a0) static member optRecursiveValValue(a0 : System.String) = (1119, sprintf "Recursive ValValue %s" a0) static member lexfltIncorrentIndentationOfIn() = (sprintf "The indentation of this 'in' token is incorrect with respect to the corresponding 'let'" ) - static member lexfltTokenIsOffsideOfContextStartedEarlier(a0 : System.String) = (sprintf "Possible incorrect indentation: this token is offside of context started at position %s. Try indenting this token further or using standard formatting conventions." a0) + static member lexfltTokenIsOffsideOfContextStartedEarlier(a0 : System.String) = (sprintf "Unexpected syntax or possible incorrect indentation: this token is offside of context started at position %s. Try indenting this further.\nTo continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7." a0) static member lexfltSeparatorTokensOfPatternMatchMisaligned() = (sprintf "The '|' tokens separating rules of this pattern match are misaligned by one column. Consider realigning your code or using further indentation." ) static member nrInvalidModuleExprType() = (1123, sprintf "Invalid module/expression/type" ) static member nrTypeInstantiationNeededToDisambiguateTypesWithSameName(a0 : System.String, a1 : System.String) = (1124, sprintf "Multiple types exist called '%s', taking different numbers of generic parameters. Provide a type instantiation to disambiguate the type resolution, e.g. '%s'." a0 a1) @@ -1111,6 +1114,10 @@ type internal SR private() = static member lexInvalidUnicodeLiteral(a0 : System.String) = (1245, sprintf "\U%s is not a valid Unicode character escape sequence" a0) static member tcCallerInfoWrongType(a0 : System.String, a1 : System.String, a2 : System.String) = (1246, sprintf "'%s' must be applied to an argument of type '%s', but has been applied to an argument of type '%s'" a0 a1 a2) static member tcCallerInfoNotOptional(a0 : System.String) = (1247, sprintf "'%s' can only be applied to optional arguments" a0) + static member lexTooManyLBracesInTripleQuote() = (1248, sprintf "The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content." ) + static member lexUnmatchedRBracesInTripleQuote() = (1249, sprintf "The interpolated string contains unmatched closing braces." ) + static member lexTooManyPercentsInTripleQuote() = (1250, sprintf "The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%%' characters." ) + static member lexExtendedStringInterpolationNotSupported() = (1251, sprintf "Extended string interpolation is not supported in this version of F#." ) static member toolLocationHelperUnsupportedFrameworkVersion(a0 : System.String) = (1300, sprintf "The specified .NET Framework version '%s' is not supported. Please specify a value from the enumeration Microsoft.Build.Utilities.TargetDotNetFrameworkVersion." a0) static member ilSignInvalidMagicValue() = (1301, sprintf "Invalid Magic value in CLR Header" ) static member ilSignBadImageFormat() = (1302, sprintf "Bad image format" ) @@ -1359,7 +1366,7 @@ type internal SR private() = static member parsInvalidUseOfRec() = (3203, sprintf "Invalid use of 'rec' keyword" ) static member tcStructUnionMultiCaseDistinctFields() = (3204, sprintf "If a multicase union type is a struct, then all union cases must have unique names. For example: 'type A = B of b: int | C of c: int'." ) static member CallerMemberNameIsOverriden(a0 : System.String) = (3206, sprintf "The CallerMemberNameAttribute applied to parameter '%s' will have no effect. It is overridden by the CallerFilePathAttribute." a0) - static member tcFixedNotAllowed() = (3207, sprintf "Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is an array, the address of a field, the address of an array element or a string'" ) + static member tcFixedNotAllowed() = (3207, sprintf "Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is one of the following: an array, the address of an array element, a string, a byref, an inref, or a type implementing GetPinnableReference()" ) static member tcCouldNotFindOffsetToStringData() = (3208, sprintf "Could not find method System.Runtime.CompilerServices.OffsetToStringData in references when building 'fixed' expression." ) static member chkNoByrefAddressOfLocal(a0 : System.String) = (3209, sprintf "The address of the variable '%s' or a related expression cannot be used at this point. This is to ensure the address of the local value does not escape its scope." a0) static member tcNamedActivePattern(a0 : System.String) = (3210, sprintf "%s is an active pattern and cannot be treated as a discriminated union case with named fields." a0) @@ -1368,14 +1375,17 @@ type internal SR private() = static member typrelMemberHasMultiplePossibleDispatchSlots(a0 : System.String, a1 : System.String) = (3213, sprintf "The member '%s' matches multiple overloads of the same method.\nPlease restrict it to one of the following:%s." a0 a1) static member methodIsNotStatic(a0 : System.String) = (3214, sprintf "Method or object constructor '%s' is not static" a0) static member parsUnexpectedSymbolEqualsInsteadOfIn() = (3215, sprintf "Unexpected symbol '=' in expression. Did you intend to use 'for x in y .. z do' instead?" ) - static member packageManagerUnknown(a0 : System.String, a1 : System.String, a2 : System.String) = (3216, sprintf "Package manager key '%s' was not registered in %s. Currently registered: %s" a0 a1 a2) - static member packageManagerError(a0 : System.String) = (3217, sprintf "%s" a0) static member tcAnonRecdInvalid() = (sprintf "Invalid Anonymous Record type declaration." ) static member tcAnonRecdCcuMismatch(a0 : System.String, a1 : System.String) = (sprintf "Two anonymous record types are from different assemblies '%s' and '%s'" a0 a1) static member tcAnonRecdFieldNameMismatch(a0 : System.String, a1 : System.String) = (sprintf "This anonymous record does not exactly match the expected shape. Add the missing fields %s and remove the extra fields %s." a0 a1) - static member tcAnonRecdFieldNameSubset(a0 : System.String) = (sprintf "This anonymous record does not have enough fields. Add the missing fields %s." a0) - static member tcAnonRecdFieldNameSuperset(a0 : System.String) = (sprintf "This anonymous record has too many fields. Remove the extra fields %s." a0) - static member tcAnonRecdFieldNameDifferent(a0 : System.String) = (sprintf "This is the wrong anonymous record. It should have the fields %s." a0) + static member tcAnonRecdSingleFieldNameSubset(a0 : System.String) = (sprintf "This anonymous record is missing field '%s'." a0) + static member tcAnonRecdMultipleFieldsNameSubset(a0 : System.String) = (sprintf "This anonymous record is missing fields %s." a0) + static member tcAnonRecdSingleFieldNameSuperset(a0 : System.String) = (sprintf "This anonymous record has an extra field. Remove field '%s'." a0) + static member tcAnonRecdMultipleFieldsNameSuperset(a0 : System.String) = (sprintf "This anonymous record has extra fields. Remove fields %s." a0) + static member tcAnonRecdSingleFieldNameSingleDifferent(a0 : System.String, a1 : System.String) = (sprintf "This anonymous record should have field '%s' but here has field '%s'." a0 a1) + static member tcAnonRecdSingleFieldNameMultipleDifferent(a0 : System.String, a1 : System.String) = (sprintf "This anonymous record should have field '%s' but here has fields %s." a0 a1) + static member tcAnonRecdMultipleFieldNameSingleDifferent(a0 : System.String, a1 : System.String) = (sprintf "This anonymous record should have fields %s; but here has field '%s'." a0 a1) + static member tcAnonRecdMultipleFieldNameMultipleDifferent(a0 : System.String, a1 : System.String) = (sprintf "This anonymous record should have fields %s; but here has fields %s." a0 a1) static member keywordDescriptionAbstract() = (sprintf "Indicates a method that either has no implementation in the type in which it is declared or that is virtual and has a default implementation." ) static member keywordDescriptionAnd() = (sprintf "Used in mutually recursive bindings, in property declarations, and with multiple constraints on generic parameters." ) static member keywordDescriptionAs() = (sprintf "Used to give the current class object an object name. Also used to give a name to a whole pattern within a pattern match." ) @@ -1444,6 +1454,7 @@ type internal SR private() = static member keywordDescriptionVoid() = (sprintf "Indicates the .NET void type. Used when interoperating with other .NET languages." ) static member keywordDescriptionWhen() = (sprintf "Used for Boolean conditions (when guards) on pattern matches and to introduce a constraint clause for a generic type parameter." ) static member keywordDescriptionWhile() = (sprintf "Introduces a looping construct." ) + static member keywordDescriptionWhileBang() = (sprintf "Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression." ) static member keywordDescriptionWith() = (sprintf "Used together with the match keyword in pattern matching expressions. Also used in object expressions, record copying expressions, and type extensions to introduce member definitions, and to introduce exception handlers." ) static member keywordDescriptionYield() = (sprintf "Used in a sequence expression to produce a value for a sequence." ) static member keywordDescriptionYieldBang() = (sprintf "Used in a computation expression to append the result of a given computation expression to a collection of results for the containing computation expression." ) @@ -1463,7 +1474,6 @@ type internal SR private() = static member notAFunctionButMaybeIndexer2() = (sprintf "This expression is not a function and cannot be applied. Did you intend to access the indexer via 'expr[index]'?" ) static member notAFunctionButMaybeIndexerErrorCode() = (3217, sprintf "" ) static member notAFunctionButMaybeDeclaration() = (sprintf "This value is not a function and cannot be applied. Did you forget to terminate a declaration?" ) - static member ArgumentsInSigAndImplMismatch(a0 : System.String, a1 : System.String) = (3218, sprintf "The argument names in the signature '%s' and implementation '%s' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling." a0 a1) static member pickleUnexpectedNonZero(a0 : System.String) = (3219, sprintf "An error occurred while reading the F# metadata of assembly '%s'. A reserved construct was utilized. You may need to upgrade your F# compiler or use an earlier version of the assembly that doesn't make use of a specific construct." a0) static member tcTupleMemberNotNormallyUsed() = (3220, sprintf "This method or property is not normally used from F# code, use an explicit tuple pattern for deconstruction instead." ) static member implicitlyDiscardedInSequenceExpression(a0 : System.String) = (3221, sprintf "This expression returns a value of type '%s' but is implicitly discarded. Consider using 'let' to bind the result to a name, e.g. 'let result = expression'. If you intended to use the expression as a value in the sequence then use an explicit 'yield'." a0) @@ -1482,7 +1492,7 @@ type internal SR private() = static member chkNoSpanLikeVariable(a0 : System.String) = (3234, sprintf "The Span or IsByRefLike variable '%s' cannot be used at this point. This is to ensure the address of the local value does not escape its scope." a0) static member chkNoSpanLikeValueFromExpression() = (3235, sprintf "A Span or IsByRefLike value returned from the expression cannot be used at ths point. This is to ensure the address of the local value does not escape its scope." ) static member tastCantTakeAddressOfExpression() = (3236, sprintf "Cannot take the address of the value returned from the expression. Assign the returned value to a let-bound value before taking the address." ) - static member tcCannotCallExtensionMethodInrefToByref(a0 : System.String) = (3237, sprintf "Cannot call the byref extension method '%s. The first parameter requires the value to be mutable or a non-readonly byref type." a0) + static member tcCannotCallExtensionMethodInrefToByref(a0 : System.String) = (3237, sprintf "Cannot call the byref extension method '%s. 'this' parameter requires the value to be mutable or a non-readonly byref type." a0) static member tcByrefsMayNotHaveTypeExtensions() = (3238, sprintf "Byref types are not allowed to have optional type extensions." ) static member tcCannotPartiallyApplyExtensionMethodForByref(a0 : System.String) = (3239, sprintf "Cannot partially apply the extension method '%s' because the first parameter is a byref type." a0) static member tcTypeDoesNotInheritAttribute() = (3242, sprintf "This type does not inherit Attribute, it will not work correctly with other .NET languages." ) @@ -1499,18 +1509,19 @@ type internal SR private() = static member packageManagementRequiresVFive() = (3302, sprintf "The 'package management' feature requires language version 5.0 or above" ) static member fromEndSlicingRequiresVFive() = (3303, sprintf "The 'from the end slicing' feature requires language version 'preview'." ) static member poundiNotSupportedByRegisteredDependencyManagers() = (3304, sprintf "#i is not supported by the registered PackageManagers" ) - static member tcRequireMergeSourcesOrBindN(a0 : System.String) = (3343, sprintf "The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '%s' method or appropriate 'MergeSource' and 'Bind' methods" a0) + static member tcRequireMergeSourcesOrBindN(a0 : System.String) = (3343, sprintf "The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '%s' method or appropriate 'MergeSources' and 'Bind' methods" a0) static member tcAndBangNotSupported() = (3344, sprintf "This feature is not supported in this version of F#. You may need to add /langversion:preview to use this feature." ) static member tcInvalidUseBangBindingNoAndBangs() = (3345, sprintf "use! may not be combined with and!" ) + static member chkFeatureNotSupportedInLibrary(a0 : System.String, a1 : System.String) = (3349, sprintf "Feature '%s' requires the F# library for language version %s or greater." a0 a1) static member chkFeatureNotLanguageSupported(a0 : System.String, a1 : System.String, a2 : System.String) = (3350, sprintf "Feature '%s' is not available in F# %s. Please use language version %s or greater." a0 a1 a2) static member chkFeatureNotRuntimeSupported(a0 : System.String) = (3351, sprintf "Feature '%s' is not supported by target runtime." a0) static member typrelInterfaceMemberNoMostSpecificImplementation(a0 : System.String) = (3352, sprintf "Interface member '%s' does not have a most specific implementation." a0) - static member chkFeatureNotSupportedInLibrary(a0 : System.String, a1 : System.String) = (3353, sprintf "Feature '%s' requires the F# library for language version %s or greater." a0 a1) - static member parsEqualsMissingInTypeDefinition(a0 : System.String) = (3360, sprintf "Unexpected token in type definition. Expected '=' after the type '%s'." a0) + static member fsiInvalidDirective(a0 : System.String, a1 : System.String) = (3353, sprintf "Invalid directive '#%s %s'" a0 a1) static member useSdkRefs() = (sprintf "Use reference assemblies for .NET framework references when available (Enabled by default)." ) static member optsGetLangVersions() = (sprintf "Display the allowed values for language version." ) static member optsSetLangVersion() = (sprintf "Specify language version such as 'latest' or 'preview'." ) static member optsSupportedLangVersions() = (sprintf "Supported language versions:" ) + static member optsStrictIndentation() = (sprintf "Override indentation rules implied by the language version" ) static member nativeResourceFormatError() = (sprintf "Stream does not begin with a null resource and is not in '.RES' format." ) static member nativeResourceHeaderMalformed(a0 : System.String) = (sprintf "Resource header beginning at offset %s is malformed." a0) static member formatDashItem(a0 : System.String) = (sprintf " - %s" a0) @@ -1551,7 +1562,15 @@ type internal SR private() = static member featureStaticMembersInInterfaces() = (sprintf "Static members in interfaces" ) static member featureNonInlineLiteralsAsPrintfFormat() = (sprintf "String values marked as literals and IL constants as printf format" ) static member featureNestedCopyAndUpdate() = (sprintf "Nested record field copy-and-update" ) - static member fsiInvalidDirective(a0 : System.String, a1 : System.String) = (3353, sprintf "Invalid directive '#%s %s'" a0 a1) + static member featureExtendedStringInterpolation() = (sprintf "Extended string interpolation similar to C# raw string literals." ) + static member featureWarningWhenMultipleRecdTypeChoice() = (sprintf "Raises warnings when multiple record type matches were found during name resolution because of overlapping field names." ) + static member featureImprovedImpliedArgumentNames() = (sprintf "Improved implied argument names" ) + static member featureStrictIndentation() = (sprintf "Raises errors on incorrect indentation, allows better recovery and analysis during editing" ) + static member featureConstraintIntersectionOnFlexibleTypes() = (sprintf "Constraint intersection on flexible types" ) + static member featureChkNotTailRecursive() = (sprintf "Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way." ) + static member featureWhileBang() = (sprintf "'while!' expression" ) + static member featureExtendedFixedBindings() = (sprintf "extended fixed bindings for byref and GetPinnableReference" ) + static member featurePreferStringGetPinnableReference() = (sprintf "prefer String.GetPinnableReference in fixed bindings" ) static member tcNotAFunctionButIndexerNamedIndexingNotYetEnabled(a0 : System.String, a1 : System.String) = (3354, sprintf "This value supports indexing, e.g. '%s.[index]'. The syntax '%s[index]' requires /langversion:preview. See https://aka.ms/fsharp-index-notation." a0 a1) static member tcNotAFunctionButIndexerIndexingNotYetEnabled() = (3354, sprintf "This expression supports indexing, e.g. 'expr.[index]'. The syntax 'expr[index]' requires /langversion:preview. See https://aka.ms/fsharp-index-notation." ) static member tcNotAnIndexerNamedIndexingNotYetEnabled(a0 : System.String) = (3355, sprintf "The value '%s' is not a function and does not support index notation." a0) @@ -1598,7 +1617,6 @@ type internal SR private() = static member tcAmbiguousImplicitConversion(a0 : System.String, a1 : System.String, a2 : System.String) = (3387, sprintf "This expression has type '%s' and is only made compatible with type '%s' through an ambiguous implicit conversion. Consider using an explicit call to 'op_Implicit'. The applicable implicit conversions are:%s" a0 a1 a2) static member tcSubsumptionImplicitConversionUsed(a0 : System.String, a1 : System.String) = (3388, sprintf "This expression implicitly converts type '%s' to type '%s'. See https://aka.ms/fsharp-implicit-convs." a0 a1) static member tcBuiltInImplicitConversionUsed(a0 : System.String, a1 : System.String) = (3389, sprintf "This expression uses a built-in implicit conversion to convert type '%s' to type '%s'. See https://aka.ms/fsharp-implicit-convs." a0 a1) - static member tcImplicitConversionUsedForNonMethodArg(a0 : System.String, a1 : System.String, a2 : System.String) = (3391, sprintf "This expression uses the implicit conversion '%s' to convert type '%s' to type '%s'. See https://aka.ms/fsharp-implicit-convs. This warning may be disabled using '#nowarn \"3391\"." a0 a1 a2) static member xmlDocBadlyFormed(a0 : System.String) = (3390, sprintf "This XML comment is invalid: '%s'" a0) static member xmlDocMissingParameterName() = (3390, sprintf "This XML comment is invalid: missing 'name' attribute for parameter or parameter reference" ) static member xmlDocMissingCrossReference() = (3390, sprintf "This XML comment is invalid: missing 'cref' attribute for cross-reference" ) @@ -1606,6 +1624,7 @@ type internal SR private() = static member xmlDocDuplicateParameter(a0 : System.String) = (3390, sprintf "This XML comment is invalid: multiple documentation entries for parameter '%s'" a0) static member xmlDocUnresolvedCrossReference(a0 : System.String) = (3390, sprintf "This XML comment is invalid: unresolved cross-reference '%s'" a0) static member xmlDocMissingParameter(a0 : System.String) = (3390, sprintf "This XML comment is incomplete: no documentation for parameter '%s'" a0) + static member tcImplicitConversionUsedForNonMethodArg(a0 : System.String, a1 : System.String, a2 : System.String) = (3391, sprintf "This expression uses the implicit conversion '%s' to convert type '%s' to type '%s'. See https://aka.ms/fsharp-implicit-convs. This warning may be disabled using '#nowarn \"3391\"." a0 a1 a2) static member containerDeprecated() = (3392, sprintf "The 'AssemblyKeyNameAttribute' has been deprecated. Use 'AssemblyKeyFileAttribute' instead." ) static member containerSigningUnsupportedOnThisPlatform() = (3393, sprintf "Key container signing is not supported on this platform." ) static member parsNewExprMemberAccess() = (3394, sprintf "This member access is ambiguous. Please use parentheses around the object creation, e.g. '(new SomeType(args)).MemberName'" ) @@ -1640,7 +1659,7 @@ type internal SR private() = static member tcInvalidMemberDeclNameMissingOrHasParen() = (3521, sprintf "Invalid member declaration. The name of the member is missing or has parentheses." ) static member tcAnonRecdDuplicateFieldId(a0 : System.String) = (3522, sprintf "The field '%s' appears multiple times in this record expression." a0) static member tcAnonRecdTypeDuplicateFieldId(a0 : System.String) = (3523, sprintf "The field '%s' appears multiple times in this anonymous record type." a0) - static member parsExpectingExpressionInTuple() = (3524, sprintf "Expecting expression" ) + static member parsExpectingExpression() = (3524, sprintf "Expecting expression" ) static member tcTraitIsStatic(a0 : System.String) = (3530, sprintf "Trait '%s' is static" a0) static member tcTraitIsNotStatic(a0 : System.String) = (3531, sprintf "Trait '%s' is not static" a0) static member tcTraitMayNotUseComplexThings() = (3532, sprintf "A trait may not specify optional, in, out, ParamArray, CallerInfo or Quote arguments" ) @@ -1650,7 +1669,7 @@ type internal SR private() = static member tcUsingInterfaceWithStaticAbstractMethodAsType(a0 : System.String) = (3536, sprintf "'%s' is normally used as a type constraint in generic code, e.g. \"'T when ISomeInterface<'T>\" or \"let f (x: #ISomeInterface<_>)\". See https://aka.ms/fsharp-iwsams for guidance. You can disable this warning by using '#nowarn \"3536\"' or '--nowarn:3536'." a0) static member tcTraitHasMultipleSupportTypes(a0 : System.String) = (3537, sprintf "The trait '%s' invoked by this call has multiple support types. This invocation syntax is not permitted for such traits. See https://aka.ms/fsharp-srtp for guidance." a0) static member tcMissingRequiredMembers(a0 : System.String) = (3545, sprintf "The following required properties have to be initalized:%s" a0) - static member parsExpectingPatternInTuple() = (3546, sprintf "Expecting pattern" ) + static member parsExpectingPattern() = (3546, sprintf "Expecting pattern" ) static member parsExpectedPatternAfterToken() = (3547, sprintf "Expected a pattern after this point" ) static member matchNotAllowedForUnionCaseWithNoData() = (3548, sprintf "Pattern discard is not allowed for union case that takes no data." ) static member tcSynTypeOrInvalidInDeclaration() = (3549, sprintf "SynType.Or is not permitted in this declaration" ) @@ -1671,3 +1690,21 @@ type internal SR private() = static member lexInvalidIdentifier() = (3563, sprintf "This is not a valid identifier" ) static member parsMissingUnionCaseName() = (3564, sprintf "Missing union case name" ) static member parsExpectingType() = (3565, sprintf "Expecting type" ) + static member featureInformationalObjInferenceDiagnostic() = (sprintf "Diagnostic 3559 (warn when obj inferred) at informational level, off by default" ) + static member featureStaticLetInRecordsDusEmptyTypes() = (sprintf "Allow static let bindings in union, record, struct, non-incremental-class types" ) + static member tcMultipleRecdTypeChoice(a0 : System.String, a1 : System.String, a2 : System.String) = (3566, sprintf "Multiple type matches were found:\n%s\nThe type '%s' was used. Due to the overlapping field names\n%s\nconsider using type annotations or change the order of open statements." a0 a1 a2) + static member parsMissingMemberBody() = (3567, sprintf "Expecting member body" ) + static member parsMissingKeyword(a0 : System.String) = (3568, sprintf "Missing keyword '%s'" a0) + static member chkNotTailRecursive(a0 : System.String) = (3569, sprintf "The member or function '%s' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way." a0) + static member tcAmbiguousDiscardDotLambda() = (3570, sprintf "The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope." ) + static member parsUnderScoreDotLambdaNonAtomic() = (3571, sprintf " _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses." ) + static member featureAccessorFunctionShorthand() = (sprintf "underscore dot shorthand for accessor only function" ) + static member parsConstraintIntersectionSyntaxUsedWithNonFlexibleType() = (3572, sprintf "Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'." ) + static member tcStaticBindingInExtrinsicAugmentation() = (3573, sprintf "Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead." ) + static member pickleFsharpCoreBackwardsCompatible(a0 : System.String, a1 : System.String) = (3574, sprintf "Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: %s . Context: \n %s " a0 a1) + static member tcOverrideUsesMultipleArgumentsInsteadOfTuple() = (3577, sprintf "This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c')." ) + static member featureUnmanagedConstraintCsharpInterop() = (sprintf "Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq)" ) + static member chkCopyUpdateSyntaxInAnonRecords() = (3578, sprintf "This expression is an anonymous record, use {|...|} instead of {...}." ) + static member alwaysUseTypedStringInterpolation() = (3579, sprintf "Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended." ) + static member tcUnexpectedFunTypeInUnionCaseField() = (3580, sprintf "Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b)." ) + static member tcInfoIfFunctionShadowsUnionCase() = (3582, sprintf "This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses." ) diff --git a/src/fcs-fable/codegen/codegen.fsproj b/src/fcs-fable/codegen/codegen.fsproj index aec6498a33..eb47fd5544 100644 --- a/src/fcs-fable/codegen/codegen.fsproj +++ b/src/fcs-fable/codegen/codegen.fsproj @@ -7,7 +7,7 @@ Exe - net7.0 + net8.0 @@ -18,34 +18,34 @@ FSIstrings.txt --> - --unicode --lexlib Internal.Utilities.Text.Lexing + --module FSharp.Compiler.AbstractIL.AsciiLexer --internal --open Internal.Utilities.Text.Lexing --open FSharp.Compiler.AbstractIL.AsciiParser --unicode --lexlib Internal.Utilities.Text.Lexing AbstractIL/illex.fsl - --module FSharp.Compiler.AbstractIL.AsciiParser --open FSharp.Compiler.AbstractIL --internal --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing + --module FSharp.Compiler.AbstractIL.AsciiParser --open FSharp.Compiler.AbstractIL.AsciiConstants --open FSharp.Compiler.AbstractIL.IL --internal --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing --buffer-type-argument char AbstractIL/ilpars.fsy - --unicode --lexlib Internal.Utilities.Text.Lexing + --module FSharp.Compiler.PPLexer --internal --open FSharp.Compiler.Lexhelp --open Internal.Utilities.Text.Lexing --open FSharp.Compiler.PPParser --unicode --lexlib Internal.Utilities.Text.Lexing SyntaxTree/pplex.fsl - --module FSharp.Compiler.PPParser --open FSharp.Compiler --open FSharp.Compiler.Syntax --internal --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing + --module FSharp.Compiler.PPParser --open FSharp.Compiler.ParseHelpers --internal --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing --buffer-type-argument char SyntaxTree/pppars.fsy - --unicode --lexlib Internal.Utilities.Text.Lexing + --module FSharp.Compiler.Lexer --open FSharp.Compiler.Lexhelp --open Internal.Utilities.Text.Lexing --open FSharp.Compiler.Parser --open FSharp.Compiler.Text --open FSharp.Compiler.ParseHelpers --internal --unicode --lexlib Internal.Utilities.Text.Lexing SyntaxTree/lex.fsl - --module FSharp.Compiler.Parser --open FSharp.Compiler --open FSharp.Compiler.Syntax --internal --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing + --module FSharp.Compiler.Parser --open FSharp.Compiler --open FSharp.Compiler.Syntax --open FSharp.Compiler.Text --internal --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing --buffer-type-argument char SyntaxTree/pars.fsy - + diff --git a/src/fcs-fable/codegen/illex.fs b/src/fcs-fable/codegen/illex.fs index 514f930f26..003091d555 100644 --- a/src/fcs-fable/codegen/illex.fs +++ b/src/fcs-fable/codegen/illex.fs @@ -1,17 +1,15 @@ -//# 3 "src/Compiler/AbstractIL/illex.fsl" - +module internal FSharp.Compiler.AbstractIL.AsciiLexer -module internal FSharp.Compiler.AbstractIL.AsciiLexer +open Internal.Utilities.Text.Lexing +open FSharp.Compiler.AbstractIL.AsciiParser +//# 3 "src/Compiler/AbstractIL/illex.fsl" + open Internal.Utilities.Collections open Internal.Utilities.Text -open Internal.Utilities.Text.Lexing open Internal.Utilities.Library - -open FSharp.Compiler.AbstractIL -open FSharp.Compiler.AbstractIL.AsciiParser -open FSharp.Compiler.AbstractIL.AsciiConstants - +open FSharp.Compiler.AbstractIL +open FSharp.Compiler.AbstractIL.AsciiConstants #if FABLE_COMPILER @@ -98,7 +96,7 @@ let evalDigit ch = (int ch) - (int '0') let kwdOrInstrOrId s = match (Lazy.force kwdInstrTable).TryFind s with Some v -> v | _ -> VAL_ID s -//# 101 "illex.fs" +//# 99 "illex.fs" let trans : uint16[] array = [| (* State 0 *) @@ -383,152 +381,152 @@ let rec _fslex_dummy () = _fslex_dummy() and token lexbuf = match _fslex_tables.Interpret(0,lexbuf) with | 0 -> ( -//# 107 "src/Compiler/AbstractIL/illex.fsl" +//# 100 "src/Compiler/AbstractIL/illex.fsl" COMMA -//# 388 "illex.fs" +//# 386 "illex.fs" ) | 1 -> ( -//# 108 "src/Compiler/AbstractIL/illex.fsl" +//# 101 "src/Compiler/AbstractIL/illex.fsl" DOT -//# 393 "illex.fs" +//# 391 "illex.fs" ) | 2 -> ( -//# 109 "src/Compiler/AbstractIL/illex.fsl" +//# 102 "src/Compiler/AbstractIL/illex.fsl" STAR -//# 398 "illex.fs" +//# 396 "illex.fs" ) | 3 -> ( -//# 110 "src/Compiler/AbstractIL/illex.fsl" +//# 103 "src/Compiler/AbstractIL/illex.fsl" BANG -//# 403 "illex.fs" +//# 401 "illex.fs" ) | 4 -> ( -//# 111 "src/Compiler/AbstractIL/illex.fsl" +//# 104 "src/Compiler/AbstractIL/illex.fsl" AMP -//# 408 "illex.fs" +//# 406 "illex.fs" ) | 5 -> ( -//# 112 "src/Compiler/AbstractIL/illex.fsl" +//# 105 "src/Compiler/AbstractIL/illex.fsl" LPAREN -//# 413 "illex.fs" +//# 411 "illex.fs" ) | 6 -> ( -//# 113 "src/Compiler/AbstractIL/illex.fsl" +//# 106 "src/Compiler/AbstractIL/illex.fsl" RPAREN -//# 418 "illex.fs" +//# 416 "illex.fs" ) | 7 -> ( -//# 114 "src/Compiler/AbstractIL/illex.fsl" +//# 107 "src/Compiler/AbstractIL/illex.fsl" LBRACK -//# 423 "illex.fs" +//# 421 "illex.fs" ) | 8 -> ( -//# 115 "src/Compiler/AbstractIL/illex.fsl" +//# 108 "src/Compiler/AbstractIL/illex.fsl" RBRACK -//# 428 "illex.fs" +//# 426 "illex.fs" ) | 9 -> ( -//# 116 "src/Compiler/AbstractIL/illex.fsl" +//# 109 "src/Compiler/AbstractIL/illex.fsl" SLASH -//# 433 "illex.fs" +//# 431 "illex.fs" ) | 10 -> ( -//# 117 "src/Compiler/AbstractIL/illex.fsl" +//# 110 "src/Compiler/AbstractIL/illex.fsl" LESS -//# 438 "illex.fs" +//# 436 "illex.fs" ) | 11 -> ( -//# 118 "src/Compiler/AbstractIL/illex.fsl" +//# 111 "src/Compiler/AbstractIL/illex.fsl" GREATER -//# 443 "illex.fs" +//# 441 "illex.fs" ) | 12 -> ( -//# 119 "src/Compiler/AbstractIL/illex.fsl" +//# 112 "src/Compiler/AbstractIL/illex.fsl" ELIPSES -//# 448 "illex.fs" +//# 446 "illex.fs" ) | 13 -> ( -//# 120 "src/Compiler/AbstractIL/illex.fsl" +//# 113 "src/Compiler/AbstractIL/illex.fsl" DCOLON -//# 453 "illex.fs" +//# 451 "illex.fs" ) | 14 -> ( -//# 121 "src/Compiler/AbstractIL/illex.fsl" +//# 114 "src/Compiler/AbstractIL/illex.fsl" PLUS -//# 458 "illex.fs" +//# 456 "illex.fs" ) | 15 -> ( -//# 123 "src/Compiler/AbstractIL/illex.fsl" +//# 116 "src/Compiler/AbstractIL/illex.fsl" VAL_INT64(int64(lexeme lexbuf)) -//# 463 "illex.fs" +//# 461 "illex.fs" ) | 16 -> ( -//# 132 "src/Compiler/AbstractIL/illex.fsl" +//# 125 "src/Compiler/AbstractIL/illex.fsl" VAL_INT32_ELIPSES(int32(lexemeTrimBoth lexbuf 0 3)) -//# 468 "illex.fs" +//# 466 "illex.fs" ) | 17 -> ( -//# 134 "src/Compiler/AbstractIL/illex.fsl" +//# 127 "src/Compiler/AbstractIL/illex.fsl" let c1 = (lexemeChar lexbuf 0) in let c2 = (lexemeChar lexbuf 1) in if c1 >= '0' && c1 <= '9' && c2 >= '0' && c2 <= '9' then VAL_INT64(int64 (10*evalDigit c1 + evalDigit c2) ) else VAL_ID(lexeme lexbuf) -//# 477 "illex.fs" +//# 475 "illex.fs" ) | 18 -> ( -//# 140 "src/Compiler/AbstractIL/illex.fsl" +//# 133 "src/Compiler/AbstractIL/illex.fsl" VAL_INT64(int64(lexeme lexbuf)) -//# 482 "illex.fs" +//# 480 "illex.fs" ) | 19 -> ( -//# 142 "src/Compiler/AbstractIL/illex.fsl" +//# 135 "src/Compiler/AbstractIL/illex.fsl" let c1 = (lexemeChar lexbuf 6) in let c2 = (lexemeChar lexbuf 7) in if c1 >= '0' && c1 <= '9' && c2 >= '0' && c2 <= '9' then VAL_INT64(int64 (10*evalDigit c1 + evalDigit c2)) else VAL_ID(lexeme lexbuf) -//# 491 "illex.fs" +//# 489 "illex.fs" ) | 20 -> ( -//# 149 "src/Compiler/AbstractIL/illex.fsl" +//# 142 "src/Compiler/AbstractIL/illex.fsl" VAL_INT64(int64(lexeme lexbuf)) -//# 496 "illex.fs" +//# 494 "illex.fs" ) | 21 -> ( -//# 151 "src/Compiler/AbstractIL/illex.fsl" +//# 144 "src/Compiler/AbstractIL/illex.fsl" VAL_FLOAT64( (float (lexeme lexbuf)) ) -//# 501 "illex.fs" +//# 499 "illex.fs" ) | 22 -> ( -//# 154 "src/Compiler/AbstractIL/illex.fsl" +//# 147 "src/Compiler/AbstractIL/illex.fsl" let s = (lexeme lexbuf) in kwdOrInstr s -//# 506 "illex.fs" +//# 504 "illex.fs" ) | 23 -> ( -//# 156 "src/Compiler/AbstractIL/illex.fsl" +//# 149 "src/Compiler/AbstractIL/illex.fsl" kwdOrInstrOrId (lexeme lexbuf) -//# 511 "illex.fs" +//# 509 "illex.fs" ) | 24 -> ( -//# 159 "src/Compiler/AbstractIL/illex.fsl" +//# 152 "src/Compiler/AbstractIL/illex.fsl" VAL_DOTTEDNAME(lexeme lexbuf) -//# 516 "illex.fs" +//# 514 "illex.fs" ) | 25 -> ( -//# 162 "src/Compiler/AbstractIL/illex.fsl" +//# 155 "src/Compiler/AbstractIL/illex.fsl" token lexbuf -//# 521 "illex.fs" +//# 519 "illex.fs" ) | 26 -> ( -//# 164 "src/Compiler/AbstractIL/illex.fsl" +//# 157 "src/Compiler/AbstractIL/illex.fsl" unexpectedChar lexbuf -//# 526 "illex.fs" +//# 524 "illex.fs" ) | 27 -> ( -//# 166 "src/Compiler/AbstractIL/illex.fsl" +//# 159 "src/Compiler/AbstractIL/illex.fsl" EOF -//# 531 "illex.fs" +//# 529 "illex.fs" ) | _ -> failwith "token" diff --git a/src/fcs-fable/codegen/illex.fsi b/src/fcs-fable/codegen/illex.fsi new file mode 100644 index 0000000000..528a3ebf7c --- /dev/null +++ b/src/fcs-fable/codegen/illex.fsi @@ -0,0 +1,7 @@ +module internal FSharp.Compiler.AbstractIL.AsciiLexer + +open Internal.Utilities.Text.Lexing +open FSharp.Compiler.AbstractIL.AsciiParser + +/// Rule token +val token: lexbuf: LexBuffer -> token diff --git a/src/fcs-fable/codegen/ilpars.fs b/src/fcs-fable/codegen/ilpars.fs index 1fc212609a..0744b083a3 100644 --- a/src/fcs-fable/codegen/ilpars.fs +++ b/src/fcs-fable/codegen/ilpars.fs @@ -1,7 +1,8 @@ // Implementation file for parser generated by fsyacc module internal FSharp.Compiler.AbstractIL.AsciiParser #nowarn "64";; // turn off warnings that type variables used in production annotations are instantiated to concrete type -open FSharp.Compiler.AbstractIL +open FSharp.Compiler.AbstractIL.AsciiConstants +open FSharp.Compiler.AbstractIL.IL open Internal.Utilities.Text.Lexing open Internal.Utilities.Text.Parsing.ParseHelpers //# 3 "src/Compiler/AbstractIL/ilpars.fsy" @@ -9,21 +10,7 @@ open Internal.Utilities.Text.Parsing.ParseHelpers #nowarn "1182" // the generated code often has unused variable "parseState" -open Internal.Utilities open Internal.Utilities.Library -open Internal.Utilities.Text - -open FSharp.Compiler.AbstractIL -open FSharp.Compiler.AbstractIL -open FSharp.Compiler.AbstractIL.AsciiConstants -open FSharp.Compiler.AbstractIL.Diagnostics -open FSharp.Compiler.AbstractIL.ILX.Types -open FSharp.Compiler.AbstractIL.IL - - -let pfailwith s = - stderr.WriteLine ("*** error: "+s); - raise Parsing.RecoverableParseError type ResolvedAtMethodSpecScope<'T> = ResolvedAtMethodSpecScope of (ILGenericParameterDefs -> 'T) @@ -37,7 +24,7 @@ let resolveCurrentMethodSpecScope obj = resolveMethodSpecScope obj mkILEmptyGenericParams -//# 40 "ilpars.fs" +//# 27 "ilpars.fs" // This type is the type of tokens accepted by the parser type token = | VOID @@ -580,7 +567,7 @@ let _fsyacc_reductionSymbolCounts = [|1us;1us;2us;2us;1us;3us;1us;2us;0us;1us;2u let _fsyacc_productionToNonTerminalTable = [|0us;1us;2us;3us;4us;4us;5us;6us;6us;7us;7us;7us;7us;7us;7us;7us;7us;7us;7us;8us;8us;8us;9us;9us;10us;10us;11us;12us;13us;13us;13us;14us;14us;14us;15us;15us;15us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;16us;17us;17us;18us;18us;18us;18us;18us;18us;19us;19us;20us;21us;22us;22us;23us;23us;24us;25us;25us;|] let _fsyacc_immediateActions = [|65535us;49152us;65535us;49152us;65535us;16386us;65535us;16387us;65535us;16391us;16393us;65535us;16394us;65535us;65535us;16395us;65535us;16396us;65535us;16397us;16398us;65535us;16399us;65535us;65535us;16400us;65535us;16401us;65535us;16402us;16403us;16404us;65535us;65535us;65535us;16405us;65535us;65535us;16406us;16407us;65535us;16409us;65535us;16410us;16411us;16412us;65535us;65535us;65535us;16414us;16421us;16422us;65535us;16423us;65535us;65535us;16424us;65535us;16425us;65535us;16426us;65535us;16427us;16428us;16429us;16430us;16431us;16432us;16433us;16434us;16435us;16436us;16437us;16438us;65535us;16439us;16440us;16441us;16442us;16443us;16444us;16445us;16446us;65535us;16447us;65535us;16448us;16449us;65535us;16450us;16451us;65535us;16452us;65535us;65535us;16455us;65535us;16457us;16459us;16460us;16461us;16462us;16463us;65535us;65535us;65535us;16464us;16466us;65535us;65535us;16467us;16468us;65535us;16469us;|] let _fsyacc_reductions = lazy [| -//# 583 "ilpars.fs" +//# 570 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> ILInstr array in Microsoft.FSharp.Core.Operators.box @@ -589,7 +576,7 @@ let _fsyacc_reductions = lazy [| raise (Internal.Utilities.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1)) ) : 'gentype__startilInstrs)); -//# 592 "ilpars.fs" +//# 579 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> ILType in Microsoft.FSharp.Core.Operators.box @@ -598,108 +585,108 @@ let _fsyacc_reductions = lazy [| raise (Internal.Utilities.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1)) ) : 'gentype__startilType)); -//# 601 "ilpars.fs" +//# 588 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> ILType ResolvedAtMethodSpecScope in Microsoft.FSharp.Core.Operators.box ( ( -//# 116 "src/Compiler/AbstractIL/ilpars.fsy" +//# 102 "src/Compiler/AbstractIL/ilpars.fsy" resolveMethodSpecScope _1 [] ) -//# 116 "src/Compiler/AbstractIL/ilpars.fsy" +//# 102 "src/Compiler/AbstractIL/ilpars.fsy" : ILType)); -//# 612 "ilpars.fs" +//# 599 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_instrs2 in Microsoft.FSharp.Core.Operators.box ( ( -//# 120 "src/Compiler/AbstractIL/ilpars.fsy" +//# 106 "src/Compiler/AbstractIL/ilpars.fsy" Array.ofList _1 ) -//# 120 "src/Compiler/AbstractIL/ilpars.fsy" +//# 106 "src/Compiler/AbstractIL/ilpars.fsy" : ILInstr array)); -//# 623 "ilpars.fs" +//# 610 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 124 "src/Compiler/AbstractIL/ilpars.fsy" +//# 110 "src/Compiler/AbstractIL/ilpars.fsy" _1 ) -//# 124 "src/Compiler/AbstractIL/ilpars.fsy" +//# 110 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_compQstring)); -//# 634 "ilpars.fs" +//# 621 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_compQstring in let _3 = parseState.GetInput(3) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 125 "src/Compiler/AbstractIL/ilpars.fsy" +//# 111 "src/Compiler/AbstractIL/ilpars.fsy" _1 + _3 ) -//# 125 "src/Compiler/AbstractIL/ilpars.fsy" +//# 111 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_compQstring)); -//# 646 "ilpars.fs" +//# 633 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 127 "src/Compiler/AbstractIL/ilpars.fsy" +//# 113 "src/Compiler/AbstractIL/ilpars.fsy" _1 ) -//# 127 "src/Compiler/AbstractIL/ilpars.fsy" +//# 113 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_methodName)); -//# 657 "ilpars.fs" +//# 644 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_instr in let _2 = parseState.GetInput(2) :?> 'gentype_instrs2 in Microsoft.FSharp.Core.Operators.box ( ( -//# 131 "src/Compiler/AbstractIL/ilpars.fsy" +//# 117 "src/Compiler/AbstractIL/ilpars.fsy" _1 :: _2 ) -//# 131 "src/Compiler/AbstractIL/ilpars.fsy" +//# 117 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_instrs2)); -//# 669 "ilpars.fs" +//# 656 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 132 "src/Compiler/AbstractIL/ilpars.fsy" +//# 118 "src/Compiler/AbstractIL/ilpars.fsy" [] ) -//# 132 "src/Compiler/AbstractIL/ilpars.fsy" +//# 118 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_instrs2)); -//# 679 "ilpars.fs" +//# 666 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> NoArgInstr in Microsoft.FSharp.Core.Operators.box ( ( -//# 136 "src/Compiler/AbstractIL/ilpars.fsy" +//# 122 "src/Compiler/AbstractIL/ilpars.fsy" (_1 ()) ) -//# 136 "src/Compiler/AbstractIL/ilpars.fsy" +//# 122 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_instr)); -//# 690 "ilpars.fs" +//# 677 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Int32Instr in let _2 = parseState.GetInput(2) :?> 'gentype_int32 in Microsoft.FSharp.Core.Operators.box ( ( -//# 138 "src/Compiler/AbstractIL/ilpars.fsy" +//# 124 "src/Compiler/AbstractIL/ilpars.fsy" (_1 _2) ) -//# 138 "src/Compiler/AbstractIL/ilpars.fsy" +//# 124 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_instr)); -//# 702 "ilpars.fs" +//# 689 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Int32Int32Instr in let _2 = parseState.GetInput(2) :?> 'gentype_int32 in @@ -707,60 +694,60 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 140 "src/Compiler/AbstractIL/ilpars.fsy" +//# 126 "src/Compiler/AbstractIL/ilpars.fsy" (_1 (_2,_3)) ) -//# 140 "src/Compiler/AbstractIL/ilpars.fsy" +//# 126 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_instr)); -//# 715 "ilpars.fs" +//# 702 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Int64Instr in let _2 = parseState.GetInput(2) :?> 'gentype_int64 in Microsoft.FSharp.Core.Operators.box ( ( -//# 142 "src/Compiler/AbstractIL/ilpars.fsy" +//# 128 "src/Compiler/AbstractIL/ilpars.fsy" (_1 _2) ) -//# 142 "src/Compiler/AbstractIL/ilpars.fsy" +//# 128 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_instr)); -//# 727 "ilpars.fs" +//# 714 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> DoubleInstr in let _2 = parseState.GetInput(2) :?> 'gentype_float64 in Microsoft.FSharp.Core.Operators.box ( ( -//# 144 "src/Compiler/AbstractIL/ilpars.fsy" +//# 130 "src/Compiler/AbstractIL/ilpars.fsy" (_1 (ILConst.R8 _2)) ) -//# 144 "src/Compiler/AbstractIL/ilpars.fsy" +//# 130 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_instr)); -//# 739 "ilpars.fs" +//# 726 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> DoubleInstr in let _2 = parseState.GetInput(2) :?> 'gentype_int64 in Microsoft.FSharp.Core.Operators.box ( ( -//# 146 "src/Compiler/AbstractIL/ilpars.fsy" +//# 132 "src/Compiler/AbstractIL/ilpars.fsy" (_1 (ILConst.R8 (float _2))) ) -//# 146 "src/Compiler/AbstractIL/ilpars.fsy" +//# 132 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_instr)); -//# 751 "ilpars.fs" +//# 738 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> TypeInstr in let _2 = parseState.GetInput(2) :?> 'gentype_typSpec in Microsoft.FSharp.Core.Operators.box ( ( -//# 148 "src/Compiler/AbstractIL/ilpars.fsy" +//# 134 "src/Compiler/AbstractIL/ilpars.fsy" _1 (resolveCurrentMethodSpecScope _2) ) -//# 148 "src/Compiler/AbstractIL/ilpars.fsy" +//# 134 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_instr)); -//# 763 "ilpars.fs" +//# 750 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> IntTypeInstr in let _2 = parseState.GetInput(2) :?> 'gentype_int32 in @@ -768,768 +755,768 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 150 "src/Compiler/AbstractIL/ilpars.fsy" +//# 136 "src/Compiler/AbstractIL/ilpars.fsy" _1 ( _2,resolveCurrentMethodSpecScope _3) ) -//# 150 "src/Compiler/AbstractIL/ilpars.fsy" +//# 136 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_instr)); -//# 776 "ilpars.fs" +//# 763 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> ValueTypeInstr in let _2 = parseState.GetInput(2) :?> 'gentype_typSpec in Microsoft.FSharp.Core.Operators.box ( ( -//# 152 "src/Compiler/AbstractIL/ilpars.fsy" +//# 138 "src/Compiler/AbstractIL/ilpars.fsy" _1 (resolveCurrentMethodSpecScope _2) ) -//# 152 "src/Compiler/AbstractIL/ilpars.fsy" +//# 138 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_instr)); -//# 788 "ilpars.fs" +//# 775 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> TokenInstr in let _2 = parseState.GetInput(2) :?> 'gentype_typSpec in Microsoft.FSharp.Core.Operators.box ( ( -//# 154 "src/Compiler/AbstractIL/ilpars.fsy" +//# 140 "src/Compiler/AbstractIL/ilpars.fsy" (_1 (ILToken.ILType (resolveCurrentMethodSpecScope _2))) ) -//# 154 "src/Compiler/AbstractIL/ilpars.fsy" +//# 140 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_instr)); -//# 800 "ilpars.fs" +//# 787 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_id in Microsoft.FSharp.Core.Operators.box ( ( -//# 161 "src/Compiler/AbstractIL/ilpars.fsy" +//# 147 "src/Compiler/AbstractIL/ilpars.fsy" _1 ) -//# 161 "src/Compiler/AbstractIL/ilpars.fsy" +//# 147 "src/Compiler/AbstractIL/ilpars.fsy" : string)); -//# 811 "ilpars.fs" +//# 798 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 163 "src/Compiler/AbstractIL/ilpars.fsy" +//# 149 "src/Compiler/AbstractIL/ilpars.fsy" _1 ) -//# 163 "src/Compiler/AbstractIL/ilpars.fsy" +//# 149 "src/Compiler/AbstractIL/ilpars.fsy" : string)); -//# 822 "ilpars.fs" +//# 809 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in let _3 = parseState.GetInput(3) :?> 'gentype_id in Microsoft.FSharp.Core.Operators.box ( ( -//# 165 "src/Compiler/AbstractIL/ilpars.fsy" +//# 151 "src/Compiler/AbstractIL/ilpars.fsy" _1 + "." + _3 ) -//# 165 "src/Compiler/AbstractIL/ilpars.fsy" +//# 151 "src/Compiler/AbstractIL/ilpars.fsy" : string)); -//# 834 "ilpars.fs" +//# 821 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> string in let _4 = parseState.GetInput(4) :?> 'gentype_slashedName in Microsoft.FSharp.Core.Operators.box ( ( -//# 169 "src/Compiler/AbstractIL/ilpars.fsy" +//# 155 "src/Compiler/AbstractIL/ilpars.fsy" let (enc,nm) = _4 ILScopeRef.PrimaryAssembly, enc, nm ) -//# 169 "src/Compiler/AbstractIL/ilpars.fsy" +//# 155 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_className)); -//# 847 "ilpars.fs" +//# 834 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_slashedName in Microsoft.FSharp.Core.Operators.box ( ( -//# 172 "src/Compiler/AbstractIL/ilpars.fsy" +//# 158 "src/Compiler/AbstractIL/ilpars.fsy" let enc, nm = _1 in (ILScopeRef.Local, enc, nm) ) -//# 172 "src/Compiler/AbstractIL/ilpars.fsy" +//# 158 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_className)); -//# 858 "ilpars.fs" +//# 845 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 176 "src/Compiler/AbstractIL/ilpars.fsy" +//# 162 "src/Compiler/AbstractIL/ilpars.fsy" ([],_1) ) -//# 176 "src/Compiler/AbstractIL/ilpars.fsy" +//# 162 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_slashedName)); -//# 869 "ilpars.fs" +//# 856 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in let _3 = parseState.GetInput(3) :?> 'gentype_slashedName in Microsoft.FSharp.Core.Operators.box ( ( -//# 178 "src/Compiler/AbstractIL/ilpars.fsy" +//# 164 "src/Compiler/AbstractIL/ilpars.fsy" let (enc,nm) = _3 in (_1 :: enc, nm) ) -//# 178 "src/Compiler/AbstractIL/ilpars.fsy" +//# 164 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_slashedName)); -//# 881 "ilpars.fs" +//# 868 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_className in let _2 = parseState.GetInput(2) :?> 'gentype_opt_actual_tyargs in Microsoft.FSharp.Core.Operators.box ( ( -//# 182 "src/Compiler/AbstractIL/ilpars.fsy" +//# 168 "src/Compiler/AbstractIL/ilpars.fsy" let (a,b,c) = _1 resolveMethodSpecScopeThen _2 (fun inst -> noMethodSpecScope ( (mkILTySpec ( (mkILNestedTyRef (a,b,c)), inst)))) ) -//# 182 "src/Compiler/AbstractIL/ilpars.fsy" +//# 168 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_typeNameInst)); -//# 895 "ilpars.fs" +//# 882 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_className in Microsoft.FSharp.Core.Operators.box ( ( -//# 189 "src/Compiler/AbstractIL/ilpars.fsy" +//# 175 "src/Compiler/AbstractIL/ilpars.fsy" let (a,b,c) = _1 noMethodSpecScope ( (mkILTySpec ( (mkILNestedTyRef (a,b,c)), []))) ) -//# 189 "src/Compiler/AbstractIL/ilpars.fsy" +//# 175 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_typeName)); -//# 907 "ilpars.fs" +//# 894 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typeName in Microsoft.FSharp.Core.Operators.box ( ( -//# 195 "src/Compiler/AbstractIL/ilpars.fsy" +//# 181 "src/Compiler/AbstractIL/ilpars.fsy" resolveMethodSpecScopeThen _1 (fun tref -> noMethodSpecScope (mkILBoxedType tref)) ) -//# 195 "src/Compiler/AbstractIL/ilpars.fsy" +//# 181 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_typSpec)); -//# 919 "ilpars.fs" +//# 906 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> ILType ResolvedAtMethodSpecScope in Microsoft.FSharp.Core.Operators.box ( ( -//# 198 "src/Compiler/AbstractIL/ilpars.fsy" +//# 184 "src/Compiler/AbstractIL/ilpars.fsy" _1 ) -//# 198 "src/Compiler/AbstractIL/ilpars.fsy" +//# 184 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_typSpec)); -//# 930 "ilpars.fs" +//# 917 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> ILType ResolvedAtMethodSpecScope in Microsoft.FSharp.Core.Operators.box ( ( -//# 200 "src/Compiler/AbstractIL/ilpars.fsy" +//# 186 "src/Compiler/AbstractIL/ilpars.fsy" _2 ) -//# 200 "src/Compiler/AbstractIL/ilpars.fsy" +//# 186 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_typSpec)); -//# 941 "ilpars.fs" +//# 928 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_callKind in Microsoft.FSharp.Core.Operators.box ( ( -//# 205 "src/Compiler/AbstractIL/ilpars.fsy" +//# 191 "src/Compiler/AbstractIL/ilpars.fsy" Callconv (ILThisConvention.Instance,_2) ) -//# 205 "src/Compiler/AbstractIL/ilpars.fsy" +//# 191 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_callConv)); -//# 952 "ilpars.fs" +//# 939 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_callKind in Microsoft.FSharp.Core.Operators.box ( ( -//# 207 "src/Compiler/AbstractIL/ilpars.fsy" +//# 193 "src/Compiler/AbstractIL/ilpars.fsy" Callconv (ILThisConvention.InstanceExplicit,_2) ) -//# 207 "src/Compiler/AbstractIL/ilpars.fsy" +//# 193 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_callConv)); -//# 963 "ilpars.fs" +//# 950 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_callKind in Microsoft.FSharp.Core.Operators.box ( ( -//# 209 "src/Compiler/AbstractIL/ilpars.fsy" +//# 195 "src/Compiler/AbstractIL/ilpars.fsy" Callconv (ILThisConvention.Static,_1) ) -//# 209 "src/Compiler/AbstractIL/ilpars.fsy" +//# 195 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_callConv)); -//# 974 "ilpars.fs" +//# 961 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 213 "src/Compiler/AbstractIL/ilpars.fsy" +//# 199 "src/Compiler/AbstractIL/ilpars.fsy" ILArgConvention.Default ) -//# 213 "src/Compiler/AbstractIL/ilpars.fsy" +//# 199 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_callKind)); -//# 984 "ilpars.fs" +//# 971 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 215 "src/Compiler/AbstractIL/ilpars.fsy" +//# 201 "src/Compiler/AbstractIL/ilpars.fsy" ILArgConvention.Default ) -//# 215 "src/Compiler/AbstractIL/ilpars.fsy" +//# 201 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_callKind)); -//# 994 "ilpars.fs" +//# 981 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 217 "src/Compiler/AbstractIL/ilpars.fsy" +//# 203 "src/Compiler/AbstractIL/ilpars.fsy" ILArgConvention.VarArg ) -//# 217 "src/Compiler/AbstractIL/ilpars.fsy" +//# 203 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_callKind)); -//# 1004 "ilpars.fs" +//# 991 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 226 "src/Compiler/AbstractIL/ilpars.fsy" +//# 212 "src/Compiler/AbstractIL/ilpars.fsy" noMethodSpecScope PrimaryAssemblyILGlobals.typ_String ) -//# 226 "src/Compiler/AbstractIL/ilpars.fsy" +//# 212 "src/Compiler/AbstractIL/ilpars.fsy" : ILType ResolvedAtMethodSpecScope)); -//# 1014 "ilpars.fs" +//# 1001 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 228 "src/Compiler/AbstractIL/ilpars.fsy" +//# 214 "src/Compiler/AbstractIL/ilpars.fsy" noMethodSpecScope PrimaryAssemblyILGlobals.typ_Object ) -//# 228 "src/Compiler/AbstractIL/ilpars.fsy" +//# 214 "src/Compiler/AbstractIL/ilpars.fsy" : ILType ResolvedAtMethodSpecScope)); -//# 1024 "ilpars.fs" +//# 1011 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typeNameInst in Microsoft.FSharp.Core.Operators.box ( ( -//# 230 "src/Compiler/AbstractIL/ilpars.fsy" +//# 216 "src/Compiler/AbstractIL/ilpars.fsy" resolveMethodSpecScopeThen _2 (fun tspec -> noMethodSpecScope (mkILBoxedType tspec)) ) -//# 230 "src/Compiler/AbstractIL/ilpars.fsy" +//# 216 "src/Compiler/AbstractIL/ilpars.fsy" : ILType ResolvedAtMethodSpecScope)); -//# 1036 "ilpars.fs" +//# 1023 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_typeNameInst in Microsoft.FSharp.Core.Operators.box ( ( -//# 233 "src/Compiler/AbstractIL/ilpars.fsy" +//# 219 "src/Compiler/AbstractIL/ilpars.fsy" resolveMethodSpecScopeThen _3 (fun tspec -> noMethodSpecScope (ILType.Value tspec)) ) -//# 233 "src/Compiler/AbstractIL/ilpars.fsy" +//# 219 "src/Compiler/AbstractIL/ilpars.fsy" : ILType ResolvedAtMethodSpecScope)); -//# 1048 "ilpars.fs" +//# 1035 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typeNameInst in Microsoft.FSharp.Core.Operators.box ( ( -//# 236 "src/Compiler/AbstractIL/ilpars.fsy" +//# 222 "src/Compiler/AbstractIL/ilpars.fsy" resolveMethodSpecScopeThen _2 (fun tspec -> noMethodSpecScope (ILType.Value tspec)) ) -//# 236 "src/Compiler/AbstractIL/ilpars.fsy" +//# 222 "src/Compiler/AbstractIL/ilpars.fsy" : ILType ResolvedAtMethodSpecScope)); -//# 1060 "ilpars.fs" +//# 1047 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> ILType ResolvedAtMethodSpecScope in Microsoft.FSharp.Core.Operators.box ( ( -//# 239 "src/Compiler/AbstractIL/ilpars.fsy" +//# 225 "src/Compiler/AbstractIL/ilpars.fsy" resolveMethodSpecScopeThen _1 (fun ty -> noMethodSpecScope (mkILArr1DTy ty)) ) -//# 239 "src/Compiler/AbstractIL/ilpars.fsy" +//# 225 "src/Compiler/AbstractIL/ilpars.fsy" : ILType ResolvedAtMethodSpecScope)); -//# 1071 "ilpars.fs" +//# 1058 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> ILType ResolvedAtMethodSpecScope in let _3 = parseState.GetInput(3) :?> 'gentype_bounds1 in Microsoft.FSharp.Core.Operators.box ( ( -//# 241 "src/Compiler/AbstractIL/ilpars.fsy" +//# 227 "src/Compiler/AbstractIL/ilpars.fsy" resolveMethodSpecScopeThen _1 (fun ty -> noMethodSpecScope (mkILArrTy (ty,ILArrayShape _3))) ) -//# 241 "src/Compiler/AbstractIL/ilpars.fsy" +//# 227 "src/Compiler/AbstractIL/ilpars.fsy" : ILType ResolvedAtMethodSpecScope)); -//# 1083 "ilpars.fs" +//# 1070 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> ILType ResolvedAtMethodSpecScope in Microsoft.FSharp.Core.Operators.box ( ( -//# 243 "src/Compiler/AbstractIL/ilpars.fsy" +//# 229 "src/Compiler/AbstractIL/ilpars.fsy" resolveMethodSpecScopeThen _1 (fun ty -> noMethodSpecScope (ILType.Byref ty)) ) -//# 243 "src/Compiler/AbstractIL/ilpars.fsy" +//# 229 "src/Compiler/AbstractIL/ilpars.fsy" : ILType ResolvedAtMethodSpecScope)); -//# 1094 "ilpars.fs" +//# 1081 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> ILType ResolvedAtMethodSpecScope in Microsoft.FSharp.Core.Operators.box ( ( -//# 245 "src/Compiler/AbstractIL/ilpars.fsy" +//# 231 "src/Compiler/AbstractIL/ilpars.fsy" resolveMethodSpecScopeThen _1 (fun ty -> noMethodSpecScope (ILType.Ptr ty)) ) -//# 245 "src/Compiler/AbstractIL/ilpars.fsy" +//# 231 "src/Compiler/AbstractIL/ilpars.fsy" : ILType ResolvedAtMethodSpecScope)); -//# 1105 "ilpars.fs" +//# 1092 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 247 "src/Compiler/AbstractIL/ilpars.fsy" +//# 233 "src/Compiler/AbstractIL/ilpars.fsy" noMethodSpecScope PrimaryAssemblyILGlobals.typ_Char ) -//# 247 "src/Compiler/AbstractIL/ilpars.fsy" +//# 233 "src/Compiler/AbstractIL/ilpars.fsy" : ILType ResolvedAtMethodSpecScope)); -//# 1115 "ilpars.fs" +//# 1102 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 249 "src/Compiler/AbstractIL/ilpars.fsy" +//# 235 "src/Compiler/AbstractIL/ilpars.fsy" noMethodSpecScope ILType.Void ) -//# 249 "src/Compiler/AbstractIL/ilpars.fsy" +//# 235 "src/Compiler/AbstractIL/ilpars.fsy" : ILType ResolvedAtMethodSpecScope)); -//# 1125 "ilpars.fs" +//# 1112 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 251 "src/Compiler/AbstractIL/ilpars.fsy" +//# 237 "src/Compiler/AbstractIL/ilpars.fsy" noMethodSpecScope PrimaryAssemblyILGlobals.typ_Bool ) -//# 251 "src/Compiler/AbstractIL/ilpars.fsy" +//# 237 "src/Compiler/AbstractIL/ilpars.fsy" : ILType ResolvedAtMethodSpecScope)); -//# 1135 "ilpars.fs" +//# 1122 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 253 "src/Compiler/AbstractIL/ilpars.fsy" +//# 239 "src/Compiler/AbstractIL/ilpars.fsy" noMethodSpecScope PrimaryAssemblyILGlobals.typ_SByte ) -//# 253 "src/Compiler/AbstractIL/ilpars.fsy" +//# 239 "src/Compiler/AbstractIL/ilpars.fsy" : ILType ResolvedAtMethodSpecScope)); -//# 1145 "ilpars.fs" +//# 1132 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 255 "src/Compiler/AbstractIL/ilpars.fsy" +//# 241 "src/Compiler/AbstractIL/ilpars.fsy" noMethodSpecScope PrimaryAssemblyILGlobals.typ_Int16 ) -//# 255 "src/Compiler/AbstractIL/ilpars.fsy" +//# 241 "src/Compiler/AbstractIL/ilpars.fsy" : ILType ResolvedAtMethodSpecScope)); -//# 1155 "ilpars.fs" +//# 1142 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 257 "src/Compiler/AbstractIL/ilpars.fsy" +//# 243 "src/Compiler/AbstractIL/ilpars.fsy" noMethodSpecScope PrimaryAssemblyILGlobals.typ_Int32 ) -//# 257 "src/Compiler/AbstractIL/ilpars.fsy" +//# 243 "src/Compiler/AbstractIL/ilpars.fsy" : ILType ResolvedAtMethodSpecScope)); -//# 1165 "ilpars.fs" +//# 1152 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 259 "src/Compiler/AbstractIL/ilpars.fsy" +//# 245 "src/Compiler/AbstractIL/ilpars.fsy" noMethodSpecScope PrimaryAssemblyILGlobals.typ_Int64 ) -//# 259 "src/Compiler/AbstractIL/ilpars.fsy" +//# 245 "src/Compiler/AbstractIL/ilpars.fsy" : ILType ResolvedAtMethodSpecScope)); -//# 1175 "ilpars.fs" +//# 1162 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 261 "src/Compiler/AbstractIL/ilpars.fsy" +//# 247 "src/Compiler/AbstractIL/ilpars.fsy" noMethodSpecScope PrimaryAssemblyILGlobals.typ_Single ) -//# 261 "src/Compiler/AbstractIL/ilpars.fsy" +//# 247 "src/Compiler/AbstractIL/ilpars.fsy" : ILType ResolvedAtMethodSpecScope)); -//# 1185 "ilpars.fs" +//# 1172 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 263 "src/Compiler/AbstractIL/ilpars.fsy" +//# 249 "src/Compiler/AbstractIL/ilpars.fsy" noMethodSpecScope PrimaryAssemblyILGlobals.typ_Double ) -//# 263 "src/Compiler/AbstractIL/ilpars.fsy" +//# 249 "src/Compiler/AbstractIL/ilpars.fsy" : ILType ResolvedAtMethodSpecScope)); -//# 1195 "ilpars.fs" +//# 1182 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 265 "src/Compiler/AbstractIL/ilpars.fsy" +//# 251 "src/Compiler/AbstractIL/ilpars.fsy" noMethodSpecScope PrimaryAssemblyILGlobals.typ_Byte ) -//# 265 "src/Compiler/AbstractIL/ilpars.fsy" +//# 251 "src/Compiler/AbstractIL/ilpars.fsy" : ILType ResolvedAtMethodSpecScope)); -//# 1205 "ilpars.fs" +//# 1192 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 267 "src/Compiler/AbstractIL/ilpars.fsy" +//# 253 "src/Compiler/AbstractIL/ilpars.fsy" noMethodSpecScope PrimaryAssemblyILGlobals.typ_UInt16 ) -//# 267 "src/Compiler/AbstractIL/ilpars.fsy" +//# 253 "src/Compiler/AbstractIL/ilpars.fsy" : ILType ResolvedAtMethodSpecScope)); -//# 1215 "ilpars.fs" +//# 1202 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 269 "src/Compiler/AbstractIL/ilpars.fsy" +//# 255 "src/Compiler/AbstractIL/ilpars.fsy" noMethodSpecScope PrimaryAssemblyILGlobals.typ_UInt32 ) -//# 269 "src/Compiler/AbstractIL/ilpars.fsy" +//# 255 "src/Compiler/AbstractIL/ilpars.fsy" : ILType ResolvedAtMethodSpecScope)); -//# 1225 "ilpars.fs" +//# 1212 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 271 "src/Compiler/AbstractIL/ilpars.fsy" +//# 257 "src/Compiler/AbstractIL/ilpars.fsy" noMethodSpecScope PrimaryAssemblyILGlobals.typ_UInt64 ) -//# 271 "src/Compiler/AbstractIL/ilpars.fsy" +//# 257 "src/Compiler/AbstractIL/ilpars.fsy" : ILType ResolvedAtMethodSpecScope)); -//# 1235 "ilpars.fs" +//# 1222 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 273 "src/Compiler/AbstractIL/ilpars.fsy" +//# 259 "src/Compiler/AbstractIL/ilpars.fsy" noMethodSpecScope PrimaryAssemblyILGlobals.typ_Byte ) -//# 273 "src/Compiler/AbstractIL/ilpars.fsy" +//# 259 "src/Compiler/AbstractIL/ilpars.fsy" : ILType ResolvedAtMethodSpecScope)); -//# 1245 "ilpars.fs" +//# 1232 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 275 "src/Compiler/AbstractIL/ilpars.fsy" +//# 261 "src/Compiler/AbstractIL/ilpars.fsy" noMethodSpecScope PrimaryAssemblyILGlobals.typ_UInt16 ) -//# 275 "src/Compiler/AbstractIL/ilpars.fsy" +//# 261 "src/Compiler/AbstractIL/ilpars.fsy" : ILType ResolvedAtMethodSpecScope)); -//# 1255 "ilpars.fs" +//# 1242 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 277 "src/Compiler/AbstractIL/ilpars.fsy" +//# 263 "src/Compiler/AbstractIL/ilpars.fsy" noMethodSpecScope PrimaryAssemblyILGlobals.typ_UInt32 ) -//# 277 "src/Compiler/AbstractIL/ilpars.fsy" +//# 263 "src/Compiler/AbstractIL/ilpars.fsy" : ILType ResolvedAtMethodSpecScope)); -//# 1265 "ilpars.fs" +//# 1252 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 279 "src/Compiler/AbstractIL/ilpars.fsy" +//# 265 "src/Compiler/AbstractIL/ilpars.fsy" noMethodSpecScope PrimaryAssemblyILGlobals.typ_UInt64 ) -//# 279 "src/Compiler/AbstractIL/ilpars.fsy" +//# 265 "src/Compiler/AbstractIL/ilpars.fsy" : ILType ResolvedAtMethodSpecScope)); -//# 1275 "ilpars.fs" +//# 1262 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 281 "src/Compiler/AbstractIL/ilpars.fsy" +//# 267 "src/Compiler/AbstractIL/ilpars.fsy" noMethodSpecScope PrimaryAssemblyILGlobals.typ_IntPtr ) -//# 281 "src/Compiler/AbstractIL/ilpars.fsy" +//# 267 "src/Compiler/AbstractIL/ilpars.fsy" : ILType ResolvedAtMethodSpecScope)); -//# 1285 "ilpars.fs" +//# 1272 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 283 "src/Compiler/AbstractIL/ilpars.fsy" +//# 269 "src/Compiler/AbstractIL/ilpars.fsy" noMethodSpecScope PrimaryAssemblyILGlobals.typ_UIntPtr ) -//# 283 "src/Compiler/AbstractIL/ilpars.fsy" +//# 269 "src/Compiler/AbstractIL/ilpars.fsy" : ILType ResolvedAtMethodSpecScope)); -//# 1295 "ilpars.fs" +//# 1282 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 285 "src/Compiler/AbstractIL/ilpars.fsy" +//# 271 "src/Compiler/AbstractIL/ilpars.fsy" noMethodSpecScope PrimaryAssemblyILGlobals.typ_UIntPtr ) -//# 285 "src/Compiler/AbstractIL/ilpars.fsy" +//# 271 "src/Compiler/AbstractIL/ilpars.fsy" : ILType ResolvedAtMethodSpecScope)); -//# 1305 "ilpars.fs" +//# 1292 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_int32 in Microsoft.FSharp.Core.Operators.box ( ( -//# 288 "src/Compiler/AbstractIL/ilpars.fsy" +//# 274 "src/Compiler/AbstractIL/ilpars.fsy" noMethodSpecScope (ILType.TypeVar (uint16 ( _2))) ) -//# 288 "src/Compiler/AbstractIL/ilpars.fsy" +//# 274 "src/Compiler/AbstractIL/ilpars.fsy" : ILType ResolvedAtMethodSpecScope)); -//# 1316 "ilpars.fs" +//# 1303 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_bound in Microsoft.FSharp.Core.Operators.box ( ( -//# 293 "src/Compiler/AbstractIL/ilpars.fsy" +//# 279 "src/Compiler/AbstractIL/ilpars.fsy" [_1] ) -//# 293 "src/Compiler/AbstractIL/ilpars.fsy" +//# 279 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_bounds1)); -//# 1327 "ilpars.fs" +//# 1314 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_bounds1 in let _3 = parseState.GetInput(3) :?> 'gentype_bound in Microsoft.FSharp.Core.Operators.box ( ( -//# 295 "src/Compiler/AbstractIL/ilpars.fsy" +//# 281 "src/Compiler/AbstractIL/ilpars.fsy" _1 @ [_3] ) -//# 295 "src/Compiler/AbstractIL/ilpars.fsy" +//# 281 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_bounds1)); -//# 1339 "ilpars.fs" +//# 1326 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 299 "src/Compiler/AbstractIL/ilpars.fsy" +//# 285 "src/Compiler/AbstractIL/ilpars.fsy" (None, None) ) -//# 299 "src/Compiler/AbstractIL/ilpars.fsy" +//# 285 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_bound)); -//# 1349 "ilpars.fs" +//# 1336 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_int32 in Microsoft.FSharp.Core.Operators.box ( ( -//# 301 "src/Compiler/AbstractIL/ilpars.fsy" +//# 287 "src/Compiler/AbstractIL/ilpars.fsy" (None, Some _1) ) -//# 301 "src/Compiler/AbstractIL/ilpars.fsy" +//# 287 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_bound)); -//# 1360 "ilpars.fs" +//# 1347 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_int32 in let _3 = parseState.GetInput(3) :?> 'gentype_int32 in Microsoft.FSharp.Core.Operators.box ( ( -//# 303 "src/Compiler/AbstractIL/ilpars.fsy" +//# 289 "src/Compiler/AbstractIL/ilpars.fsy" (Some _1, Some (_3 - _1 + 1)) ) -//# 303 "src/Compiler/AbstractIL/ilpars.fsy" +//# 289 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_bound)); -//# 1372 "ilpars.fs" +//# 1359 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_int32 in Microsoft.FSharp.Core.Operators.box ( ( -//# 305 "src/Compiler/AbstractIL/ilpars.fsy" +//# 291 "src/Compiler/AbstractIL/ilpars.fsy" (Some _1, None) ) -//# 305 "src/Compiler/AbstractIL/ilpars.fsy" +//# 291 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_bound)); -//# 1383 "ilpars.fs" +//# 1370 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> int32 in let _2 = parseState.GetInput(2) :?> 'gentype_int32 in Microsoft.FSharp.Core.Operators.box ( ( -//# 312 "src/Compiler/AbstractIL/ilpars.fsy" +//# 298 "src/Compiler/AbstractIL/ilpars.fsy" (Some _1, Some (_2 - _1 + 1)) ) -//# 312 "src/Compiler/AbstractIL/ilpars.fsy" +//# 298 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_bound)); -//# 1395 "ilpars.fs" +//# 1382 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> int32 in Microsoft.FSharp.Core.Operators.box ( ( -//# 314 "src/Compiler/AbstractIL/ilpars.fsy" +//# 300 "src/Compiler/AbstractIL/ilpars.fsy" (Some _1, None) ) -//# 314 "src/Compiler/AbstractIL/ilpars.fsy" +//# 300 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_bound)); -//# 1406 "ilpars.fs" +//# 1393 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 318 "src/Compiler/AbstractIL/ilpars.fsy" +//# 304 "src/Compiler/AbstractIL/ilpars.fsy" _1 ) -//# 318 "src/Compiler/AbstractIL/ilpars.fsy" +//# 304 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_id)); -//# 1417 "ilpars.fs" +//# 1404 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 320 "src/Compiler/AbstractIL/ilpars.fsy" +//# 306 "src/Compiler/AbstractIL/ilpars.fsy" _1 ) -//# 320 "src/Compiler/AbstractIL/ilpars.fsy" +//# 306 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_id)); -//# 1428 "ilpars.fs" +//# 1415 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> int64 in Microsoft.FSharp.Core.Operators.box ( ( -//# 324 "src/Compiler/AbstractIL/ilpars.fsy" +//# 310 "src/Compiler/AbstractIL/ilpars.fsy" int32 _1 ) -//# 324 "src/Compiler/AbstractIL/ilpars.fsy" +//# 310 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_int32)); -//# 1439 "ilpars.fs" +//# 1426 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> int64 in Microsoft.FSharp.Core.Operators.box ( ( -//# 328 "src/Compiler/AbstractIL/ilpars.fsy" +//# 314 "src/Compiler/AbstractIL/ilpars.fsy" _1 ) -//# 328 "src/Compiler/AbstractIL/ilpars.fsy" +//# 314 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_int64)); -//# 1450 "ilpars.fs" +//# 1437 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> double in Microsoft.FSharp.Core.Operators.box ( ( -//# 332 "src/Compiler/AbstractIL/ilpars.fsy" +//# 318 "src/Compiler/AbstractIL/ilpars.fsy" _1 ) -//# 332 "src/Compiler/AbstractIL/ilpars.fsy" +//# 318 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_float64)); -//# 1461 "ilpars.fs" +//# 1448 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_int64 in Microsoft.FSharp.Core.Operators.box ( ( -//# 334 "src/Compiler/AbstractIL/ilpars.fsy" +//# 320 "src/Compiler/AbstractIL/ilpars.fsy" System.BitConverter.Int64BitsToDouble _3 ) -//# 334 "src/Compiler/AbstractIL/ilpars.fsy" +//# 320 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_float64)); -//# 1472 "ilpars.fs" +//# 1459 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 338 "src/Compiler/AbstractIL/ilpars.fsy" +//# 324 "src/Compiler/AbstractIL/ilpars.fsy" noMethodSpecScope [] ) -//# 338 "src/Compiler/AbstractIL/ilpars.fsy" +//# 324 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_opt_actual_tyargs)); -//# 1482 "ilpars.fs" +//# 1469 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_actual_tyargs in Microsoft.FSharp.Core.Operators.box ( ( -//# 340 "src/Compiler/AbstractIL/ilpars.fsy" +//# 326 "src/Compiler/AbstractIL/ilpars.fsy" resolveMethodSpecScopeThen _1 (fun res -> noMethodSpecScope res) ) -//# 340 "src/Compiler/AbstractIL/ilpars.fsy" +//# 326 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_opt_actual_tyargs)); -//# 1494 "ilpars.fs" +//# 1481 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_actualTypSpecs in Microsoft.FSharp.Core.Operators.box ( ( -//# 345 "src/Compiler/AbstractIL/ilpars.fsy" +//# 331 "src/Compiler/AbstractIL/ilpars.fsy" _2 ) -//# 345 "src/Compiler/AbstractIL/ilpars.fsy" +//# 331 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_actual_tyargs)); -//# 1505 "ilpars.fs" +//# 1492 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typSpec in Microsoft.FSharp.Core.Operators.box ( ( -//# 349 "src/Compiler/AbstractIL/ilpars.fsy" +//# 335 "src/Compiler/AbstractIL/ilpars.fsy" resolveMethodSpecScopeThen _1 (fun res -> noMethodSpecScope [ res]) ) -//# 349 "src/Compiler/AbstractIL/ilpars.fsy" +//# 335 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_actualTypSpecs)); -//# 1517 "ilpars.fs" +//# 1504 "ilpars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_actualTypSpecs in let _3 = parseState.GetInput(3) :?> 'gentype_typSpec in Microsoft.FSharp.Core.Operators.box ( ( -//# 352 "src/Compiler/AbstractIL/ilpars.fsy" +//# 338 "src/Compiler/AbstractIL/ilpars.fsy" resolveMethodSpecScopeThen _1 (fun x -> resolveMethodSpecScopeThen _3 (fun y -> noMethodSpecScope (x @ [ y]))) ) -//# 352 "src/Compiler/AbstractIL/ilpars.fsy" +//# 338 "src/Compiler/AbstractIL/ilpars.fsy" : 'gentype_actualTypSpecs)); |] -//# 1532 "ilpars.fs" +//# 1519 "ilpars.fs" let tables : Internal.Utilities.Text.Parsing.Tables<_> = { reductions = _fsyacc_reductions.Value; endOfInputTag = _fsyacc_endOfInputTag; diff --git a/src/fcs-fable/codegen/ilpars.fsi b/src/fcs-fable/codegen/ilpars.fsi index 430404eb9a..35bd74ce2d 100644 --- a/src/fcs-fable/codegen/ilpars.fsi +++ b/src/fcs-fable/codegen/ilpars.fsi @@ -1,6 +1,7 @@ // Signature file for parser generated by fsyacc module internal FSharp.Compiler.AbstractIL.AsciiParser -open FSharp.Compiler.AbstractIL +open FSharp.Compiler.AbstractIL.AsciiConstants +open FSharp.Compiler.AbstractIL.IL type token = | VOID | VARARG @@ -171,5 +172,5 @@ val prodIdxToNonTerminal: int -> nonTerminalId /// This function gets the name of a token as a string val token_to_string: token -> string -val ilInstrs : (Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> token) -> Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> (ILInstr array) -val ilType : (Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> token) -> Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> (ILType) +val ilInstrs : (Internal.Utilities.Text.Lexing.LexBuffer -> token) -> Internal.Utilities.Text.Lexing.LexBuffer -> (ILInstr array) +val ilType : (Internal.Utilities.Text.Lexing.LexBuffer -> token) -> Internal.Utilities.Text.Lexing.LexBuffer -> (ILType) diff --git a/src/fcs-fable/codegen/lex.fs b/src/fcs-fable/codegen/lex.fs index 2b867c9fb5..827bc97226 100644 --- a/src/fcs-fable/codegen/lex.fs +++ b/src/fcs-fable/codegen/lex.fs @@ -1,8 +1,13 @@ -//# 3 "src/Compiler/lex.fsl" - - module internal FSharp.Compiler.Lexer +open FSharp.Compiler.Lexhelp +open Internal.Utilities.Text.Lexing +open FSharp.Compiler.Parser +open FSharp.Compiler.Text +open FSharp.Compiler.ParseHelpers + +//# 3 "src/Compiler/lex.fsl" + //------------------------------------------------------------------------ // The Lexer. Some of the complication arises from the fact it is // reused by the Visual Studio mode to do partial lexing reporting @@ -13,21 +18,14 @@ open System open System.Globalization open System.Text -open Internal.Utilities open Internal.Utilities.Library open Internal.Utilities.Library.Extras -open Internal.Utilities.Text.Lexing open FSharp.Compiler -open FSharp.Compiler.AbstractIL open FSharp.Compiler.DiagnosticsLogger open FSharp.Compiler.Features open FSharp.Compiler.IO -open FSharp.Compiler.Lexhelp -open FSharp.Compiler.ParseHelpers -open FSharp.Compiler.Parser open FSharp.Compiler.Syntax -open FSharp.Compiler.Text open FSharp.Compiler.Text.Range module Ranges = @@ -106,8 +104,6 @@ let get0OXB (s:string) (p:byref) l = else 'd' #endif -let formatError() = raise (new System.FormatException(SR.GetString("bad format string"))) - let parseBinaryUInt64 (s:string) = Convert.ToUInt64(s, 2) @@ -159,14 +155,18 @@ let checkExprOp (lexbuf:UnicodeLexing.Lexbuf) = if lexbuf.LexemeContains '$' then deprecatedWithError (FSComp.SR.lexCharNotAllowedInOperatorNames("$")) lexbuf.LexemeRange #endif + +let checkExprGreaterColonOp (lexbuf:UnicodeLexing.Lexbuf) = +#if FABLE_COMPILER + if lexbuf.LexemeContains (uint16 '$') then +#else + if lexbuf.LexemeContains '$' then +#endif + deprecatedWithError (FSComp.SR.lexCharNotAllowedInOperatorNames("$")) lexbuf.LexemeRange let unexpectedChar lexbuf = LEX_FAILURE (FSComp.SR.lexUnexpectedChar(lexeme lexbuf)) -/// Arbitrary value -[] -let StringCapacity = 100 - let startString args (lexbuf: UnicodeLexing.Lexbuf) = let buf = ByteBuffer.Create StringCapacity let m = lexbuf.LexemeRange @@ -249,11 +249,11 @@ let shouldStartFile args lexbuf (m:range) err tok = if (m.StartColumn <> 0 || m.StartLine <> 1) then fail args lexbuf err tok else tok -let evalIfDefExpression startPos reportLibraryOnlyFeatures langVersion args (lookup:string->bool) (lexed:string) = +let evalIfDefExpression startPos reportLibraryOnlyFeatures langVersion strictIndentation args (lookup: string -> bool) (lexed: string) = #if FABLE_COMPILER - let lexbuf = LexBuffer<_>.FromString (reportLibraryOnlyFeatures, langVersion, lexed) + let lexbuf = LexBuffer<_>.FromString (reportLibraryOnlyFeatures, langVersion, strictIndentation, lexed) #else - let lexbuf = LexBuffer.FromChars (reportLibraryOnlyFeatures, langVersion, lexed.ToCharArray ()) + let lexbuf = LexBuffer.FromChars (reportLibraryOnlyFeatures, langVersion, strictIndentation, lexed.ToCharArray ()) #endif lexbuf.StartPos <- startPos lexbuf.EndPos <- startPos @@ -628,1327 +628,1432 @@ let trans : uint16[] array = (* State 177 *) [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 178 *) - [| 190us;190us;190us;190us;190us;190us;190us;190us;190us;185us;180us;190us;190us;181us;190us;190us;190us;190us;190us;190us;190us;190us;190us;190us;190us;190us;190us;190us;190us;190us;190us;190us;185us;190us;179us;190us;190us;190us;190us;190us;190us;190us;190us;190us;190us;190us;190us;190us;184us;183us;183us;183us;183us;183us;183us;183us;183us;183us;190us;190us;190us;190us;190us;190us;190us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;190us;190us;190us;190us;182us;190us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;186us;190us;187us;190us;190us;182us;182us;182us;182us;182us;190us;190us;190us;183us;182us;190us;190us;190us;190us;190us;190us;189us;190us;190us;190us;190us;190us;190us;190us;190us;190us;190us;190us;190us;190us;188us;|]; + [| 191us;191us;191us;191us;191us;191us;191us;191us;191us;185us;180us;191us;191us;181us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;185us;191us;179us;191us;191us;186us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;184us;183us;183us;183us;183us;183us;183us;183us;183us;183us;191us;191us;191us;191us;191us;191us;191us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;191us;191us;191us;191us;182us;191us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;182us;187us;191us;188us;191us;191us;182us;182us;182us;182us;182us;191us;191us;191us;183us;182us;191us;191us;191us;191us;191us;191us;190us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;189us;|]; (* State 179 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;209us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;212us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 180 *) [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 181 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;208us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;211us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 182 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;207us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;65535us;65535us;65535us;65535us;207us;65535us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;65535us;65535us;65535us;65535us;65535us;207us;207us;207us;207us;207us;207us;207us;65535us;207us;207us;65535us;65535us;65535us;65535us;65535us;207us;65535us;65535us;207us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;210us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;65535us;65535us;65535us;65535us;210us;65535us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;65535us;65535us;65535us;65535us;65535us;210us;210us;210us;210us;210us;210us;210us;65535us;210us;210us;65535us;65535us;65535us;65535us;65535us;210us;65535us;65535us;210us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 183 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;194us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;193us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;196us;196us;196us;196us;196us;196us;196us;196us;196us;196us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;197us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;196us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 184 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;197us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;196us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;195us;65535us;65535us;65535us;65535us;65535us;65535us;194us;65535us;65535us;197us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;196us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;195us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;193us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;196us;196us;196us;196us;196us;196us;196us;196us;196us;196us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;200us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;199us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;198us;65535us;65535us;65535us;65535us;65535us;65535us;197us;65535us;65535us;200us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;199us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;198us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;196us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 185 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;192us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;192us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;195us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;195us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 186 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;191us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;194us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 187 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;191us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;193us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 188 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;192us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 189 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;190us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; - (* State 190 *) [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 190 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;191us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 191 *) [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 192 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;192us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;192us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;192us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 193 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;194us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;193us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;193us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 194 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;194us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;193us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;194us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 195 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;204us;204us;204us;204us;204us;204us;204us;204us;204us;204us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;204us;204us;204us;204us;204us;204us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;204us;204us;204us;204us;204us;204us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;195us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;195us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 196 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;201us;201us;201us;201us;201us;201us;201us;201us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;196us;196us;196us;196us;196us;196us;196us;196us;196us;196us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;197us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;196us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 197 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;198us;198us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;196us;196us;196us;196us;196us;196us;196us;196us;196us;196us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;197us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;196us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 198 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;199us;199us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;200us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;207us;207us;207us;207us;207us;207us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;207us;207us;207us;207us;207us;207us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 199 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;199us;199us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;200us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;204us;204us;204us;204us;204us;204us;204us;204us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 200 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;199us;199us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;200us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;201us;201us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 201 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;202us;202us;202us;202us;202us;202us;202us;202us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;203us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;202us;202us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;203us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 202 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;202us;202us;202us;202us;202us;202us;202us;202us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;203us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;202us;202us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;203us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 203 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;202us;202us;202us;202us;202us;202us;202us;202us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;203us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;202us;202us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;203us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 204 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;205us;205us;205us;205us;205us;205us;205us;205us;205us;205us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;205us;205us;205us;205us;205us;205us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;206us;65535us;205us;205us;205us;205us;205us;205us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;205us;205us;205us;205us;205us;205us;205us;205us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;206us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 205 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;205us;205us;205us;205us;205us;205us;205us;205us;205us;205us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;205us;205us;205us;205us;205us;205us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;206us;65535us;205us;205us;205us;205us;205us;205us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;205us;205us;205us;205us;205us;205us;205us;205us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;206us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 206 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;205us;205us;205us;205us;205us;205us;205us;205us;205us;205us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;205us;205us;205us;205us;205us;205us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;206us;65535us;205us;205us;205us;205us;205us;205us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;205us;205us;205us;205us;205us;205us;205us;205us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;206us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 207 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;207us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;65535us;65535us;65535us;65535us;207us;65535us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;65535us;65535us;65535us;65535us;65535us;207us;207us;207us;207us;207us;207us;207us;65535us;207us;207us;65535us;65535us;65535us;65535us;65535us;207us;65535us;65535us;207us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;208us;208us;208us;208us;208us;208us;208us;208us;208us;208us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;208us;208us;208us;208us;208us;208us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;209us;65535us;208us;208us;208us;208us;208us;208us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 208 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;208us;208us;208us;208us;208us;208us;208us;208us;208us;208us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;208us;208us;208us;208us;208us;208us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;209us;65535us;208us;208us;208us;208us;208us;208us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 209 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;210us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;208us;208us;208us;208us;208us;208us;208us;208us;208us;208us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;208us;208us;208us;208us;208us;208us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;209us;65535us;208us;208us;208us;208us;208us;208us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 210 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;210us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;65535us;65535us;65535us;65535us;210us;65535us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;65535us;65535us;65535us;65535us;65535us;210us;210us;210us;210us;210us;210us;210us;65535us;210us;210us;65535us;65535us;65535us;65535us;65535us;210us;65535us;65535us;210us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 211 *) - [| 223us;223us;223us;223us;223us;223us;223us;223us;223us;220us;213us;223us;223us;214us;223us;223us;223us;223us;223us;223us;223us;223us;223us;223us;223us;223us;223us;223us;223us;223us;223us;223us;220us;223us;212us;223us;223us;223us;223us;223us;223us;223us;223us;223us;223us;223us;223us;223us;219us;218us;218us;218us;218us;218us;218us;218us;218us;218us;223us;223us;223us;223us;223us;223us;223us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;223us;223us;223us;223us;217us;223us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;217us;215us;223us;216us;223us;223us;217us;217us;217us;217us;217us;223us;223us;223us;218us;217us;223us;223us;223us;223us;223us;223us;222us;223us;223us;223us;223us;223us;223us;223us;223us;223us;223us;223us;223us;223us;221us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 212 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;242us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;243us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;213us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 213 *) [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 214 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;241us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 226us;226us;226us;226us;226us;226us;226us;226us;226us;221us;216us;226us;226us;217us;226us;226us;226us;226us;226us;226us;226us;226us;226us;226us;226us;226us;226us;226us;226us;226us;226us;226us;221us;226us;215us;226us;226us;226us;226us;226us;226us;226us;226us;226us;226us;226us;226us;226us;220us;219us;219us;219us;219us;219us;219us;219us;219us;219us;226us;226us;226us;226us;226us;226us;226us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;226us;226us;226us;226us;218us;226us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;218us;222us;226us;223us;226us;226us;218us;218us;218us;218us;218us;226us;226us;226us;219us;218us;226us;226us;226us;226us;226us;226us;225us;226us;226us;226us;226us;226us;226us;226us;226us;226us;226us;226us;226us;226us;224us;|]; (* State 215 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;240us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;245us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 216 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;240us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 217 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;239us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;65535us;65535us;65535us;65535us;239us;65535us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;65535us;65535us;65535us;65535us;65535us;239us;239us;239us;239us;239us;239us;239us;65535us;239us;239us;65535us;65535us;65535us;65535us;65535us;239us;65535us;65535us;239us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;244us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 218 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;225us;225us;225us;225us;225us;225us;225us;225us;225us;225us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;226us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;225us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;243us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;65535us;65535us;65535us;65535us;243us;65535us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;65535us;65535us;65535us;65535us;65535us;243us;243us;243us;243us;243us;243us;243us;65535us;243us;243us;65535us;65535us;65535us;65535us;65535us;243us;65535us;65535us;243us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 219 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;225us;225us;225us;225us;225us;225us;225us;225us;225us;225us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;229us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;228us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;227us;65535us;65535us;65535us;65535us;65535us;65535us;226us;65535us;65535us;229us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;228us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;227us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;225us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;229us;229us;229us;229us;229us;229us;229us;229us;229us;229us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;230us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;229us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 220 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;224us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;224us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;229us;229us;229us;229us;229us;229us;229us;229us;229us;229us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;233us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;232us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;231us;65535us;65535us;65535us;65535us;65535us;65535us;230us;65535us;65535us;233us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;232us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;231us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;229us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 221 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;228us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;228us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 222 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;223us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;227us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 223 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;227us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 224 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;224us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;224us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 225 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;225us;225us;225us;225us;225us;225us;225us;225us;225us;225us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;226us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;225us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;226us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 226 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;225us;225us;225us;225us;225us;225us;225us;225us;225us;225us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;226us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;225us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 227 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;236us;236us;236us;236us;236us;236us;236us;236us;236us;236us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;236us;236us;236us;236us;236us;236us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;236us;236us;236us;236us;236us;236us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 228 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;233us;233us;233us;233us;233us;233us;233us;233us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;228us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;228us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 229 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;230us;230us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;229us;229us;229us;229us;229us;229us;229us;229us;229us;229us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;230us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;229us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 230 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;231us;231us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;232us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;229us;229us;229us;229us;229us;229us;229us;229us;229us;229us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;230us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;229us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 231 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;231us;231us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;232us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;240us;240us;240us;240us;240us;240us;240us;240us;240us;240us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;240us;240us;240us;240us;240us;240us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;240us;240us;240us;240us;240us;240us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 232 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;231us;231us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;232us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;237us;237us;237us;237us;237us;237us;237us;237us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 233 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;234us;234us;234us;234us;234us;234us;234us;234us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;235us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;234us;234us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 234 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;234us;234us;234us;234us;234us;234us;234us;234us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;235us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;235us;235us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;236us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 235 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;234us;234us;234us;234us;234us;234us;234us;234us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;235us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;235us;235us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;236us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 236 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;237us;237us;237us;237us;237us;237us;237us;237us;237us;237us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;237us;237us;237us;237us;237us;237us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;238us;65535us;237us;237us;237us;237us;237us;237us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;235us;235us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;236us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 237 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;237us;237us;237us;237us;237us;237us;237us;237us;237us;237us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;237us;237us;237us;237us;237us;237us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;238us;65535us;237us;237us;237us;237us;237us;237us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;238us;238us;238us;238us;238us;238us;238us;238us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;239us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 238 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;237us;237us;237us;237us;237us;237us;237us;237us;237us;237us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;237us;237us;237us;237us;237us;237us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;238us;65535us;237us;237us;237us;237us;237us;237us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;238us;238us;238us;238us;238us;238us;238us;238us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;239us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 239 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;239us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;65535us;65535us;65535us;65535us;239us;65535us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;239us;65535us;65535us;65535us;65535us;65535us;239us;239us;239us;239us;239us;239us;239us;65535us;239us;239us;65535us;65535us;65535us;65535us;65535us;239us;65535us;65535us;239us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;238us;238us;238us;238us;238us;238us;238us;238us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;239us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 240 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;241us;241us;241us;241us;241us;241us;241us;241us;241us;241us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;241us;241us;241us;241us;241us;241us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;242us;65535us;241us;241us;241us;241us;241us;241us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 241 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;241us;241us;241us;241us;241us;241us;241us;241us;241us;241us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;241us;241us;241us;241us;241us;241us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;242us;65535us;241us;241us;241us;241us;241us;241us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 242 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;241us;241us;241us;241us;241us;241us;241us;241us;241us;241us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;241us;241us;241us;241us;241us;241us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;242us;65535us;241us;241us;241us;241us;241us;241us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 243 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;243us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;65535us;65535us;65535us;65535us;243us;65535us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;243us;65535us;65535us;65535us;65535us;65535us;243us;243us;243us;243us;243us;243us;243us;65535us;243us;243us;65535us;65535us;65535us;65535us;65535us;243us;65535us;65535us;243us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 244 *) - [| 257us;257us;257us;257us;257us;257us;257us;257us;257us;254us;249us;257us;257us;250us;257us;257us;257us;257us;257us;257us;257us;257us;257us;257us;257us;257us;257us;257us;257us;257us;257us;257us;254us;257us;246us;257us;257us;257us;257us;257us;257us;257us;257us;257us;257us;257us;257us;257us;253us;252us;252us;252us;252us;252us;252us;252us;252us;252us;257us;257us;257us;257us;257us;257us;257us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;257us;245us;257us;257us;251us;257us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;251us;247us;257us;248us;257us;257us;251us;251us;251us;251us;251us;257us;257us;257us;252us;251us;257us;257us;257us;257us;257us;257us;256us;257us;257us;257us;257us;257us;257us;257us;257us;257us;257us;257us;257us;257us;255us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 245 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;277us;65535us;65535us;278us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;279us;65535us;65535us;65535us;65535us;279us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;280us;280us;280us;280us;280us;280us;280us;280us;280us;280us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;283us;65535us;65535us;65535us;65535us;65535us;65535us;279us;65535us;65535us;65535us;65535us;279us;279us;65535us;65535us;65535us;279us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;279us;65535us;65535us;65535us;279us;65535us;279us;282us;279us;65535us;281us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;280us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;246us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 246 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;276us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 247 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;275us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 259us;259us;259us;259us;259us;259us;259us;259us;259us;256us;249us;259us;259us;250us;259us;259us;259us;259us;259us;259us;259us;259us;259us;259us;259us;259us;259us;259us;259us;259us;259us;259us;256us;259us;248us;259us;259us;259us;259us;259us;259us;259us;259us;259us;259us;259us;259us;259us;255us;254us;254us;254us;254us;254us;254us;254us;254us;254us;259us;259us;259us;259us;259us;259us;259us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;259us;259us;259us;259us;253us;259us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;253us;251us;259us;252us;259us;259us;253us;253us;253us;253us;253us;259us;259us;259us;254us;253us;259us;259us;259us;259us;259us;259us;258us;259us;259us;259us;259us;259us;259us;259us;259us;259us;259us;259us;259us;259us;257us;|]; (* State 248 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;275us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;278us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;279us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 249 *) [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 250 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;274us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;277us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 251 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;273us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;65535us;65535us;65535us;65535us;273us;65535us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;65535us;65535us;65535us;65535us;65535us;273us;273us;273us;273us;273us;273us;273us;65535us;273us;273us;65535us;65535us;65535us;65535us;65535us;273us;65535us;65535us;273us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;276us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 252 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;259us;259us;259us;259us;259us;259us;259us;259us;259us;259us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;260us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;259us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;276us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 253 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;259us;259us;259us;259us;259us;259us;259us;259us;259us;259us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;263us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;262us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;261us;65535us;65535us;65535us;65535us;65535us;65535us;260us;65535us;65535us;263us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;262us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;261us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;259us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;275us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;65535us;65535us;65535us;65535us;275us;65535us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;65535us;65535us;65535us;65535us;65535us;275us;275us;275us;275us;275us;275us;275us;65535us;275us;275us;65535us;65535us;65535us;65535us;65535us;275us;65535us;65535us;275us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 254 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;258us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;258us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;261us;261us;261us;261us;261us;261us;261us;261us;261us;261us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;262us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;261us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 255 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;261us;261us;261us;261us;261us;261us;261us;261us;261us;261us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;265us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;264us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;263us;65535us;65535us;65535us;65535us;65535us;65535us;262us;65535us;65535us;265us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;264us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;263us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;261us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 256 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;257us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;260us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;260us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 257 *) [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 258 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;258us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;258us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;259us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 259 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;259us;259us;259us;259us;259us;259us;259us;259us;259us;259us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;260us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;259us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 260 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;259us;259us;259us;259us;259us;259us;259us;259us;259us;259us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;260us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;259us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;260us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;260us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 261 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;270us;270us;270us;270us;270us;270us;270us;270us;270us;270us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;270us;270us;270us;270us;270us;270us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;270us;270us;270us;270us;270us;270us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;261us;261us;261us;261us;261us;261us;261us;261us;261us;261us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;262us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;261us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 262 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;267us;267us;267us;267us;267us;267us;267us;267us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;261us;261us;261us;261us;261us;261us;261us;261us;261us;261us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;262us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;261us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 263 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;264us;264us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;272us;272us;272us;272us;272us;272us;272us;272us;272us;272us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;272us;272us;272us;272us;272us;272us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;272us;272us;272us;272us;272us;272us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 264 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;265us;265us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;266us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;269us;269us;269us;269us;269us;269us;269us;269us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 265 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;265us;265us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;266us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;266us;266us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 266 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;265us;265us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;266us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;267us;267us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;268us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 267 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;268us;268us;268us;268us;268us;268us;268us;268us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;269us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;267us;267us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;268us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 268 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;268us;268us;268us;268us;268us;268us;268us;268us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;269us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;267us;267us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;268us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 269 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;268us;268us;268us;268us;268us;268us;268us;268us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;269us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;270us;270us;270us;270us;270us;270us;270us;270us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;271us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 270 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;271us;271us;271us;271us;271us;271us;271us;271us;271us;271us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;271us;271us;271us;271us;271us;271us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;272us;65535us;271us;271us;271us;271us;271us;271us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;270us;270us;270us;270us;270us;270us;270us;270us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;271us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 271 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;271us;271us;271us;271us;271us;271us;271us;271us;271us;271us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;271us;271us;271us;271us;271us;271us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;272us;65535us;271us;271us;271us;271us;271us;271us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;270us;270us;270us;270us;270us;270us;270us;270us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;271us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 272 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;271us;271us;271us;271us;271us;271us;271us;271us;271us;271us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;271us;271us;271us;271us;271us;271us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;272us;65535us;271us;271us;271us;271us;271us;271us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;273us;273us;273us;273us;273us;273us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;274us;65535us;273us;273us;273us;273us;273us;273us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 273 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;273us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;65535us;65535us;65535us;65535us;273us;65535us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;65535us;65535us;65535us;65535us;65535us;273us;273us;273us;273us;273us;273us;273us;65535us;273us;273us;65535us;65535us;65535us;65535us;65535us;273us;65535us;65535us;273us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;273us;273us;273us;273us;273us;273us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;274us;65535us;273us;273us;273us;273us;273us;273us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 274 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;273us;273us;273us;273us;273us;273us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;274us;65535us;273us;273us;273us;273us;273us;273us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 275 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;275us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;65535us;65535us;65535us;65535us;275us;65535us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;275us;65535us;65535us;65535us;65535us;65535us;275us;275us;275us;275us;275us;275us;275us;65535us;275us;275us;65535us;65535us;65535us;65535us;65535us;275us;65535us;65535us;275us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 276 *) [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 277 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;300us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;300us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 278 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;277us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 279 *) [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 280 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;298us;298us;298us;298us;298us;298us;298us;298us;298us;298us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;298us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 293us;293us;293us;293us;293us;293us;293us;293us;293us;290us;285us;293us;293us;286us;293us;293us;293us;293us;293us;293us;293us;293us;293us;293us;293us;293us;293us;293us;293us;293us;293us;293us;290us;293us;282us;293us;293us;293us;293us;293us;293us;293us;293us;293us;293us;293us;293us;293us;289us;288us;288us;288us;288us;288us;288us;288us;288us;288us;293us;293us;293us;293us;293us;293us;293us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;293us;281us;293us;293us;287us;293us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;283us;293us;284us;293us;293us;287us;287us;287us;287us;287us;293us;293us;293us;288us;287us;293us;293us;293us;293us;293us;293us;292us;293us;293us;293us;293us;293us;293us;293us;293us;293us;293us;293us;293us;293us;291us;|]; (* State 281 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;296us;296us;296us;296us;296us;296us;296us;296us;296us;296us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;296us;296us;296us;296us;296us;296us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;296us;296us;296us;296us;296us;296us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;313us;65535us;65535us;314us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;315us;65535us;65535us;65535us;65535us;315us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;316us;316us;316us;316us;316us;316us;316us;316us;316us;316us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;319us;65535us;65535us;65535us;65535us;65535us;65535us;315us;65535us;65535us;65535us;65535us;315us;315us;65535us;65535us;65535us;315us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;315us;65535us;65535us;65535us;315us;65535us;315us;318us;315us;65535us;317us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;316us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 282 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;292us;292us;292us;292us;292us;292us;292us;292us;292us;292us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;292us;292us;292us;292us;292us;292us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;292us;292us;292us;292us;292us;292us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;312us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 283 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;284us;284us;284us;284us;284us;284us;284us;284us;284us;284us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;284us;284us;284us;284us;284us;284us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;284us;284us;284us;284us;284us;284us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;311us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 284 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;285us;285us;285us;285us;285us;285us;285us;285us;285us;285us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;285us;285us;285us;285us;285us;285us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;285us;285us;285us;285us;285us;285us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;311us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 285 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;286us;286us;286us;286us;286us;286us;286us;286us;286us;286us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;286us;286us;286us;286us;286us;286us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;286us;286us;286us;286us;286us;286us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 286 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;287us;287us;287us;287us;287us;287us;287us;287us;287us;287us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;287us;287us;287us;287us;287us;287us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;287us;287us;287us;287us;287us;287us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;310us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 287 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;288us;288us;288us;288us;288us;288us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;288us;288us;288us;288us;288us;288us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;309us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;65535us;65535us;65535us;65535us;309us;65535us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;65535us;65535us;65535us;65535us;65535us;309us;309us;309us;309us;309us;309us;309us;65535us;309us;309us;65535us;65535us;65535us;65535us;65535us;309us;65535us;65535us;309us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 288 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;289us;289us;289us;289us;289us;289us;289us;289us;289us;289us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;289us;289us;289us;289us;289us;289us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;289us;289us;289us;289us;289us;289us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;295us;295us;295us;295us;295us;295us;295us;295us;295us;295us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;296us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;295us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 289 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;290us;290us;290us;290us;290us;290us;290us;290us;290us;290us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;290us;290us;290us;290us;290us;290us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;290us;290us;290us;290us;290us;290us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;295us;295us;295us;295us;295us;295us;295us;295us;295us;295us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;299us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;298us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;297us;65535us;65535us;65535us;65535us;65535us;65535us;296us;65535us;65535us;299us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;298us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;297us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;295us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 290 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;291us;291us;291us;291us;291us;291us;291us;291us;291us;291us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;291us;291us;291us;291us;291us;291us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;291us;291us;291us;291us;291us;291us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;294us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;294us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 291 *) [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 292 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;293us;293us;293us;293us;293us;293us;293us;293us;293us;293us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;293us;293us;293us;293us;293us;293us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;293us;293us;293us;293us;293us;293us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;293us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 293 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;294us;294us;294us;294us;294us;294us;294us;294us;294us;294us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;294us;294us;294us;294us;294us;294us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;294us;294us;294us;294us;294us;294us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 294 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;295us;295us;295us;295us;295us;295us;295us;295us;295us;295us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;295us;295us;295us;295us;295us;295us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;295us;295us;295us;295us;295us;295us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;294us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;294us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 295 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;295us;295us;295us;295us;295us;295us;295us;295us;295us;295us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;296us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;295us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 296 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;297us;297us;297us;297us;297us;297us;297us;297us;297us;297us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;297us;297us;297us;297us;297us;297us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;297us;297us;297us;297us;297us;297us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;295us;295us;295us;295us;295us;295us;295us;295us;295us;295us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;296us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;295us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 297 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;306us;306us;306us;306us;306us;306us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;306us;306us;306us;306us;306us;306us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 298 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;299us;299us;299us;299us;299us;299us;299us;299us;299us;299us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;299us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;303us;303us;303us;303us;303us;303us;303us;303us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 299 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;300us;300us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 300 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;300us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;300us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;301us;301us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;302us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 301 *) - [| 305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;302us;305us;305us;303us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;305us;304us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;301us;301us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;302us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 302 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;301us;301us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;302us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 303 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;307us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;304us;304us;304us;304us;304us;304us;304us;304us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;305us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 304 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;304us;304us;304us;304us;304us;304us;304us;304us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;305us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 305 *) - [| 306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;65535us;306us;306us;65535us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;304us;304us;304us;304us;304us;304us;304us;304us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;305us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 306 *) - [| 306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;65535us;306us;306us;65535us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;306us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;307us;307us;307us;307us;307us;307us;307us;307us;307us;307us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;307us;307us;307us;307us;307us;307us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;308us;65535us;307us;307us;307us;307us;307us;307us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 307 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;307us;307us;307us;307us;307us;307us;307us;307us;307us;307us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;307us;307us;307us;307us;307us;307us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;308us;65535us;307us;307us;307us;307us;307us;307us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 308 *) - [| 314us;314us;314us;314us;314us;314us;314us;314us;314us;311us;312us;314us;314us;313us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;310us;314us;314us;309us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;315us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;314us;316us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;307us;307us;307us;307us;307us;307us;307us;307us;307us;307us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;307us;307us;307us;307us;307us;307us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;308us;65535us;307us;307us;307us;307us;307us;307us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 309 *) - [| 317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;345us;317us;317us;317us;344us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;309us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;65535us;65535us;65535us;65535us;309us;65535us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;309us;65535us;65535us;65535us;65535us;65535us;309us;309us;309us;309us;309us;309us;309us;65535us;309us;309us;65535us;65535us;65535us;65535us;65535us;309us;65535us;65535us;309us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 310 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;320us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;320us;65535us;65535us;322us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 311 *) - [| 317us;317us;317us;317us;317us;317us;317us;317us;317us;321us;65535us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;320us;317us;317us;319us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 312 *) [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 313 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;318us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;336us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;336us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 314 *) - [| 317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;313us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 315 *) - [| 317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;|]; - (* State 316 *) [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 316 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;334us;334us;334us;334us;334us;334us;334us;334us;334us;334us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;334us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 317 *) - [| 317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;332us;332us;332us;332us;332us;332us;332us;332us;332us;332us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;332us;332us;332us;332us;332us;332us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;332us;332us;332us;332us;332us;332us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 318 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;328us;328us;328us;328us;328us;328us;328us;328us;328us;328us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;328us;328us;328us;328us;328us;328us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;328us;328us;328us;328us;328us;328us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 319 *) - [| 317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;345us;317us;317us;317us;344us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;320us;320us;320us;320us;320us;320us;320us;320us;320us;320us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;320us;320us;320us;320us;320us;320us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;320us;320us;320us;320us;320us;320us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 320 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;320us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;320us;65535us;65535us;322us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;321us;321us;321us;321us;321us;321us;321us;321us;321us;321us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;321us;321us;321us;321us;321us;321us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;321us;321us;321us;321us;321us;321us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 321 *) - [| 317us;317us;317us;317us;317us;317us;317us;317us;317us;321us;65535us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;320us;317us;317us;319us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;322us;322us;322us;322us;322us;322us;322us;322us;322us;322us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;322us;322us;322us;322us;322us;322us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;322us;322us;322us;322us;322us;322us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 322 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;324us;65535us;65535us;65535us;323us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;323us;323us;323us;323us;323us;323us;323us;323us;323us;323us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;323us;323us;323us;323us;323us;323us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;323us;323us;323us;323us;323us;323us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 323 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;340us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;324us;324us;324us;324us;324us;324us;324us;324us;324us;324us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;324us;324us;324us;324us;324us;324us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;324us;324us;324us;324us;324us;324us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 324 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;325us;65535us;326us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;325us;325us;325us;325us;325us;325us;325us;325us;325us;325us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;325us;325us;325us;325us;325us;325us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;325us;325us;325us;325us;325us;325us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 325 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;334us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;326us;326us;326us;326us;326us;326us;326us;326us;326us;326us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;326us;326us;326us;326us;326us;326us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;326us;326us;326us;326us;326us;326us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 326 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;327us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;327us;327us;327us;327us;327us;327us;327us;327us;327us;327us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;327us;327us;327us;327us;327us;327us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;327us;327us;327us;327us;327us;327us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 327 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;328us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 328 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;329us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;329us;329us;329us;329us;329us;329us;329us;329us;329us;329us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;329us;329us;329us;329us;329us;329us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;329us;329us;329us;329us;329us;329us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 329 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;331us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;331us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;330us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;330us;330us;330us;330us;330us;330us;330us;330us;330us;330us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;330us;330us;330us;330us;330us;330us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;330us;330us;330us;330us;330us;330us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 330 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;332us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;331us;331us;331us;331us;331us;331us;331us;331us;331us;331us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;331us;331us;331us;331us;331us;331us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;331us;331us;331us;331us;331us;331us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 331 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;331us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;331us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;330us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 332 *) - [| 333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;65535us;333us;333us;65535us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;333us;333us;333us;333us;333us;333us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;333us;333us;333us;333us;333us;333us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 333 *) - [| 333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;65535us;333us;333us;65535us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;333us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 334 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;335us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;335us;335us;335us;335us;335us;335us;335us;335us;335us;335us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;335us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 335 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;337us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;337us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;336us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 336 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;338us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;336us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;336us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 337 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;337us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;337us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;336us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;338us;341us;341us;339us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;341us;340us;|]; (* State 338 *) - [| 339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;65535us;339us;339us;65535us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 339 *) - [| 339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;65535us;339us;339us;65535us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;339us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;343us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 340 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;341us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;341us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 341 *) - [| 342us;342us;342us;342us;342us;342us;342us;342us;342us;343us;65535us;342us;342us;65535us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;343us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;65535us;|]; + [| 342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;65535us;342us;342us;65535us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;65535us;|]; (* State 342 *) [| 342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;65535us;342us;342us;65535us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;65535us;|]; (* State 343 *) - [| 342us;342us;342us;342us;342us;342us;342us;342us;342us;343us;65535us;342us;342us;65535us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;343us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;342us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 344 *) - [| 317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;361us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;|]; + [| 350us;350us;350us;350us;350us;350us;350us;350us;350us;347us;348us;350us;350us;349us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;346us;350us;350us;345us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;351us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;350us;352us;|]; (* State 345 *) - [| 317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;346us;317us;347us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;|]; + [| 353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;381us;353us;353us;353us;380us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;|]; (* State 346 *) - [| 317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;355us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;356us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;356us;65535us;65535us;358us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 347 *) - [| 317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;348us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;|]; + [| 353us;353us;353us;353us;353us;353us;353us;353us;353us;357us;65535us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;356us;353us;353us;355us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;|]; (* State 348 *) - [| 317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;349us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 349 *) - [| 317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;350us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;354us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 350 *) - [| 317us;317us;317us;317us;317us;317us;317us;317us;317us;352us;65535us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;331us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;351us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;|]; + [| 353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;|]; (* State 351 *) - [| 317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;353us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;|]; + [| 353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;|]; (* State 352 *) - [| 317us;317us;317us;317us;317us;317us;317us;317us;317us;352us;65535us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;331us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;351us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 353 *) - [| 354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;65535us;354us;354us;65535us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;333us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;65535us;|]; + [| 353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;|]; (* State 354 *) - [| 354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;65535us;354us;354us;65535us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;333us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;354us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 355 *) - [| 317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;356us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;|]; + [| 353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;381us;353us;353us;353us;380us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;|]; (* State 356 *) - [| 317us;317us;317us;317us;317us;317us;317us;317us;317us;358us;65535us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;337us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;357us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;356us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;356us;65535us;65535us;358us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 357 *) - [| 317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;359us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;|]; + [| 353us;353us;353us;353us;353us;353us;353us;353us;353us;357us;65535us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;356us;353us;353us;355us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;|]; (* State 358 *) - [| 317us;317us;317us;317us;317us;317us;317us;317us;317us;358us;65535us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;337us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;357us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;360us;65535us;65535us;65535us;359us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 359 *) - [| 360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;65535us;360us;360us;65535us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;339us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;376us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 360 *) - [| 360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;65535us;360us;360us;65535us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;339us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;360us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;361us;65535us;362us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 361 *) - [| 317us;317us;317us;317us;317us;317us;317us;317us;317us;362us;65535us;317us;317us;65535us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;341us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;317us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;370us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 362 *) - [| 363us;363us;363us;363us;363us;363us;363us;363us;363us;364us;65535us;363us;363us;65535us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;343us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;363us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 363 *) - [| 363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;65535us;363us;363us;65535us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;342us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;364us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 364 *) - [| 363us;363us;363us;363us;363us;363us;363us;363us;363us;364us;65535us;363us;363us;65535us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;343us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;363us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;365us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 365 *) - [| 411us;411us;411us;411us;411us;411us;411us;411us;411us;382us;384us;411us;411us;385us;411us;411us;411us;411us;411us;411us;411us;411us;411us;411us;411us;411us;411us;411us;411us;411us;411us;411us;381us;409us;378us;387us;379us;405us;389us;376us;377us;391us;392us;407us;393us;394us;396us;383us;375us;374us;374us;374us;374us;374us;374us;374us;374us;374us;397us;399us;388us;400us;398us;395us;380us;366us;366us;366us;366us;367us;368us;366us;366us;366us;366us;366us;366us;366us;366us;366us;366us;366us;366us;366us;366us;366us;366us;366us;366us;366us;366us;401us;411us;403us;408us;366us;386us;369us;366us;366us;370us;366us;366us;366us;366us;366us;366us;366us;366us;371us;366us;366us;366us;366us;372us;366us;366us;366us;366us;366us;366us;373us;366us;402us;390us;404us;406us;411us;366us;366us;366us;366us;366us;411us;411us;411us;374us;366us;411us;411us;411us;411us;411us;411us;410us;411us;411us;411us;411us;411us;411us;411us;411us;411us;411us;411us;411us;411us;412us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;367us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;367us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;366us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 366 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;746us;65535us;747us;65535us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;745us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;65535us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;368us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 367 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;746us;65535us;747us;65535us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;772us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;745us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;65535us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;367us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;367us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;366us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 368 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;746us;65535us;769us;65535us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;745us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;65535us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;65535us;369us;369us;65535us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;65535us;|]; (* State 369 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;746us;65535us;747us;65535us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;745us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;766us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;65535us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;65535us;369us;369us;65535us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;369us;65535us;|]; (* State 370 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;746us;65535us;747us;65535us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;745us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;764us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;65535us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;371us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 371 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;746us;65535us;747us;65535us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;745us;65535us;759us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;65535us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;373us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;373us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;372us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 372 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;746us;65535us;747us;65535us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;745us;65535us;745us;745us;745us;745us;753us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;65535us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;374us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 373 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;746us;65535us;747us;65535us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;745us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;748us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;65535us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;373us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;373us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;372us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 374 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;681us;65535us;65535us;65535us;65535us;65535us;65535us;672us;65535us;668us;668us;668us;668us;668us;668us;668us;668us;668us;668us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;681us;681us;681us;681us;677us;678us;680us;681us;680us;681us;681us;674us;679us;680us;681us;681us;680us;680us;681us;681us;675us;681us;681us;681us;681us;680us;65535us;65535us;65535us;65535us;669us;65535us;681us;681us;681us;681us;677us;678us;681us;681us;681us;681us;681us;673us;679us;676us;681us;681us;681us;681us;671us;681us;670us;681us;681us;681us;667us;681us;65535us;65535us;65535us;65535us;65535us;681us;681us;681us;681us;681us;681us;681us;65535us;668us;681us;65535us;65535us;65535us;65535us;65535us;681us;65535us;65535us;681us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;65535us;375us;375us;65535us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;65535us;|]; (* State 375 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;681us;65535us;65535us;65535us;65535us;65535us;65535us;672us;65535us;668us;668us;668us;668us;668us;668us;668us;668us;668us;668us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;681us;723us;681us;681us;677us;678us;680us;681us;680us;681us;681us;674us;679us;680us;722us;681us;680us;680us;681us;681us;675us;681us;681us;721us;681us;680us;65535us;65535us;65535us;65535us;669us;65535us;681us;723us;681us;681us;677us;678us;681us;681us;681us;681us;681us;673us;679us;676us;722us;681us;681us;681us;671us;681us;670us;681us;681us;721us;667us;681us;65535us;65535us;65535us;65535us;65535us;681us;681us;681us;681us;681us;681us;681us;65535us;668us;681us;65535us;65535us;65535us;65535us;65535us;681us;65535us;65535us;681us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;65535us;375us;375us;65535us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;375us;65535us;|]; (* State 376 *) - [| 637us;637us;637us;637us;637us;637us;637us;637us;65535us;65535us;65535us;637us;637us;65535us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;638us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;637us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;377us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;377us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 377 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;612us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 378us;378us;378us;378us;378us;378us;378us;378us;378us;379us;65535us;378us;378us;65535us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;379us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;65535us;|]; (* State 378 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;610us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;65535us;378us;378us;65535us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;65535us;|]; (* State 379 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;480us;606us;65535us;476us;477us;481us;65535us;65535us;65535us;474us;478us;65535us;478us;475us;477us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;482us;482us;482us;475us;607us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;479us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;483us;65535us;484us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 378us;378us;378us;378us;378us;378us;378us;378us;378us;379us;65535us;378us;378us;65535us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;379us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;378us;65535us;|]; (* State 380 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;598us;65535us;599us;416us;416us;65535us;65535us;65535us;416us;416us;65535us;416us;416us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;416us;416us;600us;416us;601us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;397us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;|]; (* State 381 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;589us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;597us;65535us;65535us;588us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;382us;353us;383us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;|]; (* State 382 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;587us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;589us;65535us;65535us;588us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;391us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;|]; (* State 383 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;419us;65535us;65535us;419us;419us;419us;65535us;65535us;65535us;419us;419us;65535us;419us;419us;581us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;419us;65535us;419us;419us;419us;419us;419us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;419us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;419us;65535us;419us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;384us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;|]; (* State 384 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;385us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;|]; (* State 385 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;580us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;386us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;|]; (* State 386 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;573us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 353us;353us;353us;353us;353us;353us;353us;353us;353us;388us;65535us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;367us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;387us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;|]; (* State 387 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;506us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;506us;508us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;505us;505us;505us;505us;505us;505us;505us;505us;505us;505us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;510us;65535us;65535us;65535us;509us;65535us;65535us;507us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;505us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;389us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;|]; (* State 388 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;65535us;423us;423us;423us;65535us;65535us;65535us;423us;423us;65535us;503us;423us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;423us;423us;423us;423us;502us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 353us;353us;353us;353us;353us;353us;353us;353us;353us;388us;65535us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;367us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;387us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;|]; (* State 389 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;473us;65535us;65535us;473us;473us;501us;65535us;65535us;65535us;473us;473us;65535us;473us;473us;473us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;473us;65535us;473us;473us;473us;473us;473us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;473us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;473us;65535us;473us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;65535us;390us;390us;65535us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;369us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;65535us;|]; (* State 390 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;472us;65535us;65535us;472us;472us;472us;65535us;65535us;65535us;472us;472us;65535us;472us;472us;472us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;472us;65535us;472us;472us;472us;472us;472us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;499us;472us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;498us;500us;472us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;65535us;390us;390us;65535us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;369us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;390us;65535us;|]; (* State 391 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;392us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;|]; (* State 392 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;419us;65535us;65535us;419us;419us;419us;65535us;65535us;65535us;493us;419us;65535us;419us;419us;419us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;419us;65535us;419us;419us;419us;419us;419us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;419us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;419us;65535us;419us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 353us;353us;353us;353us;353us;353us;353us;353us;353us;394us;65535us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;373us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;393us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;|]; (* State 393 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;395us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;|]; (* State 394 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;417us;65535us;65535us;417us;417us;417us;65535us;65535us;65535us;417us;417us;65535us;417us;417us;417us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;417us;65535us;417us;417us;497us;417us;417us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;417us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;417us;65535us;417us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 353us;353us;353us;353us;353us;353us;353us;353us;353us;394us;65535us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;373us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;393us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;|]; (* State 395 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;441us;65535us;65535us;435us;437us;442us;65535us;65535us;65535us;434us;438us;65535us;438us;436us;437us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;440us;440us;440us;496us;439us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;439us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;443us;65535us;444us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;65535us;396us;396us;65535us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;375us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;65535us;|]; (* State 396 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;441us;65535us;65535us;435us;437us;442us;65535us;446us;65535us;434us;438us;65535us;438us;433us;437us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;440us;440us;440us;436us;439us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;445us;65535us;65535us;439us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;443us;65535us;444us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;65535us;396us;396us;65535us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;375us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;396us;65535us;|]; (* State 397 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;428us;65535us;65535us;431us;429us;430us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 353us;353us;353us;353us;353us;353us;353us;353us;353us;398us;65535us;353us;353us;65535us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;377us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;353us;65535us;|]; (* State 398 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;65535us;423us;423us;423us;65535us;65535us;65535us;423us;423us;65535us;423us;423us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;423us;423us;423us;423us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;426us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;425us;65535us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 399us;399us;399us;399us;399us;399us;399us;399us;399us;400us;65535us;399us;399us;65535us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;379us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;65535us;|]; (* State 399 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;424us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;65535us;399us;399us;65535us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;378us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;65535us;|]; (* State 400 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;65535us;423us;423us;423us;65535us;65535us;65535us;423us;423us;65535us;423us;423us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;423us;423us;423us;423us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 399us;399us;399us;399us;399us;399us;399us;399us;399us;400us;65535us;399us;399us;65535us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;379us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;399us;65535us;|]; (* State 401 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;422us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;421us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 448us;448us;448us;448us;448us;448us;448us;448us;448us;419us;421us;448us;448us;422us;448us;448us;448us;448us;448us;448us;448us;448us;448us;448us;448us;448us;448us;448us;448us;448us;448us;448us;418us;446us;415us;424us;416us;442us;426us;413us;414us;428us;429us;444us;430us;431us;433us;420us;412us;411us;411us;411us;411us;411us;411us;411us;411us;411us;434us;436us;425us;437us;435us;432us;417us;402us;402us;402us;402us;403us;404us;402us;402us;402us;402us;402us;402us;402us;402us;402us;402us;402us;402us;402us;402us;402us;402us;402us;402us;402us;402us;438us;448us;440us;445us;402us;423us;405us;402us;402us;406us;402us;402us;402us;402us;402us;402us;402us;402us;407us;402us;402us;402us;402us;408us;402us;402us;402us;402us;409us;402us;410us;402us;439us;427us;441us;443us;448us;402us;402us;402us;402us;402us;448us;448us;448us;411us;402us;448us;448us;448us;448us;448us;448us;447us;448us;448us;448us;448us;448us;448us;448us;448us;448us;448us;448us;448us;448us;449us;|]; (* State 402 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;420us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 403 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;822us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 404 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;819us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 405 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;419us;65535us;65535us;419us;418us;419us;65535us;65535us;65535us;419us;419us;65535us;419us;419us;419us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;419us;65535us;419us;419us;419us;419us;419us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;419us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;419us;65535us;419us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;816us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 406 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;414us;65535us;65535us;414us;414us;414us;65535us;65535us;65535us;414us;414us;65535us;414us;414us;414us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;414us;65535us;414us;414us;414us;414us;414us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;414us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;414us;65535us;414us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;814us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 407 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;417us;65535us;65535us;417us;417us;417us;65535us;65535us;65535us;417us;417us;65535us;417us;417us;417us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;417us;65535us;417us;417us;417us;417us;417us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;417us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;417us;65535us;417us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;809us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 408 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;65535us;416us;416us;416us;65535us;65535us;65535us;416us;416us;65535us;416us;416us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;416us;416us;416us;416us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;803us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 409 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;414us;65535us;65535us;414us;414us;414us;65535us;65535us;65535us;414us;414us;65535us;414us;414us;414us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;414us;65535us;414us;413us;414us;414us;414us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;414us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;414us;65535us;414us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;798us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 410 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;411us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;793us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 411 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;726us;65535us;65535us;65535us;65535us;65535us;65535us;717us;65535us;713us;713us;713us;713us;713us;713us;713us;713us;713us;713us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;726us;726us;726us;726us;722us;723us;725us;726us;725us;726us;726us;719us;724us;725us;726us;726us;725us;725us;726us;726us;720us;726us;726us;726us;726us;725us;65535us;65535us;65535us;65535us;714us;65535us;726us;726us;726us;726us;722us;723us;726us;726us;726us;726us;726us;718us;724us;721us;726us;726us;726us;726us;716us;726us;715us;726us;726us;726us;712us;726us;65535us;65535us;65535us;65535us;65535us;726us;726us;726us;726us;726us;726us;726us;65535us;713us;726us;65535us;65535us;65535us;65535us;65535us;726us;65535us;65535us;726us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 412 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;726us;65535us;65535us;65535us;65535us;65535us;65535us;717us;65535us;713us;713us;713us;713us;713us;713us;713us;713us;713us;713us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;726us;768us;726us;726us;722us;723us;725us;726us;725us;726us;726us;719us;724us;725us;767us;726us;725us;725us;726us;726us;720us;726us;726us;766us;726us;725us;65535us;65535us;65535us;65535us;714us;65535us;726us;768us;726us;726us;722us;723us;726us;726us;726us;726us;726us;718us;724us;721us;767us;726us;726us;726us;716us;726us;715us;726us;726us;766us;712us;726us;65535us;65535us;65535us;65535us;65535us;726us;726us;726us;726us;726us;726us;726us;65535us;713us;726us;65535us;65535us;65535us;65535us;65535us;726us;65535us;65535us;726us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 413 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;415us;65535us;65535us;415us;415us;415us;65535us;65535us;65535us;415us;415us;65535us;415us;415us;415us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;415us;65535us;415us;415us;415us;415us;415us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;415us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;415us;65535us;415us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;682us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;683us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;|]; (* State 414 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;414us;65535us;65535us;414us;414us;414us;65535us;65535us;65535us;414us;414us;65535us;414us;414us;414us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;414us;65535us;414us;414us;414us;414us;414us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;414us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;414us;65535us;414us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;657us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 415 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;415us;65535us;65535us;415us;415us;415us;65535us;65535us;65535us;415us;415us;65535us;415us;415us;415us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;415us;65535us;415us;415us;415us;415us;415us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;415us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;415us;65535us;415us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;655us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 416 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;65535us;416us;416us;416us;65535us;65535us;65535us;416us;416us;65535us;416us;416us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;416us;416us;416us;416us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;519us;647us;65535us;648us;516us;520us;65535us;65535us;65535us;513us;517us;65535us;517us;514us;516us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;521us;521us;522us;514us;649us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;518us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;523us;65535us;524us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 417 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;417us;65535us;65535us;417us;417us;417us;65535us;65535us;65535us;417us;417us;65535us;417us;417us;417us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;417us;65535us;417us;417us;417us;417us;417us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;417us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;417us;65535us;417us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;639us;65535us;640us;453us;453us;65535us;65535us;65535us;453us;453us;65535us;453us;453us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;453us;453us;641us;453us;642us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 418 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;419us;65535us;65535us;419us;419us;419us;65535us;65535us;65535us;419us;419us;65535us;419us;419us;419us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;419us;65535us;419us;419us;419us;419us;419us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;419us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;419us;65535us;419us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;630us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;638us;65535us;65535us;629us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 419 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;419us;65535us;65535us;419us;419us;419us;65535us;65535us;65535us;419us;419us;65535us;419us;419us;419us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;419us;65535us;419us;419us;419us;419us;419us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;419us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;419us;65535us;419us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;628us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;630us;65535us;65535us;629us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 420 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;456us;65535us;65535us;456us;456us;456us;65535us;65535us;65535us;456us;456us;65535us;456us;456us;622us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;456us;65535us;456us;456us;456us;456us;456us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;456us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;456us;65535us;456us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 421 *) [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 422 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;621us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 423 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;65535us;423us;423us;423us;65535us;65535us;65535us;423us;423us;65535us;423us;423us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;423us;423us;423us;423us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;614us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 424 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;547us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;547us;549us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;546us;546us;546us;546us;546us;546us;546us;546us;546us;546us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;551us;65535us;65535us;65535us;550us;65535us;65535us;548us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;546us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 425 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;65535us;423us;423us;423us;65535us;65535us;65535us;423us;423us;65535us;423us;423us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;423us;423us;423us;423us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;427us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;65535us;460us;460us;460us;65535us;65535us;65535us;460us;460us;65535us;544us;460us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;460us;460us;460us;460us;543us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 426 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;512us;65535us;65535us;512us;512us;542us;65535us;65535us;65535us;512us;512us;65535us;512us;512us;512us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;512us;65535us;512us;512us;512us;512us;512us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;512us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;512us;65535us;512us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 427 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;511us;65535us;65535us;511us;511us;511us;65535us;65535us;65535us;511us;511us;65535us;511us;511us;511us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;511us;65535us;511us;511us;511us;511us;511us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;540us;511us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;539us;541us;511us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 428 *) [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 429 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;456us;65535us;65535us;456us;456us;456us;65535us;65535us;65535us;534us;456us;65535us;456us;456us;456us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;456us;65535us;456us;456us;456us;456us;456us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;456us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;456us;65535us;456us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 430 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;432us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; - (* State 431 *) [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 431 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;454us;65535us;65535us;454us;454us;454us;65535us;65535us;65535us;454us;454us;65535us;454us;454us;454us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;454us;65535us;454us;454us;538us;454us;454us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;454us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;454us;65535us;454us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 432 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;479us;65535us;65535us;473us;475us;481us;65535us;65535us;65535us;472us;476us;65535us;476us;474us;475us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;478us;478us;480us;537us;477us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;477us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;482us;65535us;483us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 433 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;441us;65535us;65535us;435us;437us;442us;65535us;65535us;65535us;434us;438us;65535us;438us;436us;437us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;440us;440us;440us;436us;439us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;495us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;443us;65535us;444us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;479us;65535us;65535us;473us;475us;481us;65535us;485us;65535us;472us;476us;65535us;476us;471us;475us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;478us;478us;480us;474us;477us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;484us;65535us;65535us;477us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;482us;65535us;483us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 434 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;419us;65535us;65535us;419us;419us;419us;65535us;65535us;65535us;493us;419us;65535us;419us;419us;419us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;419us;65535us;419us;419us;419us;419us;419us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;419us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;419us;65535us;419us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;466us;65535us;65535us;469us;467us;468us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 435 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;480us;65535us;65535us;476us;477us;481us;65535us;65535us;65535us;474us;478us;65535us;478us;475us;477us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;482us;482us;482us;475us;479us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;479us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;483us;65535us;484us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;464us;65535us;65535us;464us;464us;464us;65535us;65535us;65535us;464us;464us;65535us;464us;464us;464us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;464us;65535us;464us;464us;464us;464us;464us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;463us;464us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;462us;65535us;464us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 436 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;441us;65535us;65535us;435us;437us;442us;65535us;65535us;65535us;434us;438us;65535us;438us;436us;437us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;440us;440us;440us;436us;439us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;439us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;443us;65535us;444us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;461us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 437 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;419us;65535us;65535us;419us;419us;419us;65535us;65535us;65535us;419us;419us;65535us;419us;419us;419us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;419us;65535us;419us;419us;419us;419us;419us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;419us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;419us;65535us;419us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;65535us;460us;460us;460us;65535us;65535us;65535us;460us;460us;65535us;460us;460us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;460us;460us;460us;460us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 438 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;417us;65535us;65535us;417us;417us;417us;65535us;65535us;65535us;417us;417us;65535us;417us;417us;417us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;417us;65535us;417us;417us;417us;417us;417us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;417us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;417us;65535us;417us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;459us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;458us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 439 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;65535us;416us;416us;416us;65535us;65535us;65535us;416us;416us;65535us;416us;416us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;416us;416us;416us;416us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;457us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 440 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;65535us;423us;423us;423us;65535us;65535us;65535us;423us;423us;65535us;423us;423us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;423us;423us;423us;423us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 441 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;414us;65535us;65535us;414us;414us;414us;65535us;65535us;65535us;414us;414us;65535us;414us;414us;414us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;414us;65535us;414us;413us;414us;414us;414us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;414us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;414us;65535us;414us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 442 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;473us;65535us;65535us;473us;473us;473us;65535us;65535us;65535us;473us;473us;65535us;473us;473us;473us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;473us;65535us;473us;473us;473us;473us;473us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;473us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;473us;65535us;473us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;456us;65535us;65535us;456us;455us;456us;65535us;65535us;65535us;456us;456us;65535us;456us;456us;456us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;456us;65535us;456us;456us;456us;456us;456us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;456us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;456us;65535us;456us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 443 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;472us;65535us;65535us;472us;472us;472us;65535us;65535us;65535us;472us;472us;65535us;472us;472us;472us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;472us;65535us;472us;472us;472us;472us;472us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;472us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;472us;65535us;472us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;451us;65535us;65535us;451us;451us;451us;65535us;65535us;65535us;451us;451us;65535us;451us;451us;451us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;451us;65535us;451us;451us;451us;451us;451us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;451us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;451us;65535us;451us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 444 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;414us;65535us;65535us;414us;414us;414us;65535us;65535us;65535us;414us;414us;65535us;414us;414us;414us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;414us;65535us;414us;414us;414us;414us;414us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;414us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;414us;65535us;414us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;454us;65535us;65535us;454us;454us;454us;65535us;65535us;65535us;454us;454us;65535us;454us;454us;454us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;454us;65535us;454us;454us;454us;454us;454us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;454us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;454us;65535us;454us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 445 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;451us;65535us;452us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;450us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;65535us;453us;453us;453us;65535us;65535us;65535us;453us;453us;65535us;453us;453us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;453us;453us;453us;453us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 446 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;447us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;451us;65535us;65535us;451us;451us;451us;65535us;65535us;65535us;451us;451us;65535us;451us;451us;451us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;451us;65535us;451us;450us;451us;451us;451us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;451us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;451us;65535us;451us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 447 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;448us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;448us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 448 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;449us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 449 *) [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 450 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;471us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;452us;65535us;65535us;452us;452us;452us;65535us;65535us;65535us;452us;452us;65535us;452us;452us;452us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;452us;65535us;452us;452us;452us;452us;452us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;452us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;452us;65535us;452us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 451 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;464us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;463us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;451us;65535us;65535us;451us;451us;451us;65535us;65535us;65535us;451us;451us;65535us;451us;451us;451us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;451us;65535us;451us;451us;451us;451us;451us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;451us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;451us;65535us;451us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 452 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;452us;65535us;65535us;452us;452us;452us;65535us;65535us;65535us;452us;452us;65535us;452us;452us;452us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;452us;65535us;452us;452us;452us;452us;452us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;452us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;452us;65535us;452us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 453 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;454us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;449us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;65535us;453us;453us;453us;65535us;65535us;65535us;453us;453us;65535us;453us;453us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;453us;453us;453us;453us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 454 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;455us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;454us;65535us;65535us;454us;454us;454us;65535us;65535us;65535us;454us;454us;65535us;454us;454us;454us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;454us;65535us;454us;454us;454us;454us;454us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;454us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;454us;65535us;454us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 455 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;456us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;456us;65535us;65535us;456us;456us;456us;65535us;65535us;65535us;456us;456us;65535us;456us;456us;456us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;456us;65535us;456us;456us;456us;456us;456us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;456us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;456us;65535us;456us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 456 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;457us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;449us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;456us;65535us;65535us;456us;456us;456us;65535us;65535us;65535us;456us;456us;65535us;456us;456us;456us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;456us;65535us;456us;456us;456us;456us;456us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;456us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;456us;65535us;456us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 457 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;458us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 458 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;459us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 459 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;449us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 460 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;461us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;65535us;460us;460us;460us;65535us;65535us;65535us;460us;460us;65535us;460us;460us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;460us;460us;460us;460us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 461 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;462us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 462 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;449us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;464us;65535us;65535us;464us;464us;464us;65535us;65535us;65535us;464us;464us;65535us;464us;464us;464us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;464us;65535us;464us;464us;464us;464us;464us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;465us;464us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;464us;65535us;464us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 463 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;470us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 464 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;466us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;465us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;464us;65535us;65535us;464us;464us;464us;65535us;65535us;65535us;464us;464us;65535us;464us;464us;464us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;464us;65535us;464us;464us;464us;464us;464us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;464us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;464us;65535us;464us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 465 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;469us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 466 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;467us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 467 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;468us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 468 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;449us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;470us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 469 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;449us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 470 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;449us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 471 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;449us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;479us;65535us;65535us;473us;475us;481us;65535us;65535us;65535us;472us;476us;65535us;476us;474us;475us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;478us;478us;480us;474us;477us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;536us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;482us;65535us;483us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 472 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;472us;65535us;65535us;472us;472us;472us;65535us;65535us;65535us;472us;472us;65535us;472us;472us;472us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;472us;65535us;472us;472us;472us;472us;472us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;472us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;472us;65535us;472us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;456us;65535us;65535us;456us;456us;456us;65535us;65535us;65535us;534us;456us;65535us;456us;456us;456us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;456us;65535us;456us;456us;456us;456us;456us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;456us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;456us;65535us;456us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 473 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;473us;65535us;65535us;473us;473us;473us;65535us;65535us;65535us;473us;473us;65535us;473us;473us;473us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;473us;65535us;473us;473us;473us;473us;473us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;473us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;473us;65535us;473us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;519us;65535us;65535us;515us;516us;520us;65535us;65535us;65535us;513us;517us;65535us;517us;514us;516us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;521us;521us;522us;514us;518us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;518us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;523us;65535us;524us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 474 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;490us;65535us;65535us;490us;490us;490us;65535us;65535us;65535us;491us;490us;65535us;490us;490us;490us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;490us;65535us;490us;490us;490us;490us;490us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;490us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;490us;65535us;490us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;479us;65535us;65535us;473us;475us;481us;65535us;65535us;65535us;472us;476us;65535us;476us;474us;475us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;478us;478us;480us;474us;477us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;477us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;482us;65535us;483us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 475 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;480us;65535us;65535us;476us;477us;481us;65535us;65535us;65535us;474us;478us;65535us;478us;475us;477us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;482us;482us;482us;475us;479us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;479us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;483us;65535us;484us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;456us;65535us;65535us;456us;456us;456us;65535us;65535us;65535us;456us;456us;65535us;456us;456us;456us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;456us;65535us;456us;456us;456us;456us;456us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;456us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;456us;65535us;456us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 476 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;480us;65535us;65535us;476us;477us;481us;65535us;65535us;65535us;474us;478us;65535us;478us;475us;477us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;482us;482us;482us;475us;479us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;479us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;483us;65535us;484us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;454us;65535us;65535us;454us;454us;454us;65535us;65535us;65535us;454us;454us;65535us;454us;454us;454us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;454us;65535us;454us;454us;454us;454us;454us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;454us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;454us;65535us;454us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 477 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;490us;65535us;65535us;490us;490us;490us;65535us;65535us;65535us;490us;490us;65535us;490us;490us;490us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;490us;65535us;490us;490us;490us;490us;490us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;490us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;490us;65535us;490us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;65535us;453us;453us;453us;65535us;65535us;65535us;453us;453us;65535us;453us;453us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;453us;453us;453us;453us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 478 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;489us;65535us;65535us;489us;489us;489us;65535us;65535us;65535us;489us;489us;65535us;489us;489us;489us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;489us;65535us;489us;489us;489us;489us;489us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;489us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;489us;65535us;489us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;65535us;460us;460us;460us;65535us;65535us;65535us;460us;460us;65535us;460us;460us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;460us;460us;460us;460us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 479 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;488us;65535us;65535us;488us;488us;488us;65535us;65535us;65535us;488us;488us;65535us;488us;488us;488us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;488us;65535us;488us;488us;488us;488us;488us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;488us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;488us;65535us;488us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;451us;65535us;65535us;451us;451us;451us;65535us;65535us;65535us;451us;451us;65535us;451us;451us;451us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;451us;65535us;451us;450us;451us;451us;451us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;451us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;451us;65535us;451us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 480 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;415us;65535us;65535us;415us;415us;415us;65535us;65535us;65535us;415us;415us;65535us;415us;415us;415us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;415us;65535us;415us;487us;415us;415us;415us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;415us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;415us;65535us;415us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;464us;65535us;65535us;464us;464us;464us;65535us;65535us;65535us;464us;464us;65535us;464us;464us;464us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;464us;65535us;464us;464us;464us;464us;464us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;464us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;464us;65535us;464us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 481 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;486us;65535us;65535us;486us;486us;486us;65535us;65535us;65535us;486us;486us;65535us;486us;486us;486us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;486us;65535us;486us;486us;486us;486us;486us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;486us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;486us;65535us;486us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;512us;65535us;65535us;512us;512us;512us;65535us;65535us;65535us;512us;512us;65535us;512us;512us;512us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;512us;65535us;512us;512us;512us;512us;512us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;512us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;512us;65535us;512us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 482 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;65535us;423us;423us;423us;65535us;65535us;65535us;423us;423us;65535us;423us;423us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;423us;423us;423us;423us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;511us;65535us;65535us;511us;511us;511us;65535us;65535us;65535us;511us;511us;65535us;511us;511us;511us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;511us;65535us;511us;511us;511us;511us;511us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;511us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;511us;65535us;511us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 483 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;485us;65535us;65535us;485us;485us;485us;65535us;65535us;65535us;485us;485us;65535us;485us;485us;485us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;485us;65535us;485us;485us;485us;485us;485us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;485us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;485us;65535us;485us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;451us;65535us;65535us;451us;451us;451us;65535us;65535us;65535us;451us;451us;65535us;451us;451us;451us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;451us;65535us;451us;451us;451us;451us;451us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;451us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;451us;65535us;451us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 484 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;415us;65535us;65535us;415us;415us;415us;65535us;65535us;65535us;415us;415us;65535us;415us;415us;415us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;415us;65535us;415us;415us;415us;415us;415us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;415us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;415us;65535us;415us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;490us;65535us;491us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;489us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 485 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;485us;65535us;65535us;485us;485us;485us;65535us;65535us;65535us;485us;485us;65535us;485us;485us;485us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;485us;65535us;485us;485us;485us;485us;485us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;485us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;485us;65535us;485us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;486us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 486 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;486us;65535us;65535us;486us;486us;486us;65535us;65535us;65535us;486us;486us;65535us;486us;486us;486us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;486us;65535us;486us;486us;486us;486us;486us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;486us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;486us;65535us;486us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;487us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 487 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;415us;65535us;65535us;415us;415us;415us;65535us;65535us;65535us;415us;415us;65535us;415us;415us;415us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;415us;65535us;415us;415us;415us;415us;415us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;415us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;415us;65535us;415us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;488us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 488 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;488us;65535us;65535us;488us;488us;488us;65535us;65535us;65535us;488us;488us;65535us;488us;488us;488us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;488us;65535us;488us;488us;488us;488us;488us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;488us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;488us;65535us;488us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 489 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;489us;65535us;65535us;489us;489us;489us;65535us;65535us;65535us;489us;489us;65535us;489us;489us;489us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;489us;65535us;489us;489us;489us;489us;489us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;489us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;489us;65535us;489us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;510us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 490 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;490us;65535us;65535us;490us;490us;490us;65535us;65535us;65535us;490us;490us;65535us;490us;490us;490us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;490us;65535us;490us;490us;490us;490us;490us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;490us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;490us;65535us;490us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;503us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;502us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 491 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;492us;65535us;65535us;492us;492us;492us;65535us;65535us;65535us;492us;492us;65535us;492us;492us;492us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;492us;65535us;492us;492us;492us;492us;492us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;492us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;492us;65535us;492us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;492us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 492 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;492us;65535us;65535us;492us;492us;492us;65535us;65535us;65535us;492us;492us;65535us;492us;492us;492us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;492us;65535us;492us;492us;492us;492us;492us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;492us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;492us;65535us;492us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;493us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;488us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 493 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;494us;65535us;65535us;494us;494us;494us;65535us;65535us;65535us;494us;494us;65535us;494us;494us;494us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;494us;65535us;494us;494us;494us;494us;494us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;494us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;494us;65535us;494us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;494us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 494 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;494us;65535us;65535us;494us;494us;494us;65535us;65535us;65535us;494us;494us;65535us;494us;494us;494us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;494us;65535us;494us;494us;494us;494us;494us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;494us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;494us;65535us;494us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;495us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 495 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;65535us;416us;416us;416us;65535us;65535us;65535us;416us;416us;65535us;416us;416us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;416us;416us;416us;416us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;496us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;488us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 496 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;441us;65535us;65535us;435us;437us;442us;65535us;65535us;65535us;434us;438us;65535us;438us;436us;437us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;440us;440us;440us;436us;439us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;439us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;443us;65535us;444us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;497us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 497 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;417us;65535us;65535us;417us;417us;417us;65535us;65535us;65535us;417us;417us;65535us;417us;417us;417us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;417us;65535us;417us;417us;417us;417us;417us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;417us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;417us;65535us;417us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;498us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 498 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;472us;65535us;65535us;472us;472us;472us;65535us;65535us;65535us;472us;472us;65535us;472us;472us;472us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;472us;65535us;472us;472us;472us;472us;472us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;472us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;472us;65535us;472us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;499us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;488us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 499 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;500us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 500 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;501us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 501 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;473us;65535us;65535us;473us;473us;473us;65535us;65535us;65535us;473us;473us;65535us;473us;473us;473us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;473us;65535us;473us;473us;473us;473us;473us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;473us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;473us;65535us;473us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;488us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 502 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;65535us;423us;423us;423us;65535us;65535us;65535us;423us;423us;65535us;423us;423us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;423us;423us;423us;423us;504us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;509us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 503 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;65535us;423us;423us;423us;65535us;65535us;65535us;423us;423us;65535us;423us;423us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;423us;423us;423us;423us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;505us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;504us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 504 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;65535us;423us;423us;423us;65535us;65535us;65535us;423us;423us;65535us;423us;423us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;423us;423us;423us;423us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;423us;65535us;423us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;508us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 505 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;565us;563us;65535us;65535us;564us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;565us;65535us;566us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;65535us;65535us;65535us;65535us;65535us;65535us;567us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;568us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;506us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 506 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;506us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;506us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;505us;505us;505us;505us;505us;505us;505us;505us;505us;505us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;505us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;507us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 507 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;551us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;488us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 508 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;550us;65535us;65535us;550us;550us;550us;65535us;65535us;65535us;550us;550us;65535us;550us;550us;550us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;550us;65535us;550us;550us;550us;550us;550us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;550us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;550us;65535us;550us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;488us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 509 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;531us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;530us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;488us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 510 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;511us;65535us;512us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;488us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 511 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;522us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;511us;65535us;65535us;511us;511us;511us;65535us;65535us;65535us;511us;511us;65535us;511us;511us;511us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;511us;65535us;511us;511us;511us;511us;511us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;511us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;511us;65535us;511us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 512 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;513us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;512us;65535us;65535us;512us;512us;512us;65535us;65535us;65535us;512us;512us;65535us;512us;512us;512us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;512us;65535us;512us;512us;512us;512us;512us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;512us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;512us;65535us;512us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 513 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;514us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;531us;65535us;65535us;531us;531us;531us;65535us;65535us;65535us;532us;531us;65535us;531us;531us;531us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;531us;65535us;531us;531us;531us;531us;531us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;531us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;531us;65535us;531us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 514 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;515us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;519us;65535us;65535us;515us;516us;520us;65535us;65535us;65535us;513us;517us;65535us;517us;514us;516us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;521us;521us;522us;514us;518us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;518us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;523us;65535us;524us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 515 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;517us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;517us;65535us;65535us;65535us;65535us;65535us;65535us;518us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;516us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;65535us;65535us;65535us;65535us;518us;65535us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;518us;65535us;65535us;65535us;65535us;65535us;518us;518us;518us;518us;518us;518us;518us;65535us;518us;518us;65535us;65535us;65535us;65535us;65535us;518us;65535us;65535us;518us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;519us;65535us;65535us;515us;516us;520us;65535us;65535us;65535us;513us;517us;65535us;517us;514us;516us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;521us;521us;522us;514us;518us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;518us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;523us;65535us;524us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 516 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;520us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;531us;65535us;65535us;531us;531us;531us;65535us;65535us;65535us;531us;531us;65535us;531us;531us;531us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;531us;65535us;531us;531us;531us;531us;531us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;531us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;531us;65535us;531us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 517 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;517us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;517us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;516us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;530us;65535us;65535us;530us;530us;530us;65535us;65535us;65535us;530us;530us;65535us;530us;530us;530us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;530us;65535us;530us;530us;530us;530us;530us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;530us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;530us;65535us;530us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 518 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;519us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;65535us;65535us;65535us;65535us;519us;65535us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;65535us;65535us;65535us;65535us;65535us;519us;519us;519us;519us;519us;519us;519us;65535us;519us;519us;65535us;65535us;65535us;65535us;65535us;519us;65535us;65535us;519us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;529us;65535us;65535us;529us;529us;529us;65535us;65535us;65535us;529us;529us;65535us;529us;529us;529us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;529us;65535us;529us;529us;529us;529us;529us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;529us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;529us;65535us;529us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 519 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;519us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;65535us;65535us;65535us;65535us;519us;65535us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;519us;65535us;65535us;65535us;65535us;65535us;519us;519us;519us;519us;519us;519us;519us;65535us;519us;519us;65535us;65535us;65535us;65535us;65535us;519us;65535us;65535us;519us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;452us;65535us;65535us;452us;452us;452us;65535us;65535us;65535us;452us;452us;65535us;452us;452us;452us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;452us;65535us;452us;528us;452us;452us;452us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;452us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;452us;65535us;452us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 520 *) - [| 521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;65535us;521us;521us;65535us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;527us;65535us;65535us;527us;527us;527us;65535us;65535us;65535us;527us;527us;65535us;527us;527us;527us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;527us;65535us;527us;527us;527us;527us;527us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;527us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;527us;65535us;527us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 521 *) - [| 521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;65535us;521us;521us;65535us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;521us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;65535us;460us;460us;460us;65535us;65535us;65535us;460us;460us;65535us;460us;460us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;460us;460us;460us;460us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 522 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;523us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;526us;65535us;65535us;526us;526us;526us;65535us;65535us;65535us;526us;526us;65535us;526us;526us;526us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;526us;65535us;526us;526us;526us;526us;526us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;526us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;526us;65535us;526us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 523 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;525us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;525us;65535us;65535us;65535us;65535us;65535us;65535us;526us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;524us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;65535us;65535us;65535us;65535us;526us;65535us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;526us;65535us;65535us;65535us;65535us;65535us;526us;526us;526us;526us;526us;526us;526us;65535us;526us;526us;65535us;65535us;65535us;65535us;65535us;526us;65535us;65535us;526us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;525us;65535us;65535us;525us;525us;525us;65535us;65535us;65535us;525us;525us;65535us;525us;525us;525us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;525us;65535us;525us;525us;525us;525us;525us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;525us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;525us;65535us;525us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 524 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;528us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;452us;65535us;65535us;452us;452us;452us;65535us;65535us;65535us;452us;452us;65535us;452us;452us;452us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;452us;65535us;452us;452us;452us;452us;452us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;452us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;452us;65535us;452us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 525 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;525us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;525us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;524us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;525us;65535us;65535us;525us;525us;525us;65535us;65535us;65535us;525us;525us;65535us;525us;525us;525us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;525us;65535us;525us;525us;525us;525us;525us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;525us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;525us;65535us;525us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 526 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;527us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;65535us;65535us;65535us;65535us;527us;65535us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;65535us;65535us;65535us;65535us;65535us;527us;527us;527us;527us;527us;527us;527us;65535us;527us;527us;65535us;65535us;65535us;65535us;65535us;527us;65535us;65535us;527us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;526us;65535us;65535us;526us;526us;526us;65535us;65535us;65535us;526us;526us;65535us;526us;526us;526us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;526us;65535us;526us;526us;526us;526us;526us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;526us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;526us;65535us;526us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 527 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;527us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;65535us;65535us;65535us;65535us;527us;65535us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;527us;65535us;65535us;65535us;65535us;65535us;527us;527us;527us;527us;527us;527us;527us;65535us;527us;527us;65535us;65535us;65535us;65535us;65535us;527us;65535us;65535us;527us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;527us;65535us;65535us;527us;527us;527us;65535us;65535us;65535us;527us;527us;65535us;527us;527us;527us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;527us;65535us;527us;527us;527us;527us;527us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;527us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;527us;65535us;527us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 528 *) - [| 529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;65535us;529us;529us;65535us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;452us;65535us;65535us;452us;452us;452us;65535us;65535us;65535us;452us;452us;65535us;452us;452us;452us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;452us;65535us;452us;452us;452us;452us;452us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;452us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;452us;65535us;452us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 529 *) - [| 529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;65535us;529us;529us;65535us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;529us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;529us;65535us;65535us;529us;529us;529us;65535us;65535us;65535us;529us;529us;65535us;529us;529us;529us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;529us;65535us;529us;529us;529us;529us;529us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;529us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;529us;65535us;529us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 530 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;537us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;530us;65535us;65535us;530us;530us;530us;65535us;65535us;65535us;530us;530us;65535us;530us;530us;530us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;530us;65535us;530us;530us;530us;530us;530us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;530us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;530us;65535us;530us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 531 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;532us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;532us;65535us;65535us;65535us;65535us;65535us;65535us;533us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;65535us;65535us;65535us;65535us;533us;65535us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;65535us;65535us;65535us;65535us;65535us;533us;533us;533us;533us;533us;533us;533us;65535us;533us;533us;65535us;65535us;65535us;65535us;65535us;533us;65535us;65535us;533us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;531us;65535us;65535us;531us;531us;531us;65535us;65535us;65535us;531us;531us;65535us;531us;531us;531us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;531us;65535us;531us;531us;531us;531us;531us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;531us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;531us;65535us;531us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 532 *) - [| 535us;535us;535us;535us;535us;535us;535us;535us;535us;536us;65535us;535us;535us;65535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;536us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;533us;65535us;65535us;533us;533us;533us;65535us;65535us;65535us;533us;533us;65535us;533us;533us;533us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;533us;65535us;533us;533us;533us;533us;533us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;533us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;533us;65535us;533us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 533 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;534us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;65535us;65535us;65535us;65535us;534us;65535us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;65535us;65535us;65535us;65535us;65535us;534us;534us;534us;534us;534us;534us;534us;65535us;534us;534us;65535us;65535us;65535us;65535us;65535us;534us;65535us;65535us;534us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;533us;65535us;65535us;533us;533us;533us;65535us;65535us;65535us;533us;533us;65535us;533us;533us;533us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;533us;65535us;533us;533us;533us;533us;533us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;533us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;533us;65535us;533us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 534 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;534us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;65535us;65535us;65535us;65535us;534us;65535us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;534us;65535us;65535us;65535us;65535us;65535us;534us;534us;534us;534us;534us;534us;534us;65535us;534us;534us;65535us;65535us;65535us;65535us;65535us;534us;65535us;65535us;534us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;535us;65535us;65535us;535us;535us;535us;65535us;65535us;65535us;535us;535us;65535us;535us;535us;535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;535us;65535us;535us;535us;535us;535us;535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;535us;65535us;535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 535 *) - [| 535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;65535us;535us;535us;65535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;535us;65535us;65535us;535us;535us;535us;65535us;65535us;65535us;535us;535us;65535us;535us;535us;535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;535us;65535us;535us;535us;535us;535us;535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;535us;65535us;535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 536 *) - [| 535us;535us;535us;535us;535us;535us;535us;535us;535us;536us;65535us;535us;535us;65535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;536us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;65535us;453us;453us;453us;65535us;65535us;65535us;453us;453us;65535us;453us;453us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;453us;453us;453us;453us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 537 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;538us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;479us;65535us;65535us;473us;475us;481us;65535us;65535us;65535us;472us;476us;65535us;476us;474us;475us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;478us;478us;480us;474us;477us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;477us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;482us;65535us;483us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 538 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;539us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;454us;65535us;65535us;454us;454us;454us;65535us;65535us;65535us;454us;454us;65535us;454us;454us;454us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;454us;65535us;454us;454us;454us;454us;454us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;454us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;454us;65535us;454us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 539 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;540us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;511us;65535us;65535us;511us;511us;511us;65535us;65535us;65535us;511us;511us;65535us;511us;511us;511us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;511us;65535us;511us;511us;511us;511us;511us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;511us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;511us;65535us;511us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 540 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;541us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;541us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 541 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;543us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;543us;65535us;542us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 542 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;544us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;512us;65535us;65535us;512us;512us;512us;65535us;65535us;65535us;512us;512us;65535us;512us;512us;512us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;512us;65535us;512us;512us;512us;512us;512us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;512us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;512us;65535us;512us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 543 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;543us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;543us;65535us;542us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;65535us;460us;460us;460us;65535us;65535us;65535us;460us;460us;65535us;460us;460us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;460us;460us;460us;460us;545us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 544 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;546us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;545us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;65535us;460us;460us;460us;65535us;65535us;65535us;460us;460us;65535us;460us;460us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;460us;460us;460us;460us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 545 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;549us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;65535us;460us;460us;460us;65535us;65535us;65535us;460us;460us;65535us;460us;460us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;460us;460us;460us;460us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;460us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 546 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;547us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;606us;604us;65535us;65535us;605us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;606us;65535us;607us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;609us;609us;609us;609us;609us;609us;609us;609us;609us;609us;65535us;65535us;65535us;65535us;65535us;65535us;608us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;609us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 547 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;548us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;547us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;547us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;546us;546us;546us;546us;546us;546us;546us;546us;546us;546us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;546us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 548 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;592us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 549 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;591us;65535us;65535us;591us;591us;591us;65535us;65535us;65535us;591us;591us;65535us;591us;591us;591us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;591us;65535us;591us;591us;591us;591us;591us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;591us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;591us;65535us;591us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 550 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;550us;65535us;65535us;550us;550us;550us;65535us;65535us;65535us;550us;550us;65535us;550us;550us;550us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;550us;65535us;550us;550us;550us;550us;550us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;550us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;550us;65535us;550us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;572us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;571us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 551 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;553us;65535us;65535us;65535us;65535us;65535us;65535us;552us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;552us;65535us;553us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 552 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;560us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;563us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 553 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;554us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;554us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 554 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;555us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;555us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 555 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;556us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;556us;65535us;65535us;65535us;65535us;65535us;65535us;557us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;65535us;65535us;65535us;65535us;557us;65535us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;65535us;65535us;65535us;65535us;65535us;557us;557us;557us;557us;557us;557us;557us;65535us;557us;557us;65535us;65535us;65535us;65535us;65535us;557us;65535us;65535us;557us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;556us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 556 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;559us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;559us;65535us;542us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;558us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;558us;65535us;65535us;65535us;65535us;65535us;65535us;559us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;557us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;65535us;65535us;65535us;65535us;559us;65535us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;559us;65535us;65535us;65535us;65535us;65535us;559us;559us;559us;559us;559us;559us;559us;65535us;559us;559us;65535us;65535us;65535us;65535us;65535us;559us;65535us;65535us;559us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 557 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;558us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;65535us;65535us;65535us;65535us;558us;65535us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;65535us;65535us;65535us;65535us;65535us;558us;558us;558us;558us;558us;558us;558us;65535us;558us;558us;65535us;65535us;65535us;65535us;65535us;558us;65535us;65535us;558us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;561us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 558 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;558us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;65535us;65535us;65535us;65535us;558us;65535us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;558us;65535us;65535us;65535us;65535us;65535us;558us;558us;558us;558us;558us;558us;558us;65535us;558us;558us;65535us;65535us;65535us;65535us;65535us;558us;65535us;65535us;558us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;558us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;558us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;557us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 559 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;559us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;559us;65535us;542us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;560us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;65535us;65535us;65535us;65535us;560us;65535us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;65535us;65535us;65535us;65535us;65535us;560us;560us;560us;560us;560us;560us;560us;65535us;560us;560us;65535us;65535us;65535us;65535us;65535us;560us;65535us;65535us;560us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 560 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;561us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;561us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;560us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;65535us;65535us;65535us;65535us;560us;65535us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;560us;65535us;65535us;65535us;65535us;65535us;560us;560us;560us;560us;560us;560us;560us;65535us;560us;560us;65535us;65535us;65535us;65535us;65535us;560us;65535us;65535us;560us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 561 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;562us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;562us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;505us;505us;505us;505us;505us;505us;505us;505us;505us;505us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;505us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;65535us;562us;562us;65535us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;65535us;|]; (* State 562 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;562us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;562us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;505us;505us;505us;505us;505us;505us;505us;505us;505us;505us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;505us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;65535us;562us;562us;65535us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;562us;65535us;|]; (* State 563 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;564us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 564 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;563us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;566us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;566us;65535us;65535us;65535us;65535us;65535us;65535us;567us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;565us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;65535us;65535us;65535us;65535us;567us;65535us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;567us;65535us;65535us;65535us;65535us;65535us;567us;567us;567us;567us;567us;567us;567us;65535us;567us;567us;65535us;65535us;65535us;65535us;65535us;567us;65535us;65535us;567us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 565 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;565us;563us;65535us;65535us;564us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;565us;65535us;566us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;567us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;569us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 566 *) - [| 569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;65535us;569us;569us;65535us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;65535us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;569us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;566us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;566us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;565us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 567 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;566us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;568us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;65535us;65535us;65535us;65535us;568us;65535us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;65535us;65535us;65535us;65535us;65535us;568us;568us;568us;568us;568us;568us;568us;65535us;568us;568us;65535us;65535us;65535us;65535us;65535us;568us;65535us;65535us;568us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 568 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;565us;563us;65535us;65535us;564us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;565us;65535us;566us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;65535us;65535us;65535us;65535us;65535us;65535us;567us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;568us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;568us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;65535us;65535us;65535us;65535us;568us;65535us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;568us;65535us;65535us;65535us;65535us;65535us;568us;568us;568us;568us;568us;568us;568us;65535us;568us;568us;65535us;65535us;65535us;65535us;65535us;568us;65535us;65535us;568us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 569 *) - [| 571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;65535us;571us;571us;65535us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;570us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;65535us;|]; + [| 570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;65535us;570us;570us;65535us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;65535us;|]; (* State 570 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;572us;563us;65535us;65535us;564us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;572us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;65535us;570us;570us;65535us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;570us;65535us;|]; (* State 571 *) - [| 571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;65535us;571us;571us;65535us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;570us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;571us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;578us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 572 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;572us;563us;65535us;65535us;564us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;572us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;573us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;573us;65535us;65535us;65535us;65535us;65535us;65535us;574us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;65535us;65535us;65535us;65535us;574us;65535us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;65535us;65535us;65535us;65535us;65535us;574us;574us;574us;574us;574us;574us;574us;65535us;574us;574us;65535us;65535us;65535us;65535us;65535us;574us;65535us;65535us;574us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 573 *) - [| 574us;574us;574us;574us;574us;574us;574us;574us;574us;65535us;65535us;574us;574us;65535us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;575us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;65535us;|]; + [| 576us;576us;576us;576us;576us;576us;576us;576us;576us;577us;65535us;576us;576us;65535us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;577us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;65535us;|]; (* State 574 *) - [| 578us;578us;578us;578us;578us;578us;578us;578us;578us;65535us;65535us;578us;578us;65535us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;577us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;575us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;65535us;65535us;65535us;65535us;575us;65535us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;65535us;65535us;65535us;65535us;65535us;575us;575us;575us;575us;575us;575us;575us;65535us;575us;575us;65535us;65535us;65535us;65535us;65535us;575us;65535us;65535us;575us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 575 *) - [| 574us;574us;574us;574us;574us;574us;574us;574us;574us;65535us;65535us;574us;574us;65535us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;576us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;575us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;65535us;65535us;65535us;65535us;575us;65535us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;575us;65535us;65535us;65535us;65535us;65535us;575us;575us;575us;575us;575us;575us;575us;65535us;575us;575us;65535us;65535us;65535us;65535us;65535us;575us;65535us;65535us;575us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 576 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;65535us;576us;576us;65535us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;65535us;|]; (* State 577 *) - [| 578us;578us;578us;578us;578us;578us;578us;578us;578us;65535us;65535us;578us;578us;65535us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;579us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;65535us;|]; + [| 576us;576us;576us;576us;576us;576us;576us;576us;576us;577us;65535us;576us;576us;65535us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;577us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;576us;65535us;|]; (* State 578 *) - [| 578us;578us;578us;578us;578us;578us;578us;578us;578us;65535us;65535us;578us;578us;65535us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;577us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;578us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;579us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 579 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;580us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 580 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;581us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 581 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;583us;65535us;65535us;583us;583us;583us;65535us;65535us;65535us;583us;583us;65535us;583us;583us;582us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;583us;65535us;583us;583us;583us;583us;583us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;583us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;583us;65535us;583us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;582us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;582us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 582 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;585us;65535us;65535us;585us;585us;585us;65535us;65535us;65535us;585us;585us;65535us;585us;585us;584us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;585us;65535us;585us;585us;585us;585us;585us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;585us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;585us;65535us;585us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;584us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;584us;65535us;583us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 583 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;583us;65535us;65535us;583us;583us;583us;65535us;65535us;65535us;583us;583us;65535us;583us;583us;583us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;583us;65535us;583us;583us;583us;583us;583us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;583us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;583us;65535us;583us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;585us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 584 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;586us;65535us;65535us;586us;586us;586us;65535us;65535us;65535us;586us;586us;65535us;586us;586us;586us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;586us;65535us;586us;586us;586us;586us;586us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;586us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;586us;65535us;586us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;584us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;584us;65535us;583us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 585 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;585us;65535us;65535us;585us;585us;585us;65535us;65535us;65535us;585us;585us;65535us;585us;585us;585us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;585us;65535us;585us;585us;585us;585us;585us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;585us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;585us;65535us;585us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;587us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;586us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 586 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;586us;65535us;65535us;586us;586us;586us;65535us;65535us;65535us;586us;586us;65535us;586us;586us;586us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;586us;65535us;586us;586us;586us;586us;586us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;586us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;586us;65535us;586us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;590us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 587 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;587us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;589us;65535us;65535us;588us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;588us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 588 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;510us;65535us;65535us;65535us;590us;65535us;65535us;591us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;589us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 589 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;589us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;589us;65535us;65535us;588us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 590 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;596us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 591 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;592us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;591us;65535us;65535us;591us;591us;591us;65535us;65535us;65535us;591us;591us;65535us;591us;591us;591us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;591us;65535us;591us;591us;591us;591us;591us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;591us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;591us;65535us;591us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 592 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;593us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;594us;65535us;65535us;65535us;65535us;65535us;65535us;593us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 593 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;594us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;601us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 594 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;595us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;595us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 595 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;557us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;65535us;65535us;65535us;65535us;557us;65535us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;557us;65535us;65535us;65535us;65535us;65535us;557us;557us;557us;557us;557us;557us;557us;65535us;557us;557us;65535us;65535us;65535us;65535us;65535us;557us;65535us;65535us;557us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;596us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 596 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;532us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;532us;65535us;65535us;65535us;65535us;65535us;65535us;533us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;65535us;65535us;65535us;65535us;533us;65535us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;533us;65535us;65535us;65535us;65535us;65535us;533us;533us;533us;533us;533us;533us;533us;65535us;533us;533us;65535us;65535us;65535us;65535us;65535us;533us;65535us;65535us;533us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;597us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;597us;65535us;65535us;65535us;65535us;65535us;65535us;598us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;65535us;65535us;65535us;65535us;598us;65535us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;65535us;65535us;65535us;65535us;65535us;598us;598us;598us;598us;598us;598us;598us;65535us;598us;598us;65535us;65535us;65535us;65535us;65535us;598us;65535us;65535us;598us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 597 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;589us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;597us;65535us;65535us;588us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;600us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;600us;65535us;583us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 598 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;599us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;65535us;65535us;65535us;65535us;599us;65535us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;65535us;65535us;65535us;65535us;65535us;599us;599us;599us;599us;599us;599us;599us;65535us;599us;599us;65535us;65535us;65535us;65535us;65535us;599us;65535us;65535us;599us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 599 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;605us;65535us;416us;416us;416us;65535us;65535us;65535us;416us;416us;65535us;416us;416us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;416us;416us;416us;416us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;599us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;65535us;65535us;65535us;65535us;599us;65535us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;599us;65535us;65535us;65535us;65535us;65535us;599us;599us;599us;599us;599us;599us;599us;65535us;599us;599us;65535us;65535us;65535us;65535us;65535us;599us;65535us;65535us;599us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 600 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;65535us;416us;416us;416us;65535us;65535us;65535us;416us;416us;65535us;416us;604us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;416us;416us;416us;416us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;600us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;600us;65535us;583us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 601 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;65535us;416us;416us;416us;65535us;65535us;65535us;416us;416us;65535us;416us;416us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;416us;416us;602us;416us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;602us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;602us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 602 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;65535us;416us;416us;416us;65535us;65535us;65535us;416us;416us;65535us;416us;603us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;416us;416us;416us;416us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;603us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;603us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;546us;546us;546us;546us;546us;546us;546us;546us;546us;546us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;546us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 603 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;65535us;416us;416us;416us;65535us;65535us;65535us;416us;416us;65535us;416us;416us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;416us;416us;416us;416us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;603us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;603us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;546us;546us;546us;546us;546us;546us;546us;546us;546us;546us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;546us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 604 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;65535us;416us;416us;416us;65535us;65535us;65535us;416us;416us;65535us;416us;416us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;416us;416us;416us;416us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;416us;65535us;416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; - (* State 605 *) [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 605 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;604us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 606 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;608us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;606us;604us;65535us;65535us;605us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;606us;65535us;607us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;608us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 607 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;488us;605us;65535us;488us;488us;488us;65535us;65535us;65535us;488us;488us;65535us;488us;488us;488us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;488us;65535us;488us;488us;488us;488us;488us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;488us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;488us;65535us;488us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;65535us;610us;610us;65535us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;65535us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;610us;65535us;|]; (* State 608 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;609us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;607us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 609 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;606us;604us;65535us;65535us;605us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;606us;65535us;607us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;609us;609us;609us;609us;609us;609us;609us;609us;609us;609us;65535us;65535us;65535us;65535us;65535us;65535us;608us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;609us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 610 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;611us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;65535us;612us;612us;65535us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;611us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;65535us;|]; (* State 611 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;613us;604us;65535us;65535us;605us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;613us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 612 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;615us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;614us;65535us;65535us;613us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;65535us;612us;612us;65535us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;611us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;612us;65535us;|]; (* State 613 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;617us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;613us;604us;65535us;65535us;605us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;613us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 614 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;616us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 615us;615us;615us;615us;615us;615us;615us;615us;615us;65535us;65535us;615us;615us;65535us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;616us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;65535us;|]; (* State 615 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 619us;619us;619us;619us;619us;619us;619us;619us;619us;65535us;65535us;619us;619us;65535us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;618us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;65535us;|]; (* State 616 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 615us;615us;615us;615us;615us;615us;615us;615us;615us;65535us;65535us;615us;615us;65535us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;617us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;615us;65535us;|]; (* State 617 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;618us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 618 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;620us;65535us;65535us;619us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;621us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 619us;619us;619us;619us;619us;619us;619us;619us;619us;65535us;65535us;619us;619us;65535us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;620us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;65535us;|]; (* State 619 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;632us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 619us;619us;619us;619us;619us;619us;619us;619us;619us;65535us;65535us;619us;619us;65535us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;618us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;619us;65535us;|]; (* State 620 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;628us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 621 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;622us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 622 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;623us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;624us;65535us;65535us;624us;624us;624us;65535us;65535us;65535us;624us;624us;65535us;624us;624us;623us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;624us;65535us;624us;624us;624us;624us;624us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;624us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;624us;65535us;624us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 623 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;624us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;626us;65535us;65535us;626us;626us;626us;65535us;65535us;65535us;626us;626us;65535us;626us;626us;625us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;626us;65535us;626us;626us;626us;626us;626us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;626us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;626us;65535us;626us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 624 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;625us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;624us;65535us;65535us;624us;624us;624us;65535us;65535us;65535us;624us;624us;65535us;624us;624us;624us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;624us;65535us;624us;624us;624us;624us;624us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;624us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;624us;65535us;624us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 625 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;626us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;627us;65535us;65535us;627us;627us;627us;65535us;65535us;65535us;627us;627us;65535us;627us;627us;627us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;627us;65535us;627us;627us;627us;627us;627us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;627us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;627us;65535us;627us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 626 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;627us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;626us;65535us;65535us;626us;626us;626us;65535us;65535us;65535us;626us;626us;65535us;626us;626us;626us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;626us;65535us;626us;626us;626us;626us;626us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;626us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;626us;65535us;626us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 627 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;627us;65535us;65535us;627us;627us;627us;65535us;65535us;65535us;627us;627us;65535us;627us;627us;627us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;627us;65535us;627us;627us;627us;627us;627us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;627us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;627us;65535us;627us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 628 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;629us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;628us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;630us;65535us;65535us;629us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 629 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;630us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;551us;65535us;65535us;65535us;631us;65535us;65535us;632us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 630 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;631us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;630us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;630us;65535us;65535us;629us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 631 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;627us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;637us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 632 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;633us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;633us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 633 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;634us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;634us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 634 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;635us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;635us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 635 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;636us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;636us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 636 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;598us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;65535us;65535us;65535us;65535us;598us;65535us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;598us;65535us;65535us;65535us;65535us;65535us;598us;598us;598us;598us;598us;598us;598us;65535us;598us;598us;65535us;65535us;65535us;65535us;65535us;598us;65535us;65535us;598us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 637 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;665us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;573us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;573us;65535us;65535us;65535us;65535us;65535us;65535us;574us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;65535us;65535us;65535us;65535us;574us;65535us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;574us;65535us;65535us;65535us;65535us;65535us;574us;574us;574us;574us;574us;574us;574us;65535us;574us;574us;65535us;65535us;65535us;65535us;65535us;574us;65535us;65535us;574us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 638 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;637us;65535us;65535us;65535us;65535us;637us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;639us;639us;639us;639us;639us;639us;639us;639us;639us;639us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;642us;65535us;65535us;65535us;65535us;65535us;65535us;637us;65535us;65535us;65535us;65535us;637us;637us;65535us;65535us;65535us;637us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;637us;65535us;65535us;65535us;637us;65535us;637us;640us;637us;65535us;641us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;639us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;630us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;638us;65535us;65535us;629us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 639 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;661us;661us;661us;661us;661us;661us;661us;661us;661us;661us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;661us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 640 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;655us;655us;655us;655us;655us;655us;655us;655us;655us;655us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;655us;655us;655us;655us;655us;655us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;655us;655us;655us;655us;655us;655us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;646us;65535us;453us;453us;453us;65535us;65535us;65535us;453us;453us;65535us;453us;453us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;453us;453us;453us;453us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 641 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;652us;652us;652us;652us;652us;652us;652us;652us;652us;652us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;652us;652us;652us;652us;652us;652us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;652us;652us;652us;652us;652us;652us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;65535us;453us;453us;453us;65535us;65535us;65535us;453us;453us;65535us;453us;645us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;453us;453us;453us;453us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 642 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;643us;643us;643us;643us;643us;643us;643us;643us;643us;643us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;643us;643us;643us;643us;643us;643us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;643us;643us;643us;643us;643us;643us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;65535us;453us;453us;453us;65535us;65535us;65535us;453us;453us;65535us;453us;453us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;453us;453us;643us;453us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 643 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;644us;644us;644us;644us;644us;644us;644us;644us;644us;644us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;644us;644us;644us;644us;644us;644us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;644us;644us;644us;644us;644us;644us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;65535us;453us;453us;453us;65535us;65535us;65535us;453us;453us;65535us;453us;644us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;453us;453us;453us;453us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 644 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;645us;645us;645us;645us;645us;645us;645us;645us;645us;645us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;645us;645us;645us;645us;645us;645us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;645us;645us;645us;645us;645us;645us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;65535us;453us;453us;453us;65535us;65535us;65535us;453us;453us;65535us;453us;453us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;453us;453us;453us;453us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 645 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;646us;646us;646us;646us;646us;646us;646us;646us;646us;646us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;646us;646us;646us;646us;646us;646us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;646us;646us;646us;646us;646us;646us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;65535us;453us;453us;453us;65535us;65535us;65535us;453us;453us;65535us;453us;453us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;453us;453us;453us;453us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;453us;65535us;453us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 646 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;647us;647us;647us;647us;647us;647us;647us;647us;647us;647us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;647us;647us;647us;647us;647us;647us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;647us;647us;647us;647us;647us;647us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 647 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;648us;648us;648us;648us;648us;648us;648us;648us;648us;648us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;648us;648us;648us;648us;648us;648us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;648us;648us;648us;648us;648us;648us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;653us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 648 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;649us;649us;649us;649us;649us;649us;649us;649us;649us;649us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;649us;649us;649us;649us;649us;649us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;649us;649us;649us;649us;649us;649us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;519us;650us;65535us;648us;516us;520us;65535us;65535us;65535us;513us;517us;65535us;517us;514us;516us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;460us;65535us;521us;521us;522us;514us;518us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;518us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;523us;65535us;524us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 649 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;650us;650us;650us;650us;650us;650us;650us;650us;650us;650us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;650us;650us;650us;650us;650us;650us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;650us;650us;650us;650us;650us;650us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;529us;646us;65535us;529us;529us;529us;65535us;65535us;65535us;529us;529us;65535us;529us;529us;529us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;529us;65535us;529us;529us;529us;529us;529us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;529us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;529us;65535us;529us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 650 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;651us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;651us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 651 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;652us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 652 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;653us;653us;653us;653us;653us;653us;653us;653us;653us;653us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;653us;653us;653us;653us;653us;653us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;653us;653us;653us;653us;653us;653us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 653 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;654us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;654us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 654 *) [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 655 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;656us;656us;656us;656us;656us;656us;656us;656us;656us;656us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;656us;656us;656us;656us;656us;656us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;656us;656us;656us;656us;656us;656us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;656us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 656 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;657us;657us;657us;657us;657us;657us;657us;657us;657us;657us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;657us;657us;657us;657us;657us;657us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;657us;657us;657us;657us;657us;657us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 657 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;658us;658us;658us;658us;658us;658us;658us;658us;658us;658us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;658us;658us;658us;658us;658us;658us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;658us;658us;658us;658us;658us;658us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;660us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;659us;65535us;65535us;658us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 658 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;659us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;662us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 659 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;660us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;661us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 660 *) [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 661 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;662us;662us;662us;662us;662us;662us;662us;662us;662us;662us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;662us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 662 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;663us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;663us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 663 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;664us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;665us;65535us;65535us;664us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;666us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 664 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;677us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 665 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;666us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;673us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 666 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;667us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 667 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;668us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 668 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;672us;65535us;711us;711us;711us;711us;711us;711us;711us;711us;711us;711us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;701us;719us;720us;695us;720us;695us;695us;716us;694us;720us;695us;695us;720us;720us;695us;695us;717us;695us;695us;695us;695us;720us;65535us;65535us;65535us;65535us;712us;65535us;695us;695us;695us;695us;701us;719us;695us;695us;695us;695us;695us;715us;694us;718us;695us;695us;695us;695us;714us;695us;713us;695us;695us;695us;710us;695us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;695us;695us;65535us;711us;695us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;669us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 669 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;708us;708us;708us;708us;708us;708us;708us;708us;708us;708us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;709us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;708us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;670us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 670 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;696us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;706us;682us;707us;682us;682us;682us;682us;705us;682us;682us;682us;682us;682us;704us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;671us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 671 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;672us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 672 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;681us;65535us;65535us;65535us;65535us;65535us;65535us;697us;65535us;698us;698us;698us;698us;698us;698us;698us;698us;698us;698us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;681us;681us;681us;681us;677us;686us;681us;681us;681us;681us;681us;681us;679us;681us;681us;681us;681us;681us;681us;681us;681us;681us;681us;681us;681us;681us;65535us;65535us;65535us;65535us;681us;65535us;681us;681us;681us;681us;677us;686us;681us;681us;681us;681us;681us;681us;679us;681us;681us;681us;681us;681us;681us;681us;681us;681us;681us;681us;681us;681us;65535us;65535us;65535us;65535us;65535us;681us;681us;681us;681us;681us;681us;681us;65535us;698us;681us;65535us;65535us;65535us;65535us;65535us;681us;65535us;65535us;681us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 673 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;674us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 674 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;675us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 675 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;696us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;676us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 676 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;672us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 677 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;684us;65535us;684us;65535us;65535us;683us;683us;683us;683us;683us;683us;683us;683us;683us;683us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;683us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;678us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 678 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;679us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 679 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;680us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 680 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;681us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 681 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 682 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;710us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 683 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;692us;692us;692us;692us;692us;692us;692us;692us;692us;692us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;691us;695us;695us;695us;695us;695us;695us;694us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;65535us;65535us;65535us;65535us;693us;65535us;695us;695us;695us;695us;695us;691us;695us;695us;695us;695us;695us;695us;694us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;695us;695us;65535us;692us;695us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;684us;684us;684us;684us;684us;684us;684us;684us;684us;684us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;687us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;682us;682us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;682us;65535us;682us;685us;682us;65535us;686us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;684us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 684 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;685us;685us;685us;685us;685us;685us;685us;685us;685us;685us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;685us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;706us;706us;706us;706us;706us;706us;706us;706us;706us;706us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;706us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 685 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;681us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;687us;687us;687us;687us;687us;687us;687us;687us;687us;687us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;681us;681us;681us;681us;681us;686us;681us;681us;681us;681us;681us;681us;679us;681us;681us;681us;681us;681us;681us;681us;681us;681us;681us;681us;681us;681us;65535us;65535us;65535us;65535us;688us;65535us;681us;681us;681us;681us;681us;686us;681us;681us;681us;681us;681us;681us;679us;681us;681us;681us;681us;681us;681us;681us;681us;681us;681us;681us;681us;681us;65535us;65535us;65535us;65535us;65535us;681us;681us;681us;681us;681us;681us;681us;65535us;687us;681us;65535us;65535us;65535us;65535us;65535us;681us;65535us;65535us;681us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;700us;700us;700us;700us;700us;700us;700us;700us;700us;700us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;700us;700us;700us;700us;700us;700us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;700us;700us;700us;700us;700us;700us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 686 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;697us;697us;697us;697us;697us;697us;697us;697us;697us;697us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;697us;697us;697us;697us;697us;697us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;697us;697us;697us;697us;697us;697us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 687 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;692us;692us;692us;692us;692us;692us;692us;692us;692us;692us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;691us;695us;695us;695us;695us;695us;695us;694us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;65535us;65535us;65535us;65535us;693us;65535us;695us;695us;695us;695us;695us;691us;695us;695us;695us;695us;695us;695us;694us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;695us;695us;65535us;692us;695us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;688us;688us;688us;688us;688us;688us;688us;688us;688us;688us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;688us;688us;688us;688us;688us;688us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;688us;688us;688us;688us;688us;688us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 688 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;689us;689us;689us;689us;689us;689us;689us;689us;689us;689us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;690us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;689us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;689us;689us;689us;689us;689us;689us;689us;689us;689us;689us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;689us;689us;689us;689us;689us;689us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;689us;689us;689us;689us;689us;689us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 689 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;692us;692us;692us;692us;692us;692us;692us;692us;692us;692us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;691us;695us;695us;695us;695us;695us;695us;694us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;65535us;65535us;65535us;65535us;693us;65535us;695us;695us;695us;695us;695us;691us;695us;695us;695us;695us;695us;695us;694us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;695us;695us;65535us;692us;695us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;690us;690us;690us;690us;690us;690us;690us;690us;690us;690us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;690us;690us;690us;690us;690us;690us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;690us;690us;690us;690us;690us;690us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 690 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;689us;689us;689us;689us;689us;689us;689us;689us;689us;689us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;690us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;689us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;691us;691us;691us;691us;691us;691us;691us;691us;691us;691us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;691us;691us;691us;691us;691us;691us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;691us;691us;691us;691us;691us;691us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 691 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;692us;692us;692us;692us;692us;692us;692us;692us;692us;692us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;692us;692us;692us;692us;692us;692us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;692us;692us;692us;692us;692us;692us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 692 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;692us;692us;692us;692us;692us;692us;692us;692us;692us;692us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;691us;695us;695us;695us;695us;695us;695us;694us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;65535us;65535us;65535us;65535us;693us;65535us;695us;695us;695us;695us;695us;691us;695us;695us;695us;695us;695us;695us;694us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;695us;695us;65535us;692us;695us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;693us;693us;693us;693us;693us;693us;693us;693us;693us;693us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;693us;693us;693us;693us;693us;693us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;693us;693us;693us;693us;693us;693us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 693 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;689us;689us;689us;689us;689us;689us;689us;689us;689us;689us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;690us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;689us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;694us;694us;694us;694us;694us;694us;694us;694us;694us;694us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;694us;694us;694us;694us;694us;694us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;694us;694us;694us;694us;694us;694us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 694 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 695 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;696us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 696 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; - (* State 697 *) [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 697 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;698us;698us;698us;698us;698us;698us;698us;698us;698us;698us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;698us;698us;698us;698us;698us;698us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;698us;698us;698us;698us;698us;698us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 698 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;699us;699us;699us;699us;699us;699us;699us;699us;699us;699us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;701us;691us;695us;695us;695us;695us;695us;695us;694us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;65535us;65535us;65535us;65535us;700us;65535us;695us;695us;695us;695us;701us;691us;695us;695us;695us;695us;695us;695us;694us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;695us;695us;65535us;699us;695us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;699us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 699 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;699us;699us;699us;699us;699us;699us;699us;699us;699us;699us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;701us;691us;695us;695us;695us;695us;695us;695us;694us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;65535us;65535us;65535us;65535us;700us;65535us;695us;695us;695us;695us;701us;691us;695us;695us;695us;695us;695us;695us;694us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;695us;695us;65535us;699us;695us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 700 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;702us;702us;702us;702us;702us;702us;702us;702us;702us;702us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;703us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;702us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;701us;701us;701us;701us;701us;701us;701us;701us;701us;701us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;701us;701us;701us;701us;701us;701us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;701us;701us;701us;701us;701us;701us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 701 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;684us;65535us;684us;65535us;65535us;683us;683us;683us;683us;683us;683us;683us;683us;683us;683us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;683us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;702us;702us;702us;702us;702us;702us;702us;702us;702us;702us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;702us;702us;702us;702us;702us;702us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;702us;702us;702us;702us;702us;702us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 702 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;699us;699us;699us;699us;699us;699us;699us;699us;699us;699us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;701us;691us;695us;695us;695us;695us;695us;695us;694us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;65535us;65535us;65535us;65535us;700us;65535us;695us;695us;695us;695us;701us;691us;695us;695us;695us;695us;695us;695us;694us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;695us;695us;65535us;699us;695us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;703us;703us;703us;703us;703us;703us;703us;703us;703us;703us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;703us;703us;703us;703us;703us;703us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;703us;703us;703us;703us;703us;703us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 703 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;702us;702us;702us;702us;702us;702us;702us;702us;702us;702us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;703us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;702us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;704us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 704 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;705us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 705 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 706 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;707us;707us;707us;707us;707us;707us;707us;707us;707us;707us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;707us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 707 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;708us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 708 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;672us;65535us;711us;711us;711us;711us;711us;711us;711us;711us;711us;711us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;701us;719us;720us;695us;720us;695us;695us;716us;694us;720us;695us;695us;720us;720us;695us;695us;717us;695us;695us;695us;695us;720us;65535us;65535us;65535us;65535us;712us;65535us;695us;695us;695us;695us;701us;719us;695us;695us;695us;695us;695us;715us;694us;718us;695us;695us;695us;695us;714us;695us;713us;695us;695us;695us;710us;695us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;695us;695us;65535us;711us;695us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;709us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 709 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;708us;708us;708us;708us;708us;708us;708us;708us;708us;708us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;709us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;708us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 710 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;711us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 711 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;672us;65535us;711us;711us;711us;711us;711us;711us;711us;711us;711us;711us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;701us;719us;720us;695us;720us;695us;695us;716us;694us;720us;695us;695us;720us;720us;695us;695us;717us;695us;695us;695us;695us;720us;65535us;65535us;65535us;65535us;712us;65535us;695us;695us;695us;695us;701us;719us;695us;695us;695us;695us;695us;715us;694us;718us;695us;695us;695us;695us;714us;695us;713us;695us;695us;695us;710us;695us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;695us;695us;65535us;711us;695us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 712 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;708us;708us;708us;708us;708us;708us;708us;708us;708us;708us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;709us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;708us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 713 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;696us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;706us;682us;707us;682us;682us;682us;682us;705us;682us;682us;682us;682us;682us;704us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;717us;65535us;756us;756us;756us;756us;756us;756us;756us;756us;756us;756us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;746us;764us;765us;740us;765us;740us;740us;761us;739us;765us;740us;740us;765us;765us;740us;740us;762us;740us;740us;740us;740us;765us;65535us;65535us;65535us;65535us;757us;65535us;740us;740us;740us;740us;746us;764us;740us;740us;740us;740us;740us;760us;739us;763us;740us;740us;740us;740us;759us;740us;758us;740us;740us;740us;755us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;756us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 714 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;753us;753us;753us;753us;753us;753us;753us;753us;753us;753us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;754us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;753us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 715 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;741us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;751us;727us;752us;727us;727us;727us;727us;750us;727us;727us;727us;727us;727us;749us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 716 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 717 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;696us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;726us;65535us;65535us;65535us;65535us;65535us;65535us;742us;65535us;743us;743us;743us;743us;743us;743us;743us;743us;743us;743us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;726us;726us;726us;726us;722us;731us;726us;726us;726us;726us;726us;726us;724us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;65535us;65535us;65535us;65535us;726us;65535us;726us;726us;726us;726us;722us;731us;726us;726us;726us;726us;726us;726us;724us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;65535us;65535us;65535us;65535us;65535us;726us;726us;726us;726us;726us;726us;726us;65535us;743us;726us;65535us;65535us;65535us;65535us;65535us;726us;65535us;65535us;726us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 718 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 719 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 720 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;741us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 721 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;740us;740us;740us;740us;740us;740us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 722 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;735us;735us;735us;735us;735us;735us;735us;735us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;729us;65535us;729us;65535us;65535us;728us;728us;728us;728us;728us;728us;728us;728us;728us;728us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;728us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 723 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;724us;724us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 724 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;726us;726us;695us;695us;695us;695us;695us;695us;695us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;730us;695us;695us;695us;695us;695us;695us;695us;695us;717us;695us;695us;695us;695us;695us;65535us;65535us;65535us;65535us;727us;65535us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;729us;695us;718us;695us;695us;695us;695us;728us;695us;713us;695us;695us;695us;725us;695us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;695us;695us;65535us;695us;695us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 725 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 726 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;726us;726us;695us;695us;695us;695us;695us;695us;695us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;730us;695us;695us;695us;695us;695us;695us;695us;695us;717us;695us;695us;695us;695us;695us;65535us;65535us;65535us;65535us;727us;65535us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;729us;695us;718us;695us;695us;695us;695us;728us;695us;713us;695us;695us;695us;725us;695us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;695us;695us;65535us;695us;695us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 727 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;733us;733us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;734us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 728 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;737us;737us;737us;737us;737us;737us;737us;737us;737us;737us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;736us;740us;740us;740us;740us;740us;740us;739us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;738us;65535us;740us;740us;740us;740us;740us;736us;740us;740us;740us;740us;740us;740us;739us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;737us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 729 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;732us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;730us;730us;730us;730us;730us;730us;730us;730us;730us;730us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;730us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 730 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;731us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;726us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;732us;732us;732us;732us;732us;732us;732us;732us;732us;732us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;726us;726us;726us;726us;726us;731us;726us;726us;726us;726us;726us;726us;724us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;65535us;65535us;65535us;65535us;733us;65535us;726us;726us;726us;726us;726us;731us;726us;726us;726us;726us;726us;726us;724us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;726us;65535us;65535us;65535us;65535us;65535us;726us;726us;726us;726us;726us;726us;726us;65535us;732us;726us;65535us;65535us;65535us;65535us;65535us;726us;65535us;65535us;726us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 731 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 732 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;682us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;737us;737us;737us;737us;737us;737us;737us;737us;737us;737us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;736us;740us;740us;740us;740us;740us;740us;739us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;738us;65535us;740us;740us;740us;740us;740us;736us;740us;740us;740us;740us;740us;740us;739us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;737us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 733 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;726us;726us;695us;695us;695us;695us;695us;695us;695us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;730us;695us;695us;695us;695us;695us;695us;695us;695us;717us;695us;695us;695us;695us;695us;65535us;65535us;65535us;65535us;727us;65535us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;729us;695us;718us;695us;695us;695us;695us;728us;695us;713us;695us;695us;695us;725us;695us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;695us;695us;65535us;695us;695us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;734us;734us;734us;734us;734us;734us;734us;734us;734us;734us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;735us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;734us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 734 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;733us;733us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;734us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;737us;737us;737us;737us;737us;737us;737us;737us;737us;737us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;736us;740us;740us;740us;740us;740us;740us;739us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;738us;65535us;740us;740us;740us;740us;740us;736us;740us;740us;740us;740us;740us;740us;739us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;737us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 735 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;736us;736us;736us;736us;736us;736us;736us;736us;695us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;730us;695us;695us;695us;695us;695us;695us;695us;695us;717us;695us;695us;695us;695us;695us;65535us;65535us;65535us;65535us;737us;65535us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;729us;695us;718us;695us;695us;695us;695us;728us;695us;713us;695us;695us;695us;725us;695us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;695us;695us;65535us;695us;695us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;734us;734us;734us;734us;734us;734us;734us;734us;734us;734us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;735us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;734us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 736 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;736us;736us;736us;736us;736us;736us;736us;736us;695us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;730us;695us;695us;695us;695us;695us;695us;695us;695us;717us;695us;695us;695us;695us;695us;65535us;65535us;65535us;65535us;737us;65535us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;729us;695us;718us;695us;695us;695us;695us;728us;695us;713us;695us;695us;695us;725us;695us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;695us;695us;65535us;695us;695us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 737 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;738us;738us;738us;738us;738us;738us;738us;738us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;739us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;737us;737us;737us;737us;737us;737us;737us;737us;737us;737us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;736us;740us;740us;740us;740us;740us;740us;739us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;738us;65535us;740us;740us;740us;740us;740us;736us;740us;740us;740us;740us;740us;740us;739us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;737us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 738 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;736us;736us;736us;736us;736us;736us;736us;736us;695us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;730us;695us;695us;695us;695us;695us;695us;695us;695us;717us;695us;695us;695us;695us;695us;65535us;65535us;65535us;65535us;737us;65535us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;695us;729us;695us;718us;695us;695us;695us;695us;728us;695us;713us;695us;695us;695us;725us;695us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;695us;695us;65535us;695us;695us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;734us;734us;734us;734us;734us;734us;734us;734us;734us;734us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;735us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;734us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 739 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;738us;738us;738us;738us;738us;738us;738us;738us;682us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;739us;65535us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 740 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;741us;741us;741us;741us;741us;741us;741us;741us;741us;741us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;741us;741us;741us;741us;741us;741us;695us;695us;695us;695us;695us;730us;695us;695us;695us;695us;695us;695us;695us;695us;717us;695us;695us;695us;695us;695us;65535us;65535us;65535us;65535us;742us;65535us;741us;741us;741us;741us;741us;741us;695us;695us;695us;695us;695us;729us;695us;718us;695us;695us;695us;695us;728us;695us;713us;695us;695us;695us;725us;695us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;695us;695us;65535us;695us;695us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 741 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;741us;741us;741us;741us;741us;741us;741us;741us;741us;741us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;741us;741us;741us;741us;741us;741us;695us;695us;695us;695us;695us;730us;695us;695us;695us;695us;695us;695us;695us;695us;717us;695us;695us;695us;695us;695us;65535us;65535us;65535us;65535us;742us;65535us;741us;741us;741us;741us;741us;741us;695us;695us;695us;695us;695us;729us;695us;718us;695us;695us;695us;695us;728us;695us;713us;695us;695us;695us;725us;695us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;695us;695us;65535us;695us;695us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 742 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;743us;743us;743us;743us;743us;743us;743us;743us;743us;743us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;743us;743us;743us;743us;743us;743us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;744us;65535us;743us;743us;743us;743us;743us;743us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 743 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;741us;741us;741us;741us;741us;741us;741us;741us;741us;741us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;741us;741us;741us;741us;741us;741us;695us;695us;695us;695us;695us;730us;695us;695us;695us;695us;695us;695us;695us;695us;717us;695us;695us;695us;695us;695us;65535us;65535us;65535us;65535us;742us;65535us;741us;741us;741us;741us;741us;741us;695us;695us;695us;695us;695us;729us;695us;718us;695us;695us;695us;695us;728us;695us;713us;695us;695us;695us;725us;695us;65535us;65535us;65535us;65535us;65535us;695us;695us;695us;695us;695us;695us;695us;65535us;695us;695us;65535us;65535us;65535us;65535us;65535us;695us;65535us;65535us;695us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;744us;744us;744us;744us;744us;744us;744us;744us;744us;744us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;746us;736us;740us;740us;740us;740us;740us;740us;739us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;745us;65535us;740us;740us;740us;740us;746us;736us;740us;740us;740us;740us;740us;740us;739us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;744us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 744 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;743us;743us;743us;743us;743us;743us;743us;743us;743us;743us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;743us;743us;743us;743us;743us;743us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;744us;65535us;743us;743us;743us;743us;743us;743us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;682us;682us;682us;682us;682us;682us;65535us;682us;682us;65535us;65535us;65535us;65535us;65535us;682us;65535us;65535us;682us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;744us;744us;744us;744us;744us;744us;744us;744us;744us;744us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;746us;736us;740us;740us;740us;740us;740us;740us;739us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;745us;65535us;740us;740us;740us;740us;746us;736us;740us;740us;740us;740us;740us;740us;739us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;744us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 745 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;746us;65535us;747us;65535us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;745us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;65535us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;747us;747us;747us;747us;747us;747us;747us;747us;747us;747us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;748us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;747us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 746 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;729us;65535us;729us;65535us;65535us;728us;728us;728us;728us;728us;728us;728us;728us;728us;728us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;728us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 747 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;744us;744us;744us;744us;744us;744us;744us;744us;744us;744us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;746us;736us;740us;740us;740us;740us;740us;740us;739us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;745us;65535us;740us;740us;740us;740us;746us;736us;740us;740us;740us;740us;740us;740us;739us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;744us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 748 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;746us;65535us;747us;65535us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;745us;65535us;745us;745us;745us;745us;749us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;65535us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;747us;747us;747us;747us;747us;747us;747us;747us;747us;747us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;748us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;747us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 749 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;746us;65535us;747us;65535us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;745us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;750us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;65535us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 750 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;746us;65535us;747us;65535us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;745us;65535us;745us;745us;745us;751us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;65535us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 751 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;752us;65535us;747us;65535us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;745us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;65535us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 752 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 753 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;746us;65535us;747us;65535us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;745us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;754us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;65535us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;717us;65535us;756us;756us;756us;756us;756us;756us;756us;756us;756us;756us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;746us;764us;765us;740us;765us;740us;740us;761us;739us;765us;740us;740us;765us;765us;740us;740us;762us;740us;740us;740us;740us;765us;65535us;65535us;65535us;65535us;757us;65535us;740us;740us;740us;740us;746us;764us;740us;740us;740us;740us;740us;760us;739us;763us;740us;740us;740us;740us;759us;740us;758us;740us;740us;740us;755us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;756us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 754 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;746us;65535us;747us;65535us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;745us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;755us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;65535us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;753us;753us;753us;753us;753us;753us;753us;753us;753us;753us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;754us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;753us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 755 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;746us;65535us;747us;65535us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;745us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;756us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;65535us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 756 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;746us;65535us;747us;65535us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;745us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;757us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;65535us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;717us;65535us;756us;756us;756us;756us;756us;756us;756us;756us;756us;756us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;746us;764us;765us;740us;765us;740us;740us;761us;739us;765us;740us;740us;765us;765us;740us;740us;762us;740us;740us;740us;740us;765us;65535us;65535us;65535us;65535us;757us;65535us;740us;740us;740us;740us;746us;764us;740us;740us;740us;740us;740us;760us;739us;763us;740us;740us;740us;740us;759us;740us;758us;740us;740us;740us;755us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;756us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 757 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;758us;65535us;747us;65535us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;745us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;65535us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;753us;753us;753us;753us;753us;753us;753us;753us;753us;753us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;754us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;753us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 758 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;741us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;751us;727us;752us;727us;727us;727us;727us;750us;727us;727us;727us;727us;727us;749us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 759 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;746us;65535us;747us;65535us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;745us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;760us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;65535us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 760 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;746us;65535us;747us;65535us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;745us;65535us;745us;745us;761us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;65535us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 761 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;746us;65535us;747us;65535us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;745us;65535us;745us;745us;745us;745us;745us;745us;745us;762us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;65535us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 762 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;763us;65535us;747us;65535us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;745us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;65535us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;741us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 763 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 764 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;765us;65535us;747us;65535us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;745us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;65535us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 765 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 766 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;746us;65535us;747us;65535us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;745us;65535us;745us;745us;745us;767us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;65535us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;785us;785us;785us;785us;785us;785us;785us;785us;785us;785us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;785us;785us;785us;785us;785us;785us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;785us;785us;785us;785us;785us;785us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 767 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;768us;65535us;747us;65535us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;745us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;65535us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;780us;780us;780us;780us;780us;780us;780us;780us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 768 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;769us;769us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 769 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;770us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;771us;771us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;775us;740us;740us;740us;740us;740us;740us;740us;740us;762us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;772us;65535us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;774us;740us;763us;740us;740us;740us;740us;773us;740us;758us;740us;740us;740us;770us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 770 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;771us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 771 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;771us;771us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;775us;740us;740us;740us;740us;740us;740us;740us;740us;762us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;772us;65535us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;774us;740us;763us;740us;740us;740us;740us;773us;740us;758us;740us;740us;740us;770us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 772 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;746us;65535us;747us;65535us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;773us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;745us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;65535us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;778us;778us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;779us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 773 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;746us;65535us;747us;65535us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;774us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;745us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;65535us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 774 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;746us;65535us;747us;65535us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;775us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;745us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;65535us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;777us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 775 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;746us;65535us;747us;65535us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;776us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;745us;65535us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;745us;745us;745us;745us;745us;745us;65535us;745us;745us;65535us;65535us;65535us;65535us;65535us;745us;65535us;65535us;745us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;776us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 776 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;777us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 777 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;778us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;727us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 778 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;779us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;771us;771us;740us;740us;740us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;775us;740us;740us;740us;740us;740us;740us;740us;740us;762us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;772us;65535us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;774us;740us;763us;740us;740us;740us;740us;773us;740us;758us;740us;740us;740us;770us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 779 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;780us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;778us;778us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;779us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 780 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;781us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;781us;781us;781us;781us;781us;781us;781us;781us;740us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;775us;740us;740us;740us;740us;740us;740us;740us;740us;762us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;782us;65535us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;774us;740us;763us;740us;740us;740us;740us;773us;740us;758us;740us;740us;740us;770us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 781 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;782us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;781us;781us;781us;781us;781us;781us;781us;781us;740us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;775us;740us;740us;740us;740us;740us;740us;740us;740us;762us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;782us;65535us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;774us;740us;763us;740us;740us;740us;740us;773us;740us;758us;740us;740us;740us;770us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 782 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;783us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;783us;783us;783us;783us;783us;783us;783us;783us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;784us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 783 *) - [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;784us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;781us;781us;781us;781us;781us;781us;781us;781us;740us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;775us;740us;740us;740us;740us;740us;740us;740us;740us;762us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;782us;65535us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;740us;774us;740us;763us;740us;740us;740us;740us;773us;740us;758us;740us;740us;740us;770us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; (* State 784 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;783us;783us;783us;783us;783us;783us;783us;783us;727us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;784us;65535us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 785 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;786us;786us;786us;786us;786us;786us;786us;786us;786us;786us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;786us;786us;786us;786us;786us;786us;740us;740us;740us;740us;740us;775us;740us;740us;740us;740us;740us;740us;740us;740us;762us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;787us;65535us;786us;786us;786us;786us;786us;786us;740us;740us;740us;740us;740us;774us;740us;763us;740us;740us;740us;740us;773us;740us;758us;740us;740us;740us;770us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 786 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;786us;786us;786us;786us;786us;786us;786us;786us;786us;786us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;786us;786us;786us;786us;786us;786us;740us;740us;740us;740us;740us;775us;740us;740us;740us;740us;740us;740us;740us;740us;762us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;787us;65535us;786us;786us;786us;786us;786us;786us;740us;740us;740us;740us;740us;774us;740us;763us;740us;740us;740us;740us;773us;740us;758us;740us;740us;740us;770us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 787 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;788us;788us;788us;788us;788us;788us;788us;788us;788us;788us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;788us;788us;788us;788us;788us;788us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;789us;65535us;788us;788us;788us;788us;788us;788us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 788 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;786us;786us;786us;786us;786us;786us;786us;786us;786us;786us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;786us;786us;786us;786us;786us;786us;740us;740us;740us;740us;740us;775us;740us;740us;740us;740us;740us;740us;740us;740us;762us;740us;740us;740us;740us;740us;65535us;65535us;65535us;65535us;787us;65535us;786us;786us;786us;786us;786us;786us;740us;740us;740us;740us;740us;774us;740us;763us;740us;740us;740us;740us;773us;740us;758us;740us;740us;740us;770us;740us;65535us;65535us;65535us;65535us;65535us;740us;740us;740us;740us;740us;740us;740us;65535us;740us;740us;65535us;65535us;65535us;65535us;65535us;740us;65535us;65535us;740us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 789 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;788us;788us;788us;788us;788us;788us;788us;788us;788us;788us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;788us;788us;788us;788us;788us;788us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;789us;65535us;788us;788us;788us;788us;788us;788us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;727us;727us;727us;727us;727us;727us;65535us;727us;727us;65535us;65535us;65535us;65535us;65535us;727us;65535us;65535us;727us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 790 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 791 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 792 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 793 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;794us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 794 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;795us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 795 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;796us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 796 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;797us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 797 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 798 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;799us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 799 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;800us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 800 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;801us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 801 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;802us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 802 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 803 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;804us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 804 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;805us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 805 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;806us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 806 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;807us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 807 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;808us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 808 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 809 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;810us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 810 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;811us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 811 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;812us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 812 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;813us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 813 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 814 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;815us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 815 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 816 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;817us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 817 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;818us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 818 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 819 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;820us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 820 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;821us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 821 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 822 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;823us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 823 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;824us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 824 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;825us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 825 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;791us;65535us;792us;65535us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;826us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;790us;65535us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;790us;790us;790us;790us;790us;790us;65535us;790us;790us;65535us;65535us;65535us;65535us;65535us;790us;65535us;65535us;790us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 826 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;827us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 827 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;828us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 828 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;829us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 829 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;830us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 830 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;831us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 831 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;832us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 832 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;833us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 833 *) + [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;834us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; + (* State 834 *) [| 65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;|]; |] -let actions : uint16[] = [|65535us;0us;1us;6us;6us;4us;4us;5us;4us;4us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;3us;65535us;65535us;65535us;65535us;2us;1us;65535us;4us;1us;1us;1us;1us;2us;4us;3us;4us;4us;2us;1us;1us;65535us;65535us;65535us;65535us;1us;1us;65535us;1us;1us;65535us;1us;1us;65535us;1us;65535us;0us;65535us;1us;2us;2us;2us;2us;3us;5us;4us;5us;5us;3us;2us;2us;65535us;65535us;65535us;65535us;2us;2us;65535us;2us;2us;65535us;2us;2us;65535us;2us;0us;65535us;5us;1us;1us;1us;1us;2us;3us;5us;4us;5us;5us;3us;1us;1us;65535us;65535us;65535us;65535us;1us;1us;65535us;1us;1us;65535us;1us;1us;65535us;1us;0us;65535us;1us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;0us;65535us;10us;1us;10us;10us;6us;10us;10us;8us;8us;8us;9us;10us;8us;8us;8us;7us;6us;5us;4us;3us;65535us;2us;65535us;65535us;0us;65535us;0us;3us;1us;2us;2us;2us;2us;2us;2us;2us;2us;0us;65535us;9us;1us;9us;2us;3us;3us;4us;6us;7us;8us;9us;9us;5us;4us;3us;65535us;65535us;65535us;65535us;3us;3us;65535us;3us;3us;65535us;3us;3us;65535us;2us;1us;65535us;0us;65535us;1us;3us;11us;5us;6us;7us;8us;8us;9us;10us;11us;11us;9us;8us;65535us;65535us;65535us;65535us;8us;8us;65535us;8us;8us;65535us;8us;8us;65535us;7us;4us;3us;0us;2us;65535us;16us;6us;9us;10us;11us;16us;12us;13us;13us;14us;15us;16us;16us;14us;13us;65535us;65535us;65535us;65535us;13us;13us;65535us;13us;13us;65535us;13us;13us;65535us;12us;11us;8us;7us;0us;65535us;1us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;5us;65535us;65535us;65535us;4us;65535us;3us;65535us;2us;0us;65535us;0us;2us;1us;2us;2us;0us;65535us;4us;4us;4us;3us;4us;4us;4us;5us;4us;3us;4us;4us;4us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;2us;65535us;2us;2us;2us;65535us;1us;65535us;1us;1us;1us;65535us;0us;0us;0us;4us;4us;4us;4us;4us;4us;2us;4us;2us;2us;2us;4us;1us;4us;1us;1us;1us;4us;0us;0us;0us;65535us;0us;0us;0us;0us;0us;0us;0us;0us;15us;15us;71us;72us;46us;108us;116us;52us;53us;114us;57us;130us;61us;67us;98us;68us;106us;73us;74us;75us;111us;77us;81us;82us;99us;92us;94us;95us;105us;101us;107us;109us;112us;115us;116us;120us;130us;130us;131us;117us;120us;117us;116us;115us;110us;114us;97us;96us;100us;117us;91us;117us;104us;87us;83us;84us;89us;90us;88us;79us;114us;117us;65535us;114us;115us;116us;117us;120us;118us;119us;120us;65535us;65535us;121us;65535us;121us;121us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;121us;65535us;121us;65535us;121us;65535us;65535us;65535us;65535us;119us;118us;114us;117us;117us;114us;115us;116us;117us;117us;117us;117us;117us;117us;117us;117us;116us;115us;114us;113us;113us;113us;113us;80us;78us;76us;70us;102us;103us;69us;63us;93us;64us;65535us;65535us;65535us;122us;65535us;65535us;65535us;65535us;65535us;65535us;127us;65535us;127us;129us;129us;127us;127us;65535us;126us;65535us;126us;129us;129us;126us;126us;65535us;128us;125us;129us;129us;125us;125us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;124us;123us;122us;65535us;65535us;65535us;65535us;123us;123us;129us;129us;123us;65535us;65535us;65535us;62us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;61us;60us;61us;61us;59us;60us;58us;57us;56us;55us;56us;54us;55us;54us;53us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;52us;50us;116us;65us;116us;66us;86us;85us;51us;48us;116us;65535us;47us;65535us;49us;44us;65535us;65535us;43us;40us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;45us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;39us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;38us;65535us;65535us;36us;65535us;65535us;65535us;65535us;37us;35us;65535us;65535us;33us;34us;31us;32us;8us;15us;30us;17us;11us;25us;16us;19us;30us;21us;30us;24us;26us;29us;30us;30us;25us;65535us;25us;23us;25us;30us;25us;30us;23us;25us;30us;26us;30us;20us;14us;25us;25us;30us;30us;25us;30us;10us;13us;18us;22us;15us;30us;8us;15us;30us;17us;11us;16us;19us;30us;21us;24us;29us;30us;30us;30us;15us;9us;15us;30us;12us;16us;19us;28us;27us;15us;30us;15us;15us;30us;15us;30us;15us;15us;30us;15us;30us;0us;6us;7us;0us;0us;0us;0us;2us;0us;0us;0us;0us;0us;3us;0us;0us;0us;0us;4us;0us;1us;0us;0us;5us;7us;65535us;42us;0us;0us;0us;0us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;41us;|] +let actions : uint16[] = [|65535us;0us;1us;6us;6us;4us;4us;5us;4us;4us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;3us;65535us;65535us;65535us;65535us;2us;1us;65535us;4us;1us;1us;1us;1us;2us;4us;3us;4us;4us;2us;1us;1us;65535us;65535us;65535us;65535us;1us;1us;65535us;1us;1us;65535us;1us;1us;65535us;1us;65535us;0us;65535us;1us;2us;2us;2us;2us;3us;5us;4us;5us;5us;3us;2us;2us;65535us;65535us;65535us;65535us;2us;2us;65535us;2us;2us;65535us;2us;2us;65535us;2us;0us;65535us;5us;1us;1us;1us;1us;2us;3us;5us;4us;5us;5us;3us;1us;1us;65535us;65535us;65535us;65535us;1us;1us;65535us;1us;1us;65535us;1us;1us;65535us;1us;0us;65535us;1us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;0us;65535us;10us;1us;10us;10us;6us;10us;10us;8us;8us;8us;9us;10us;8us;8us;8us;7us;6us;5us;4us;3us;65535us;2us;65535us;65535us;0us;65535us;0us;3us;1us;2us;2us;2us;2us;2us;2us;2us;2us;0us;65535us;7us;1us;7us;2us;2us;2us;2us;3us;4us;5us;6us;7us;7us;5us;4us;3us;2us;2us;65535us;65535us;65535us;65535us;2us;2us;65535us;2us;2us;65535us;2us;2us;65535us;2us;1us;65535us;0us;65535us;9us;1us;9us;2us;3us;3us;4us;6us;7us;8us;9us;9us;5us;4us;3us;65535us;65535us;65535us;65535us;3us;3us;65535us;3us;3us;65535us;3us;3us;65535us;2us;1us;65535us;0us;65535us;1us;3us;11us;5us;6us;7us;8us;8us;9us;10us;11us;11us;9us;8us;65535us;65535us;65535us;65535us;8us;8us;65535us;8us;8us;65535us;8us;8us;65535us;7us;4us;3us;0us;2us;65535us;16us;6us;9us;10us;11us;16us;12us;13us;13us;14us;15us;16us;16us;14us;13us;65535us;65535us;65535us;65535us;13us;13us;65535us;13us;13us;65535us;13us;13us;65535us;12us;11us;8us;7us;0us;65535us;1us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;5us;65535us;65535us;65535us;4us;65535us;3us;65535us;2us;0us;65535us;0us;2us;1us;2us;2us;0us;65535us;4us;4us;4us;3us;4us;4us;4us;5us;4us;3us;4us;4us;4us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;2us;65535us;2us;2us;2us;65535us;1us;65535us;1us;1us;1us;65535us;0us;0us;0us;4us;4us;4us;4us;4us;4us;2us;4us;2us;2us;2us;4us;1us;4us;1us;1us;1us;4us;0us;0us;0us;65535us;0us;0us;0us;0us;0us;0us;0us;0us;0us;16us;16us;73us;74us;47us;110us;118us;54us;55us;116us;59us;133us;63us;69us;100us;70us;108us;75us;76us;77us;113us;79us;83us;84us;101us;94us;96us;97us;107us;103us;109us;111us;114us;117us;118us;123us;133us;133us;134us;119us;123us;119us;118us;117us;112us;116us;99us;98us;102us;119us;93us;120us;106us;120us;89us;85us;86us;91us;92us;90us;81us;116us;119us;65535us;116us;117us;118us;119us;123us;120us;121us;122us;123us;65535us;65535us;124us;65535us;124us;124us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;124us;65535us;124us;65535us;124us;65535us;65535us;65535us;65535us;122us;121us;116us;119us;119us;116us;117us;118us;119us;119us;119us;119us;119us;119us;119us;119us;119us;119us;118us;117us;116us;115us;115us;115us;115us;82us;80us;78us;72us;104us;105us;71us;65us;95us;66us;65535us;65535us;65535us;125us;65535us;65535us;65535us;65535us;65535us;65535us;130us;65535us;130us;132us;132us;130us;130us;65535us;129us;65535us;129us;132us;132us;129us;129us;65535us;131us;128us;132us;132us;128us;128us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;127us;126us;125us;65535us;65535us;65535us;65535us;126us;126us;132us;132us;126us;65535us;65535us;65535us;64us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;63us;62us;63us;63us;61us;62us;60us;59us;58us;57us;58us;56us;57us;56us;55us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;54us;52us;118us;67us;118us;68us;88us;87us;53us;50us;119us;118us;65535us;65535us;49us;65535us;48us;65535us;51us;45us;65535us;65535us;44us;41us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;46us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;40us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;39us;65535us;65535us;37us;65535us;65535us;65535us;65535us;38us;36us;65535us;65535us;34us;35us;32us;33us;9us;16us;31us;18us;12us;26us;17us;20us;31us;22us;31us;25us;27us;30us;31us;31us;26us;65535us;26us;24us;26us;31us;26us;31us;24us;26us;31us;27us;31us;21us;15us;26us;26us;31us;31us;26us;31us;11us;14us;19us;23us;16us;31us;9us;16us;31us;18us;12us;17us;20us;31us;22us;25us;30us;31us;31us;31us;16us;10us;16us;31us;13us;17us;20us;29us;28us;16us;31us;16us;16us;31us;16us;31us;16us;16us;31us;16us;31us;0us;7us;8us;0us;0us;0us;0us;2us;0us;0us;0us;0us;6us;0us;0us;0us;0us;0us;3us;0us;0us;0us;0us;4us;0us;1us;0us;0us;5us;8us;65535us;43us;0us;0us;0us;0us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;42us;|] let _fslex_tables = Internal.Utilities.Text.Lexing.UnicodeTables.Create(trans,actions) let rec _fslex_dummy () = _fslex_dummy() // Rule token -and token args skip lexbuf = - match _fslex_tables.Interpret(365,lexbuf) with +and token (args: LexArgs) (skip: bool) lexbuf = + match _fslex_tables.Interpret(401,lexbuf) with | 0 -> ( -//# 391 "src/Compiler/lex.fsl" +//# 383 "src/Compiler/lex.fsl" Keywords.KeywordOrIdentifierToken args lexbuf (lexeme lexbuf) -//# 1854 "lex.fs" +//# 1954 "lex.fs" ) | 1 -> ( -//# 394 "src/Compiler/lex.fsl" +//# 386 "src/Compiler/lex.fsl" DO_BANG -//# 1859 "lex.fs" +//# 1959 "lex.fs" ) | 2 -> ( -//# 397 "src/Compiler/lex.fsl" +//# 389 "src/Compiler/lex.fsl" YIELD_BANG(true) -//# 1864 "lex.fs" +//# 1964 "lex.fs" ) | 3 -> ( -//# 400 "src/Compiler/lex.fsl" +//# 392 "src/Compiler/lex.fsl" YIELD_BANG(false) -//# 1869 "lex.fs" +//# 1969 "lex.fs" ) | 4 -> ( -//# 403 "src/Compiler/lex.fsl" +//# 395 "src/Compiler/lex.fsl" MATCH_BANG -//# 1874 "lex.fs" +//# 1974 "lex.fs" ) | 5 -> ( -//# 406 "src/Compiler/lex.fsl" +//# 398 "src/Compiler/lex.fsl" AND_BANG(false) -//# 1879 "lex.fs" +//# 1979 "lex.fs" ) | 6 -> ( -//# 409 "src/Compiler/lex.fsl" +//# 401 "src/Compiler/lex.fsl" + WHILE_BANG +//# 1984 "lex.fs" + ) + | 7 -> ( +//# 404 "src/Compiler/lex.fsl" let tok = Keywords.KeywordOrIdentifierToken args lexbuf (lexemeTrimRight lexbuf 1) match tok with | LET _ -> BINDER (lexemeTrimRight lexbuf 1) | _ -> fail args lexbuf (FSComp.SR.lexIdentEndInMarkReserved("!")) (Keywords.KeywordOrIdentifierToken args lexbuf (lexeme lexbuf)) -//# 1887 "lex.fs" +//# 1992 "lex.fs" ) - | 7 -> ( -//# 415 "src/Compiler/lex.fsl" + | 8 -> ( +//# 410 "src/Compiler/lex.fsl" fail args lexbuf (FSComp.SR.lexIdentEndInMarkReserved("#")) (Keywords.KeywordOrIdentifierToken args lexbuf (lexeme lexbuf)) -//# 1892 "lex.fs" +//# 1997 "lex.fs" ) - | 8 -> ( -//# 418 "src/Compiler/lex.fsl" + | 9 -> ( +//# 413 "src/Compiler/lex.fsl" let n = lexemeTrimRightToInt32 args lexbuf 1 // Allow to parse as min_int. Allowed only because we parse '-' as an operator. if Ranges.isInt8BadMax n then INT8(SByte.MinValue, true (* 'true' = 'bad'*) ) else if n > int SByte.MaxValue || n < int SByte.MinValue then fail args lexbuf (FSComp.SR.lexOutsideEightBitSigned()) (INT8(0y, false)) else INT8(sbyte n, false) -//# 1901 "lex.fs" +//# 2006 "lex.fs" ) - | 9 -> ( -//# 425 "src/Compiler/lex.fsl" + | 10 -> ( +//# 420 "src/Compiler/lex.fsl" let n = lexemeTrimRightToInt32 args lexbuf 1 if n > int Byte.MaxValue || n < 0 then fail args lexbuf (FSComp.SR.lexOutsideEightBitSignedHex()) (INT8(0y, false)) else INT8(sbyte(byte(n)), false) -//# 1908 "lex.fs" +//# 2013 "lex.fs" ) - | 10 -> ( -//# 430 "src/Compiler/lex.fsl" + | 11 -> ( +//# 425 "src/Compiler/lex.fsl" let n = lexemeTrimRightToInt32 args lexbuf 2 if n > int Byte.MaxValue || n < 0 then fail args lexbuf (FSComp.SR.lexOutsideEightBitUnsigned()) (UINT8(0uy)) else UINT8(byte n) -//# 1915 "lex.fs" +//# 2020 "lex.fs" ) - | 11 -> ( -//# 435 "src/Compiler/lex.fsl" + | 12 -> ( +//# 430 "src/Compiler/lex.fsl" let n = lexemeTrimRightToInt32 args lexbuf 1 // Allow to parse as min_int. Allowed only because we parse '-' as an operator. if Ranges.isInt16BadMax n then INT16(Int16.MinValue, true (* 'true' = 'bad'*) ) else if n > int Int16.MaxValue || n < int Int16.MinValue then fail args lexbuf (FSComp.SR.lexOutsideSixteenBitSigned()) (INT16(0s, false)) else INT16(int16 n, false) -//# 1924 "lex.fs" +//# 2029 "lex.fs" ) - | 12 -> ( -//# 442 "src/Compiler/lex.fsl" + | 13 -> ( +//# 437 "src/Compiler/lex.fsl" let n = lexemeTrimRightToInt32 args lexbuf 1 if n > int UInt16.MaxValue || n < 0 then fail args lexbuf (FSComp.SR.lexOutsideSixteenBitSigned()) (INT16(0s,false)) else INT16(int16(uint16(n)), false) -//# 1931 "lex.fs" +//# 2036 "lex.fs" ) - | 13 -> ( -//# 447 "src/Compiler/lex.fsl" + | 14 -> ( +//# 442 "src/Compiler/lex.fsl" let n = lexemeTrimRightToInt32 args lexbuf 2 if n > int UInt16.MaxValue || n < 0 then fail args lexbuf (FSComp.SR.lexOutsideSixteenBitUnsigned()) (UINT16(0us)) else UINT16(uint16 n) -//# 1938 "lex.fs" +//# 2043 "lex.fs" ) - | 14 -> ( -//# 452 "src/Compiler/lex.fsl" + | 15 -> ( +//# 447 "src/Compiler/lex.fsl" let s = removeUnderscores (lexemeTrimRight lexbuf 2) // Allow to parse as min_int. Allowed only because we parse '-' as an operator. if Ranges.isInt32BadMax s then INT32_DOT_DOT(Int32.MinValue, true (* 'true' = 'bad'*) ) else let n = try int32 s with _ -> fail args lexbuf (FSComp.SR.lexOutsideThirtyTwoBitSigned()) 0 INT32_DOT_DOT(n, false) -//# 1948 "lex.fs" +//# 2053 "lex.fs" ) - | 15 -> ( -//# 461 "src/Compiler/lex.fsl" + | 16 -> ( +//# 456 "src/Compiler/lex.fsl" let s = removeUnderscores (lexeme lexbuf) // Allow to parse as min_int. Allowed only because we parse '-' as an operator. if Ranges.isInt32BadMax s then INT32(Int32.MinValue, true (* 'true' = 'bad'*) ) else @@ -1956,10 +2061,10 @@ and token args skip lexbuf = try int32 s with _ -> fail args lexbuf (FSComp.SR.lexOutsideThirtyTwoBitSigned()) 0 INT32(n, false) -//# 1959 "lex.fs" +//# 2064 "lex.fs" ) - | 16 -> ( -//# 471 "src/Compiler/lex.fsl" + | 17 -> ( +//# 466 "src/Compiler/lex.fsl" let s = removeUnderscores (lexemeTrimRight lexbuf 1) // Allow to parse as min_int. Allowed only because we parse '-' as an operator. if Ranges.isInt32BadMax s then INT32(Int32.MinValue, true (* 'true' = 'bad'*) ) else @@ -1967,30 +2072,30 @@ and token args skip lexbuf = try int32 s with _ -> fail args lexbuf (FSComp.SR.lexOutsideThirtyTwoBitSigned()) 0 INT32(n, false) -//# 1970 "lex.fs" +//# 2075 "lex.fs" ) - | 17 -> ( -//# 480 "src/Compiler/lex.fsl" + | 18 -> ( +//# 475 "src/Compiler/lex.fsl" let s = removeUnderscores (lexemeTrimRight lexbuf 1) let n = try int64 s with _ -> fail args lexbuf (FSComp.SR.lexOutsideThirtyTwoBitUnsigned()) 0L if n > int64 UInt32.MaxValue || n < 0L then fail args lexbuf (FSComp.SR.lexOutsideThirtyTwoBitUnsigned()) (UINT32(0u)) else UINT32(uint32 (uint64 n)) -//# 1980 "lex.fs" +//# 2085 "lex.fs" ) - | 18 -> ( -//# 488 "src/Compiler/lex.fsl" + | 19 -> ( +//# 483 "src/Compiler/lex.fsl" let s = removeUnderscores (lexemeTrimRight lexbuf 2) let n = try int64 s with _ -> fail args lexbuf (FSComp.SR.lexOutsideThirtyTwoBitUnsigned()) 0L if n > int64 UInt32.MaxValue || n < 0L then fail args lexbuf (FSComp.SR.lexOutsideThirtyTwoBitUnsigned()) (UINT32(0u)) else UINT32(uint32 (uint64 n)) -//# 1990 "lex.fs" +//# 2095 "lex.fs" ) - | 19 -> ( -//# 496 "src/Compiler/lex.fsl" + | 20 -> ( +//# 491 "src/Compiler/lex.fsl" let s = removeUnderscores (lexemeTrimRight lexbuf 1) // Allow to parse as min_int. Stupid but allowed because we parse '-' as an operator. if Ranges.isInt64BadMax s then INT64(Int64.MinValue, true (* 'true' = 'bad'*) ) else @@ -1998,18 +2103,18 @@ and token args skip lexbuf = try int64 s with _ -> fail args lexbuf (FSComp.SR.lexOutsideSixtyFourBitSigned()) 0L INT64(n,false) -//# 2001 "lex.fs" +//# 2106 "lex.fs" ) - | 20 -> ( -//# 505 "src/Compiler/lex.fsl" + | 21 -> ( +//# 500 "src/Compiler/lex.fsl" let s = removeUnderscores (lexemeTrimRight lexbuf 2) let n = try uint64 s with _ -> fail args lexbuf (FSComp.SR.lexOutsideSixtyFourBitUnsigned()) 0UL UINT64(n) -//# 2009 "lex.fs" +//# 2114 "lex.fs" ) - | 21 -> ( -//# 511 "src/Compiler/lex.fsl" + | 22 -> ( +//# 506 "src/Compiler/lex.fsl" let s = removeUnderscores (lexemeTrimRight lexbuf 1) // Allow to parse as min_nativeint. Stupid but allowed because we parse '-' as an operator. if Ranges.isInt64BadMax s then NATIVEINT(Int64.MinValue, true) else @@ -2017,36 +2122,36 @@ and token args skip lexbuf = try int64 s with _ -> fail args lexbuf (FSComp.SR.lexOutsideNativeSigned()) 0L NATIVEINT(n,false) -//# 2020 "lex.fs" +//# 2125 "lex.fs" ) - | 22 -> ( -//# 520 "src/Compiler/lex.fsl" + | 23 -> ( +//# 515 "src/Compiler/lex.fsl" try UNATIVEINT(uint64 (removeUnderscores (lexemeTrimRight lexbuf 2))) with _ -> fail args lexbuf (FSComp.SR.lexOutsideNativeUnsigned()) (UNATIVEINT(0UL)) -//# 2027 "lex.fs" +//# 2132 "lex.fs" ) - | 23 -> ( -//# 525 "src/Compiler/lex.fsl" + | 24 -> ( +//# 520 "src/Compiler/lex.fsl" IEEE32 (evalFloat args lexbuf) -//# 2032 "lex.fs" +//# 2137 "lex.fs" ) - | 24 -> ( -//# 528 "src/Compiler/lex.fsl" + | 25 -> ( +//# 523 "src/Compiler/lex.fsl" if lexbuf.SupportsFeature LanguageFeature.DotlessFloat32Literal then IEEE32 (evalFloat args lexbuf) else fail args lexbuf (FSComp.SR.lexInvalidFloat()) (IEEE32 0.0f) -//# 2041 "lex.fs" +//# 2146 "lex.fs" ) - | 25 -> ( -//# 535 "src/Compiler/lex.fsl" + | 26 -> ( +//# 530 "src/Compiler/lex.fsl" IEEE64 (try float(lexeme lexbuf) with _ -> fail args lexbuf (FSComp.SR.lexInvalidFloat()) 0.0) -//# 2046 "lex.fs" +//# 2151 "lex.fs" ) - | 26 -> ( -//# 538 "src/Compiler/lex.fsl" + | 27 -> ( +//# 533 "src/Compiler/lex.fsl" try let s = removeUnderscores (lexemeTrimRight lexbuf 1) // This implements a range check for decimal literals @@ -2055,10 +2160,10 @@ and token args skip lexbuf = with e -> fail args lexbuf (FSComp.SR.lexOusideDecimal()) (DECIMAL (decimal 0)) -//# 2058 "lex.fs" +//# 2163 "lex.fs" ) - | 27 -> ( -//# 547 "src/Compiler/lex.fsl" + | 28 -> ( +//# 542 "src/Compiler/lex.fsl" #if FABLE_COMPILER fail args lexbuf (FSComp.SR.lexInvalidFloat()) (IEEE32 0.0f) @@ -2070,10 +2175,10 @@ and token args skip lexbuf = IEEE32 (System.BitConverter.ToSingle(System.BitConverter.GetBytes(int32 (uint32 (uint64 n64))),0)) #endif -//# 2073 "lex.fs" +//# 2178 "lex.fs" ) - | 28 -> ( -//# 560 "src/Compiler/lex.fsl" + | 29 -> ( +//# 555 "src/Compiler/lex.fsl" #if FABLE_COMPILER fail args lexbuf (FSComp.SR.lexInvalidFloat()) (IEEE64 0.0) @@ -2082,37 +2187,37 @@ and token args skip lexbuf = IEEE64 (System.BitConverter.Int64BitsToDouble(n64)) #endif -//# 2085 "lex.fs" +//# 2190 "lex.fs" ) - | 29 -> ( -//# 570 "src/Compiler/lex.fsl" + | 30 -> ( +//# 565 "src/Compiler/lex.fsl" let s = lexeme lexbuf BIGNUM (removeUnderscores (lexemeTrimRight lexbuf 1), s.[s.Length-1..s.Length-1]) -//# 2091 "lex.fs" +//# 2196 "lex.fs" ) - | 30 -> ( -//# 574 "src/Compiler/lex.fsl" + | 31 -> ( +//# 569 "src/Compiler/lex.fsl" fail args lexbuf (FSComp.SR.lexInvalidNumericLiteral()) (INT32(0,false)) -//# 2096 "lex.fs" +//# 2201 "lex.fs" ) - | 31 -> ( -//# 577 "src/Compiler/lex.fsl" + | 32 -> ( +//# 572 "src/Compiler/lex.fsl" let s = lexeme lexbuf CHAR (if s.[1] = '\\' then escape s.[2] else s.[1]) -//# 2102 "lex.fs" +//# 2207 "lex.fs" ) - | 32 -> ( -//# 581 "src/Compiler/lex.fsl" + | 33 -> ( +//# 576 "src/Compiler/lex.fsl" let s = lexeme lexbuf let x = int32 (if s.[1] = '\\' then escape s.[2] else s.[1]) if x < 0 || x > 127 then fail args lexbuf (FSComp.SR.lexInvalidByteLiteral()) (UINT8(byte 0)) else UINT8 (byte(x)) -//# 2112 "lex.fs" +//# 2217 "lex.fs" ) - | 33 -> ( -//# 589 "src/Compiler/lex.fsl" + | 34 -> ( +//# 584 "src/Compiler/lex.fsl" let s = lexeme lexbuf let c = trigraph s.[2] s.[3] s.[4] let x = int32 c @@ -2120,232 +2225,267 @@ and token args skip lexbuf = fail args lexbuf (FSComp.SR.lexInvalidCharLiteral()) (CHAR c) else CHAR c -//# 2123 "lex.fs" +//# 2228 "lex.fs" ) - | 34 -> ( -//# 598 "src/Compiler/lex.fsl" + | 35 -> ( +//# 593 "src/Compiler/lex.fsl" let s = lexeme lexbuf let x = int32 (trigraph s.[2] s.[3] s.[4]) if x < 0 || x > 255 then fail args lexbuf (FSComp.SR.lexInvalidByteLiteral()) (UINT8(byte 0)) else UINT8 (byte(x)) -//# 2133 "lex.fs" +//# 2238 "lex.fs" ) - | 35 -> ( -//# 606 "src/Compiler/lex.fsl" + | 36 -> ( +//# 601 "src/Compiler/lex.fsl" let x = int32 (unicodeGraphShort (lexemeTrimBoth lexbuf 3 2)) if x < 0 || x > 127 then fail args lexbuf (FSComp.SR.lexInvalidByteLiteral()) (UINT8(byte 0)) else UINT8 (byte(x)) -//# 2142 "lex.fs" +//# 2247 "lex.fs" ) - | 36 -> ( -//# 612 "src/Compiler/lex.fsl" + | 37 -> ( +//# 607 "src/Compiler/lex.fsl" CHAR (char (int32 (hexGraphShort (lexemeTrimBoth lexbuf 3 1)))) -//# 2147 "lex.fs" +//# 2252 "lex.fs" ) - | 37 -> ( -//# 614 "src/Compiler/lex.fsl" + | 38 -> ( +//# 609 "src/Compiler/lex.fsl" CHAR (char (int32 (unicodeGraphShort (lexemeTrimBoth lexbuf 3 1)))) -//# 2152 "lex.fs" +//# 2257 "lex.fs" ) - | 38 -> ( -//# 617 "src/Compiler/lex.fsl" + | 39 -> ( +//# 612 "src/Compiler/lex.fsl" match unicodeGraphLong (lexemeTrimBoth lexbuf 3 1) with | SingleChar(c) -> CHAR (char c) | _ -> fail args lexbuf (FSComp.SR.lexThisUnicodeOnlyInStringLiterals()) (CHAR (char 0)) -//# 2159 "lex.fs" +//# 2264 "lex.fs" ) - | 39 -> ( -//# 622 "src/Compiler/lex.fsl" + | 40 -> ( +//# 617 "src/Compiler/lex.fsl" if lexbuf.SupportsFeature LanguageFeature.MLCompatRevisions then mlCompatWarning (FSComp.SR.lexIndentOffForML()) lexbuf.LexemeRange if not skip then COMMENT (LexCont.Token (args.ifdefStack, args.stringNest)) else token args skip lexbuf -//# 2167 "lex.fs" +//# 2272 "lex.fs" ) - | 40 -> ( -//# 628 "src/Compiler/lex.fsl" + | 41 -> ( +//# 623 "src/Compiler/lex.fsl" if not skip then COMMENT (LexCont.Token (args.ifdefStack, args.stringNest)) else token args skip lexbuf -//# 2173 "lex.fs" +//# 2278 "lex.fs" ) - | 41 -> ( -//# 632 "src/Compiler/lex.fsl" + | 42 -> ( +//# 627 "src/Compiler/lex.fsl" if not skip then COMMENT (LexCont.Token (args.ifdefStack, args.stringNest)) else token args skip lexbuf -//# 2179 "lex.fs" +//# 2284 "lex.fs" ) - | 42 -> ( -//# 636 "src/Compiler/lex.fsl" + | 43 -> ( +//# 631 "src/Compiler/lex.fsl" if not skip then COMMENT (LexCont.Token (args.ifdefStack, args.stringNest)) else token args skip lexbuf -//# 2185 "lex.fs" +//# 2290 "lex.fs" ) - | 43 -> ( -//# 640 "src/Compiler/lex.fsl" + | 44 -> ( +//# 635 "src/Compiler/lex.fsl" LPAREN_STAR_RPAREN -//# 2190 "lex.fs" +//# 2295 "lex.fs" ) - | 44 -> ( -//# 643 "src/Compiler/lex.fsl" + | 45 -> ( +//# 638 "src/Compiler/lex.fsl" let m = lexbuf.LexemeRange if not skip then COMMENT (LexCont.Comment(args.ifdefStack, args.stringNest, 1, m)) else comment (1,m,args) skip lexbuf -//# 2197 "lex.fs" +//# 2302 "lex.fs" ) - | 45 -> ( -//# 648 "src/Compiler/lex.fsl" + | 46 -> ( +//# 643 "src/Compiler/lex.fsl" let m = lexbuf.LexemeRange if not skip then COMMENT (LexCont.MLOnly(args.ifdefStack, args.stringNest, m)) else mlOnly m args skip lexbuf -//# 2204 "lex.fs" +//# 2309 "lex.fs" ) - | 46 -> ( -//# 653 "src/Compiler/lex.fsl" + | 47 -> ( +//# 648 "src/Compiler/lex.fsl" let buf, fin, m = startString args lexbuf // Single quote in triple quote ok, others disallowed match args.stringNest with - | (_, LexerStringStyle.TripleQuote, _) :: _ -> () + | (_, LexerStringStyle.ExtendedInterpolated, _, _) :: _ + | (_, LexerStringStyle.TripleQuote, _, _) :: _ -> () | _ :: _ -> errorR(Error(FSComp.SR.lexSingleQuoteInSingleQuote(), m)) | [] -> () - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, LexerStringKind.String, m)) + if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, LexerStringKind.String, args.interpolationDelimiterLength, m)) else singleQuoteString (buf, fin, m, LexerStringKind.String, args) skip lexbuf -//# 2216 "lex.fs" +//# 2322 "lex.fs" ) - | 47 -> ( -//# 665 "src/Compiler/lex.fsl" + | 48 -> ( +//# 661 "src/Compiler/lex.fsl" let buf, fin, m = startString args lexbuf // Single quote in triple quote ok, others disallowed match args.stringNest with | _ :: _ -> errorR(Error(FSComp.SR.lexTripleQuoteInTripleQuote(), m)) | [] -> () - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, LexerStringKind.InterpolatedStringFirst, m)) + args.interpolationDelimiterLength <- 1 + if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, LexerStringKind.InterpolatedStringFirst, 1, m)) else tripleQuoteString (buf, fin, m, LexerStringKind.InterpolatedStringFirst, args) skip lexbuf -//# 2227 "lex.fs" +//# 2334 "lex.fs" ) - | 48 -> ( -//# 676 "src/Compiler/lex.fsl" + | 49 -> ( +//# 673 "src/Compiler/lex.fsl" + let buf, fin, m = startString args lexbuf + if lexbuf.SupportsFeature LanguageFeature.ExtendedStringInterpolation then + // Single quote in triple quote ok, others disallowed + match args.stringNest with + | _ :: _ -> errorR(Error(FSComp.SR.lexTripleQuoteInTripleQuote(), m)) + | [] -> () + args.interpolationDelimiterLength <- lexeme lexbuf |> Seq.takeWhile (fun c -> c = '$') |> Seq.length + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.ExtendedInterpolated, LexerStringKind.InterpolatedStringFirst, args.interpolationDelimiterLength, m)) + else + extendedInterpolatedString (buf, fin, m, LexerStringKind.InterpolatedStringFirst, args) skip lexbuf + else + let result = + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, LexerStringKind.InterpolatedStringFirst, args.interpolationDelimiterLength, m)) + else + tripleQuoteString (buf, fin, m, LexerStringKind.InterpolatedStringFirst, args) skip lexbuf + fail args lexbuf (FSComp.SR.lexExtendedStringInterpolationNotSupported()) result + +//# 2357 "lex.fs" + ) + | 50 -> ( +//# 696 "src/Compiler/lex.fsl" let buf,fin,m = startString args lexbuf // Single quote in triple quote ok, others disallowed match args.stringNest with - | (_, LexerStringStyle.TripleQuote, _) :: _ -> () + | (_, style, _, _) :: _ when style = LexerStringStyle.ExtendedInterpolated || style = LexerStringStyle.TripleQuote -> () | _ :: _ -> errorR(Error(FSComp.SR.lexSingleQuoteInSingleQuote(), m)) | _ -> () - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, LexerStringKind.InterpolatedStringFirst, m)) - else singleQuoteString (buf, fin, m, LexerStringKind.InterpolatedStringFirst, args) skip lexbuf -//# 2239 "lex.fs" + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, LexerStringKind.InterpolatedStringFirst, args.interpolationDelimiterLength, m)) + else + singleQuoteString (buf, fin, m, LexerStringKind.InterpolatedStringFirst, args) skip lexbuf +//# 2371 "lex.fs" ) - | 49 -> ( -//# 688 "src/Compiler/lex.fsl" + | 51 -> ( +//# 710 "src/Compiler/lex.fsl" let buf, fin, m = startString args lexbuf + args.interpolationDelimiterLength <- 0 // Single quote in triple quote ok, others disallowed match args.stringNest with | _ :: _ -> errorR(Error(FSComp.SR.lexTripleQuoteInTripleQuote(), m)) | _ -> () - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, LexerStringKind.String, m)) - else tripleQuoteString (buf, fin, m, LexerStringKind.String, args) skip lexbuf -//# 2250 "lex.fs" + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, LexerStringKind.String, args.interpolationDelimiterLength, m)) + else + tripleQuoteString (buf, fin, m, LexerStringKind.String, args) skip lexbuf +//# 2385 "lex.fs" ) - | 50 -> ( -//# 699 "src/Compiler/lex.fsl" + | 52 -> ( +//# 725 "src/Compiler/lex.fsl" let buf, fin, m = startString args lexbuf // Single quote in triple quote ok, others disallowed match args.stringNest with - | (_, LexerStringStyle.TripleQuote, _) :: _ -> () + | (_, LexerStringStyle.ExtendedInterpolated, _, _) :: _ + | (_, LexerStringStyle.TripleQuote, _, _) :: _ -> () | _ :: _ -> errorR(Error(FSComp.SR.lexSingleQuoteInSingleQuote(), m)) | _ -> () - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, LexerStringKind.String, m)) - else verbatimString (buf, fin, m, LexerStringKind.String, args) skip lexbuf -//# 2262 "lex.fs" + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, LexerStringKind.String, args.interpolationDelimiterLength, m)) + else + verbatimString (buf, fin, m, LexerStringKind.String, args) skip lexbuf +//# 2400 "lex.fs" ) - | 51 -> ( -//# 711 "src/Compiler/lex.fsl" + | 53 -> ( +//# 740 "src/Compiler/lex.fsl" let buf, fin, m = startString args lexbuf // Single quote in triple quote ok, others disallowed match args.stringNest with - | (_, LexerStringStyle.TripleQuote, _) :: _ -> () + | (_, style, _, _) :: _ when style = LexerStringStyle.ExtendedInterpolated || style = LexerStringStyle.TripleQuote -> () | _ :: _ -> errorR(Error(FSComp.SR.lexSingleQuoteInSingleQuote(), m)) | _ -> () - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, LexerStringKind.InterpolatedStringFirst, m)) - else verbatimString (buf, fin, m, LexerStringKind.InterpolatedStringFirst, args) skip lexbuf -//# 2274 "lex.fs" + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, LexerStringKind.InterpolatedStringFirst, args.interpolationDelimiterLength, m)) + else + verbatimString (buf, fin, m, LexerStringKind.InterpolatedStringFirst, args) skip lexbuf +//# 2414 "lex.fs" ) - | 52 -> ( -//# 723 "src/Compiler/lex.fsl" + | 54 -> ( +//# 754 "src/Compiler/lex.fsl" if skip then token args skip lexbuf else WHITESPACE (LexCont.Token(args.ifdefStack, args.stringNest)) -//# 2280 "lex.fs" +//# 2420 "lex.fs" ) - | 53 -> ( -//# 727 "src/Compiler/lex.fsl" + | 55 -> ( +//# 758 "src/Compiler/lex.fsl" if args.indentationSyntaxStatus.Status then errorR(Error(FSComp.SR.lexTabsNotAllowed(), lexbuf.LexemeRange)) if not skip then WHITESPACE (LexCont.Token(args.ifdefStack, args.stringNest)) else token args skip lexbuf -//# 2287 "lex.fs" +//# 2427 "lex.fs" ) - | 54 -> ( -//# 732 "src/Compiler/lex.fsl" + | 56 -> ( +//# 763 "src/Compiler/lex.fsl" // 4+ slash are 1-line comments, online 3 slash are XmlDoc let m = lexbuf.LexemeRange LexbufLocalXmlDocStore.AddGrabPointDelayed(lexbuf) if not skip then LINE_COMMENT (LexCont.SingleLineComment(args.ifdefStack, args.stringNest, 1, m)) else singleLineComment (None,1,m,m,args) skip lexbuf -//# 2296 "lex.fs" +//# 2436 "lex.fs" ) - | 55 -> ( -//# 739 "src/Compiler/lex.fsl" + | 57 -> ( +//# 770 "src/Compiler/lex.fsl" // Match exactly 3 slash, 4+ slash caught by preceding rule let m = lexbuf.LexemeRange let doc = lexemeTrimLeft lexbuf 3 let sb = (new StringBuilder(100)).Append(doc) if not skip then LINE_COMMENT (LexCont.SingleLineComment(args.ifdefStack, args.stringNest, 1, m)) else singleLineComment (Some (m, sb),1,m,m,args) skip lexbuf -//# 2306 "lex.fs" +//# 2446 "lex.fs" ) - | 56 -> ( -//# 747 "src/Compiler/lex.fsl" + | 58 -> ( +//# 778 "src/Compiler/lex.fsl" // Need to read all operator symbols too, otherwise it might be parsed by a rule below let m = lexbuf.LexemeRange LexbufLocalXmlDocStore.AddGrabPointDelayed(lexbuf) if not skip then LINE_COMMENT (LexCont.SingleLineComment(args.ifdefStack, args.stringNest, 1, m)) else singleLineComment (None,1,m,m,args) skip lexbuf -//# 2315 "lex.fs" +//# 2455 "lex.fs" ) - | 57 -> ( -//# 754 "src/Compiler/lex.fsl" + | 59 -> ( +//# 785 "src/Compiler/lex.fsl" newline lexbuf if not skip then WHITESPACE (LexCont.Token(args.ifdefStack, args.stringNest)) else token args skip lexbuf -//# 2322 "lex.fs" +//# 2462 "lex.fs" ) - | 58 -> ( -//# 759 "src/Compiler/lex.fsl" + | 60 -> ( +//# 790 "src/Compiler/lex.fsl" Keywords.IdentifierToken args lexbuf (lexemeTrimBoth lexbuf 2 2) -//# 2327 "lex.fs" +//# 2467 "lex.fs" ) - | 59 -> ( -//# 762 "src/Compiler/lex.fsl" + | 61 -> ( +//# 793 "src/Compiler/lex.fsl" errorR(Error(FSComp.SR.lexInvalidIdentifier(), lexbuf.LexemeRange)) Keywords.IdentifierToken args lexbuf (lexemeTrimBoth lexbuf 2 1) -//# 2333 "lex.fs" +//# 2473 "lex.fs" ) - | 60 -> ( -//# 766 "src/Compiler/lex.fsl" + | 62 -> ( +//# 797 "src/Compiler/lex.fsl" errorR(Error(FSComp.SR.lexInvalidIdentifier(), lexbuf.LexemeRange)) Keywords.IdentifierToken args lexbuf (lexemeTrimLeft lexbuf 2) -//# 2339 "lex.fs" +//# 2479 "lex.fs" ) - | 61 -> ( -//# 770 "src/Compiler/lex.fsl" + | 63 -> ( +//# 801 "src/Compiler/lex.fsl" errorR(Error(FSComp.SR.lexInvalidIdentifier(), lexbuf.LexemeRange)) Keywords.IdentifierToken args lexbuf "" -//# 2345 "lex.fs" +//# 2485 "lex.fs" ) - | 62 -> ( -//# 774 "src/Compiler/lex.fsl" + | 64 -> ( +//# 805 "src/Compiler/lex.fsl" let pos = lexbuf.EndPos if skip then let s = lexeme lexbuf @@ -2392,347 +2532,356 @@ and token args skip lexbuf = newline lexbuf HASH_LINE (LexCont.Token (args.ifdefStack, args.stringNest)) -//# 2395 "lex.fs" +//# 2535 "lex.fs" ) - | 63 -> ( -//# 830 "src/Compiler/lex.fsl" + | 65 -> ( +//# 861 "src/Compiler/lex.fsl" checkExprOp lexbuf; LQUOTE ("<@ @>", false) -//# 2400 "lex.fs" +//# 2540 "lex.fs" ) - | 64 -> ( -//# 832 "src/Compiler/lex.fsl" + | 66 -> ( +//# 863 "src/Compiler/lex.fsl" checkExprOp lexbuf; LQUOTE ("<@@ @@>", true) -//# 2405 "lex.fs" +//# 2545 "lex.fs" ) - | 65 -> ( -//# 834 "src/Compiler/lex.fsl" + | 67 -> ( +//# 865 "src/Compiler/lex.fsl" checkExprOp lexbuf; RQUOTE ("<@ @>", false) -//# 2410 "lex.fs" +//# 2550 "lex.fs" ) - | 66 -> ( -//# 836 "src/Compiler/lex.fsl" + | 68 -> ( +//# 867 "src/Compiler/lex.fsl" checkExprOp lexbuf; RQUOTE ("<@@ @@>", true) -//# 2415 "lex.fs" +//# 2555 "lex.fs" ) - | 67 -> ( -//# 838 "src/Compiler/lex.fsl" + | 69 -> ( +//# 869 "src/Compiler/lex.fsl" HASH -//# 2420 "lex.fs" +//# 2560 "lex.fs" ) - | 68 -> ( -//# 840 "src/Compiler/lex.fsl" + | 70 -> ( +//# 871 "src/Compiler/lex.fsl" AMP -//# 2425 "lex.fs" +//# 2565 "lex.fs" ) - | 69 -> ( -//# 842 "src/Compiler/lex.fsl" + | 71 -> ( +//# 873 "src/Compiler/lex.fsl" AMP_AMP -//# 2430 "lex.fs" +//# 2570 "lex.fs" ) - | 70 -> ( -//# 844 "src/Compiler/lex.fsl" + | 72 -> ( +//# 875 "src/Compiler/lex.fsl" BAR_BAR -//# 2435 "lex.fs" +//# 2575 "lex.fs" ) - | 71 -> ( -//# 846 "src/Compiler/lex.fsl" + | 73 -> ( +//# 877 "src/Compiler/lex.fsl" QUOTE -//# 2440 "lex.fs" +//# 2580 "lex.fs" ) - | 72 -> ( -//# 848 "src/Compiler/lex.fsl" + | 74 -> ( +//# 879 "src/Compiler/lex.fsl" LPAREN -//# 2445 "lex.fs" +//# 2585 "lex.fs" ) - | 73 -> ( -//# 850 "src/Compiler/lex.fsl" + | 75 -> ( +//# 881 "src/Compiler/lex.fsl" RPAREN -//# 2450 "lex.fs" +//# 2590 "lex.fs" ) - | 74 -> ( -//# 852 "src/Compiler/lex.fsl" + | 76 -> ( +//# 883 "src/Compiler/lex.fsl" STAR -//# 2455 "lex.fs" +//# 2595 "lex.fs" ) - | 75 -> ( -//# 854 "src/Compiler/lex.fsl" + | 77 -> ( +//# 885 "src/Compiler/lex.fsl" COMMA -//# 2460 "lex.fs" +//# 2600 "lex.fs" ) - | 76 -> ( -//# 856 "src/Compiler/lex.fsl" + | 78 -> ( +//# 887 "src/Compiler/lex.fsl" RARROW -//# 2465 "lex.fs" +//# 2605 "lex.fs" ) - | 77 -> ( -//# 858 "src/Compiler/lex.fsl" + | 79 -> ( +//# 889 "src/Compiler/lex.fsl" QMARK -//# 2470 "lex.fs" +//# 2610 "lex.fs" ) - | 78 -> ( -//# 860 "src/Compiler/lex.fsl" + | 80 -> ( +//# 891 "src/Compiler/lex.fsl" QMARK_QMARK -//# 2475 "lex.fs" +//# 2615 "lex.fs" ) - | 79 -> ( -//# 862 "src/Compiler/lex.fsl" + | 81 -> ( +//# 893 "src/Compiler/lex.fsl" DOT_DOT -//# 2480 "lex.fs" +//# 2620 "lex.fs" ) - | 80 -> ( -//# 864 "src/Compiler/lex.fsl" + | 82 -> ( +//# 895 "src/Compiler/lex.fsl" DOT_DOT_HAT -//# 2485 "lex.fs" +//# 2625 "lex.fs" ) - | 81 -> ( -//# 866 "src/Compiler/lex.fsl" + | 83 -> ( +//# 897 "src/Compiler/lex.fsl" DOT -//# 2490 "lex.fs" +//# 2630 "lex.fs" ) - | 82 -> ( -//# 868 "src/Compiler/lex.fsl" + | 84 -> ( +//# 899 "src/Compiler/lex.fsl" COLON -//# 2495 "lex.fs" +//# 2635 "lex.fs" ) - | 83 -> ( -//# 870 "src/Compiler/lex.fsl" + | 85 -> ( +//# 901 "src/Compiler/lex.fsl" COLON_COLON -//# 2500 "lex.fs" +//# 2640 "lex.fs" ) - | 84 -> ( -//# 872 "src/Compiler/lex.fsl" + | 86 -> ( +//# 903 "src/Compiler/lex.fsl" COLON_GREATER -//# 2505 "lex.fs" +//# 2645 "lex.fs" ) - | 85 -> ( -//# 874 "src/Compiler/lex.fsl" + | 87 -> ( +//# 905 "src/Compiler/lex.fsl" RQUOTE_DOT ("<@ @>",false) -//# 2510 "lex.fs" +//# 2650 "lex.fs" ) - | 86 -> ( -//# 876 "src/Compiler/lex.fsl" + | 88 -> ( +//# 907 "src/Compiler/lex.fsl" RQUOTE_DOT ("<@@ @@>",true) -//# 2515 "lex.fs" +//# 2655 "lex.fs" ) - | 87 -> ( -//# 878 "src/Compiler/lex.fsl" + | 89 -> ( +//# 909 "src/Compiler/lex.fsl" GREATER_BAR_RBRACK -//# 2520 "lex.fs" +//# 2660 "lex.fs" ) - | 88 -> ( -//# 880 "src/Compiler/lex.fsl" + | 90 -> ( +//# 911 "src/Compiler/lex.fsl" COLON_QMARK_GREATER -//# 2525 "lex.fs" +//# 2665 "lex.fs" ) - | 89 -> ( -//# 882 "src/Compiler/lex.fsl" + | 91 -> ( +//# 913 "src/Compiler/lex.fsl" COLON_QMARK -//# 2530 "lex.fs" +//# 2670 "lex.fs" ) - | 90 -> ( -//# 884 "src/Compiler/lex.fsl" + | 92 -> ( +//# 915 "src/Compiler/lex.fsl" COLON_EQUALS -//# 2535 "lex.fs" +//# 2675 "lex.fs" ) - | 91 -> ( -//# 886 "src/Compiler/lex.fsl" + | 93 -> ( +//# 917 "src/Compiler/lex.fsl" SEMICOLON_SEMICOLON -//# 2540 "lex.fs" +//# 2680 "lex.fs" ) - | 92 -> ( -//# 888 "src/Compiler/lex.fsl" + | 94 -> ( +//# 919 "src/Compiler/lex.fsl" SEMICOLON -//# 2545 "lex.fs" +//# 2685 "lex.fs" ) - | 93 -> ( -//# 890 "src/Compiler/lex.fsl" + | 95 -> ( +//# 921 "src/Compiler/lex.fsl" LARROW -//# 2550 "lex.fs" +//# 2690 "lex.fs" ) - | 94 -> ( -//# 892 "src/Compiler/lex.fsl" + | 96 -> ( +//# 923 "src/Compiler/lex.fsl" EQUALS -//# 2555 "lex.fs" +//# 2695 "lex.fs" ) - | 95 -> ( -//# 894 "src/Compiler/lex.fsl" + | 97 -> ( +//# 925 "src/Compiler/lex.fsl" LBRACK -//# 2560 "lex.fs" +//# 2700 "lex.fs" ) - | 96 -> ( -//# 896 "src/Compiler/lex.fsl" + | 98 -> ( +//# 927 "src/Compiler/lex.fsl" LBRACK_BAR -//# 2565 "lex.fs" +//# 2705 "lex.fs" ) - | 97 -> ( -//# 898 "src/Compiler/lex.fsl" + | 99 -> ( +//# 929 "src/Compiler/lex.fsl" LBRACE_BAR -//# 2570 "lex.fs" +//# 2710 "lex.fs" ) - | 98 -> ( -//# 900 "src/Compiler/lex.fsl" + | 100 -> ( +//# 931 "src/Compiler/lex.fsl" LESS false -//# 2575 "lex.fs" +//# 2715 "lex.fs" ) - | 99 -> ( -//# 902 "src/Compiler/lex.fsl" + | 101 -> ( +//# 933 "src/Compiler/lex.fsl" GREATER false -//# 2580 "lex.fs" +//# 2720 "lex.fs" ) - | 100 -> ( -//# 904 "src/Compiler/lex.fsl" + | 102 -> ( +//# 935 "src/Compiler/lex.fsl" LBRACK_LESS -//# 2585 "lex.fs" +//# 2725 "lex.fs" ) - | 101 -> ( -//# 906 "src/Compiler/lex.fsl" + | 103 -> ( +//# 937 "src/Compiler/lex.fsl" RBRACK -//# 2590 "lex.fs" +//# 2730 "lex.fs" ) - | 102 -> ( -//# 908 "src/Compiler/lex.fsl" + | 104 -> ( +//# 939 "src/Compiler/lex.fsl" BAR_RBRACK -//# 2595 "lex.fs" +//# 2735 "lex.fs" ) - | 103 -> ( -//# 910 "src/Compiler/lex.fsl" + | 105 -> ( +//# 941 "src/Compiler/lex.fsl" BAR_RBRACE -//# 2600 "lex.fs" +//# 2740 "lex.fs" ) - | 104 -> ( -//# 912 "src/Compiler/lex.fsl" + | 106 -> ( +//# 943 "src/Compiler/lex.fsl" GREATER_RBRACK -//# 2605 "lex.fs" +//# 2745 "lex.fs" ) - | 105 -> ( -//# 915 "src/Compiler/lex.fsl" + | 107 -> ( +//# 946 "src/Compiler/lex.fsl" match args.stringNest with | [] -> () - | (counter, style, m) :: rest -> + | (counter, style, d, m) :: rest -> // Note, we do not update the 'm', any incomplete-interpolation error // will be reported w.r.t. the first '{' - args.stringNest <- (counter + 1, style, m) :: rest + args.stringNest <- (counter + 1, style, d, m) :: rest // To continue token-by-token lexing may involve picking up the new args.stringNes let cont = LexCont.Token(args.ifdefStack, args.stringNest) LBRACE cont -//# 2620 "lex.fs" +//# 2760 "lex.fs" ) - | 106 -> ( -//# 927 "src/Compiler/lex.fsl" + | 108 -> ( +//# 958 "src/Compiler/lex.fsl" BAR -//# 2625 "lex.fs" +//# 2765 "lex.fs" ) - | 107 -> ( -//# 930 "src/Compiler/lex.fsl" + | 109 -> ( +//# 961 "src/Compiler/lex.fsl" // We encounter a '}' in the expression token stream. First check if we're in an interpolated string expression // and continue the string if necessary match args.stringNest with - | (1, style, _) :: rest -> + | (1, LexerStringStyle.ExtendedInterpolated, delimLength, r) :: rest when delimLength > 1 -> + args.stringNest <- (1, LexerStringStyle.ExtendedInterpolated, delimLength - 1, r) :: rest + token args skip lexbuf + | (1, style, _, _) :: rest -> args.stringNest <- rest let buf, fin, m = startString args lexbuf if not skip then - STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, style, LexerStringKind.InterpolatedStringPart, m)) + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, style, LexerStringKind.InterpolatedStringPart, args.interpolationDelimiterLength, m)) else match style with | LexerStringStyle.Verbatim -> verbatimString (buf, fin, m, LexerStringKind.InterpolatedStringPart, args) skip lexbuf | LexerStringStyle.SingleQuote -> singleQuoteString (buf, fin, m, LexerStringKind.InterpolatedStringPart, args) skip lexbuf | LexerStringStyle.TripleQuote -> tripleQuoteString (buf, fin, m, LexerStringKind.InterpolatedStringPart, args) skip lexbuf - | (counter, style, m) :: rest -> + | LexerStringStyle.ExtendedInterpolated -> extendedInterpolatedString (buf, fin, m, LexerStringKind.InterpolatedStringPart, args) skip lexbuf + | (counter, style, d, m) :: rest -> // Note, we do not update the 'm', any incomplete-interpolation error // will be reported w.r.t. the first '{' - args.stringNest <- (counter - 1, style, m) :: rest + args.stringNest <- (counter - 1, style, d, m) :: rest let cont = LexCont.Token(args.ifdefStack, args.stringNest) RBRACE cont - | _ -> + | _ -> let cont = LexCont.Token(args.ifdefStack, args.stringNest) RBRACE cont -//# 2653 "lex.fs" +//# 2797 "lex.fs" ) - | 108 -> ( -//# 957 "src/Compiler/lex.fsl" + | 110 -> ( +//# 992 "src/Compiler/lex.fsl" DOLLAR -//# 2658 "lex.fs" +//# 2802 "lex.fs" ) - | 109 -> ( -//# 959 "src/Compiler/lex.fsl" + | 111 -> ( +//# 994 "src/Compiler/lex.fsl" PERCENT_OP("%") -//# 2663 "lex.fs" +//# 2807 "lex.fs" ) - | 110 -> ( -//# 961 "src/Compiler/lex.fsl" + | 112 -> ( +//# 996 "src/Compiler/lex.fsl" PERCENT_OP("%%") -//# 2668 "lex.fs" +//# 2812 "lex.fs" ) - | 111 -> ( -//# 963 "src/Compiler/lex.fsl" + | 113 -> ( +//# 998 "src/Compiler/lex.fsl" MINUS -//# 2673 "lex.fs" +//# 2817 "lex.fs" ) - | 112 -> ( -//# 965 "src/Compiler/lex.fsl" + | 114 -> ( +//# 1000 "src/Compiler/lex.fsl" RESERVED -//# 2678 "lex.fs" +//# 2822 "lex.fs" ) - | 113 -> ( -//# 967 "src/Compiler/lex.fsl" + | 115 -> ( +//# 1002 "src/Compiler/lex.fsl" checkExprOp lexbuf; INFIX_STAR_STAR_OP(lexeme lexbuf) -//# 2683 "lex.fs" +//# 2827 "lex.fs" ) - | 114 -> ( -//# 969 "src/Compiler/lex.fsl" + | 116 -> ( +//# 1004 "src/Compiler/lex.fsl" checkExprOp lexbuf; INFIX_STAR_DIV_MOD_OP(lexeme lexbuf) -//# 2688 "lex.fs" +//# 2832 "lex.fs" ) - | 115 -> ( -//# 971 "src/Compiler/lex.fsl" + | 117 -> ( +//# 1006 "src/Compiler/lex.fsl" checkExprOp lexbuf; PLUS_MINUS_OP(lexeme lexbuf) -//# 2693 "lex.fs" +//# 2837 "lex.fs" ) - | 116 -> ( -//# 973 "src/Compiler/lex.fsl" + | 118 -> ( +//# 1008 "src/Compiler/lex.fsl" checkExprOp lexbuf; INFIX_AT_HAT_OP(lexeme lexbuf) -//# 2698 "lex.fs" +//# 2842 "lex.fs" ) - | 117 -> ( -//# 975 "src/Compiler/lex.fsl" - checkExprOp lexbuf; INFIX_COMPARE_OP(lexeme lexbuf) -//# 2703 "lex.fs" + | 119 -> ( +//# 1010 "src/Compiler/lex.fsl" + checkExprOp lexbuf; INFIX_COMPARE_OP(lexeme lexbuf) +//# 2847 "lex.fs" ) - | 118 -> ( -//# 977 "src/Compiler/lex.fsl" + | 120 -> ( +//# 1012 "src/Compiler/lex.fsl" + checkExprGreaterColonOp lexbuf; INFIX_COMPARE_OP(lexeme lexbuf) +//# 2852 "lex.fs" + ) + | 121 -> ( +//# 1014 "src/Compiler/lex.fsl" checkExprOp lexbuf; INFIX_AMP_OP(lexeme lexbuf) -//# 2708 "lex.fs" +//# 2857 "lex.fs" ) - | 119 -> ( -//# 979 "src/Compiler/lex.fsl" + | 122 -> ( +//# 1016 "src/Compiler/lex.fsl" checkExprOp lexbuf; INFIX_BAR_OP(lexeme lexbuf) -//# 2713 "lex.fs" +//# 2862 "lex.fs" ) - | 120 -> ( -//# 981 "src/Compiler/lex.fsl" + | 123 -> ( +//# 1018 "src/Compiler/lex.fsl" checkExprOp lexbuf; PREFIX_OP(lexeme lexbuf) -//# 2718 "lex.fs" +//# 2867 "lex.fs" ) - | 121 -> ( -//# 985 "src/Compiler/lex.fsl" + | 124 -> ( +//# 1022 "src/Compiler/lex.fsl" FUNKY_OPERATOR_NAME(lexeme lexbuf) -//# 2723 "lex.fs" +//# 2872 "lex.fs" ) - | 122 -> ( -//# 988 "src/Compiler/lex.fsl" + | 125 -> ( +//# 1025 "src/Compiler/lex.fsl" // Treat shebangs like regular comments, but they are only allowed at the start of a file let m = lexbuf.LexemeRange let tok = LINE_COMMENT (LexCont.SingleLineComment(args.ifdefStack, args.stringNest, 1, m)) let tok = shouldStartFile args lexbuf m (0,FSComp.SR.lexHashBangMustBeFirstInFile()) tok if not skip then tok else singleLineComment (None,1,m,m,args) skip lexbuf -//# 2732 "lex.fs" +//# 2881 "lex.fs" ) - | 123 -> ( -//# 996 "src/Compiler/lex.fsl" + | 126 -> ( +//# 1033 "src/Compiler/lex.fsl" if args.indentationSyntaxStatus.ExplicitlySet && args.indentationSyntaxStatus.WarnOnMultipleTokens then let s = lexeme lexbuf warning(Error((0, sprintf "%s should only be set once in an F# source file." s), lexbuf.LexemeRange)) @@ -2741,10 +2890,10 @@ and token args skip lexbuf = args.indentationSyntaxStatus.Status <- true if not skip then HASH_LIGHT (LexCont.Token(args.ifdefStack, args.stringNest)) else token args skip lexbuf -//# 2744 "lex.fs" +//# 2893 "lex.fs" ) - | 124 -> ( -//# 1006 "src/Compiler/lex.fsl" + | 127 -> ( +//# 1043 "src/Compiler/lex.fsl" args.indentationSyntaxStatus.Status <- false if lexbuf.SupportsFeature LanguageFeature.MLCompatRevisions then mlCompatError (FSComp.SR.mlCompatLightOffNoLongerSupported()) lexbuf.LexemeRange @@ -2752,14 +2901,14 @@ and token args skip lexbuf = mlCompatWarning (FSComp.SR.lexIndentOffForML()) lexbuf.LexemeRange if not skip then HASH_LIGHT (LexCont.Token (args.ifdefStack, args.stringNest)) else token args skip lexbuf -//# 2755 "lex.fs" +//# 2904 "lex.fs" ) - | 125 -> ( -//# 1015 "src/Compiler/lex.fsl" + | 128 -> ( +//# 1052 "src/Compiler/lex.fsl" let m = lexbuf.LexemeRange let lookup id = List.contains id args.conditionalDefines let lexed = lexeme lexbuf - let isTrue, expr = evalIfDefExpression lexbuf.StartPos lexbuf.ReportLibraryOnlyFeatures lexbuf.LanguageVersion args lookup lexed + let isTrue, expr = evalIfDefExpression lexbuf.StartPos lexbuf.ReportLibraryOnlyFeatures lexbuf.LanguageVersion lexbuf.StrictIndentation args lookup lexed args.ifdefStack <- (IfDefIf,m) :: args.ifdefStack LexbufIfdefStore.SaveIfHash(lexbuf, lexed, expr, m) // Get the token; make sure it starts at zero position & return @@ -2774,10 +2923,10 @@ and token args skip lexbuf = cont, f let tok = shouldStartLine args lexbuf m (FSComp.SR.lexHashIfMustBeFirst()) (HASH_IF(m,lexed,cont)) if not skip then tok else f lexbuf -//# 2777 "lex.fs" +//# 2926 "lex.fs" ) - | 126 -> ( -//# 1037 "src/Compiler/lex.fsl" + | 129 -> ( +//# 1074 "src/Compiler/lex.fsl" let lexed = (lexeme lexbuf) match args.ifdefStack with | [] -> LEX_FAILURE (FSComp.SR.lexHashElseNoMatchingIf()) @@ -2789,10 +2938,10 @@ and token args skip lexbuf = let tok = HASH_ELSE(m, lexed, LexCont.EndLine(args.ifdefStack, args.stringNest, LexerEndlineContinuation.Skip(0, m))) let tok = shouldStartLine args lexbuf m (FSComp.SR.lexHashElseMustBeFirst()) tok if not skip then tok else endline (LexerEndlineContinuation.Skip(0, m)) args skip lexbuf -//# 2792 "lex.fs" +//# 2941 "lex.fs" ) - | 127 -> ( -//# 1050 "src/Compiler/lex.fsl" + | 130 -> ( +//# 1087 "src/Compiler/lex.fsl" let lexed = (lexeme lexbuf) let m = lexbuf.LexemeRange match args.ifdefStack with @@ -2803,38 +2952,38 @@ and token args skip lexbuf = let tok = HASH_ENDIF(m,lexed,LexCont.EndLine(args.ifdefStack, args.stringNest, LexerEndlineContinuation.Token)) let tok = shouldStartLine args lexbuf m (FSComp.SR.lexHashEndifMustBeFirst()) tok if not skip then tok else endline LexerEndlineContinuation.Token args skip lexbuf -//# 2806 "lex.fs" +//# 2955 "lex.fs" ) - | 128 -> ( -//# 1062 "src/Compiler/lex.fsl" + | 131 -> ( +//# 1099 "src/Compiler/lex.fsl" let tok = WHITESPACE (LexCont.Token (args.ifdefStack, args.stringNest)) let tok = fail args lexbuf (FSComp.SR.lexHashIfMustHaveIdent()) tok if not skip then tok else token args skip lexbuf -//# 2813 "lex.fs" +//# 2962 "lex.fs" ) - | 129 -> ( -//# 1070 "src/Compiler/lex.fsl" + | 132 -> ( +//# 1107 "src/Compiler/lex.fsl" let n = (lexeme lexbuf).IndexOf('#') lexbuf.StartPos <- lexbuf.StartPos.ShiftColumnBy(n) HASH_IDENT(lexemeTrimLeft lexbuf (n+1)) -//# 2820 "lex.fs" +//# 2969 "lex.fs" ) - | 130 -> ( -//# 1077 "src/Compiler/lex.fsl" + | 133 -> ( +//# 1114 "src/Compiler/lex.fsl" unexpectedChar lexbuf -//# 2825 "lex.fs" +//# 2974 "lex.fs" ) - | 131 -> ( -//# 1080 "src/Compiler/lex.fsl" + | 134 -> ( +//# 1117 "src/Compiler/lex.fsl" EOF (LexCont.Token(args.ifdefStack, args.stringNest)) -//# 2830 "lex.fs" +//# 2979 "lex.fs" ) | _ -> failwith "token" // Rule ifdefSkip -and ifdefSkip n m args skip lexbuf = - match _fslex_tables.Interpret(308,lexbuf) with +and ifdefSkip (n: int) (m: range) (args: LexArgs) (skip: bool) lexbuf = + match _fslex_tables.Interpret(344,lexbuf) with | 0 -> ( -//# 1086 "src/Compiler/lex.fsl" +//# 1123 "src/Compiler/lex.fsl" let m = lexbuf.LexemeRange // If #if is the first thing on the line then increase depth, otherwise skip, because it is invalid (e.g. "(**) #if ...") if (m.StartColumn <> 0) then @@ -2843,14 +2992,14 @@ and ifdefSkip n m args skip lexbuf = else let lexed = lexeme lexbuf let lookup id = List.contains id args.conditionalDefines - let _, expr = evalIfDefExpression lexbuf.StartPos lexbuf.ReportLibraryOnlyFeatures lexbuf.LanguageVersion args lookup lexed + let _, expr = evalIfDefExpression lexbuf.StartPos lexbuf.ReportLibraryOnlyFeatures lexbuf.LanguageVersion lexbuf.StrictIndentation args lookup lexed LexbufIfdefStore.SaveIfHash(lexbuf, lexed, expr, m) let tok = INACTIVECODE(LexCont.EndLine(args.ifdefStack, args.stringNest, LexerEndlineContinuation.Skip(n+1, m))) if not skip then tok else endline (LexerEndlineContinuation.Skip(n+1, m)) args skip lexbuf -//# 2850 "lex.fs" +//# 2999 "lex.fs" ) | 1 -> ( -//# 1101 "src/Compiler/lex.fsl" +//# 1138 "src/Compiler/lex.fsl" let lexed = (lexeme lexbuf) let m = lexbuf.LexemeRange // If #else is the first thing on the line then process it, otherwise ignore, because it is invalid (e.g. "(**) #else ...") @@ -2871,10 +3020,10 @@ and ifdefSkip n m args skip lexbuf = LexbufIfdefStore.SaveElseHash(lexbuf, lexed, m) if not skip then INACTIVECODE(LexCont.EndLine(args.ifdefStack, args.stringNest, LexerEndlineContinuation.Skip(n, m))) else endline (LexerEndlineContinuation.Skip(n, m)) args skip lexbuf -//# 2874 "lex.fs" +//# 3023 "lex.fs" ) | 2 -> ( -//# 1124 "src/Compiler/lex.fsl" +//# 1161 "src/Compiler/lex.fsl" let lexed = lexeme lexbuf let m = lexbuf.LexemeRange // If #endif is the first thing on the line then process it, otherwise ignore, because it is invalid (e.g. "(**) #endif ...") @@ -2894,31 +3043,31 @@ and ifdefSkip n m args skip lexbuf = let tok = INACTIVECODE(LexCont.EndLine(args.ifdefStack, args.stringNest, LexerEndlineContinuation.Skip(n-1, m))) let tok = shouldStartLine args lexbuf m (FSComp.SR.lexWrongNestedHashEndif()) tok if not skip then tok else endline (LexerEndlineContinuation.Skip(n-1, m)) args skip lexbuf -//# 2897 "lex.fs" +//# 3046 "lex.fs" ) | 3 -> ( -//# 1146 "src/Compiler/lex.fsl" +//# 1183 "src/Compiler/lex.fsl" newline lexbuf; ifdefSkip n m args skip lexbuf -//# 2902 "lex.fs" +//# 3051 "lex.fs" ) | 4 -> ( -//# 1155 "src/Compiler/lex.fsl" +//# 1192 "src/Compiler/lex.fsl" // This tries to be nice and get tokens as 'words' because VS uses this when selecting stuff if not skip then INACTIVECODE (LexCont.IfDefSkip(args.ifdefStack, args.stringNest, n, m)) else ifdefSkip n m args skip lexbuf -//# 2909 "lex.fs" +//# 3058 "lex.fs" ) | 5 -> ( -//# 1160 "src/Compiler/lex.fsl" +//# 1197 "src/Compiler/lex.fsl" EOF (LexCont.IfDefSkip(args.ifdefStack, args.stringNest, n, m)) -//# 2914 "lex.fs" +//# 3063 "lex.fs" ) | _ -> failwith "ifdefSkip" // Rule endline -and endline cont args skip lexbuf = - match _fslex_tables.Interpret(301,lexbuf) with +and endline (cont: LexerEndlineContinuation) (args: LexArgs) (skip: bool) lexbuf = + match _fslex_tables.Interpret(337,lexbuf) with | 0 -> ( -//# 1166 "src/Compiler/lex.fsl" +//# 1203 "src/Compiler/lex.fsl" newline lexbuf match cont with | LexerEndlineContinuation.Token -> @@ -2928,80 +3077,92 @@ and endline cont args skip lexbuf = if not skip then INACTIVECODE (LexCont.IfDefSkip(args.ifdefStack, args.stringNest, n, m)) else ifdefSkip n m args skip lexbuf -//# 2931 "lex.fs" +//# 3080 "lex.fs" ) | 1 -> ( -//# 1178 "src/Compiler/lex.fsl" +//# 1215 "src/Compiler/lex.fsl" match cont with | LexerEndlineContinuation.Token -> EOF(LexCont.Token(args.ifdefStack, args.stringNest)) | LexerEndlineContinuation.Skip(n, m) -> EOF(LexCont.IfDefSkip(args.ifdefStack, args.stringNest, n, m)) -//# 2941 "lex.fs" +//# 3090 "lex.fs" ) | 2 -> ( -//# 1188 "src/Compiler/lex.fsl" +//# 1225 "src/Compiler/lex.fsl" let tok = WHITESPACE (LexCont.Token (args.ifdefStack, args.stringNest)) let tok = fail args lexbuf (FSComp.SR.pplexExpectedSingleLineComment()) tok if not skip then tok else token args skip lexbuf -//# 2948 "lex.fs" +//# 3097 "lex.fs" ) | _ -> failwith "endline" // Rule singleQuoteString -and singleQuoteString sargs skip lexbuf = - match _fslex_tables.Interpret(244,lexbuf) with +and singleQuoteString (sargs: LexerStringArgs) (skip: bool) lexbuf = + match _fslex_tables.Interpret(280,lexbuf) with | 0 -> ( -//# 1194 "src/Compiler/lex.fsl" +//# 1231 "src/Compiler/lex.fsl" let (_buf, _fin, m, kind, args) = sargs newline lexbuf let text = lexeme lexbuf let text2 = text |> String.filter (fun c -> c <> ' ' && c <> '\t') advanceColumnBy lexbuf (text.Length - text2.Length) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, m)) - else singleQuoteString sargs skip lexbuf -//# 2963 "lex.fs" + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) + else + singleQuoteString sargs skip lexbuf +//# 3114 "lex.fs" ) | 1 -> ( -//# 1203 "src/Compiler/lex.fsl" +//# 1242 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs addByteChar buf (escape (lexeme lexbuf).[1]) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, m)) - else singleQuoteString sargs skip lexbuf -//# 2971 "lex.fs" + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) + else + singleQuoteString sargs skip lexbuf +//# 3124 "lex.fs" ) | 2 -> ( -//# 1209 "src/Compiler/lex.fsl" +//# 1250 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs let s = lexeme lexbuf addByteChar buf (trigraph s.[1] s.[2] s.[3]) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, m)) - else singleQuoteString sargs skip lexbuf -//# 2980 "lex.fs" + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) + else + singleQuoteString sargs skip lexbuf +//# 3135 "lex.fs" ) | 3 -> ( -//# 1216 "src/Compiler/lex.fsl" +//# 1259 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs addUnicodeChar buf (int (hexGraphShort (lexemeTrimLeft lexbuf 2))) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, m)) - else singleQuoteString sargs skip lexbuf -//# 2988 "lex.fs" + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) + else + singleQuoteString sargs skip lexbuf +//# 3145 "lex.fs" ) | 4 -> ( -//# 1222 "src/Compiler/lex.fsl" +//# 1267 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs addUnicodeChar buf (int (unicodeGraphShort (lexemeTrimLeft lexbuf 2))) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, m)) - else singleQuoteString sargs skip lexbuf -//# 2996 "lex.fs" + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) + else + singleQuoteString sargs skip lexbuf +//# 3155 "lex.fs" ) | 5 -> ( -//# 1228 "src/Compiler/lex.fsl" +//# 1275 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs let hexChars = lexemeTrimLeft lexbuf 2 let result() = - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, m)) - else singleQuoteString sargs skip lexbuf + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) + else + singleQuoteString sargs skip lexbuf match unicodeGraphLong hexChars with | Invalid -> fail args lexbuf (FSComp.SR.lexInvalidUnicodeLiteral hexChars) (result()) @@ -3012,327 +3173,512 @@ and singleQuoteString sargs skip lexbuf = addUnicodeChar buf (int hi) addUnicodeChar buf (int lo) result() -//# 3015 "lex.fs" +//# 3176 "lex.fs" ) | 6 -> ( -//# 1245 "src/Compiler/lex.fsl" +//# 1294 "src/Compiler/lex.fsl" let (buf, fin, _m, kind, args) = sargs let cont = LexCont.Token(args.ifdefStack, args.stringNest) - fin.Finish buf kind (enum(0)) cont + fin.Finish buf kind (LexerStringFinisherContext()) cont -//# 3023 "lex.fs" +//# 3184 "lex.fs" ) | 7 -> ( -//# 1251 "src/Compiler/lex.fsl" +//# 1300 "src/Compiler/lex.fsl" let (buf, fin, _m, kind, args) = sargs let cont = LexCont.Token(args.ifdefStack, args.stringNest) - fin.Finish buf { kind with IsByteString = true } (enum(0)) cont + fin.Finish buf { kind with IsByteString = true } (LexerStringFinisherContext()) cont -//# 3031 "lex.fs" +//# 3192 "lex.fs" ) | 8 -> ( -//# 1257 "src/Compiler/lex.fsl" +//# 1306 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs let s = lexeme lexbuf addUnicodeString buf (if kind.IsInterpolated then s.[0..0] else s) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, m)) - else singleQuoteString sargs skip lexbuf -//# 3040 "lex.fs" + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) + else + singleQuoteString sargs skip lexbuf +//# 3203 "lex.fs" ) | 9 -> ( -//# 1264 "src/Compiler/lex.fsl" +//# 1315 "src/Compiler/lex.fsl" let (buf, fin, m, kind, args) = sargs if kind.IsInterpolated then // get a new range for where the fill starts let m2 = lexbuf.LexemeRange - args.stringNest <- (1, LexerStringStyle.SingleQuote, m2) :: args.stringNest + args.stringNest <- (1, LexerStringStyle.SingleQuote, args.interpolationDelimiterLength, m2) :: args.stringNest let cont = LexCont.Token(args.ifdefStack, args.stringNest) fin.Finish buf kind LexerStringFinisherContext.InterpolatedPart cont else addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, m)) - else singleQuoteString sargs skip lexbuf + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) + else + singleQuoteString sargs skip lexbuf -//# 3056 "lex.fs" +//# 3221 "lex.fs" ) | 10 -> ( -//# 1278 "src/Compiler/lex.fsl" +//# 1331 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs let result() = - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, m)) - else singleQuoteString sargs skip lexbuf + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) + else + singleQuoteString sargs skip lexbuf if kind.IsInterpolated then fail args lexbuf (FSComp.SR.lexRBraceInInterpolatedString()) (result()) else addUnicodeString buf (lexeme lexbuf) - (result()) - -//# 3070 "lex.fs" + (result()) +//# 3236 "lex.fs" ) | 11 -> ( -//# 1290 "src/Compiler/lex.fsl" +//# 1344 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs newline lexbuf addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, m)) - else singleQuoteString sargs skip lexbuf -//# 3079 "lex.fs" + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) + else + singleQuoteString sargs skip lexbuf +//# 3247 "lex.fs" ) | 12 -> ( -//# 1297 "src/Compiler/lex.fsl" +//# 1353 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, m)) - else singleQuoteString sargs skip lexbuf -//# 3087 "lex.fs" + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) + else + singleQuoteString sargs skip lexbuf +//# 3257 "lex.fs" ) | 13 -> ( -//# 1304 "src/Compiler/lex.fsl" +//# 1362 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, m)) - else singleQuoteString sargs skip lexbuf -//# 3095 "lex.fs" + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) + else + singleQuoteString sargs skip lexbuf +//# 3267 "lex.fs" ) | 14 -> ( -//# 1310 "src/Compiler/lex.fsl" +//# 1370 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, m)) - else singleQuoteString sargs skip lexbuf -//# 3103 "lex.fs" + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) + else + singleQuoteString sargs skip lexbuf +//# 3277 "lex.fs" ) | 15 -> ( -//# 1316 "src/Compiler/lex.fsl" +//# 1378 "src/Compiler/lex.fsl" let (_buf, _fin, m, kind, args) = sargs - EOF (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, m)) -//# 3109 "lex.fs" + EOF (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) +//# 3283 "lex.fs" ) | 16 -> ( -//# 1322 "src/Compiler/lex.fsl" +//# 1384 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, m)) - else singleQuoteString sargs skip lexbuf -//# 3117 "lex.fs" + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) + else + singleQuoteString sargs skip lexbuf +//# 3293 "lex.fs" ) | _ -> failwith "singleQuoteString" // Rule verbatimString -and verbatimString sargs skip lexbuf = - match _fslex_tables.Interpret(211,lexbuf) with +and verbatimString (sargs: LexerStringArgs) (skip: bool) lexbuf = + match _fslex_tables.Interpret(247,lexbuf) with | 0 -> ( -//# 1329 "src/Compiler/lex.fsl" +//# 1393 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs addByteChar buf '\"' - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, m)) - else verbatimString sargs skip lexbuf -//# 3129 "lex.fs" + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, args.interpolationDelimiterLength, m)) + else + verbatimString sargs skip lexbuf +//# 3307 "lex.fs" ) | 1 -> ( -//# 1335 "src/Compiler/lex.fsl" +//# 1401 "src/Compiler/lex.fsl" let (buf, fin, _m, kind, args) = sargs let cont = LexCont.Token(args.ifdefStack, args.stringNest) fin.Finish buf kind LexerStringFinisherContext.Verbatim cont -//# 3137 "lex.fs" +//# 3315 "lex.fs" ) | 2 -> ( -//# 1341 "src/Compiler/lex.fsl" +//# 1407 "src/Compiler/lex.fsl" let (buf, fin, _m, kind, args) = sargs let cont = LexCont.Token(args.ifdefStack, args.stringNest) fin.Finish buf { kind with IsByteString = true } LexerStringFinisherContext.Verbatim cont -//# 3145 "lex.fs" +//# 3323 "lex.fs" ) | 3 -> ( -//# 1347 "src/Compiler/lex.fsl" +//# 1413 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs newline lexbuf addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, m)) - else verbatimString sargs skip lexbuf -//# 3154 "lex.fs" + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, args.interpolationDelimiterLength, m)) + else + verbatimString sargs skip lexbuf +//# 3334 "lex.fs" ) | 4 -> ( -//# 1354 "src/Compiler/lex.fsl" +//# 1422 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs let s = lexeme lexbuf addUnicodeString buf (if kind.IsInterpolated then s.[0..0] else s) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, m)) - else verbatimString sargs skip lexbuf -//# 3163 "lex.fs" + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, args.interpolationDelimiterLength, m)) + else + verbatimString sargs skip lexbuf +//# 3345 "lex.fs" ) | 5 -> ( -//# 1361 "src/Compiler/lex.fsl" +//# 1431 "src/Compiler/lex.fsl" let (buf, fin, m, kind, args) = sargs if kind.IsInterpolated then // get a new range for where the fill starts let m2 = lexbuf.LexemeRange - args.stringNest <- (1, LexerStringStyle.Verbatim, m2) :: args.stringNest + args.stringNest <- (1, LexerStringStyle.Verbatim, args.interpolationDelimiterLength, m2) :: args.stringNest let cont = LexCont.Token(args.ifdefStack, args.stringNest) - fin.Finish buf kind (enum(3)) cont + fin.Finish buf kind (LexerStringFinisherContext.InterpolatedPart ||| LexerStringFinisherContext.Verbatim) cont else addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, m)) - else verbatimString sargs skip lexbuf + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, args.interpolationDelimiterLength, m)) + else + verbatimString sargs skip lexbuf -//# 3179 "lex.fs" +//# 3363 "lex.fs" ) | 6 -> ( -//# 1375 "src/Compiler/lex.fsl" +//# 1447 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs let result() = - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, m)) - else verbatimString sargs skip lexbuf + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, args.interpolationDelimiterLength, m)) + else + verbatimString sargs skip lexbuf if kind.IsInterpolated then fail args lexbuf (FSComp.SR.lexRBraceInInterpolatedString()) (result()) else addUnicodeString buf (lexeme lexbuf) (result()) -//# 3193 "lex.fs" +//# 3379 "lex.fs" ) | 7 -> ( -//# 1387 "src/Compiler/lex.fsl" +//# 1461 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, m)) - else verbatimString sargs skip lexbuf -//# 3201 "lex.fs" + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, args.interpolationDelimiterLength, m)) + else + verbatimString sargs skip lexbuf +//# 3389 "lex.fs" ) | 8 -> ( -//# 1394 "src/Compiler/lex.fsl" +//# 1470 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, m)) - else verbatimString sargs skip lexbuf -//# 3209 "lex.fs" + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, args.interpolationDelimiterLength, m)) + else + verbatimString sargs skip lexbuf +//# 3399 "lex.fs" ) | 9 -> ( -//# 1400 "src/Compiler/lex.fsl" +//# 1478 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, m)) - else verbatimString sargs skip lexbuf -//# 3217 "lex.fs" + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, args.interpolationDelimiterLength, m)) + else + verbatimString sargs skip lexbuf +//# 3409 "lex.fs" ) | 10 -> ( -//# 1406 "src/Compiler/lex.fsl" +//# 1486 "src/Compiler/lex.fsl" let (_buf, _fin, m, kind, args) = sargs - EOF (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, m)) -//# 3223 "lex.fs" + EOF (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, args.interpolationDelimiterLength, m)) +//# 3415 "lex.fs" ) | 11 -> ( -//# 1411 "src/Compiler/lex.fsl" +//# 1491 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, m)) - else verbatimString sargs skip lexbuf -//# 3231 "lex.fs" + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, args.interpolationDelimiterLength, m)) + else + verbatimString sargs skip lexbuf +//# 3425 "lex.fs" ) | _ -> failwith "verbatimString" // Rule tripleQuoteString -and tripleQuoteString sargs skip lexbuf = - match _fslex_tables.Interpret(178,lexbuf) with +and tripleQuoteString (sargs: LexerStringArgs) (skip: bool) lexbuf = + match _fslex_tables.Interpret(214,lexbuf) with | 0 -> ( -//# 1418 "src/Compiler/lex.fsl" +//# 1500 "src/Compiler/lex.fsl" let (buf, fin, _m, kind, args) = sargs + args.interpolationDelimiterLength <- 0 let cont = LexCont.Token(args.ifdefStack, args.stringNest) - fin.Finish buf kind (enum(4)) cont -//# 3242 "lex.fs" + fin.Finish buf kind LexerStringFinisherContext.TripleQuote cont +//# 3437 "lex.fs" ) | 1 -> ( -//# 1423 "src/Compiler/lex.fsl" +//# 1506 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs newline lexbuf addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, m)) - else tripleQuoteString sargs skip lexbuf -//# 3251 "lex.fs" + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, args.interpolationDelimiterLength, m)) + else + tripleQuoteString sargs skip lexbuf +//# 3448 "lex.fs" ) | 2 -> ( -//# 1431 "src/Compiler/lex.fsl" +//# 1516 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, m)) - else tripleQuoteString sargs skip lexbuf -//# 3259 "lex.fs" + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, args.interpolationDelimiterLength, m)) + else + tripleQuoteString sargs skip lexbuf +//# 3458 "lex.fs" ) | 3 -> ( -//# 1438 "src/Compiler/lex.fsl" +//# 1525 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, m)) - else tripleQuoteString sargs skip lexbuf -//# 3267 "lex.fs" + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, args.interpolationDelimiterLength, m)) + else + tripleQuoteString sargs skip lexbuf +//# 3468 "lex.fs" ) | 4 -> ( -//# 1444 "src/Compiler/lex.fsl" +//# 1533 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, m)) - else tripleQuoteString sargs skip lexbuf -//# 3275 "lex.fs" + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, args.interpolationDelimiterLength, m)) + else + tripleQuoteString sargs skip lexbuf +//# 3478 "lex.fs" ) | 5 -> ( -//# 1450 "src/Compiler/lex.fsl" +//# 1541 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs let s = lexeme lexbuf addUnicodeString buf (if kind.IsInterpolated then s.[0..0] else s) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, m)) - else tripleQuoteString sargs skip lexbuf -//# 3284 "lex.fs" + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, args.interpolationDelimiterLength, m)) + else + tripleQuoteString sargs skip lexbuf +//# 3489 "lex.fs" ) | 6 -> ( -//# 1457 "src/Compiler/lex.fsl" +//# 1550 "src/Compiler/lex.fsl" let (buf, fin, m, kind, args) = sargs if kind.IsInterpolated then // get a new range for where the fill starts let m2 = lexbuf.LexemeRange - args.stringNest <- (1, LexerStringStyle.TripleQuote, m2) :: args.stringNest + args.stringNest <- (1, LexerStringStyle.TripleQuote, args.interpolationDelimiterLength, m2) :: args.stringNest let cont = LexCont.Token(args.ifdefStack, args.stringNest) - fin.Finish buf kind (enum(5)) cont + fin.Finish buf kind (LexerStringFinisherContext.InterpolatedPart ||| LexerStringFinisherContext.TripleQuote) cont else addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, m)) - else tripleQuoteString sargs skip lexbuf + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, args.interpolationDelimiterLength, m)) + else + tripleQuoteString sargs skip lexbuf -//# 3300 "lex.fs" +//# 3507 "lex.fs" ) | 7 -> ( -//# 1471 "src/Compiler/lex.fsl" +//# 1566 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs let result() = - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, m)) - else tripleQuoteString sargs skip lexbuf + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, args.interpolationDelimiterLength, m)) + else + tripleQuoteString sargs skip lexbuf if kind.IsInterpolated then fail args lexbuf (FSComp.SR.lexRBraceInInterpolatedString()) (result()) else addUnicodeString buf (lexeme lexbuf) (result()) -//# 3314 "lex.fs" +//# 3523 "lex.fs" ) | 8 -> ( -//# 1483 "src/Compiler/lex.fsl" +//# 1580 "src/Compiler/lex.fsl" let (_buf, _fin, m, kind, args) = sargs - EOF (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, m)) -//# 3320 "lex.fs" + EOF (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, args.interpolationDelimiterLength, m)) +//# 3529 "lex.fs" ) | 9 -> ( -//# 1488 "src/Compiler/lex.fsl" +//# 1585 "src/Compiler/lex.fsl" let (buf, _fin, m, kind, args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, m)) - else tripleQuoteString sargs skip lexbuf -//# 3328 "lex.fs" + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, args.interpolationDelimiterLength, m)) + else + tripleQuoteString sargs skip lexbuf +//# 3539 "lex.fs" ) | _ -> failwith "tripleQuoteString" +// Rule extendedInterpolatedString +and extendedInterpolatedString (sargs: LexerStringArgs) (skip: bool) lexbuf = + match _fslex_tables.Interpret(178,lexbuf) with + | 0 -> ( +//# 1594 "src/Compiler/lex.fsl" + let (buf, fin, _m, kind, args) = sargs + args.interpolationDelimiterLength <- 0 + let cont = LexCont.Token(args.ifdefStack, args.stringNest) + fin.Finish buf kind LexerStringFinisherContext.TripleQuote cont +//# 3551 "lex.fs" + ) + | 1 -> ( +//# 1600 "src/Compiler/lex.fsl" + let (buf, _fin, m, kind, args) = sargs + newline lexbuf + addUnicodeString buf (lexeme lexbuf) + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.ExtendedInterpolated, kind, args.interpolationDelimiterLength, m)) + else + extendedInterpolatedString sargs skip lexbuf +//# 3562 "lex.fs" + ) + | 2 -> ( +//# 1613 "src/Compiler/lex.fsl" + let (buf, _fin, m, kind, args) = sargs + addUnicodeString buf (lexeme lexbuf) + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.ExtendedInterpolated, kind, args.interpolationDelimiterLength, m)) + else + extendedInterpolatedString sargs skip lexbuf +//# 3572 "lex.fs" + ) + | 3 -> ( +//# 1621 "src/Compiler/lex.fsl" + let (buf, _fin, m, kind, args) = sargs + let numPercents = lexeme lexbuf |> String.length + let result() = + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.ExtendedInterpolated, kind, args.interpolationDelimiterLength, m)) + else + extendedInterpolatedString sargs skip lexbuf + // interpolationDelimiterLength is number of $ chars prepended to opening quotes + // If number of consecutive % chars in content is equal to interpolationDelimiterLength, + // then that sequence is treated as a format specifier, + // as in $"""%3d{42}""" or (equivalent) $$"""%%3d{{42}}""". + // Any extra % chars up to interpolationDelimiterLength, are treated simply as regular string content. + // 2x interpolationDelimiterLength or more % chars in a sequence will result in an error. + let maxPercents = 2 * args.interpolationDelimiterLength - 1 + if numPercents > maxPercents then + let m2 = lexbuf.LexemeRange + let rest = result() + errorR(Error(FSComp.SR.lexTooManyPercentsInTripleQuote(), m2)) + rest + else + // Add two % chars for each % that is supposed to be treated as regular string content + // + 1 for a format specifier. + let percentsToEmit = + if numPercents < args.interpolationDelimiterLength then 2 * numPercents + else 2 * (numPercents - args.interpolationDelimiterLength) + 1 + let s = String.replicate percentsToEmit "%" + addUnicodeString buf s + result() +//# 3604 "lex.fs" + ) + | 4 -> ( +//# 1651 "src/Compiler/lex.fsl" + let (buf, fin, m, kind, args) = sargs + let numBraces = String.length (lexeme lexbuf) + // Extended interpolated strings starts with at least 2 $ + // Number of leading $s is the number of '{' needed to open interpolation expression (interpolationDelimiterLength) + // 2x interpolationDelimiterLength (or more) of '{' in a row would be unambiguous, so it's disallowed + let maxBraces = 2 * args.interpolationDelimiterLength - 1 + if numBraces > maxBraces then + let m2 = lexbuf.LexemeRange + args.stringNest <- (1, LexerStringStyle.ExtendedInterpolated, args.interpolationDelimiterLength, m2) :: args.stringNest + let cont = LexCont.Token(args.ifdefStack, args.stringNest) + fail args lexbuf + (FSComp.SR.lexTooManyLBracesInTripleQuote()) + (fin.Finish buf kind (LexerStringFinisherContext.InterpolatedPart ||| LexerStringFinisherContext.TripleQuote) cont) + elif numBraces < args.interpolationDelimiterLength then + // Less than interpolationDelimiterLength means we treat '{' as normal content + addUnicodeString buf (lexeme lexbuf) + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.ExtendedInterpolated, kind, args.interpolationDelimiterLength, m)) + else + extendedInterpolatedString sargs skip lexbuf + // numBraces in [interpolationDelimiterLength; maxBraces) + else + // A sequence of interpolationDelimiterLength * '{' starts interpolation expression. + // Any extra '{' are treated as normal string content. + let extraBraces = numBraces - args.interpolationDelimiterLength + if extraBraces > 0 then + String.replicate extraBraces "{" |> addUnicodeString buf + // get a new range for where the fill starts + let m2 = lexbuf.LexemeRange + args.stringNest <- (1, LexerStringStyle.ExtendedInterpolated, args.interpolationDelimiterLength, m2) :: args.stringNest + let cont = LexCont.Token(args.ifdefStack, args.stringNest) + fin.Finish buf kind (LexerStringFinisherContext.InterpolatedPart ||| LexerStringFinisherContext.TripleQuote) cont + +//# 3641 "lex.fs" + ) + | 5 -> ( +//# 1686 "src/Compiler/lex.fsl" + let (buf, _fin, m, kind, args) = sargs + let numBraces = lexeme lexbuf |> String.length + let result() = + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.ExtendedInterpolated, kind, args.interpolationDelimiterLength, m)) + else + extendedInterpolatedString sargs skip lexbuf + if args.interpolationDelimiterLength > numBraces then + lexeme lexbuf |> addUnicodeString buf + (result()) + else + fail args lexbuf (FSComp.SR.lexUnmatchedRBracesInTripleQuote()) (result()) + +//# 3658 "lex.fs" + ) + | 6 -> ( +//# 1701 "src/Compiler/lex.fsl" + let (_buf, _fin, m, kind, args) = sargs + EOF (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.ExtendedInterpolated, kind, args.interpolationDelimiterLength, m)) +//# 3664 "lex.fs" + ) + | 7 -> ( +//# 1706 "src/Compiler/lex.fsl" + let (buf, _fin, m, kind, args) = sargs + addUnicodeString buf (lexeme lexbuf) + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.ExtendedInterpolated, kind, args.interpolationDelimiterLength, m)) + else + extendedInterpolatedString sargs skip lexbuf +//# 3674 "lex.fs" + ) + | _ -> failwith "extendedInterpolatedString" // Rule singleLineComment -and singleLineComment cargs skip lexbuf = +and singleLineComment (cargs: SingleLineCommentArgs) (skip: bool) lexbuf = match _fslex_tables.Interpret(165,lexbuf) with | 0 -> ( -//# 1496 "src/Compiler/lex.fsl" +//# 1716 "src/Compiler/lex.fsl" let buff,_n, mStart, mEnd, args = cargs trySaveXmlDoc lexbuf buff newline lexbuf @@ -3341,90 +3687,90 @@ and singleLineComment cargs skip lexbuf = else if Option.isNone buff then LexbufCommentStore.SaveSingleLineComment(lexbuf, mStart, mEnd) token args skip lexbuf -//# 3344 "lex.fs" +//# 3690 "lex.fs" ) | 1 -> ( -//# 1506 "src/Compiler/lex.fsl" +//# 1726 "src/Compiler/lex.fsl" let buff, _n, mStart, mEnd, args = cargs trySaveXmlDoc lexbuf buff LexbufCommentStore.SaveSingleLineComment(lexbuf, mStart, mEnd) // NOTE: it is legal to end a file with this comment, so we'll return EOF as a token EOF (LexCont.Token(args.ifdefStack, args.stringNest)) -//# 3353 "lex.fs" +//# 3699 "lex.fs" ) | 2 -> ( -//# 1514 "src/Compiler/lex.fsl" +//# 1734 "src/Compiler/lex.fsl" let buff, n, m, _, args = cargs // Append the current token to the XML documentation if we're collecting it tryAppendXmlDoc buff (lexeme lexbuf) if not skip then LINE_COMMENT (LexCont.SingleLineComment(args.ifdefStack, args.stringNest, n, m)) else singleLineComment (buff, n, m, lexbuf.LexemeRange, args) skip lexbuf -//# 3362 "lex.fs" +//# 3708 "lex.fs" ) | 3 -> ( -//# 1521 "src/Compiler/lex.fsl" +//# 1741 "src/Compiler/lex.fsl" let _, _n, _mStart, _mEnd, args = cargs if not skip then LINE_COMMENT (LexCont.Token(args.ifdefStack, args.stringNest)) else token args skip lexbuf -//# 3369 "lex.fs" +//# 3715 "lex.fs" ) | _ -> failwith "singleLineComment" // Rule comment -and comment cargs skip lexbuf = +and comment (cargs: BlockCommentArgs) (skip: bool) lexbuf = match _fslex_tables.Interpret(139,lexbuf) with | 0 -> ( -//# 1528 "src/Compiler/lex.fsl" +//# 1748 "src/Compiler/lex.fsl" let n, m, args = cargs if not skip then COMMENT (LexCont.Comment(args.ifdefStack, args.stringNest, n, m)) else comment (n, m, args) skip lexbuf -//# 3380 "lex.fs" +//# 3726 "lex.fs" ) | 1 -> ( -//# 1533 "src/Compiler/lex.fsl" +//# 1753 "src/Compiler/lex.fsl" let n, m, args = cargs if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, n, m)) else stringInComment n m args skip lexbuf -//# 3387 "lex.fs" +//# 3733 "lex.fs" ) | 2 -> ( -//# 1538 "src/Compiler/lex.fsl" +//# 1758 "src/Compiler/lex.fsl" let n, m, args = cargs if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, n, m)) else tripleQuoteStringInComment n m args skip lexbuf -//# 3394 "lex.fs" +//# 3740 "lex.fs" ) | 3 -> ( -//# 1543 "src/Compiler/lex.fsl" +//# 1763 "src/Compiler/lex.fsl" let n, m, args = cargs if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, n, m)) else verbatimStringInComment n m args skip lexbuf -//# 3401 "lex.fs" +//# 3747 "lex.fs" ) | 4 -> ( -//# 1548 "src/Compiler/lex.fsl" +//# 1768 "src/Compiler/lex.fsl" let n, m, args = cargs LexbufLocalXmlDocStore.AddGrabPoint(lexbuf) if not skip then COMMENT (LexCont.Comment(args.ifdefStack, args.stringNest, n, m)) else comment cargs skip lexbuf -//# 3409 "lex.fs" +//# 3755 "lex.fs" ) | 5 -> ( -//# 1554 "src/Compiler/lex.fsl" +//# 1774 "src/Compiler/lex.fsl" let n, m, args = cargs if not skip then COMMENT (LexCont.Comment(args.ifdefStack, args.stringNest, n+1, m)) else comment (n+1,m,args) skip lexbuf -//# 3416 "lex.fs" +//# 3762 "lex.fs" ) | 6 -> ( -//# 1559 "src/Compiler/lex.fsl" +//# 1779 "src/Compiler/lex.fsl" let n, m, args = cargs newline lexbuf if not skip then COMMENT (LexCont.Comment(args.ifdefStack, args.stringNest, n, m)) else comment cargs skip lexbuf -//# 3424 "lex.fs" +//# 3770 "lex.fs" ) | 7 -> ( -//# 1564 "src/Compiler/lex.fsl" +//# 1784 "src/Compiler/lex.fsl" let n, m, args = cargs if n > 1 then @@ -3436,191 +3782,191 @@ and comment cargs skip lexbuf = else LexbufCommentStore.SaveBlockComment(lexbuf, m, lexbuf.LexemeRange) token args skip lexbuf -//# 3439 "lex.fs" +//# 3785 "lex.fs" ) | 8 -> ( -//# 1578 "src/Compiler/lex.fsl" +//# 1798 "src/Compiler/lex.fsl" let n, m, args = cargs if not skip then COMMENT (LexCont.Comment(args.ifdefStack, args.stringNest, n, m)) else comment cargs skip lexbuf -//# 3446 "lex.fs" +//# 3792 "lex.fs" ) | 9 -> ( -//# 1583 "src/Compiler/lex.fsl" +//# 1803 "src/Compiler/lex.fsl" let n, m, args = cargs EOF (LexCont.Comment(args.ifdefStack, args.stringNest, n, m)) -//# 3452 "lex.fs" +//# 3798 "lex.fs" ) | 10 -> ( -//# 1587 "src/Compiler/lex.fsl" +//# 1807 "src/Compiler/lex.fsl" let n, m, args = cargs if not skip then COMMENT (LexCont.Comment(args.ifdefStack, args.stringNest, n, m)) else comment (n, m, args) skip lexbuf -//# 3459 "lex.fs" +//# 3805 "lex.fs" ) | _ -> failwith "comment" // Rule stringInComment -and stringInComment n m args skip lexbuf = +and stringInComment (n: int) (m: range) (args: LexArgs) (skip: bool) lexbuf = match _fslex_tables.Interpret(90,lexbuf) with | 0 -> ( -//# 1594 "src/Compiler/lex.fsl" +//# 1814 "src/Compiler/lex.fsl" newline lexbuf if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, n, m)) else stringInComment n m args skip lexbuf -//# 3470 "lex.fs" +//# 3816 "lex.fs" ) | 1 -> ( -//# 1607 "src/Compiler/lex.fsl" +//# 1827 "src/Compiler/lex.fsl" if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, n, m)) else stringInComment n m args skip lexbuf -//# 3476 "lex.fs" +//# 3822 "lex.fs" ) | 2 -> ( -//# 1612 "src/Compiler/lex.fsl" +//# 1832 "src/Compiler/lex.fsl" if not skip then COMMENT (LexCont.Comment(args.ifdefStack, args.stringNest, n, m)) else comment (n, m, args) skip lexbuf -//# 3482 "lex.fs" +//# 3828 "lex.fs" ) | 3 -> ( -//# 1616 "src/Compiler/lex.fsl" +//# 1836 "src/Compiler/lex.fsl" newline lexbuf if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, n, m)) else stringInComment n m args skip lexbuf -//# 3489 "lex.fs" +//# 3835 "lex.fs" ) | 4 -> ( -//# 1621 "src/Compiler/lex.fsl" +//# 1841 "src/Compiler/lex.fsl" EOF (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, n, m)) -//# 3494 "lex.fs" +//# 3840 "lex.fs" ) | 5 -> ( -//# 1625 "src/Compiler/lex.fsl" +//# 1845 "src/Compiler/lex.fsl" if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, n, m)) else stringInComment n m args skip lexbuf -//# 3500 "lex.fs" +//# 3846 "lex.fs" ) | _ -> failwith "stringInComment" // Rule verbatimStringInComment -and verbatimStringInComment n m args skip lexbuf = +and verbatimStringInComment (n: int) (m: range) (args: LexArgs) (skip: bool) lexbuf = match _fslex_tables.Interpret(61,lexbuf) with | 0 -> ( -//# 1631 "src/Compiler/lex.fsl" +//# 1851 "src/Compiler/lex.fsl" if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, n, m)) else verbatimStringInComment n m args skip lexbuf -//# 3510 "lex.fs" +//# 3856 "lex.fs" ) | 1 -> ( -//# 1635 "src/Compiler/lex.fsl" +//# 1855 "src/Compiler/lex.fsl" if not skip then COMMENT (LexCont.Comment(args.ifdefStack, args.stringNest, n, m)) else comment (n, m, args) skip lexbuf -//# 3516 "lex.fs" +//# 3862 "lex.fs" ) | 2 -> ( -//# 1642 "src/Compiler/lex.fsl" +//# 1862 "src/Compiler/lex.fsl" if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, n, m)) else verbatimStringInComment n m args skip lexbuf -//# 3522 "lex.fs" +//# 3868 "lex.fs" ) | 3 -> ( -//# 1646 "src/Compiler/lex.fsl" +//# 1866 "src/Compiler/lex.fsl" newline lexbuf if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, n, m)) else verbatimStringInComment n m args skip lexbuf -//# 3529 "lex.fs" +//# 3875 "lex.fs" ) | 4 -> ( -//# 1651 "src/Compiler/lex.fsl" +//# 1871 "src/Compiler/lex.fsl" EOF (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, n, m)) -//# 3534 "lex.fs" +//# 3880 "lex.fs" ) | 5 -> ( -//# 1655 "src/Compiler/lex.fsl" +//# 1875 "src/Compiler/lex.fsl" if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, n, m)) else verbatimStringInComment n m args skip lexbuf -//# 3540 "lex.fs" +//# 3886 "lex.fs" ) | _ -> failwith "verbatimStringInComment" // Rule tripleQuoteStringInComment -and tripleQuoteStringInComment n m args skip lexbuf = +and tripleQuoteStringInComment (n: int) (m: range) (args: LexArgs) (skip: bool) lexbuf = match _fslex_tables.Interpret(31,lexbuf) with | 0 -> ( -//# 1661 "src/Compiler/lex.fsl" +//# 1881 "src/Compiler/lex.fsl" if not skip then COMMENT (LexCont.Comment(args.ifdefStack, args.stringNest, n, m)) else comment (n, m, args) skip lexbuf -//# 3550 "lex.fs" +//# 3896 "lex.fs" ) | 1 -> ( -//# 1668 "src/Compiler/lex.fsl" +//# 1888 "src/Compiler/lex.fsl" if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, n, m)) else tripleQuoteStringInComment n m args skip lexbuf -//# 3556 "lex.fs" +//# 3902 "lex.fs" ) | 2 -> ( -//# 1672 "src/Compiler/lex.fsl" +//# 1892 "src/Compiler/lex.fsl" newline lexbuf if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, n, m)) else tripleQuoteStringInComment n m args skip lexbuf -//# 3563 "lex.fs" +//# 3909 "lex.fs" ) | 3 -> ( -//# 1677 "src/Compiler/lex.fsl" +//# 1897 "src/Compiler/lex.fsl" EOF (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, n, m)) -//# 3568 "lex.fs" +//# 3914 "lex.fs" ) | 4 -> ( -//# 1681 "src/Compiler/lex.fsl" +//# 1901 "src/Compiler/lex.fsl" if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, n, m)) else tripleQuoteStringInComment n m args skip lexbuf -//# 3574 "lex.fs" +//# 3920 "lex.fs" ) | _ -> failwith "tripleQuoteStringInComment" // Rule mlOnly -and mlOnly m args skip lexbuf = +and mlOnly (m: range) (args: LexArgs) (skip: bool) lexbuf = match _fslex_tables.Interpret(0,lexbuf) with | 0 -> ( -//# 1687 "src/Compiler/lex.fsl" +//# 1907 "src/Compiler/lex.fsl" let buf = ByteBuffer.Create StringCapacity let m2 = lexbuf.LexemeRange let _ = singleQuoteString (buf, LexerStringFinisher.Default, m2, LexerStringKind.String, args) skip lexbuf if not skip then COMMENT (LexCont.MLOnly(args.ifdefStack, args.stringNest, m)) else mlOnly m args skip lexbuf -//# 3587 "lex.fs" +//# 3933 "lex.fs" ) | 1 -> ( -//# 1694 "src/Compiler/lex.fsl" +//# 1914 "src/Compiler/lex.fsl" newline lexbuf if not skip then COMMENT (LexCont.MLOnly(args.ifdefStack, args.stringNest, m)) else mlOnly m args skip lexbuf -//# 3594 "lex.fs" +//# 3940 "lex.fs" ) | 2 -> ( -//# 1699 "src/Compiler/lex.fsl" +//# 1919 "src/Compiler/lex.fsl" if not skip then COMMENT (LexCont.Token(args.ifdefStack, args.stringNest)) else token args skip lexbuf -//# 3600 "lex.fs" +//# 3946 "lex.fs" ) | 3 -> ( -//# 1703 "src/Compiler/lex.fsl" +//# 1923 "src/Compiler/lex.fsl" if not skip then COMMENT (LexCont.Token(args.ifdefStack, args.stringNest)) else token args skip lexbuf -//# 3606 "lex.fs" +//# 3952 "lex.fs" ) | 4 -> ( -//# 1707 "src/Compiler/lex.fsl" +//# 1927 "src/Compiler/lex.fsl" if not skip then COMMENT (LexCont.MLOnly(args.ifdefStack, args.stringNest, m)) else mlOnly m args skip lexbuf -//# 3612 "lex.fs" +//# 3958 "lex.fs" ) | 5 -> ( -//# 1711 "src/Compiler/lex.fsl" +//# 1931 "src/Compiler/lex.fsl" EOF (LexCont.MLOnly(args.ifdefStack, args.stringNest, m)) -//# 3617 "lex.fs" +//# 3963 "lex.fs" ) | 6 -> ( -//# 1715 "src/Compiler/lex.fsl" +//# 1935 "src/Compiler/lex.fsl" if not skip then COMMENT (LexCont.MLOnly(args.ifdefStack, args.stringNest, m)) else mlOnly m args skip lexbuf -//# 3623 "lex.fs" +//# 3969 "lex.fs" ) | _ -> failwith "mlOnly" diff --git a/src/fcs-fable/codegen/lex.fsi b/src/fcs-fable/codegen/lex.fsi new file mode 100644 index 0000000000..1c9bc90684 --- /dev/null +++ b/src/fcs-fable/codegen/lex.fsi @@ -0,0 +1,34 @@ +module internal FSharp.Compiler.Lexer + +open FSharp.Compiler.Lexhelp +open Internal.Utilities.Text.Lexing +open FSharp.Compiler.Parser +open FSharp.Compiler.Text +open FSharp.Compiler.ParseHelpers + +/// Rule token +val token: args: LexArgs -> skip: bool -> lexbuf: LexBuffer -> token +/// Rule ifdefSkip +val ifdefSkip: n: int -> m: range -> args: LexArgs -> skip: bool -> lexbuf: LexBuffer -> token +/// Rule endline +val endline: cont: LexerEndlineContinuation -> args: LexArgs -> skip: bool -> lexbuf: LexBuffer -> token +/// Rule singleQuoteString +val singleQuoteString: sargs: LexerStringArgs -> skip: bool -> lexbuf: LexBuffer -> token +/// Rule verbatimString +val verbatimString: sargs: LexerStringArgs -> skip: bool -> lexbuf: LexBuffer -> token +/// Rule tripleQuoteString +val tripleQuoteString: sargs: LexerStringArgs -> skip: bool -> lexbuf: LexBuffer -> token +/// Rule extendedInterpolatedString +val extendedInterpolatedString: sargs: LexerStringArgs -> skip: bool -> lexbuf: LexBuffer -> token +/// Rule singleLineComment +val singleLineComment: cargs: SingleLineCommentArgs -> skip: bool -> lexbuf: LexBuffer -> token +/// Rule comment +val comment: cargs: BlockCommentArgs -> skip: bool -> lexbuf: LexBuffer -> token +/// Rule stringInComment +val stringInComment: n: int -> m: range -> args: LexArgs -> skip: bool -> lexbuf: LexBuffer -> token +/// Rule verbatimStringInComment +val verbatimStringInComment: n: int -> m: range -> args: LexArgs -> skip: bool -> lexbuf: LexBuffer -> token +/// Rule tripleQuoteStringInComment +val tripleQuoteStringInComment: n: int -> m: range -> args: LexArgs -> skip: bool -> lexbuf: LexBuffer -> token +/// Rule mlOnly +val mlOnly: m: range -> args: LexArgs -> skip: bool -> lexbuf: LexBuffer -> token diff --git a/src/fcs-fable/codegen/pars.fs b/src/fcs-fable/codegen/pars.fs index f3d41b4c87..316c6f049e 100644 --- a/src/fcs-fable/codegen/pars.fs +++ b/src/fcs-fable/codegen/pars.fs @@ -3,6 +3,7 @@ module internal FSharp.Compiler.Parser #nowarn "64";; // turn off warnings that type variables used in production annotations are instantiated to concrete type open FSharp.Compiler open FSharp.Compiler.Syntax +open FSharp.Compiler.Text open Internal.Utilities.Text.Lexing open Internal.Utilities.Text.Parsing.ParseHelpers //# 3 "src/Compiler/pars.fsy" @@ -27,8 +28,6 @@ open FSharp.Compiler.Syntax open FSharp.Compiler.SyntaxTrivia open FSharp.Compiler.Syntax.PrettyNaming open FSharp.Compiler.SyntaxTreeOps -open FSharp.Compiler.SyntaxTreeOps -open FSharp.Compiler.Text open FSharp.Compiler.Text.Position open FSharp.Compiler.Text.Range open FSharp.Compiler.Xml @@ -39,7 +38,7 @@ let parse_error_rich = Some(fun (ctxt: ParseErrorContext<_>) -> errorR(SyntaxError(box ctxt, ctxt.ParseState.LexBuffer.LexemeRange))) -//# 42 "pars.fs" +//# 41 "pars.fs" // This type is the type of tokens accepted by the parser type token = | HASH_IF of (range * string * ParseHelpers.LexerContinuation) @@ -57,11 +56,11 @@ type token = | ODUMMY of (token) | FIXED | OINTERFACE_MEMBER - | OBLOCKEND | OBLOCKEND_COMING_SOON | OBLOCKEND_IS_HERE - | ORIGHT_BLOCK_END - | ODECLEND + | OBLOCKEND of (range) + | ORIGHT_BLOCK_END of (range) + | ODECLEND of (range) | OEND | OBLOCKSEP | OBLOCKBEGIN @@ -128,6 +127,7 @@ type token = | SEMICOLON | WHEN | WHILE + | WHILE_BANG | WITH | HASH | AMP @@ -261,9 +261,9 @@ type tokenId = | TOKEN_ODUMMY | TOKEN_FIXED | TOKEN_OINTERFACE_MEMBER - | TOKEN_OBLOCKEND | TOKEN_OBLOCKEND_COMING_SOON | TOKEN_OBLOCKEND_IS_HERE + | TOKEN_OBLOCKEND | TOKEN_ORIGHT_BLOCK_END | TOKEN_ODECLEND | TOKEN_OEND @@ -332,6 +332,7 @@ type tokenId = | TOKEN_SEMICOLON | TOKEN_WHEN | TOKEN_WHILE + | TOKEN_WHILE_BANG | TOKEN_WITH | TOKEN_HASH | TOKEN_AMP @@ -569,6 +570,7 @@ type nonTerminalId = | NONTERM_opt_explicitValTyparDecls | NONTERM_opt_typeConstraints | NONTERM_typeConstraints + | NONTERM_intersectionConstraints | NONTERM_typeConstraint | NONTERM_typeAlts | NONTERM_unionTypeRepr @@ -618,6 +620,7 @@ type nonTerminalId = | NONTERM_bindingPattern | NONTERM_simplePattern | NONTERM_simplePatternCommaList + | NONTERM_opt_simplePatterns | NONTERM_simplePatterns | NONTERM_headBindingPattern | NONTERM_tuplePatternElements @@ -644,6 +647,7 @@ type nonTerminalId = | NONTERM_recover | NONTERM_moreBinders | NONTERM_declExpr + | NONTERM_whileExprCore | NONTERM_dynamicArg | NONTERM_withClauses | NONTERM_withPatternClauses @@ -707,10 +711,12 @@ type nonTerminalId = | NONTERM_topTupleType | NONTERM_topTupleTypeElements | NONTERM_topAppType + | NONTERM_invalidUseOfAppTypeFunction | NONTERM_typ | NONTERM_typEOF | NONTERM_tupleType | NONTERM_tupleOrQuotTypeElements + | NONTERM_intersectionType | NONTERM_appTypeCon | NONTERM_appTypeConPower | NONTERM_appType @@ -796,11 +802,11 @@ let tagOfToken (t:token) = | ODUMMY _ -> 12 | FIXED -> 13 | OINTERFACE_MEMBER -> 14 - | OBLOCKEND -> 15 - | OBLOCKEND_COMING_SOON -> 16 - | OBLOCKEND_IS_HERE -> 17 - | ORIGHT_BLOCK_END -> 18 - | ODECLEND -> 19 + | OBLOCKEND_COMING_SOON -> 15 + | OBLOCKEND_IS_HERE -> 16 + | OBLOCKEND _ -> 17 + | ORIGHT_BLOCK_END _ -> 18 + | ODECLEND _ -> 19 | OEND -> 20 | OBLOCKSEP -> 21 | OBLOCKBEGIN -> 22 @@ -867,122 +873,123 @@ let tagOfToken (t:token) = | SEMICOLON -> 83 | WHEN -> 84 | WHILE -> 85 - | WITH -> 86 - | HASH -> 87 - | AMP -> 88 - | AMP_AMP -> 89 - | QUOTE -> 90 - | LPAREN -> 91 - | RPAREN -> 92 - | RPAREN_COMING_SOON -> 93 - | RPAREN_IS_HERE -> 94 - | STAR -> 95 - | COMMA -> 96 - | RARROW -> 97 - | GREATER_BAR_RBRACK -> 98 - | LPAREN_STAR_RPAREN -> 99 - | OPEN -> 100 - | OR -> 101 - | REC -> 102 - | THEN -> 103 - | TO -> 104 - | TRUE -> 105 - | TRY -> 106 - | TYPE -> 107 - | VAL -> 108 - | INLINE -> 109 - | INTERFACE -> 110 - | INSTANCE -> 111 - | CONST -> 112 - | LAZY -> 113 - | OLAZY -> 114 - | MATCH -> 115 - | MATCH_BANG -> 116 - | MUTABLE -> 117 - | NEW -> 118 - | OF -> 119 - | EXCEPTION -> 120 - | FALSE -> 121 - | FOR -> 122 - | FUN -> 123 - | FUNCTION -> 124 - | IF -> 125 - | IN -> 126 - | JOIN_IN -> 127 - | FINALLY -> 128 - | DO_BANG -> 129 - | AND -> 130 - | AS -> 131 - | ASSERT -> 132 - | OASSERT -> 133 - | ASR -> 134 - | BEGIN -> 135 - | DO -> 136 - | DONE -> 137 - | DOWNTO -> 138 - | ELSE -> 139 - | ELIF -> 140 - | END -> 141 - | DOT_DOT -> 142 - | DOT_DOT_HAT -> 143 - | BAR_BAR -> 144 - | UPCAST -> 145 - | DOWNCAST -> 146 - | NULL -> 147 - | RESERVED -> 148 - | MODULE -> 149 - | NAMESPACE -> 150 - | DELEGATE -> 151 - | CONSTRAINT -> 152 - | BASE -> 153 - | LQUOTE _ -> 154 - | RQUOTE _ -> 155 - | RQUOTE_DOT _ -> 156 - | PERCENT_OP _ -> 157 - | BINDER _ -> 158 - | LESS _ -> 159 - | GREATER _ -> 160 - | LET _ -> 161 - | YIELD _ -> 162 - | YIELD_BANG _ -> 163 - | AND_BANG _ -> 164 - | BIGNUM _ -> 165 - | DECIMAL _ -> 166 - | CHAR _ -> 167 - | IEEE64 _ -> 168 - | IEEE32 _ -> 169 - | UNATIVEINT _ -> 170 - | UINT64 _ -> 171 - | UINT32 _ -> 172 - | UINT16 _ -> 173 - | UINT8 _ -> 174 - | NATIVEINT _ -> 175 - | INT64 _ -> 176 - | INT32 _ -> 177 - | INT32_DOT_DOT _ -> 178 - | INT16 _ -> 179 - | INT8 _ -> 180 - | FUNKY_OPERATOR_NAME _ -> 181 - | ADJACENT_PREFIX_OP _ -> 182 - | PLUS_MINUS_OP _ -> 183 - | INFIX_AMP_OP _ -> 184 - | INFIX_STAR_DIV_MOD_OP _ -> 185 - | PREFIX_OP _ -> 186 - | INFIX_BAR_OP _ -> 187 - | INFIX_AT_HAT_OP _ -> 188 - | INFIX_COMPARE_OP _ -> 189 - | INFIX_STAR_STAR_OP _ -> 190 - | HASH_IDENT _ -> 191 - | IDENT _ -> 192 - | KEYWORD_STRING _ -> 193 - | LBRACE _ -> 194 - | RBRACE _ -> 195 - | INTERP_STRING_END _ -> 196 - | INTERP_STRING_PART _ -> 197 - | INTERP_STRING_BEGIN_PART _ -> 198 - | INTERP_STRING_BEGIN_END _ -> 199 - | STRING _ -> 200 - | BYTEARRAY _ -> 201 + | WHILE_BANG -> 86 + | WITH -> 87 + | HASH -> 88 + | AMP -> 89 + | AMP_AMP -> 90 + | QUOTE -> 91 + | LPAREN -> 92 + | RPAREN -> 93 + | RPAREN_COMING_SOON -> 94 + | RPAREN_IS_HERE -> 95 + | STAR -> 96 + | COMMA -> 97 + | RARROW -> 98 + | GREATER_BAR_RBRACK -> 99 + | LPAREN_STAR_RPAREN -> 100 + | OPEN -> 101 + | OR -> 102 + | REC -> 103 + | THEN -> 104 + | TO -> 105 + | TRUE -> 106 + | TRY -> 107 + | TYPE -> 108 + | VAL -> 109 + | INLINE -> 110 + | INTERFACE -> 111 + | INSTANCE -> 112 + | CONST -> 113 + | LAZY -> 114 + | OLAZY -> 115 + | MATCH -> 116 + | MATCH_BANG -> 117 + | MUTABLE -> 118 + | NEW -> 119 + | OF -> 120 + | EXCEPTION -> 121 + | FALSE -> 122 + | FOR -> 123 + | FUN -> 124 + | FUNCTION -> 125 + | IF -> 126 + | IN -> 127 + | JOIN_IN -> 128 + | FINALLY -> 129 + | DO_BANG -> 130 + | AND -> 131 + | AS -> 132 + | ASSERT -> 133 + | OASSERT -> 134 + | ASR -> 135 + | BEGIN -> 136 + | DO -> 137 + | DONE -> 138 + | DOWNTO -> 139 + | ELSE -> 140 + | ELIF -> 141 + | END -> 142 + | DOT_DOT -> 143 + | DOT_DOT_HAT -> 144 + | BAR_BAR -> 145 + | UPCAST -> 146 + | DOWNCAST -> 147 + | NULL -> 148 + | RESERVED -> 149 + | MODULE -> 150 + | NAMESPACE -> 151 + | DELEGATE -> 152 + | CONSTRAINT -> 153 + | BASE -> 154 + | LQUOTE _ -> 155 + | RQUOTE _ -> 156 + | RQUOTE_DOT _ -> 157 + | PERCENT_OP _ -> 158 + | BINDER _ -> 159 + | LESS _ -> 160 + | GREATER _ -> 161 + | LET _ -> 162 + | YIELD _ -> 163 + | YIELD_BANG _ -> 164 + | AND_BANG _ -> 165 + | BIGNUM _ -> 166 + | DECIMAL _ -> 167 + | CHAR _ -> 168 + | IEEE64 _ -> 169 + | IEEE32 _ -> 170 + | UNATIVEINT _ -> 171 + | UINT64 _ -> 172 + | UINT32 _ -> 173 + | UINT16 _ -> 174 + | UINT8 _ -> 175 + | NATIVEINT _ -> 176 + | INT64 _ -> 177 + | INT32 _ -> 178 + | INT32_DOT_DOT _ -> 179 + | INT16 _ -> 180 + | INT8 _ -> 181 + | FUNKY_OPERATOR_NAME _ -> 182 + | ADJACENT_PREFIX_OP _ -> 183 + | PLUS_MINUS_OP _ -> 184 + | INFIX_AMP_OP _ -> 185 + | INFIX_STAR_DIV_MOD_OP _ -> 186 + | PREFIX_OP _ -> 187 + | INFIX_BAR_OP _ -> 188 + | INFIX_AT_HAT_OP _ -> 189 + | INFIX_COMPARE_OP _ -> 190 + | INFIX_STAR_STAR_OP _ -> 191 + | HASH_IDENT _ -> 192 + | IDENT _ -> 193 + | KEYWORD_STRING _ -> 194 + | LBRACE _ -> 195 + | RBRACE _ -> 196 + | INTERP_STRING_END _ -> 197 + | INTERP_STRING_PART _ -> 198 + | INTERP_STRING_BEGIN_PART _ -> 199 + | INTERP_STRING_BEGIN_END _ -> 200 + | STRING _ -> 201 + | BYTEARRAY _ -> 202 // This function maps integer indexes to symbolic token ids let tokenTagToTokenId (tokenIdx:int) = @@ -1002,9 +1009,9 @@ let tokenTagToTokenId (tokenIdx:int) = | 12 -> TOKEN_ODUMMY | 13 -> TOKEN_FIXED | 14 -> TOKEN_OINTERFACE_MEMBER - | 15 -> TOKEN_OBLOCKEND - | 16 -> TOKEN_OBLOCKEND_COMING_SOON - | 17 -> TOKEN_OBLOCKEND_IS_HERE + | 15 -> TOKEN_OBLOCKEND_COMING_SOON + | 16 -> TOKEN_OBLOCKEND_IS_HERE + | 17 -> TOKEN_OBLOCKEND | 18 -> TOKEN_ORIGHT_BLOCK_END | 19 -> TOKEN_ODECLEND | 20 -> TOKEN_OEND @@ -1073,124 +1080,125 @@ let tokenTagToTokenId (tokenIdx:int) = | 83 -> TOKEN_SEMICOLON | 84 -> TOKEN_WHEN | 85 -> TOKEN_WHILE - | 86 -> TOKEN_WITH - | 87 -> TOKEN_HASH - | 88 -> TOKEN_AMP - | 89 -> TOKEN_AMP_AMP - | 90 -> TOKEN_QUOTE - | 91 -> TOKEN_LPAREN - | 92 -> TOKEN_RPAREN - | 93 -> TOKEN_RPAREN_COMING_SOON - | 94 -> TOKEN_RPAREN_IS_HERE - | 95 -> TOKEN_STAR - | 96 -> TOKEN_COMMA - | 97 -> TOKEN_RARROW - | 98 -> TOKEN_GREATER_BAR_RBRACK - | 99 -> TOKEN_LPAREN_STAR_RPAREN - | 100 -> TOKEN_OPEN - | 101 -> TOKEN_OR - | 102 -> TOKEN_REC - | 103 -> TOKEN_THEN - | 104 -> TOKEN_TO - | 105 -> TOKEN_TRUE - | 106 -> TOKEN_TRY - | 107 -> TOKEN_TYPE - | 108 -> TOKEN_VAL - | 109 -> TOKEN_INLINE - | 110 -> TOKEN_INTERFACE - | 111 -> TOKEN_INSTANCE - | 112 -> TOKEN_CONST - | 113 -> TOKEN_LAZY - | 114 -> TOKEN_OLAZY - | 115 -> TOKEN_MATCH - | 116 -> TOKEN_MATCH_BANG - | 117 -> TOKEN_MUTABLE - | 118 -> TOKEN_NEW - | 119 -> TOKEN_OF - | 120 -> TOKEN_EXCEPTION - | 121 -> TOKEN_FALSE - | 122 -> TOKEN_FOR - | 123 -> TOKEN_FUN - | 124 -> TOKEN_FUNCTION - | 125 -> TOKEN_IF - | 126 -> TOKEN_IN - | 127 -> TOKEN_JOIN_IN - | 128 -> TOKEN_FINALLY - | 129 -> TOKEN_DO_BANG - | 130 -> TOKEN_AND - | 131 -> TOKEN_AS - | 132 -> TOKEN_ASSERT - | 133 -> TOKEN_OASSERT - | 134 -> TOKEN_ASR - | 135 -> TOKEN_BEGIN - | 136 -> TOKEN_DO - | 137 -> TOKEN_DONE - | 138 -> TOKEN_DOWNTO - | 139 -> TOKEN_ELSE - | 140 -> TOKEN_ELIF - | 141 -> TOKEN_END - | 142 -> TOKEN_DOT_DOT - | 143 -> TOKEN_DOT_DOT_HAT - | 144 -> TOKEN_BAR_BAR - | 145 -> TOKEN_UPCAST - | 146 -> TOKEN_DOWNCAST - | 147 -> TOKEN_NULL - | 148 -> TOKEN_RESERVED - | 149 -> TOKEN_MODULE - | 150 -> TOKEN_NAMESPACE - | 151 -> TOKEN_DELEGATE - | 152 -> TOKEN_CONSTRAINT - | 153 -> TOKEN_BASE - | 154 -> TOKEN_LQUOTE - | 155 -> TOKEN_RQUOTE - | 156 -> TOKEN_RQUOTE_DOT - | 157 -> TOKEN_PERCENT_OP - | 158 -> TOKEN_BINDER - | 159 -> TOKEN_LESS - | 160 -> TOKEN_GREATER - | 161 -> TOKEN_LET - | 162 -> TOKEN_YIELD - | 163 -> TOKEN_YIELD_BANG - | 164 -> TOKEN_AND_BANG - | 165 -> TOKEN_BIGNUM - | 166 -> TOKEN_DECIMAL - | 167 -> TOKEN_CHAR - | 168 -> TOKEN_IEEE64 - | 169 -> TOKEN_IEEE32 - | 170 -> TOKEN_UNATIVEINT - | 171 -> TOKEN_UINT64 - | 172 -> TOKEN_UINT32 - | 173 -> TOKEN_UINT16 - | 174 -> TOKEN_UINT8 - | 175 -> TOKEN_NATIVEINT - | 176 -> TOKEN_INT64 - | 177 -> TOKEN_INT32 - | 178 -> TOKEN_INT32_DOT_DOT - | 179 -> TOKEN_INT16 - | 180 -> TOKEN_INT8 - | 181 -> TOKEN_FUNKY_OPERATOR_NAME - | 182 -> TOKEN_ADJACENT_PREFIX_OP - | 183 -> TOKEN_PLUS_MINUS_OP - | 184 -> TOKEN_INFIX_AMP_OP - | 185 -> TOKEN_INFIX_STAR_DIV_MOD_OP - | 186 -> TOKEN_PREFIX_OP - | 187 -> TOKEN_INFIX_BAR_OP - | 188 -> TOKEN_INFIX_AT_HAT_OP - | 189 -> TOKEN_INFIX_COMPARE_OP - | 190 -> TOKEN_INFIX_STAR_STAR_OP - | 191 -> TOKEN_HASH_IDENT - | 192 -> TOKEN_IDENT - | 193 -> TOKEN_KEYWORD_STRING - | 194 -> TOKEN_LBRACE - | 195 -> TOKEN_RBRACE - | 196 -> TOKEN_INTERP_STRING_END - | 197 -> TOKEN_INTERP_STRING_PART - | 198 -> TOKEN_INTERP_STRING_BEGIN_PART - | 199 -> TOKEN_INTERP_STRING_BEGIN_END - | 200 -> TOKEN_STRING - | 201 -> TOKEN_BYTEARRAY - | 204 -> TOKEN_end_of_input - | 202 -> TOKEN_error + | 86 -> TOKEN_WHILE_BANG + | 87 -> TOKEN_WITH + | 88 -> TOKEN_HASH + | 89 -> TOKEN_AMP + | 90 -> TOKEN_AMP_AMP + | 91 -> TOKEN_QUOTE + | 92 -> TOKEN_LPAREN + | 93 -> TOKEN_RPAREN + | 94 -> TOKEN_RPAREN_COMING_SOON + | 95 -> TOKEN_RPAREN_IS_HERE + | 96 -> TOKEN_STAR + | 97 -> TOKEN_COMMA + | 98 -> TOKEN_RARROW + | 99 -> TOKEN_GREATER_BAR_RBRACK + | 100 -> TOKEN_LPAREN_STAR_RPAREN + | 101 -> TOKEN_OPEN + | 102 -> TOKEN_OR + | 103 -> TOKEN_REC + | 104 -> TOKEN_THEN + | 105 -> TOKEN_TO + | 106 -> TOKEN_TRUE + | 107 -> TOKEN_TRY + | 108 -> TOKEN_TYPE + | 109 -> TOKEN_VAL + | 110 -> TOKEN_INLINE + | 111 -> TOKEN_INTERFACE + | 112 -> TOKEN_INSTANCE + | 113 -> TOKEN_CONST + | 114 -> TOKEN_LAZY + | 115 -> TOKEN_OLAZY + | 116 -> TOKEN_MATCH + | 117 -> TOKEN_MATCH_BANG + | 118 -> TOKEN_MUTABLE + | 119 -> TOKEN_NEW + | 120 -> TOKEN_OF + | 121 -> TOKEN_EXCEPTION + | 122 -> TOKEN_FALSE + | 123 -> TOKEN_FOR + | 124 -> TOKEN_FUN + | 125 -> TOKEN_FUNCTION + | 126 -> TOKEN_IF + | 127 -> TOKEN_IN + | 128 -> TOKEN_JOIN_IN + | 129 -> TOKEN_FINALLY + | 130 -> TOKEN_DO_BANG + | 131 -> TOKEN_AND + | 132 -> TOKEN_AS + | 133 -> TOKEN_ASSERT + | 134 -> TOKEN_OASSERT + | 135 -> TOKEN_ASR + | 136 -> TOKEN_BEGIN + | 137 -> TOKEN_DO + | 138 -> TOKEN_DONE + | 139 -> TOKEN_DOWNTO + | 140 -> TOKEN_ELSE + | 141 -> TOKEN_ELIF + | 142 -> TOKEN_END + | 143 -> TOKEN_DOT_DOT + | 144 -> TOKEN_DOT_DOT_HAT + | 145 -> TOKEN_BAR_BAR + | 146 -> TOKEN_UPCAST + | 147 -> TOKEN_DOWNCAST + | 148 -> TOKEN_NULL + | 149 -> TOKEN_RESERVED + | 150 -> TOKEN_MODULE + | 151 -> TOKEN_NAMESPACE + | 152 -> TOKEN_DELEGATE + | 153 -> TOKEN_CONSTRAINT + | 154 -> TOKEN_BASE + | 155 -> TOKEN_LQUOTE + | 156 -> TOKEN_RQUOTE + | 157 -> TOKEN_RQUOTE_DOT + | 158 -> TOKEN_PERCENT_OP + | 159 -> TOKEN_BINDER + | 160 -> TOKEN_LESS + | 161 -> TOKEN_GREATER + | 162 -> TOKEN_LET + | 163 -> TOKEN_YIELD + | 164 -> TOKEN_YIELD_BANG + | 165 -> TOKEN_AND_BANG + | 166 -> TOKEN_BIGNUM + | 167 -> TOKEN_DECIMAL + | 168 -> TOKEN_CHAR + | 169 -> TOKEN_IEEE64 + | 170 -> TOKEN_IEEE32 + | 171 -> TOKEN_UNATIVEINT + | 172 -> TOKEN_UINT64 + | 173 -> TOKEN_UINT32 + | 174 -> TOKEN_UINT16 + | 175 -> TOKEN_UINT8 + | 176 -> TOKEN_NATIVEINT + | 177 -> TOKEN_INT64 + | 178 -> TOKEN_INT32 + | 179 -> TOKEN_INT32_DOT_DOT + | 180 -> TOKEN_INT16 + | 181 -> TOKEN_INT8 + | 182 -> TOKEN_FUNKY_OPERATOR_NAME + | 183 -> TOKEN_ADJACENT_PREFIX_OP + | 184 -> TOKEN_PLUS_MINUS_OP + | 185 -> TOKEN_INFIX_AMP_OP + | 186 -> TOKEN_INFIX_STAR_DIV_MOD_OP + | 187 -> TOKEN_PREFIX_OP + | 188 -> TOKEN_INFIX_BAR_OP + | 189 -> TOKEN_INFIX_AT_HAT_OP + | 190 -> TOKEN_INFIX_COMPARE_OP + | 191 -> TOKEN_INFIX_STAR_STAR_OP + | 192 -> TOKEN_HASH_IDENT + | 193 -> TOKEN_IDENT + | 194 -> TOKEN_KEYWORD_STRING + | 195 -> TOKEN_LBRACE + | 196 -> TOKEN_RBRACE + | 197 -> TOKEN_INTERP_STRING_END + | 198 -> TOKEN_INTERP_STRING_PART + | 199 -> TOKEN_INTERP_STRING_BEGIN_PART + | 200 -> TOKEN_INTERP_STRING_BEGIN_END + | 201 -> TOKEN_STRING + | 202 -> TOKEN_BYTEARRAY + | 205 -> TOKEN_end_of_input + | 203 -> TOKEN_error | _ -> failwith "tokenTagToTokenId: bad token" /// This function maps production indexes returned in syntax errors to strings representing the non terminal that would be produced by that production @@ -1230,565 +1238,565 @@ let prodIdxToNonTerminal (prodIdx:int) = | 31 -> NONTERM_signatureFile | 32 -> NONTERM_signatureFile | 33 -> NONTERM_moduleIntro - | 34 -> NONTERM_namespaceIntro - | 35 -> NONTERM_fileNamespaceSpecs - | 36 -> NONTERM_fileNamespaceSpecs - | 37 -> NONTERM_fileNamespaceSpecList - | 38 -> NONTERM_fileNamespaceSpecList - | 39 -> NONTERM_fileNamespaceSpec - | 40 -> NONTERM_fileModuleSpec - | 41 -> NONTERM_fileModuleSpec - | 42 -> NONTERM_moduleSpfnsPossiblyEmptyBlock - | 43 -> NONTERM_moduleSpfnsPossiblyEmptyBlock - | 44 -> NONTERM_moduleSpfnsPossiblyEmptyBlock + | 34 -> NONTERM_moduleIntro + | 35 -> NONTERM_moduleIntro + | 36 -> NONTERM_namespaceIntro + | 37 -> NONTERM_namespaceIntro + | 38 -> NONTERM_fileNamespaceSpecs + | 39 -> NONTERM_fileNamespaceSpecs + | 40 -> NONTERM_fileNamespaceSpecList + | 41 -> NONTERM_fileNamespaceSpecList + | 42 -> NONTERM_fileNamespaceSpec + | 43 -> NONTERM_fileModuleSpec + | 44 -> NONTERM_fileModuleSpec | 45 -> NONTERM_moduleSpfnsPossiblyEmptyBlock - | 46 -> NONTERM_moduleSpfnsPossiblyEmpty - | 47 -> NONTERM_moduleSpfnsPossiblyEmpty - | 48 -> NONTERM_moduleSpfnsPossiblyEmpty - | 49 -> NONTERM_moduleSpfns - | 50 -> NONTERM_moduleSpfns - | 51 -> NONTERM_moduleSpfns - | 52 -> NONTERM_moduleSpfn - | 53 -> NONTERM_moduleSpfn - | 54 -> NONTERM_moduleSpfn + | 46 -> NONTERM_moduleSpfnsPossiblyEmptyBlock + | 47 -> NONTERM_moduleSpfnsPossiblyEmptyBlock + | 48 -> NONTERM_moduleSpfnsPossiblyEmptyBlock + | 49 -> NONTERM_moduleSpfnsPossiblyEmpty + | 50 -> NONTERM_moduleSpfnsPossiblyEmpty + | 51 -> NONTERM_moduleSpfnsPossiblyEmpty + | 52 -> NONTERM_moduleSpfns + | 53 -> NONTERM_moduleSpfns + | 54 -> NONTERM_moduleSpfns | 55 -> NONTERM_moduleSpfn | 56 -> NONTERM_moduleSpfn | 57 -> NONTERM_moduleSpfn | 58 -> NONTERM_moduleSpfn | 59 -> NONTERM_moduleSpfn - | 60 -> NONTERM_valSpfn - | 61 -> NONTERM_optLiteralValueSpfn - | 62 -> NONTERM_optLiteralValueSpfn - | 63 -> NONTERM_optLiteralValueSpfn - | 64 -> NONTERM_moduleSpecBlock - | 65 -> NONTERM_moduleSpecBlock - | 66 -> NONTERM_moduleSpecBlock - | 67 -> NONTERM_tyconSpfnList - | 68 -> NONTERM_tyconSpfnList - | 69 -> NONTERM_tyconSpfn - | 70 -> NONTERM_tyconSpfn - | 71 -> NONTERM_tyconSpfnRhsBlock - | 72 -> NONTERM_tyconSpfnRhsBlock - | 73 -> NONTERM_tyconSpfnRhs - | 74 -> NONTERM_tyconSpfnRhs - | 75 -> NONTERM_tyconSpfnRhs - | 76 -> NONTERM_tyconClassSpfn - | 77 -> NONTERM_tyconClassSpfn - | 78 -> NONTERM_tyconClassSpfn + | 60 -> NONTERM_moduleSpfn + | 61 -> NONTERM_moduleSpfn + | 62 -> NONTERM_moduleSpfn + | 63 -> NONTERM_valSpfn + | 64 -> NONTERM_optLiteralValueSpfn + | 65 -> NONTERM_optLiteralValueSpfn + | 66 -> NONTERM_optLiteralValueSpfn + | 67 -> NONTERM_moduleSpecBlock + | 68 -> NONTERM_moduleSpecBlock + | 69 -> NONTERM_moduleSpecBlock + | 70 -> NONTERM_tyconSpfnList + | 71 -> NONTERM_tyconSpfnList + | 72 -> NONTERM_tyconSpfn + | 73 -> NONTERM_tyconSpfn + | 74 -> NONTERM_tyconSpfnRhsBlock + | 75 -> NONTERM_tyconSpfnRhsBlock + | 76 -> NONTERM_tyconSpfnRhs + | 77 -> NONTERM_tyconSpfnRhs + | 78 -> NONTERM_tyconSpfnRhs | 79 -> NONTERM_tyconClassSpfn - | 80 -> NONTERM_classSpfnBlockKindUnspecified - | 81 -> NONTERM_classSpfnBlockKindUnspecified - | 82 -> NONTERM_classSpfnBlockKindUnspecified + | 80 -> NONTERM_tyconClassSpfn + | 81 -> NONTERM_tyconClassSpfn + | 82 -> NONTERM_tyconClassSpfn | 83 -> NONTERM_classSpfnBlockKindUnspecified - | 84 -> NONTERM_classSpfnBlock - | 85 -> NONTERM_classSpfnBlock - | 86 -> NONTERM_classSpfnBlock - | 87 -> NONTERM_classSpfnMembers - | 88 -> NONTERM_classSpfnMembers - | 89 -> NONTERM_classSpfnMembersAtLeastOne - | 90 -> NONTERM_classMemberSpfn - | 91 -> NONTERM_classMemberSpfn - | 92 -> NONTERM_classMemberSpfn + | 84 -> NONTERM_classSpfnBlockKindUnspecified + | 85 -> NONTERM_classSpfnBlockKindUnspecified + | 86 -> NONTERM_classSpfnBlockKindUnspecified + | 87 -> NONTERM_classSpfnBlock + | 88 -> NONTERM_classSpfnBlock + | 89 -> NONTERM_classSpfnBlock + | 90 -> NONTERM_classSpfnMembers + | 91 -> NONTERM_classSpfnMembers + | 92 -> NONTERM_classSpfnMembersAtLeastOne | 93 -> NONTERM_classMemberSpfn | 94 -> NONTERM_classMemberSpfn | 95 -> NONTERM_classMemberSpfn | 96 -> NONTERM_classMemberSpfn - | 97 -> NONTERM_classMemberSpfnGetSet - | 98 -> NONTERM_classMemberSpfnGetSet - | 99 -> NONTERM_classMemberSpfnGetSet - | 100 -> NONTERM_classMemberSpfnGetSet - | 101 -> NONTERM_classMemberSpfnGetSetElements - | 102 -> NONTERM_classMemberSpfnGetSetElements - | 103 -> NONTERM_memberSpecFlags - | 104 -> NONTERM_memberSpecFlags - | 105 -> NONTERM_exconSpfn - | 106 -> NONTERM_opt_classSpfn - | 107 -> NONTERM_opt_classSpfn - | 108 -> NONTERM_implementationFile - | 109 -> NONTERM_implementationFile - | 110 -> NONTERM_implementationFile - | 111 -> NONTERM_fileNamespaceImpls - | 112 -> NONTERM_fileNamespaceImpls - | 113 -> NONTERM_fileNamespaceImplList - | 114 -> NONTERM_fileNamespaceImplList - | 115 -> NONTERM_fileNamespaceImpl - | 116 -> NONTERM_fileModuleImpl - | 117 -> NONTERM_fileModuleImpl - | 118 -> NONTERM_moduleDefnsOrExprPossiblyEmptyOrBlock - | 119 -> NONTERM_moduleDefnsOrExprPossiblyEmptyOrBlock - | 120 -> NONTERM_moduleDefnsOrExprPossiblyEmptyOrBlock - | 121 -> NONTERM_moduleDefnsOrExprPossiblyEmptyOrBlock - | 122 -> NONTERM_moduleDefnsOrExprPossiblyEmpty - | 123 -> NONTERM_moduleDefnsOrExprPossiblyEmpty - | 124 -> NONTERM_moduleDefnsOrExpr - | 125 -> NONTERM_moduleDefnsOrExpr - | 126 -> NONTERM_moduleDefnsOrExpr - | 127 -> NONTERM_moduleDefnsOrExpr - | 128 -> NONTERM_moduleDefnsOrExpr - | 129 -> NONTERM_moduleDefns - | 130 -> NONTERM_moduleDefns - | 131 -> NONTERM_moduleDefns - | 132 -> NONTERM_moduleDefns - | 133 -> NONTERM_moduleDefns - | 134 -> NONTERM_moduleDefnOrDirective - | 135 -> NONTERM_moduleDefnOrDirective - | 136 -> NONTERM_moduleDefn - | 137 -> NONTERM_moduleDefn - | 138 -> NONTERM_moduleDefn - | 139 -> NONTERM_moduleDefn - | 140 -> NONTERM_moduleDefn - | 141 -> NONTERM_moduleDefn + | 97 -> NONTERM_classMemberSpfn + | 98 -> NONTERM_classMemberSpfn + | 99 -> NONTERM_classMemberSpfn + | 100 -> NONTERM_classMemberSpfn + | 101 -> NONTERM_classMemberSpfnGetSet + | 102 -> NONTERM_classMemberSpfnGetSet + | 103 -> NONTERM_classMemberSpfnGetSet + | 104 -> NONTERM_classMemberSpfnGetSet + | 105 -> NONTERM_classMemberSpfnGetSetElements + | 106 -> NONTERM_classMemberSpfnGetSetElements + | 107 -> NONTERM_classMemberSpfnGetSetElements + | 108 -> NONTERM_classMemberSpfnGetSetElements + | 109 -> NONTERM_memberSpecFlags + | 110 -> NONTERM_memberSpecFlags + | 111 -> NONTERM_exconSpfn + | 112 -> NONTERM_opt_classSpfn + | 113 -> NONTERM_opt_classSpfn + | 114 -> NONTERM_implementationFile + | 115 -> NONTERM_implementationFile + | 116 -> NONTERM_implementationFile + | 117 -> NONTERM_fileNamespaceImpls + | 118 -> NONTERM_fileNamespaceImpls + | 119 -> NONTERM_fileNamespaceImplList + | 120 -> NONTERM_fileNamespaceImplList + | 121 -> NONTERM_fileNamespaceImpl + | 122 -> NONTERM_fileModuleImpl + | 123 -> NONTERM_fileModuleImpl + | 124 -> NONTERM_moduleDefnsOrExprPossiblyEmptyOrBlock + | 125 -> NONTERM_moduleDefnsOrExprPossiblyEmptyOrBlock + | 126 -> NONTERM_moduleDefnsOrExprPossiblyEmptyOrBlock + | 127 -> NONTERM_moduleDefnsOrExprPossiblyEmptyOrBlock + | 128 -> NONTERM_moduleDefnsOrExprPossiblyEmpty + | 129 -> NONTERM_moduleDefnsOrExprPossiblyEmpty + | 130 -> NONTERM_moduleDefnsOrExpr + | 131 -> NONTERM_moduleDefnsOrExpr + | 132 -> NONTERM_moduleDefnsOrExpr + | 133 -> NONTERM_moduleDefnsOrExpr + | 134 -> NONTERM_moduleDefnsOrExpr + | 135 -> NONTERM_moduleDefns + | 136 -> NONTERM_moduleDefns + | 137 -> NONTERM_moduleDefns + | 138 -> NONTERM_moduleDefns + | 139 -> NONTERM_moduleDefns + | 140 -> NONTERM_moduleDefnOrDirective + | 141 -> NONTERM_moduleDefnOrDirective | 142 -> NONTERM_moduleDefn | 143 -> NONTERM_moduleDefn | 144 -> NONTERM_moduleDefn - | 145 -> NONTERM_openDecl - | 146 -> NONTERM_openDecl - | 147 -> NONTERM_namedModuleAbbrevBlock - | 148 -> NONTERM_namedModuleAbbrevBlock - | 149 -> NONTERM_namedModuleDefnBlock - | 150 -> NONTERM_namedModuleDefnBlock - | 151 -> NONTERM_namedModuleDefnBlock - | 152 -> NONTERM_namedModuleDefnBlock - | 153 -> NONTERM_namedModuleDefnBlock - | 154 -> NONTERM_namedModuleDefnBlock - | 155 -> NONTERM_namedModuleDefnBlock - | 156 -> NONTERM_wrappedNamedModuleDefn - | 157 -> NONTERM_wrappedNamedModuleDefn - | 158 -> NONTERM_wrappedNamedModuleDefn - | 159 -> NONTERM_tyconDefnAugmentation - | 160 -> NONTERM_opt_attributes - | 161 -> NONTERM_opt_attributes - | 162 -> NONTERM_attributes - | 163 -> NONTERM_attributes - | 164 -> NONTERM_attributeList - | 165 -> NONTERM_attributeList - | 166 -> NONTERM_attributeList - | 167 -> NONTERM_attributeList - | 168 -> NONTERM_attributeListElements - | 169 -> NONTERM_attributeListElements - | 170 -> NONTERM_attribute - | 171 -> NONTERM_attribute - | 172 -> NONTERM_attribute - | 173 -> NONTERM_attributeTarget - | 174 -> NONTERM_attributeTarget - | 175 -> NONTERM_attributeTarget - | 176 -> NONTERM_attributeTarget - | 177 -> NONTERM_memberFlags - | 178 -> NONTERM_memberFlags - | 179 -> NONTERM_memberFlags - | 180 -> NONTERM_memberFlags - | 181 -> NONTERM_typeNameInfo - | 182 -> NONTERM_tyconDefnList - | 183 -> NONTERM_tyconDefnList - | 184 -> NONTERM_tyconDefn - | 185 -> NONTERM_tyconDefn - | 186 -> NONTERM_tyconDefn - | 187 -> NONTERM_tyconDefn - | 188 -> NONTERM_tyconDefnRhsBlock - | 189 -> NONTERM_tyconDefnRhsBlock - | 190 -> NONTERM_tyconDefnRhsBlock - | 191 -> NONTERM_tyconDefnRhs - | 192 -> NONTERM_tyconDefnRhs - | 193 -> NONTERM_tyconDefnRhs - | 194 -> NONTERM_tyconClassDefn - | 195 -> NONTERM_tyconClassDefn - | 196 -> NONTERM_tyconClassDefn - | 197 -> NONTERM_tyconClassDefn - | 198 -> NONTERM_classDefnBlockKindUnspecified - | 199 -> NONTERM_classDefnBlockKindUnspecified - | 200 -> NONTERM_classDefnBlock - | 201 -> NONTERM_classDefnBlock - | 202 -> NONTERM_classDefnBlock - | 203 -> NONTERM_classDefnMembers - | 204 -> NONTERM_classDefnMembers - | 205 -> NONTERM_classDefnMembers - | 206 -> NONTERM_classDefnMembersAtLeastOne - | 207 -> NONTERM_classDefnMemberGetSet - | 208 -> NONTERM_classDefnMemberGetSet - | 209 -> NONTERM_classDefnMemberGetSet - | 210 -> NONTERM_classDefnMemberGetSetElements - | 211 -> NONTERM_classDefnMemberGetSetElements - | 212 -> NONTERM_classDefnMemberGetSetElement - | 213 -> NONTERM_memberCore - | 214 -> NONTERM_memberCore - | 215 -> NONTERM_abstractMemberFlags - | 216 -> NONTERM_abstractMemberFlags - | 217 -> NONTERM_abstractMemberFlags - | 218 -> NONTERM_abstractMemberFlags - | 219 -> NONTERM_classDefnMember - | 220 -> NONTERM_classDefnMember - | 221 -> NONTERM_classDefnMember - | 222 -> NONTERM_classDefnMember - | 223 -> NONTERM_classDefnMember - | 224 -> NONTERM_classDefnMember - | 225 -> NONTERM_classDefnMember - | 226 -> NONTERM_classDefnMember - | 227 -> NONTERM_classDefnMember - | 228 -> NONTERM_classDefnMember - | 229 -> NONTERM_classDefnMember - | 230 -> NONTERM_valDefnDecl - | 231 -> NONTERM_autoPropsDefnDecl - | 232 -> NONTERM_opt_typ - | 233 -> NONTERM_opt_typ - | 234 -> NONTERM_atomicPatternLongIdent - | 235 -> NONTERM_atomicPatternLongIdent - | 236 -> NONTERM_atomicPatternLongIdent - | 237 -> NONTERM_atomicPatternLongIdent - | 238 -> NONTERM_atomicPatternLongIdent - | 239 -> NONTERM_opt_access - | 240 -> NONTERM_opt_access - | 241 -> NONTERM_access - | 242 -> NONTERM_access - | 243 -> NONTERM_access - | 244 -> NONTERM_opt_interfaceImplDefn - | 245 -> NONTERM_opt_interfaceImplDefn - | 246 -> NONTERM_opt_interfaceImplDefn - | 247 -> NONTERM_opt_classDefn - | 248 -> NONTERM_opt_classDefn - | 249 -> NONTERM_inheritsDefn - | 250 -> NONTERM_inheritsDefn - | 251 -> NONTERM_inheritsDefn - | 252 -> NONTERM_optAsSpec - | 253 -> NONTERM_optAsSpec - | 254 -> NONTERM_asSpec - | 255 -> NONTERM_optBaseSpec - | 256 -> NONTERM_optBaseSpec - | 257 -> NONTERM_baseSpec - | 258 -> NONTERM_baseSpec - | 259 -> NONTERM_objectImplementationBlock - | 260 -> NONTERM_objectImplementationBlock - | 261 -> NONTERM_objectImplementationBlock - | 262 -> NONTERM_objectImplementationMembers - | 263 -> NONTERM_objectImplementationMembers - | 264 -> NONTERM_objectImplementationMember - | 265 -> NONTERM_objectImplementationMember - | 266 -> NONTERM_objectImplementationMember - | 267 -> NONTERM_objectImplementationMember - | 268 -> NONTERM_staticMemberOrMemberOrOverride - | 269 -> NONTERM_staticMemberOrMemberOrOverride - | 270 -> NONTERM_staticMemberOrMemberOrOverride - | 271 -> NONTERM_tyconDefnOrSpfnSimpleRepr - | 272 -> NONTERM_tyconDefnOrSpfnSimpleRepr - | 273 -> NONTERM_tyconDefnOrSpfnSimpleRepr - | 274 -> NONTERM_tyconDefnOrSpfnSimpleRepr - | 275 -> NONTERM_tyconDefnOrSpfnSimpleRepr - | 276 -> NONTERM_braceFieldDeclList - | 277 -> NONTERM_braceFieldDeclList - | 278 -> NONTERM_braceFieldDeclList - | 279 -> NONTERM_anonRecdType - | 280 -> NONTERM_anonRecdType - | 281 -> NONTERM_braceBarFieldDeclListCore - | 282 -> NONTERM_braceBarFieldDeclListCore - | 283 -> NONTERM_braceBarFieldDeclListCore - | 284 -> NONTERM_classOrInterfaceOrStruct - | 285 -> NONTERM_classOrInterfaceOrStruct - | 286 -> NONTERM_classOrInterfaceOrStruct - | 287 -> NONTERM_interfaceMember - | 288 -> NONTERM_interfaceMember - | 289 -> NONTERM_tyconNameAndTyparDecls - | 290 -> NONTERM_tyconNameAndTyparDecls - | 291 -> NONTERM_tyconNameAndTyparDecls - | 292 -> NONTERM_prefixTyparDecls - | 293 -> NONTERM_prefixTyparDecls - | 294 -> NONTERM_typarDeclList - | 295 -> NONTERM_typarDeclList - | 296 -> NONTERM_typarDecl - | 297 -> NONTERM_postfixTyparDecls - | 298 -> NONTERM_explicitValTyparDeclsCore - | 299 -> NONTERM_explicitValTyparDeclsCore - | 300 -> NONTERM_explicitValTyparDeclsCore - | 301 -> NONTERM_explicitValTyparDecls - | 302 -> NONTERM_opt_explicitValTyparDecls - | 303 -> NONTERM_opt_explicitValTyparDecls - | 304 -> NONTERM_opt_typeConstraints - | 305 -> NONTERM_opt_typeConstraints - | 306 -> NONTERM_typeConstraints - | 307 -> NONTERM_typeConstraints - | 308 -> NONTERM_typeConstraint - | 309 -> NONTERM_typeConstraint - | 310 -> NONTERM_typeConstraint - | 311 -> NONTERM_typeConstraint - | 312 -> NONTERM_typeConstraint - | 313 -> NONTERM_typeConstraint - | 314 -> NONTERM_typeConstraint - | 315 -> NONTERM_typeConstraint - | 316 -> NONTERM_typeConstraint - | 317 -> NONTERM_typeConstraint - | 318 -> NONTERM_typeConstraint - | 319 -> NONTERM_typeAlts - | 320 -> NONTERM_typeAlts - | 321 -> NONTERM_unionTypeRepr - | 322 -> NONTERM_unionTypeRepr - | 323 -> NONTERM_unionTypeRepr - | 324 -> NONTERM_barAndgrabXmlDoc - | 325 -> NONTERM_attrUnionCaseDecls - | 326 -> NONTERM_attrUnionCaseDecls - | 327 -> NONTERM_attrUnionCaseDecl - | 328 -> NONTERM_attrUnionCaseDecl - | 329 -> NONTERM_attrUnionCaseDecl - | 330 -> NONTERM_attrUnionCaseDecl - | 331 -> NONTERM_attrUnionCaseDecl - | 332 -> NONTERM_attrUnionCaseDecl - | 333 -> NONTERM_attrUnionCaseDecl - | 334 -> NONTERM_attrUnionCaseDecl - | 335 -> NONTERM_unionCaseName - | 336 -> NONTERM_unionCaseName - | 337 -> NONTERM_unionCaseName - | 338 -> NONTERM_firstUnionCaseDeclOfMany - | 339 -> NONTERM_firstUnionCaseDeclOfMany - | 340 -> NONTERM_firstUnionCaseDeclOfMany - | 341 -> NONTERM_firstUnionCaseDecl - | 342 -> NONTERM_firstUnionCaseDecl - | 343 -> NONTERM_firstUnionCaseDecl - | 344 -> NONTERM_firstUnionCaseDecl - | 345 -> NONTERM_unionCaseReprElements - | 346 -> NONTERM_unionCaseReprElements - | 347 -> NONTERM_unionCaseReprElement - | 348 -> NONTERM_unionCaseReprElement - | 349 -> NONTERM_unionCaseRepr - | 350 -> NONTERM_unionCaseRepr - | 351 -> NONTERM_recdFieldDeclList - | 352 -> NONTERM_recdFieldDeclList - | 353 -> NONTERM_recdFieldDecl - | 354 -> NONTERM_fieldDecl - | 355 -> NONTERM_exconDefn - | 356 -> NONTERM_exconCore - | 357 -> NONTERM_exconCore - | 358 -> NONTERM_exconIntro - | 359 -> NONTERM_exconIntro - | 360 -> NONTERM_exconIntro - | 361 -> NONTERM_exconRepr - | 362 -> NONTERM_exconRepr - | 363 -> NONTERM_defnBindings - | 364 -> NONTERM_defnBindings - | 365 -> NONTERM_doBinding - | 366 -> NONTERM_hardwhiteLetBindings - | 367 -> NONTERM_hardwhiteDoBinding - | 368 -> NONTERM_classDefnBindings - | 369 -> NONTERM_classDefnBindings - | 370 -> NONTERM_classDefnBindings - | 371 -> NONTERM_classDefnBindings - | 372 -> NONTERM_hardwhiteDefnBindingsTerminator - | 373 -> NONTERM_hardwhiteDefnBindingsTerminator - | 374 -> NONTERM_cPrototype - | 375 -> NONTERM_externArgs - | 376 -> NONTERM_externArgs - | 377 -> NONTERM_externArgs - | 378 -> NONTERM_externMoreArgs - | 379 -> NONTERM_externMoreArgs - | 380 -> NONTERM_externArg - | 381 -> NONTERM_externArg - | 382 -> NONTERM_cType - | 383 -> NONTERM_cType - | 384 -> NONTERM_cType - | 385 -> NONTERM_cType - | 386 -> NONTERM_cType - | 387 -> NONTERM_cRetType - | 388 -> NONTERM_cRetType - | 389 -> NONTERM_localBindings - | 390 -> NONTERM_moreLocalBindings - | 391 -> NONTERM_moreLocalBindings - | 392 -> NONTERM_attr_localBinding - | 393 -> NONTERM_attr_localBinding - | 394 -> NONTERM_localBinding - | 395 -> NONTERM_localBinding - | 396 -> NONTERM_localBinding - | 397 -> NONTERM_typedExprWithStaticOptimizationsBlock - | 398 -> NONTERM_typedExprWithStaticOptimizationsBlock - | 399 -> NONTERM_typedExprWithStaticOptimizationsBlock - | 400 -> NONTERM_typedExprWithStaticOptimizations - | 401 -> NONTERM_opt_staticOptimizations - | 402 -> NONTERM_opt_staticOptimizations - | 403 -> NONTERM_staticOptimization - | 404 -> NONTERM_staticOptimizationConditions - | 405 -> NONTERM_staticOptimizationConditions - | 406 -> NONTERM_staticOptimizationCondition - | 407 -> NONTERM_staticOptimizationCondition - | 408 -> NONTERM_rawConstant - | 409 -> NONTERM_rawConstant - | 410 -> NONTERM_rawConstant - | 411 -> NONTERM_rawConstant - | 412 -> NONTERM_rawConstant - | 413 -> NONTERM_rawConstant - | 414 -> NONTERM_rawConstant - | 415 -> NONTERM_rawConstant - | 416 -> NONTERM_rawConstant - | 417 -> NONTERM_rawConstant - | 418 -> NONTERM_rawConstant - | 419 -> NONTERM_rawConstant - | 420 -> NONTERM_rawConstant - | 421 -> NONTERM_rawConstant - | 422 -> NONTERM_rawConstant - | 423 -> NONTERM_rawConstant - | 424 -> NONTERM_rawConstant - | 425 -> NONTERM_rawConstant - | 426 -> NONTERM_rationalConstant - | 427 -> NONTERM_rationalConstant - | 428 -> NONTERM_rationalConstant - | 429 -> NONTERM_rationalConstant - | 430 -> NONTERM_atomicUnsignedRationalConstant - | 431 -> NONTERM_atomicUnsignedRationalConstant - | 432 -> NONTERM_atomicRationalConstant - | 433 -> NONTERM_atomicRationalConstant - | 434 -> NONTERM_constant - | 435 -> NONTERM_constant - | 436 -> NONTERM_bindingPattern - | 437 -> NONTERM_simplePattern - | 438 -> NONTERM_simplePattern - | 439 -> NONTERM_simplePattern - | 440 -> NONTERM_simplePattern - | 441 -> NONTERM_simplePattern - | 442 -> NONTERM_simplePatternCommaList - | 443 -> NONTERM_simplePatternCommaList - | 444 -> NONTERM_simplePatterns - | 445 -> NONTERM_simplePatterns - | 446 -> NONTERM_simplePatterns - | 447 -> NONTERM_simplePatterns - | 448 -> NONTERM_simplePatterns - | 449 -> NONTERM_headBindingPattern - | 450 -> NONTERM_headBindingPattern - | 451 -> NONTERM_headBindingPattern - | 452 -> NONTERM_headBindingPattern - | 453 -> NONTERM_headBindingPattern - | 454 -> NONTERM_headBindingPattern - | 455 -> NONTERM_tuplePatternElements - | 456 -> NONTERM_tuplePatternElements - | 457 -> NONTERM_tuplePatternElements - | 458 -> NONTERM_tuplePatternElements - | 459 -> NONTERM_tuplePatternElements - | 460 -> NONTERM_tuplePatternElements - | 461 -> NONTERM_conjPatternElements - | 462 -> NONTERM_conjPatternElements - | 463 -> NONTERM_namePatPairs - | 464 -> NONTERM_namePatPairs - | 465 -> NONTERM_namePatPair - | 466 -> NONTERM_namePatPair - | 467 -> NONTERM_namePatPair - | 468 -> NONTERM_constrPattern - | 469 -> NONTERM_constrPattern - | 470 -> NONTERM_constrPattern - | 471 -> NONTERM_constrPattern - | 472 -> NONTERM_constrPattern - | 473 -> NONTERM_constrPattern - | 474 -> NONTERM_constrPattern - | 475 -> NONTERM_constrPattern - | 476 -> NONTERM_constrPattern - | 477 -> NONTERM_atomicPatsOrNamePatPairs - | 478 -> NONTERM_atomicPatsOrNamePatPairs - | 479 -> NONTERM_atomicPatterns - | 480 -> NONTERM_atomicPatterns - | 481 -> NONTERM_atomicPatterns - | 482 -> NONTERM_atomicPatterns - | 483 -> NONTERM_atomicPattern - | 484 -> NONTERM_atomicPattern - | 485 -> NONTERM_atomicPattern - | 486 -> NONTERM_atomicPattern - | 487 -> NONTERM_atomicPattern - | 488 -> NONTERM_atomicPattern - | 489 -> NONTERM_atomicPattern - | 490 -> NONTERM_atomicPattern - | 491 -> NONTERM_atomicPattern - | 492 -> NONTERM_atomicPattern - | 493 -> NONTERM_atomicPattern - | 494 -> NONTERM_atomicPattern - | 495 -> NONTERM_atomicPattern - | 496 -> NONTERM_atomicPattern - | 497 -> NONTERM_atomicPattern - | 498 -> NONTERM_atomicPattern - | 499 -> NONTERM_atomicPattern - | 500 -> NONTERM_atomicPattern - | 501 -> NONTERM_atomicPattern - | 502 -> NONTERM_atomicPattern - | 503 -> NONTERM_parenPatternBody - | 504 -> NONTERM_parenPatternBody - | 505 -> NONTERM_parenPattern - | 506 -> NONTERM_parenPattern - | 507 -> NONTERM_parenPattern - | 508 -> NONTERM_parenPattern - | 509 -> NONTERM_parenPattern - | 510 -> NONTERM_parenPattern - | 511 -> NONTERM_parenPattern - | 512 -> NONTERM_parenPattern - | 513 -> NONTERM_parenPattern - | 514 -> NONTERM_tupleParenPatternElements - | 515 -> NONTERM_tupleParenPatternElements - | 516 -> NONTERM_tupleParenPatternElements - | 517 -> NONTERM_tupleParenPatternElements - | 518 -> NONTERM_tupleParenPatternElements - | 519 -> NONTERM_tupleParenPatternElements - | 520 -> NONTERM_conjParenPatternElements - | 521 -> NONTERM_conjParenPatternElements - | 522 -> NONTERM_recordPatternElementsAux - | 523 -> NONTERM_recordPatternElementsAux - | 524 -> NONTERM_recordPatternElement - | 525 -> NONTERM_listPatternElements - | 526 -> NONTERM_listPatternElements - | 527 -> NONTERM_listPatternElements - | 528 -> NONTERM_typedSequentialExprBlock - | 529 -> NONTERM_typedSequentialExprBlock - | 530 -> NONTERM_typedSequentialExprBlock - | 531 -> NONTERM_declExprBlock - | 532 -> NONTERM_declExprBlock - | 533 -> NONTERM_typedSequentialExprBlockR - | 534 -> NONTERM_typedSequentialExprBlockR - | 535 -> NONTERM_typedSequentialExprBlockR - | 536 -> NONTERM_typedSequentialExpr - | 537 -> NONTERM_typedSequentialExpr - | 538 -> NONTERM_typedSequentialExpr - | 539 -> NONTERM_typedSequentialExprEOF - | 540 -> NONTERM_sequentialExpr - | 541 -> NONTERM_sequentialExpr - | 542 -> NONTERM_sequentialExpr - | 543 -> NONTERM_sequentialExpr - | 544 -> NONTERM_sequentialExpr - | 545 -> NONTERM_sequentialExpr - | 546 -> NONTERM_recover - | 547 -> NONTERM_recover - | 548 -> NONTERM_moreBinders - | 549 -> NONTERM_moreBinders - | 550 -> NONTERM_moreBinders - | 551 -> NONTERM_declExpr - | 552 -> NONTERM_declExpr - | 553 -> NONTERM_declExpr - | 554 -> NONTERM_declExpr - | 555 -> NONTERM_declExpr - | 556 -> NONTERM_declExpr - | 557 -> NONTERM_declExpr - | 558 -> NONTERM_declExpr - | 559 -> NONTERM_declExpr - | 560 -> NONTERM_declExpr - | 561 -> NONTERM_declExpr - | 562 -> NONTERM_declExpr - | 563 -> NONTERM_declExpr - | 564 -> NONTERM_declExpr - | 565 -> NONTERM_declExpr - | 566 -> NONTERM_declExpr - | 567 -> NONTERM_declExpr - | 568 -> NONTERM_declExpr - | 569 -> NONTERM_declExpr - | 570 -> NONTERM_declExpr - | 571 -> NONTERM_declExpr - | 572 -> NONTERM_declExpr - | 573 -> NONTERM_declExpr - | 574 -> NONTERM_declExpr - | 575 -> NONTERM_declExpr - | 576 -> NONTERM_declExpr - | 577 -> NONTERM_declExpr - | 578 -> NONTERM_declExpr - | 579 -> NONTERM_declExpr - | 580 -> NONTERM_declExpr - | 581 -> NONTERM_declExpr - | 582 -> NONTERM_declExpr - | 583 -> NONTERM_declExpr - | 584 -> NONTERM_declExpr - | 585 -> NONTERM_declExpr - | 586 -> NONTERM_declExpr - | 587 -> NONTERM_declExpr - | 588 -> NONTERM_declExpr - | 589 -> NONTERM_declExpr - | 590 -> NONTERM_declExpr - | 591 -> NONTERM_declExpr - | 592 -> NONTERM_declExpr + | 145 -> NONTERM_moduleDefn + | 146 -> NONTERM_moduleDefn + | 147 -> NONTERM_moduleDefn + | 148 -> NONTERM_moduleDefn + | 149 -> NONTERM_moduleDefn + | 150 -> NONTERM_moduleDefn + | 151 -> NONTERM_openDecl + | 152 -> NONTERM_openDecl + | 153 -> NONTERM_openDecl + | 154 -> NONTERM_openDecl + | 155 -> NONTERM_namedModuleAbbrevBlock + | 156 -> NONTERM_namedModuleAbbrevBlock + | 157 -> NONTERM_namedModuleDefnBlock + | 158 -> NONTERM_namedModuleDefnBlock + | 159 -> NONTERM_namedModuleDefnBlock + | 160 -> NONTERM_namedModuleDefnBlock + | 161 -> NONTERM_namedModuleDefnBlock + | 162 -> NONTERM_namedModuleDefnBlock + | 163 -> NONTERM_namedModuleDefnBlock + | 164 -> NONTERM_wrappedNamedModuleDefn + | 165 -> NONTERM_wrappedNamedModuleDefn + | 166 -> NONTERM_wrappedNamedModuleDefn + | 167 -> NONTERM_tyconDefnAugmentation + | 168 -> NONTERM_opt_attributes + | 169 -> NONTERM_opt_attributes + | 170 -> NONTERM_attributes + | 171 -> NONTERM_attributes + | 172 -> NONTERM_attributeList + | 173 -> NONTERM_attributeList + | 174 -> NONTERM_attributeList + | 175 -> NONTERM_attributeList + | 176 -> NONTERM_attributeListElements + | 177 -> NONTERM_attributeListElements + | 178 -> NONTERM_attribute + | 179 -> NONTERM_attribute + | 180 -> NONTERM_attribute + | 181 -> NONTERM_attributeTarget + | 182 -> NONTERM_attributeTarget + | 183 -> NONTERM_attributeTarget + | 184 -> NONTERM_attributeTarget + | 185 -> NONTERM_memberFlags + | 186 -> NONTERM_memberFlags + | 187 -> NONTERM_memberFlags + | 188 -> NONTERM_memberFlags + | 189 -> NONTERM_memberFlags + | 190 -> NONTERM_typeNameInfo + | 191 -> NONTERM_tyconDefnList + | 192 -> NONTERM_tyconDefnList + | 193 -> NONTERM_tyconDefn + | 194 -> NONTERM_tyconDefn + | 195 -> NONTERM_tyconDefn + | 196 -> NONTERM_tyconDefn + | 197 -> NONTERM_tyconDefnRhsBlock + | 198 -> NONTERM_tyconDefnRhsBlock + | 199 -> NONTERM_tyconDefnRhsBlock + | 200 -> NONTERM_tyconDefnRhsBlock + | 201 -> NONTERM_tyconDefnRhs + | 202 -> NONTERM_tyconDefnRhs + | 203 -> NONTERM_tyconDefnRhs + | 204 -> NONTERM_tyconClassDefn + | 205 -> NONTERM_tyconClassDefn + | 206 -> NONTERM_tyconClassDefn + | 207 -> NONTERM_tyconClassDefn + | 208 -> NONTERM_classDefnBlockKindUnspecified + | 209 -> NONTERM_classDefnBlockKindUnspecified + | 210 -> NONTERM_classDefnBlock + | 211 -> NONTERM_classDefnBlock + | 212 -> NONTERM_classDefnBlock + | 213 -> NONTERM_classDefnMembers + | 214 -> NONTERM_classDefnMembers + | 215 -> NONTERM_classDefnMembers + | 216 -> NONTERM_classDefnMembersAtLeastOne + | 217 -> NONTERM_classDefnMemberGetSet + | 218 -> NONTERM_classDefnMemberGetSet + | 219 -> NONTERM_classDefnMemberGetSet + | 220 -> NONTERM_classDefnMemberGetSetElements + | 221 -> NONTERM_classDefnMemberGetSetElements + | 222 -> NONTERM_classDefnMemberGetSetElement + | 223 -> NONTERM_memberCore + | 224 -> NONTERM_memberCore + | 225 -> NONTERM_memberCore + | 226 -> NONTERM_memberCore + | 227 -> NONTERM_abstractMemberFlags + | 228 -> NONTERM_abstractMemberFlags + | 229 -> NONTERM_abstractMemberFlags + | 230 -> NONTERM_abstractMemberFlags + | 231 -> NONTERM_classDefnMember + | 232 -> NONTERM_classDefnMember + | 233 -> NONTERM_classDefnMember + | 234 -> NONTERM_classDefnMember + | 235 -> NONTERM_classDefnMember + | 236 -> NONTERM_classDefnMember + | 237 -> NONTERM_classDefnMember + | 238 -> NONTERM_classDefnMember + | 239 -> NONTERM_classDefnMember + | 240 -> NONTERM_classDefnMember + | 241 -> NONTERM_classDefnMember + | 242 -> NONTERM_classDefnMember + | 243 -> NONTERM_classDefnMember + | 244 -> NONTERM_classDefnMember + | 245 -> NONTERM_classDefnMember + | 246 -> NONTERM_classDefnMember + | 247 -> NONTERM_valDefnDecl + | 248 -> NONTERM_valDefnDecl + | 249 -> NONTERM_valDefnDecl + | 250 -> NONTERM_valDefnDecl + | 251 -> NONTERM_autoPropsDefnDecl + | 252 -> NONTERM_autoPropsDefnDecl + | 253 -> NONTERM_autoPropsDefnDecl + | 254 -> NONTERM_autoPropsDefnDecl + | 255 -> NONTERM_opt_typ + | 256 -> NONTERM_opt_typ + | 257 -> NONTERM_opt_typ + | 258 -> NONTERM_atomicPatternLongIdent + | 259 -> NONTERM_atomicPatternLongIdent + | 260 -> NONTERM_atomicPatternLongIdent + | 261 -> NONTERM_atomicPatternLongIdent + | 262 -> NONTERM_atomicPatternLongIdent + | 263 -> NONTERM_opt_access + | 264 -> NONTERM_opt_access + | 265 -> NONTERM_access + | 266 -> NONTERM_access + | 267 -> NONTERM_access + | 268 -> NONTERM_opt_interfaceImplDefn + | 269 -> NONTERM_opt_interfaceImplDefn + | 270 -> NONTERM_opt_interfaceImplDefn + | 271 -> NONTERM_opt_classDefn + | 272 -> NONTERM_opt_classDefn + | 273 -> NONTERM_inheritsDefn + | 274 -> NONTERM_inheritsDefn + | 275 -> NONTERM_inheritsDefn + | 276 -> NONTERM_optAsSpec + | 277 -> NONTERM_optAsSpec + | 278 -> NONTERM_asSpec + | 279 -> NONTERM_asSpec + | 280 -> NONTERM_optBaseSpec + | 281 -> NONTERM_optBaseSpec + | 282 -> NONTERM_baseSpec + | 283 -> NONTERM_baseSpec + | 284 -> NONTERM_objectImplementationBlock + | 285 -> NONTERM_objectImplementationBlock + | 286 -> NONTERM_objectImplementationBlock + | 287 -> NONTERM_objectImplementationMembers + | 288 -> NONTERM_objectImplementationMembers + | 289 -> NONTERM_objectImplementationMember + | 290 -> NONTERM_objectImplementationMember + | 291 -> NONTERM_objectImplementationMember + | 292 -> NONTERM_objectImplementationMember + | 293 -> NONTERM_staticMemberOrMemberOrOverride + | 294 -> NONTERM_staticMemberOrMemberOrOverride + | 295 -> NONTERM_staticMemberOrMemberOrOverride + | 296 -> NONTERM_tyconDefnOrSpfnSimpleRepr + | 297 -> NONTERM_tyconDefnOrSpfnSimpleRepr + | 298 -> NONTERM_tyconDefnOrSpfnSimpleRepr + | 299 -> NONTERM_tyconDefnOrSpfnSimpleRepr + | 300 -> NONTERM_tyconDefnOrSpfnSimpleRepr + | 301 -> NONTERM_braceFieldDeclList + | 302 -> NONTERM_braceFieldDeclList + | 303 -> NONTERM_braceFieldDeclList + | 304 -> NONTERM_anonRecdType + | 305 -> NONTERM_anonRecdType + | 306 -> NONTERM_braceBarFieldDeclListCore + | 307 -> NONTERM_braceBarFieldDeclListCore + | 308 -> NONTERM_braceBarFieldDeclListCore + | 309 -> NONTERM_classOrInterfaceOrStruct + | 310 -> NONTERM_classOrInterfaceOrStruct + | 311 -> NONTERM_classOrInterfaceOrStruct + | 312 -> NONTERM_interfaceMember + | 313 -> NONTERM_interfaceMember + | 314 -> NONTERM_tyconNameAndTyparDecls + | 315 -> NONTERM_tyconNameAndTyparDecls + | 316 -> NONTERM_tyconNameAndTyparDecls + | 317 -> NONTERM_tyconNameAndTyparDecls + | 318 -> NONTERM_prefixTyparDecls + | 319 -> NONTERM_prefixTyparDecls + | 320 -> NONTERM_typarDeclList + | 321 -> NONTERM_typarDeclList + | 322 -> NONTERM_typarDecl + | 323 -> NONTERM_typarDecl + | 324 -> NONTERM_postfixTyparDecls + | 325 -> NONTERM_explicitValTyparDeclsCore + | 326 -> NONTERM_explicitValTyparDeclsCore + | 327 -> NONTERM_explicitValTyparDeclsCore + | 328 -> NONTERM_explicitValTyparDecls + | 329 -> NONTERM_opt_explicitValTyparDecls + | 330 -> NONTERM_opt_explicitValTyparDecls + | 331 -> NONTERM_opt_typeConstraints + | 332 -> NONTERM_opt_typeConstraints + | 333 -> NONTERM_typeConstraints + | 334 -> NONTERM_typeConstraints + | 335 -> NONTERM_intersectionConstraints + | 336 -> NONTERM_intersectionConstraints + | 337 -> NONTERM_typeConstraint + | 338 -> NONTERM_typeConstraint + | 339 -> NONTERM_typeConstraint + | 340 -> NONTERM_typeConstraint + | 341 -> NONTERM_typeConstraint + | 342 -> NONTERM_typeConstraint + | 343 -> NONTERM_typeConstraint + | 344 -> NONTERM_typeConstraint + | 345 -> NONTERM_typeConstraint + | 346 -> NONTERM_typeConstraint + | 347 -> NONTERM_typeConstraint + | 348 -> NONTERM_typeAlts + | 349 -> NONTERM_typeAlts + | 350 -> NONTERM_unionTypeRepr + | 351 -> NONTERM_unionTypeRepr + | 352 -> NONTERM_unionTypeRepr + | 353 -> NONTERM_barAndgrabXmlDoc + | 354 -> NONTERM_attrUnionCaseDecls + | 355 -> NONTERM_attrUnionCaseDecls + | 356 -> NONTERM_attrUnionCaseDecl + | 357 -> NONTERM_attrUnionCaseDecl + | 358 -> NONTERM_attrUnionCaseDecl + | 359 -> NONTERM_attrUnionCaseDecl + | 360 -> NONTERM_attrUnionCaseDecl + | 361 -> NONTERM_attrUnionCaseDecl + | 362 -> NONTERM_attrUnionCaseDecl + | 363 -> NONTERM_attrUnionCaseDecl + | 364 -> NONTERM_attrUnionCaseDecl + | 365 -> NONTERM_unionCaseName + | 366 -> NONTERM_unionCaseName + | 367 -> NONTERM_unionCaseName + | 368 -> NONTERM_firstUnionCaseDeclOfMany + | 369 -> NONTERM_firstUnionCaseDeclOfMany + | 370 -> NONTERM_firstUnionCaseDeclOfMany + | 371 -> NONTERM_firstUnionCaseDecl + | 372 -> NONTERM_firstUnionCaseDecl + | 373 -> NONTERM_firstUnionCaseDecl + | 374 -> NONTERM_firstUnionCaseDecl + | 375 -> NONTERM_unionCaseReprElements + | 376 -> NONTERM_unionCaseReprElements + | 377 -> NONTERM_unionCaseReprElement + | 378 -> NONTERM_unionCaseReprElement + | 379 -> NONTERM_unionCaseReprElement + | 380 -> NONTERM_unionCaseReprElement + | 381 -> NONTERM_unionCaseRepr + | 382 -> NONTERM_unionCaseRepr + | 383 -> NONTERM_recdFieldDeclList + | 384 -> NONTERM_recdFieldDeclList + | 385 -> NONTERM_recdFieldDecl + | 386 -> NONTERM_fieldDecl + | 387 -> NONTERM_fieldDecl + | 388 -> NONTERM_fieldDecl + | 389 -> NONTERM_exconDefn + | 390 -> NONTERM_exconCore + | 391 -> NONTERM_exconCore + | 392 -> NONTERM_exconIntro + | 393 -> NONTERM_exconIntro + | 394 -> NONTERM_exconIntro + | 395 -> NONTERM_exconRepr + | 396 -> NONTERM_exconRepr + | 397 -> NONTERM_defnBindings + | 398 -> NONTERM_defnBindings + | 399 -> NONTERM_doBinding + | 400 -> NONTERM_hardwhiteLetBindings + | 401 -> NONTERM_hardwhiteDoBinding + | 402 -> NONTERM_hardwhiteDoBinding + | 403 -> NONTERM_classDefnBindings + | 404 -> NONTERM_classDefnBindings + | 405 -> NONTERM_classDefnBindings + | 406 -> NONTERM_classDefnBindings + | 407 -> NONTERM_hardwhiteDefnBindingsTerminator + | 408 -> NONTERM_hardwhiteDefnBindingsTerminator + | 409 -> NONTERM_cPrototype + | 410 -> NONTERM_externArgs + | 411 -> NONTERM_externArgs + | 412 -> NONTERM_externArgs + | 413 -> NONTERM_externMoreArgs + | 414 -> NONTERM_externMoreArgs + | 415 -> NONTERM_externArg + | 416 -> NONTERM_externArg + | 417 -> NONTERM_cType + | 418 -> NONTERM_cType + | 419 -> NONTERM_cType + | 420 -> NONTERM_cType + | 421 -> NONTERM_cType + | 422 -> NONTERM_cRetType + | 423 -> NONTERM_cRetType + | 424 -> NONTERM_localBindings + | 425 -> NONTERM_moreLocalBindings + | 426 -> NONTERM_moreLocalBindings + | 427 -> NONTERM_attr_localBinding + | 428 -> NONTERM_attr_localBinding + | 429 -> NONTERM_localBinding + | 430 -> NONTERM_localBinding + | 431 -> NONTERM_localBinding + | 432 -> NONTERM_typedExprWithStaticOptimizationsBlock + | 433 -> NONTERM_typedExprWithStaticOptimizationsBlock + | 434 -> NONTERM_typedExprWithStaticOptimizationsBlock + | 435 -> NONTERM_typedExprWithStaticOptimizations + | 436 -> NONTERM_opt_staticOptimizations + | 437 -> NONTERM_opt_staticOptimizations + | 438 -> NONTERM_staticOptimization + | 439 -> NONTERM_staticOptimizationConditions + | 440 -> NONTERM_staticOptimizationConditions + | 441 -> NONTERM_staticOptimizationCondition + | 442 -> NONTERM_staticOptimizationCondition + | 443 -> NONTERM_rawConstant + | 444 -> NONTERM_rawConstant + | 445 -> NONTERM_rawConstant + | 446 -> NONTERM_rawConstant + | 447 -> NONTERM_rawConstant + | 448 -> NONTERM_rawConstant + | 449 -> NONTERM_rawConstant + | 450 -> NONTERM_rawConstant + | 451 -> NONTERM_rawConstant + | 452 -> NONTERM_rawConstant + | 453 -> NONTERM_rawConstant + | 454 -> NONTERM_rawConstant + | 455 -> NONTERM_rawConstant + | 456 -> NONTERM_rawConstant + | 457 -> NONTERM_rawConstant + | 458 -> NONTERM_rawConstant + | 459 -> NONTERM_rawConstant + | 460 -> NONTERM_rawConstant + | 461 -> NONTERM_rationalConstant + | 462 -> NONTERM_rationalConstant + | 463 -> NONTERM_rationalConstant + | 464 -> NONTERM_rationalConstant + | 465 -> NONTERM_atomicUnsignedRationalConstant + | 466 -> NONTERM_atomicUnsignedRationalConstant + | 467 -> NONTERM_atomicRationalConstant + | 468 -> NONTERM_atomicRationalConstant + | 469 -> NONTERM_constant + | 470 -> NONTERM_constant + | 471 -> NONTERM_bindingPattern + | 472 -> NONTERM_simplePattern + | 473 -> NONTERM_simplePattern + | 474 -> NONTERM_simplePattern + | 475 -> NONTERM_simplePattern + | 476 -> NONTERM_simplePattern + | 477 -> NONTERM_simplePatternCommaList + | 478 -> NONTERM_simplePatternCommaList + | 479 -> NONTERM_opt_simplePatterns + | 480 -> NONTERM_opt_simplePatterns + | 481 -> NONTERM_simplePatterns + | 482 -> NONTERM_simplePatterns + | 483 -> NONTERM_simplePatterns + | 484 -> NONTERM_simplePatterns + | 485 -> NONTERM_simplePatterns + | 486 -> NONTERM_headBindingPattern + | 487 -> NONTERM_headBindingPattern + | 488 -> NONTERM_headBindingPattern + | 489 -> NONTERM_headBindingPattern + | 490 -> NONTERM_headBindingPattern + | 491 -> NONTERM_headBindingPattern + | 492 -> NONTERM_tuplePatternElements + | 493 -> NONTERM_tuplePatternElements + | 494 -> NONTERM_tuplePatternElements + | 495 -> NONTERM_tuplePatternElements + | 496 -> NONTERM_tuplePatternElements + | 497 -> NONTERM_tuplePatternElements + | 498 -> NONTERM_conjPatternElements + | 499 -> NONTERM_conjPatternElements + | 500 -> NONTERM_namePatPairs + | 501 -> NONTERM_namePatPairs + | 502 -> NONTERM_namePatPairs + | 503 -> NONTERM_namePatPair + | 504 -> NONTERM_namePatPair + | 505 -> NONTERM_namePatPair + | 506 -> NONTERM_constrPattern + | 507 -> NONTERM_constrPattern + | 508 -> NONTERM_constrPattern + | 509 -> NONTERM_constrPattern + | 510 -> NONTERM_constrPattern + | 511 -> NONTERM_constrPattern + | 512 -> NONTERM_constrPattern + | 513 -> NONTERM_constrPattern + | 514 -> NONTERM_constrPattern + | 515 -> NONTERM_atomicPatsOrNamePatPairs + | 516 -> NONTERM_atomicPatsOrNamePatPairs + | 517 -> NONTERM_atomicPatterns + | 518 -> NONTERM_atomicPatterns + | 519 -> NONTERM_atomicPatterns + | 520 -> NONTERM_atomicPatterns + | 521 -> NONTERM_atomicPattern + | 522 -> NONTERM_atomicPattern + | 523 -> NONTERM_atomicPattern + | 524 -> NONTERM_atomicPattern + | 525 -> NONTERM_atomicPattern + | 526 -> NONTERM_atomicPattern + | 527 -> NONTERM_atomicPattern + | 528 -> NONTERM_atomicPattern + | 529 -> NONTERM_atomicPattern + | 530 -> NONTERM_atomicPattern + | 531 -> NONTERM_atomicPattern + | 532 -> NONTERM_atomicPattern + | 533 -> NONTERM_atomicPattern + | 534 -> NONTERM_atomicPattern + | 535 -> NONTERM_atomicPattern + | 536 -> NONTERM_atomicPattern + | 537 -> NONTERM_atomicPattern + | 538 -> NONTERM_atomicPattern + | 539 -> NONTERM_atomicPattern + | 540 -> NONTERM_atomicPattern + | 541 -> NONTERM_parenPatternBody + | 542 -> NONTERM_parenPatternBody + | 543 -> NONTERM_parenPattern + | 544 -> NONTERM_parenPattern + | 545 -> NONTERM_parenPattern + | 546 -> NONTERM_parenPattern + | 547 -> NONTERM_parenPattern + | 548 -> NONTERM_parenPattern + | 549 -> NONTERM_parenPattern + | 550 -> NONTERM_parenPattern + | 551 -> NONTERM_parenPattern + | 552 -> NONTERM_tupleParenPatternElements + | 553 -> NONTERM_tupleParenPatternElements + | 554 -> NONTERM_tupleParenPatternElements + | 555 -> NONTERM_tupleParenPatternElements + | 556 -> NONTERM_tupleParenPatternElements + | 557 -> NONTERM_tupleParenPatternElements + | 558 -> NONTERM_conjParenPatternElements + | 559 -> NONTERM_conjParenPatternElements + | 560 -> NONTERM_recordPatternElementsAux + | 561 -> NONTERM_recordPatternElementsAux + | 562 -> NONTERM_recordPatternElement + | 563 -> NONTERM_recordPatternElement + | 564 -> NONTERM_recordPatternElement + | 565 -> NONTERM_listPatternElements + | 566 -> NONTERM_listPatternElements + | 567 -> NONTERM_listPatternElements + | 568 -> NONTERM_typedSequentialExprBlock + | 569 -> NONTERM_typedSequentialExprBlock + | 570 -> NONTERM_typedSequentialExprBlock + | 571 -> NONTERM_typedSequentialExprBlock + | 572 -> NONTERM_declExprBlock + | 573 -> NONTERM_declExprBlock + | 574 -> NONTERM_declExprBlock + | 575 -> NONTERM_typedSequentialExprBlockR + | 576 -> NONTERM_typedSequentialExprBlockR + | 577 -> NONTERM_typedSequentialExprBlockR + | 578 -> NONTERM_typedSequentialExpr + | 579 -> NONTERM_typedSequentialExpr + | 580 -> NONTERM_typedSequentialExpr + | 581 -> NONTERM_typedSequentialExprEOF + | 582 -> NONTERM_sequentialExpr + | 583 -> NONTERM_sequentialExpr + | 584 -> NONTERM_sequentialExpr + | 585 -> NONTERM_sequentialExpr + | 586 -> NONTERM_sequentialExpr + | 587 -> NONTERM_sequentialExpr + | 588 -> NONTERM_recover + | 589 -> NONTERM_recover + | 590 -> NONTERM_moreBinders + | 591 -> NONTERM_moreBinders + | 592 -> NONTERM_moreBinders | 593 -> NONTERM_declExpr | 594 -> NONTERM_declExpr | 595 -> NONTERM_declExpr @@ -1859,506 +1867,566 @@ let prodIdxToNonTerminal (prodIdx:int) = | 660 -> NONTERM_declExpr | 661 -> NONTERM_declExpr | 662 -> NONTERM_declExpr - | 663 -> NONTERM_dynamicArg - | 664 -> NONTERM_dynamicArg - | 665 -> NONTERM_withClauses - | 666 -> NONTERM_withClauses - | 667 -> NONTERM_withClauses - | 668 -> NONTERM_withPatternClauses - | 669 -> NONTERM_withPatternClauses - | 670 -> NONTERM_withPatternClauses - | 671 -> NONTERM_withPatternClauses - | 672 -> NONTERM_patternAndGuard - | 673 -> NONTERM_patternClauses - | 674 -> NONTERM_patternClauses - | 675 -> NONTERM_patternClauses - | 676 -> NONTERM_patternClauses - | 677 -> NONTERM_patternClauses - | 678 -> NONTERM_patternClauses - | 679 -> NONTERM_patternGuard - | 680 -> NONTERM_patternGuard - | 681 -> NONTERM_patternResult - | 682 -> NONTERM_ifExprCases - | 683 -> NONTERM_ifExprThen - | 684 -> NONTERM_ifExprThen - | 685 -> NONTERM_ifExprThen - | 686 -> NONTERM_ifExprElifs - | 687 -> NONTERM_ifExprElifs - | 688 -> NONTERM_ifExprElifs - | 689 -> NONTERM_ifExprElifs - | 690 -> NONTERM_ifExprElifs - | 691 -> NONTERM_ifExprElifs - | 692 -> NONTERM_tupleExpr - | 693 -> NONTERM_tupleExpr - | 694 -> NONTERM_tupleExpr - | 695 -> NONTERM_tupleExpr - | 696 -> NONTERM_tupleExpr - | 697 -> NONTERM_tupleExpr - | 698 -> NONTERM_minusExpr - | 699 -> NONTERM_minusExpr - | 700 -> NONTERM_minusExpr - | 701 -> NONTERM_minusExpr - | 702 -> NONTERM_minusExpr - | 703 -> NONTERM_minusExpr - | 704 -> NONTERM_minusExpr - | 705 -> NONTERM_minusExpr - | 706 -> NONTERM_minusExpr - | 707 -> NONTERM_minusExpr - | 708 -> NONTERM_minusExpr - | 709 -> NONTERM_minusExpr - | 710 -> NONTERM_minusExpr - | 711 -> NONTERM_minusExpr - | 712 -> NONTERM_appExpr - | 713 -> NONTERM_appExpr - | 714 -> NONTERM_argExpr - | 715 -> NONTERM_argExpr - | 716 -> NONTERM_atomicExpr - | 717 -> NONTERM_atomicExpr - | 718 -> NONTERM_atomicExpr - | 719 -> NONTERM_atomicExpr - | 720 -> NONTERM_atomicExpr - | 721 -> NONTERM_atomicExpr - | 722 -> NONTERM_atomicExpr - | 723 -> NONTERM_atomicExpr - | 724 -> NONTERM_atomicExpr - | 725 -> NONTERM_atomicExpr - | 726 -> NONTERM_atomicExpr - | 727 -> NONTERM_atomicExpr - | 728 -> NONTERM_atomicExpr - | 729 -> NONTERM_atomicExpr - | 730 -> NONTERM_atomicExpr - | 731 -> NONTERM_atomicExpr - | 732 -> NONTERM_atomicExpr - | 733 -> NONTERM_atomicExpr - | 734 -> NONTERM_atomicExpr - | 735 -> NONTERM_atomicExprQualification - | 736 -> NONTERM_atomicExprQualification - | 737 -> NONTERM_atomicExprQualification - | 738 -> NONTERM_atomicExprQualification - | 739 -> NONTERM_atomicExprQualification - | 740 -> NONTERM_atomicExprQualification - | 741 -> NONTERM_atomicExprQualification - | 742 -> NONTERM_atomicExprQualification - | 743 -> NONTERM_atomicExprQualification - | 744 -> NONTERM_atomicExprQualification - | 745 -> NONTERM_atomicExprAfterType - | 746 -> NONTERM_atomicExprAfterType - | 747 -> NONTERM_atomicExprAfterType - | 748 -> NONTERM_atomicExprAfterType - | 749 -> NONTERM_atomicExprAfterType - | 750 -> NONTERM_atomicExprAfterType - | 751 -> NONTERM_atomicExprAfterType - | 752 -> NONTERM_atomicExprAfterType - | 753 -> NONTERM_atomicExprAfterType - | 754 -> NONTERM_atomicExprAfterType - | 755 -> NONTERM_atomicExprAfterType - | 756 -> NONTERM_beginEndExpr - | 757 -> NONTERM_beginEndExpr - | 758 -> NONTERM_beginEndExpr - | 759 -> NONTERM_beginEndExpr - | 760 -> NONTERM_quoteExpr - | 761 -> NONTERM_quoteExpr - | 762 -> NONTERM_quoteExpr - | 763 -> NONTERM_quoteExpr - | 764 -> NONTERM_arrayExpr - | 765 -> NONTERM_arrayExpr - | 766 -> NONTERM_arrayExpr - | 767 -> NONTERM_arrayExpr - | 768 -> NONTERM_parenExpr - | 769 -> NONTERM_parenExpr - | 770 -> NONTERM_parenExpr - | 771 -> NONTERM_parenExpr - | 772 -> NONTERM_parenExpr - | 773 -> NONTERM_parenExpr - | 774 -> NONTERM_parenExpr - | 775 -> NONTERM_parenExpr - | 776 -> NONTERM_parenExpr - | 777 -> NONTERM_parenExprBody - | 778 -> NONTERM_parenExprBody - | 779 -> NONTERM_parenExprBody - | 780 -> NONTERM_typars - | 781 -> NONTERM_typars - | 782 -> NONTERM_typarAlts - | 783 -> NONTERM_typarAlts - | 784 -> NONTERM_braceExpr - | 785 -> NONTERM_braceExpr - | 786 -> NONTERM_braceExpr - | 787 -> NONTERM_braceExpr - | 788 -> NONTERM_braceExpr - | 789 -> NONTERM_braceExprBody - | 790 -> NONTERM_braceExprBody - | 791 -> NONTERM_braceExprBody - | 792 -> NONTERM_listExprElements - | 793 -> NONTERM_listExprElements - | 794 -> NONTERM_arrayExprElements - | 795 -> NONTERM_arrayExprElements - | 796 -> NONTERM_computationExpr - | 797 -> NONTERM_arrowThenExprR - | 798 -> NONTERM_forLoopBinder - | 799 -> NONTERM_forLoopBinder - | 800 -> NONTERM_forLoopBinder - | 801 -> NONTERM_forLoopRange - | 802 -> NONTERM_forLoopDirection - | 803 -> NONTERM_forLoopDirection - | 804 -> NONTERM_inlineAssemblyExpr - | 805 -> NONTERM_optCurriedArgExprs - | 806 -> NONTERM_optCurriedArgExprs - | 807 -> NONTERM_opt_atomicExprAfterType - | 808 -> NONTERM_opt_atomicExprAfterType - | 809 -> NONTERM_opt_inlineAssemblyTypeArg - | 810 -> NONTERM_opt_inlineAssemblyTypeArg - | 811 -> NONTERM_optInlineAssemblyReturnTypes - | 812 -> NONTERM_optInlineAssemblyReturnTypes - | 813 -> NONTERM_optInlineAssemblyReturnTypes - | 814 -> NONTERM_recdExpr - | 815 -> NONTERM_recdExpr - | 816 -> NONTERM_recdExprCore - | 817 -> NONTERM_recdExprCore - | 818 -> NONTERM_recdExprCore - | 819 -> NONTERM_recdExprCore - | 820 -> NONTERM_recdExprCore - | 821 -> NONTERM_recdExprCore - | 822 -> NONTERM_recdExprCore - | 823 -> NONTERM_opt_seps_recd - | 824 -> NONTERM_opt_seps_recd - | 825 -> NONTERM_seps_recd - | 826 -> NONTERM_seps_recd - | 827 -> NONTERM_seps_recd - | 828 -> NONTERM_seps_recd - | 829 -> NONTERM_pathOrUnderscore - | 830 -> NONTERM_pathOrUnderscore - | 831 -> NONTERM_recdExprBindings - | 832 -> NONTERM_recdExprBindings - | 833 -> NONTERM_recdBinding - | 834 -> NONTERM_recdBinding - | 835 -> NONTERM_recdBinding - | 836 -> NONTERM_recdBinding - | 837 -> NONTERM_recdBinding - | 838 -> NONTERM_objExpr - | 839 -> NONTERM_objExpr - | 840 -> NONTERM_objExpr - | 841 -> NONTERM_objExprBaseCall - | 842 -> NONTERM_objExprBaseCall - | 843 -> NONTERM_objExprBaseCall - | 844 -> NONTERM_opt_objExprBindings - | 845 -> NONTERM_opt_objExprBindings - | 846 -> NONTERM_objExprBindings - | 847 -> NONTERM_objExprBindings - | 848 -> NONTERM_objExprBindings - | 849 -> NONTERM_objExprInterfaces - | 850 -> NONTERM_opt_objExprInterfaces - | 851 -> NONTERM_opt_objExprInterfaces - | 852 -> NONTERM_opt_objExprInterfaces - | 853 -> NONTERM_objExprInterface - | 854 -> NONTERM_braceBarExpr - | 855 -> NONTERM_braceBarExpr - | 856 -> NONTERM_braceBarExprCore - | 857 -> NONTERM_braceBarExprCore - | 858 -> NONTERM_braceBarExprCore - | 859 -> NONTERM_braceBarExprCore - | 860 -> NONTERM_braceBarExprCore - | 861 -> NONTERM_anonLambdaExpr - | 862 -> NONTERM_anonLambdaExpr - | 863 -> NONTERM_anonLambdaExpr - | 864 -> NONTERM_anonLambdaExpr - | 865 -> NONTERM_anonLambdaExpr - | 866 -> NONTERM_anonLambdaExpr - | 867 -> NONTERM_anonLambdaExpr - | 868 -> NONTERM_anonLambdaExpr - | 869 -> NONTERM_anonMatchingExpr - | 870 -> NONTERM_anonMatchingExpr - | 871 -> NONTERM_typeWithTypeConstraints - | 872 -> NONTERM_typeWithTypeConstraints - | 873 -> NONTERM_topTypeWithTypeConstraints - | 874 -> NONTERM_topTypeWithTypeConstraints - | 875 -> NONTERM_opt_topReturnTypeWithTypeConstraints - | 876 -> NONTERM_opt_topReturnTypeWithTypeConstraints - | 877 -> NONTERM_opt_topReturnTypeWithTypeConstraints - | 878 -> NONTERM_topType - | 879 -> NONTERM_topType - | 880 -> NONTERM_topType - | 881 -> NONTERM_topTupleType - | 882 -> NONTERM_topTupleType - | 883 -> NONTERM_topTupleType - | 884 -> NONTERM_topTupleType - | 885 -> NONTERM_topTupleTypeElements - | 886 -> NONTERM_topTupleTypeElements - | 887 -> NONTERM_topTupleTypeElements - | 888 -> NONTERM_topTupleTypeElements - | 889 -> NONTERM_topAppType - | 890 -> NONTERM_topAppType - | 891 -> NONTERM_topAppType - | 892 -> NONTERM_topAppType - | 893 -> NONTERM_topAppType - | 894 -> NONTERM_topAppType - | 895 -> NONTERM_topAppType - | 896 -> NONTERM_topAppType - | 897 -> NONTERM_topAppType - | 898 -> NONTERM_topAppType - | 899 -> NONTERM_typ - | 900 -> NONTERM_typ - | 901 -> NONTERM_typ - | 902 -> NONTERM_typ - | 903 -> NONTERM_typEOF - | 904 -> NONTERM_tupleType - | 905 -> NONTERM_tupleType - | 906 -> NONTERM_tupleType - | 907 -> NONTERM_tupleType - | 908 -> NONTERM_tupleType - | 909 -> NONTERM_tupleType - | 910 -> NONTERM_tupleType - | 911 -> NONTERM_tupleType - | 912 -> NONTERM_tupleOrQuotTypeElements - | 913 -> NONTERM_tupleOrQuotTypeElements - | 914 -> NONTERM_tupleOrQuotTypeElements - | 915 -> NONTERM_tupleOrQuotTypeElements - | 916 -> NONTERM_tupleOrQuotTypeElements - | 917 -> NONTERM_tupleOrQuotTypeElements - | 918 -> NONTERM_tupleOrQuotTypeElements - | 919 -> NONTERM_appTypeCon - | 920 -> NONTERM_appTypeCon - | 921 -> NONTERM_appTypeConPower - | 922 -> NONTERM_appTypeConPower - | 923 -> NONTERM_appType - | 924 -> NONTERM_appType - | 925 -> NONTERM_appType - | 926 -> NONTERM_appType - | 927 -> NONTERM_appType - | 928 -> NONTERM_appType - | 929 -> NONTERM_appType - | 930 -> NONTERM_arrayTypeSuffix - | 931 -> NONTERM_arrayTypeSuffix - | 932 -> NONTERM_arrayTypeSuffix - | 933 -> NONTERM_arrayTypeSuffix - | 934 -> NONTERM_arrayTypeSuffix - | 935 -> NONTERM_arrayTypeSuffix - | 936 -> NONTERM_arrayTypeSuffix - | 937 -> NONTERM_arrayTypeSuffix - | 938 -> NONTERM_arrayTypeSuffix - | 939 -> NONTERM_arrayTypeSuffix - | 940 -> NONTERM_arrayTypeSuffix - | 941 -> NONTERM_arrayTypeSuffix - | 942 -> NONTERM_arrayTypeSuffix - | 943 -> NONTERM_arrayTypeSuffix - | 944 -> NONTERM_arrayTypeSuffix - | 945 -> NONTERM_arrayTypeSuffix - | 946 -> NONTERM_arrayTypeSuffix - | 947 -> NONTERM_arrayTypeSuffix - | 948 -> NONTERM_arrayTypeSuffix - | 949 -> NONTERM_arrayTypeSuffix - | 950 -> NONTERM_arrayTypeSuffix - | 951 -> NONTERM_arrayTypeSuffix - | 952 -> NONTERM_arrayTypeSuffix - | 953 -> NONTERM_arrayTypeSuffix - | 954 -> NONTERM_arrayTypeSuffix - | 955 -> NONTERM_arrayTypeSuffix - | 956 -> NONTERM_arrayTypeSuffix - | 957 -> NONTERM_arrayTypeSuffix - | 958 -> NONTERM_arrayTypeSuffix - | 959 -> NONTERM_arrayTypeSuffix - | 960 -> NONTERM_arrayTypeSuffix - | 961 -> NONTERM_arrayTypeSuffix - | 962 -> NONTERM_appTypePrefixArguments - | 963 -> NONTERM_typeArgListElements - | 964 -> NONTERM_typeArgListElements - | 965 -> NONTERM_typeArgListElements - | 966 -> NONTERM_powerType - | 967 -> NONTERM_powerType - | 968 -> NONTERM_atomTypeNonAtomicDeprecated - | 969 -> NONTERM_atomTypeNonAtomicDeprecated - | 970 -> NONTERM_atomTypeOrAnonRecdType - | 971 -> NONTERM_atomTypeOrAnonRecdType - | 972 -> NONTERM_atomType - | 973 -> NONTERM_atomType - | 974 -> NONTERM_atomType - | 975 -> NONTERM_atomType - | 976 -> NONTERM_atomType - | 977 -> NONTERM_atomType - | 978 -> NONTERM_atomType - | 979 -> NONTERM_atomType - | 980 -> NONTERM_atomType - | 981 -> NONTERM_atomType - | 982 -> NONTERM_atomType - | 983 -> NONTERM_atomType - | 984 -> NONTERM_atomType - | 985 -> NONTERM_atomType - | 986 -> NONTERM_atomType - | 987 -> NONTERM_atomType - | 988 -> NONTERM_atomType - | 989 -> NONTERM_atomType - | 990 -> NONTERM_atomType - | 991 -> NONTERM_atomType - | 992 -> NONTERM_typeArgsNoHpaDeprecated - | 993 -> NONTERM_typeArgsNoHpaDeprecated - | 994 -> NONTERM_typeArgsActual - | 995 -> NONTERM_typeArgsActual - | 996 -> NONTERM_typeArgsActual - | 997 -> NONTERM_typeArgsActual - | 998 -> NONTERM_typeArgsActual - | 999 -> NONTERM_typeArgsActual - | 1000 -> NONTERM_typeArgsActual - | 1001 -> NONTERM_typeArgActual - | 1002 -> NONTERM_typeArgActual - | 1003 -> NONTERM_typeArgActual - | 1004 -> NONTERM_typeArgActualOrDummyIfEmpty - | 1005 -> NONTERM_typeArgActualOrDummyIfEmpty - | 1006 -> NONTERM_dummyTypeArg - | 1007 -> NONTERM_measureTypeArg - | 1008 -> NONTERM_measureTypeArg - | 1009 -> NONTERM_measureTypeAtom - | 1010 -> NONTERM_measureTypeAtom - | 1011 -> NONTERM_measureTypeAtom - | 1012 -> NONTERM_measureTypePower - | 1013 -> NONTERM_measureTypePower - | 1014 -> NONTERM_measureTypePower - | 1015 -> NONTERM_measureTypeSeq - | 1016 -> NONTERM_measureTypeSeq - | 1017 -> NONTERM_measureTypeExpr - | 1018 -> NONTERM_measureTypeExpr - | 1019 -> NONTERM_measureTypeExpr - | 1020 -> NONTERM_measureTypeExpr - | 1021 -> NONTERM_typar - | 1022 -> NONTERM_typar - | 1023 -> NONTERM_ident - | 1024 -> NONTERM_path - | 1025 -> NONTERM_path - | 1026 -> NONTERM_path - | 1027 -> NONTERM_path - | 1028 -> NONTERM_opName - | 1029 -> NONTERM_opName - | 1030 -> NONTERM_opName - | 1031 -> NONTERM_opName - | 1032 -> NONTERM_opName - | 1033 -> NONTERM_operatorName - | 1034 -> NONTERM_operatorName - | 1035 -> NONTERM_operatorName - | 1036 -> NONTERM_operatorName - | 1037 -> NONTERM_operatorName - | 1038 -> NONTERM_operatorName - | 1039 -> NONTERM_operatorName - | 1040 -> NONTERM_operatorName - | 1041 -> NONTERM_operatorName - | 1042 -> NONTERM_operatorName - | 1043 -> NONTERM_operatorName - | 1044 -> NONTERM_operatorName - | 1045 -> NONTERM_operatorName - | 1046 -> NONTERM_operatorName - | 1047 -> NONTERM_operatorName - | 1048 -> NONTERM_operatorName - | 1049 -> NONTERM_operatorName - | 1050 -> NONTERM_operatorName - | 1051 -> NONTERM_operatorName - | 1052 -> NONTERM_operatorName - | 1053 -> NONTERM_operatorName - | 1054 -> NONTERM_operatorName - | 1055 -> NONTERM_operatorName - | 1056 -> NONTERM_operatorName - | 1057 -> NONTERM_operatorName - | 1058 -> NONTERM_operatorName - | 1059 -> NONTERM_activePatternCaseName - | 1060 -> NONTERM_activePatternCaseNames - | 1061 -> NONTERM_activePatternCaseNames - | 1062 -> NONTERM_identOrOp - | 1063 -> NONTERM_identOrOp - | 1064 -> NONTERM_pathOp - | 1065 -> NONTERM_pathOp - | 1066 -> NONTERM_pathOp - | 1067 -> NONTERM_pathOp - | 1068 -> NONTERM_nameop - | 1069 -> NONTERM_identExpr - | 1070 -> NONTERM_identExpr - | 1071 -> NONTERM_topSeparator - | 1072 -> NONTERM_topSeparator - | 1073 -> NONTERM_topSeparator - | 1074 -> NONTERM_topSeparators - | 1075 -> NONTERM_topSeparators - | 1076 -> NONTERM_opt_topSeparators - | 1077 -> NONTERM_opt_topSeparators - | 1078 -> NONTERM_seps - | 1079 -> NONTERM_seps - | 1080 -> NONTERM_seps - | 1081 -> NONTERM_seps - | 1082 -> NONTERM_declEnd - | 1083 -> NONTERM_declEnd - | 1084 -> NONTERM_declEnd - | 1085 -> NONTERM_opt_declEnd - | 1086 -> NONTERM_opt_declEnd - | 1087 -> NONTERM_opt_declEnd - | 1088 -> NONTERM_opt_declEnd - | 1089 -> NONTERM_opt_ODECLEND - | 1090 -> NONTERM_opt_ODECLEND - | 1091 -> NONTERM_deprecated_opt_equals - | 1092 -> NONTERM_deprecated_opt_equals - | 1093 -> NONTERM_opt_equals - | 1094 -> NONTERM_opt_equals - | 1095 -> NONTERM_opt_OBLOCKSEP - | 1096 -> NONTERM_opt_OBLOCKSEP - | 1097 -> NONTERM_opt_seps - | 1098 -> NONTERM_opt_seps - | 1099 -> NONTERM_opt_rec - | 1100 -> NONTERM_opt_rec - | 1101 -> NONTERM_opt_bar - | 1102 -> NONTERM_opt_bar - | 1103 -> NONTERM_opt_inline - | 1104 -> NONTERM_opt_inline - | 1105 -> NONTERM_opt_mutable - | 1106 -> NONTERM_opt_mutable - | 1107 -> NONTERM_doToken - | 1108 -> NONTERM_doToken - | 1109 -> NONTERM_doneDeclEnd - | 1110 -> NONTERM_doneDeclEnd - | 1111 -> NONTERM_structOrBegin - | 1112 -> NONTERM_structOrBegin - | 1113 -> NONTERM_sigOrBegin - | 1114 -> NONTERM_sigOrBegin - | 1115 -> NONTERM_colonOrEquals - | 1116 -> NONTERM_colonOrEquals - | 1117 -> NONTERM_string - | 1118 -> NONTERM_sourceIdentifier - | 1119 -> NONTERM_interpolatedStringFill - | 1120 -> NONTERM_interpolatedStringFill - | 1121 -> NONTERM_interpolatedStringParts - | 1122 -> NONTERM_interpolatedStringParts - | 1123 -> NONTERM_interpolatedStringParts - | 1124 -> NONTERM_interpolatedString - | 1125 -> NONTERM_interpolatedString - | 1126 -> NONTERM_interpolatedString - | 1127 -> NONTERM_opt_HIGH_PRECEDENCE_APP - | 1128 -> NONTERM_opt_HIGH_PRECEDENCE_APP - | 1129 -> NONTERM_opt_HIGH_PRECEDENCE_APP - | 1130 -> NONTERM_opt_HIGH_PRECEDENCE_TYAPP - | 1131 -> NONTERM_opt_HIGH_PRECEDENCE_TYAPP - | 1132 -> NONTERM_typeKeyword - | 1133 -> NONTERM_typeKeyword - | 1134 -> NONTERM_typeKeyword - | 1135 -> NONTERM_moduleKeyword - | 1136 -> NONTERM_moduleKeyword - | 1137 -> NONTERM_moduleKeyword - | 1138 -> NONTERM_rbrace - | 1139 -> NONTERM_rbrace - | 1140 -> NONTERM_rbrace - | 1141 -> NONTERM_bar_rbrace - | 1142 -> NONTERM_rparen - | 1143 -> NONTERM_rparen - | 1144 -> NONTERM_rparen - | 1145 -> NONTERM_oblockend - | 1146 -> NONTERM_oblockend - | 1147 -> NONTERM_oblockend - | 1148 -> NONTERM_ends_other_than_rparen_coming_soon_or_recover - | 1149 -> NONTERM_ends_other_than_rparen_coming_soon_or_recover - | 1150 -> NONTERM_ends_other_than_rparen_coming_soon_or_recover - | 1151 -> NONTERM_ends_other_than_rparen_coming_soon_or_recover - | 1152 -> NONTERM_ends_other_than_rparen_coming_soon_or_recover - | 1153 -> NONTERM_ends_coming_soon_or_recover - | 1154 -> NONTERM_ends_coming_soon_or_recover - | 1155 -> NONTERM_ends_coming_soon_or_recover - | 1156 -> NONTERM_ends_coming_soon_or_recover - | 1157 -> NONTERM_ends_coming_soon_or_recover - | 1158 -> NONTERM_ends_coming_soon_or_recover + | 663 -> NONTERM_declExpr + | 664 -> NONTERM_declExpr + | 665 -> NONTERM_declExpr + | 666 -> NONTERM_declExpr + | 667 -> NONTERM_declExpr + | 668 -> NONTERM_declExpr + | 669 -> NONTERM_declExpr + | 670 -> NONTERM_declExpr + | 671 -> NONTERM_declExpr + | 672 -> NONTERM_declExpr + | 673 -> NONTERM_declExpr + | 674 -> NONTERM_declExpr + | 675 -> NONTERM_declExpr + | 676 -> NONTERM_declExpr + | 677 -> NONTERM_declExpr + | 678 -> NONTERM_declExpr + | 679 -> NONTERM_declExpr + | 680 -> NONTERM_declExpr + | 681 -> NONTERM_declExpr + | 682 -> NONTERM_declExpr + | 683 -> NONTERM_declExpr + | 684 -> NONTERM_declExpr + | 685 -> NONTERM_declExpr + | 686 -> NONTERM_declExpr + | 687 -> NONTERM_declExpr + | 688 -> NONTERM_declExpr + | 689 -> NONTERM_declExpr + | 690 -> NONTERM_declExpr + | 691 -> NONTERM_declExpr + | 692 -> NONTERM_declExpr + | 693 -> NONTERM_declExpr + | 694 -> NONTERM_declExpr + | 695 -> NONTERM_declExpr + | 696 -> NONTERM_declExpr + | 697 -> NONTERM_declExpr + | 698 -> NONTERM_declExpr + | 699 -> NONTERM_declExpr + | 700 -> NONTERM_declExpr + | 701 -> NONTERM_declExpr + | 702 -> NONTERM_whileExprCore + | 703 -> NONTERM_whileExprCore + | 704 -> NONTERM_whileExprCore + | 705 -> NONTERM_whileExprCore + | 706 -> NONTERM_whileExprCore + | 707 -> NONTERM_whileExprCore + | 708 -> NONTERM_dynamicArg + | 709 -> NONTERM_dynamicArg + | 710 -> NONTERM_withClauses + | 711 -> NONTERM_withClauses + | 712 -> NONTERM_withClauses + | 713 -> NONTERM_withClauses + | 714 -> NONTERM_withPatternClauses + | 715 -> NONTERM_withPatternClauses + | 716 -> NONTERM_withPatternClauses + | 717 -> NONTERM_withPatternClauses + | 718 -> NONTERM_patternAndGuard + | 719 -> NONTERM_patternClauses + | 720 -> NONTERM_patternClauses + | 721 -> NONTERM_patternClauses + | 722 -> NONTERM_patternClauses + | 723 -> NONTERM_patternClauses + | 724 -> NONTERM_patternClauses + | 725 -> NONTERM_patternGuard + | 726 -> NONTERM_patternGuard + | 727 -> NONTERM_patternResult + | 728 -> NONTERM_ifExprCases + | 729 -> NONTERM_ifExprThen + | 730 -> NONTERM_ifExprThen + | 731 -> NONTERM_ifExprThen + | 732 -> NONTERM_ifExprThen + | 733 -> NONTERM_ifExprElifs + | 734 -> NONTERM_ifExprElifs + | 735 -> NONTERM_ifExprElifs + | 736 -> NONTERM_ifExprElifs + | 737 -> NONTERM_ifExprElifs + | 738 -> NONTERM_tupleExpr + | 739 -> NONTERM_tupleExpr + | 740 -> NONTERM_tupleExpr + | 741 -> NONTERM_tupleExpr + | 742 -> NONTERM_tupleExpr + | 743 -> NONTERM_tupleExpr + | 744 -> NONTERM_tupleExpr + | 745 -> NONTERM_tupleExpr + | 746 -> NONTERM_minusExpr + | 747 -> NONTERM_minusExpr + | 748 -> NONTERM_minusExpr + | 749 -> NONTERM_minusExpr + | 750 -> NONTERM_minusExpr + | 751 -> NONTERM_minusExpr + | 752 -> NONTERM_minusExpr + | 753 -> NONTERM_minusExpr + | 754 -> NONTERM_minusExpr + | 755 -> NONTERM_minusExpr + | 756 -> NONTERM_minusExpr + | 757 -> NONTERM_minusExpr + | 758 -> NONTERM_minusExpr + | 759 -> NONTERM_minusExpr + | 760 -> NONTERM_appExpr + | 761 -> NONTERM_appExpr + | 762 -> NONTERM_argExpr + | 763 -> NONTERM_argExpr + | 764 -> NONTERM_atomicExpr + | 765 -> NONTERM_atomicExpr + | 766 -> NONTERM_atomicExpr + | 767 -> NONTERM_atomicExpr + | 768 -> NONTERM_atomicExpr + | 769 -> NONTERM_atomicExpr + | 770 -> NONTERM_atomicExpr + | 771 -> NONTERM_atomicExpr + | 772 -> NONTERM_atomicExpr + | 773 -> NONTERM_atomicExpr + | 774 -> NONTERM_atomicExpr + | 775 -> NONTERM_atomicExpr + | 776 -> NONTERM_atomicExpr + | 777 -> NONTERM_atomicExpr + | 778 -> NONTERM_atomicExpr + | 779 -> NONTERM_atomicExpr + | 780 -> NONTERM_atomicExpr + | 781 -> NONTERM_atomicExpr + | 782 -> NONTERM_atomicExpr + | 783 -> NONTERM_atomicExpr + | 784 -> NONTERM_atomicExpr + | 785 -> NONTERM_atomicExprQualification + | 786 -> NONTERM_atomicExprQualification + | 787 -> NONTERM_atomicExprQualification + | 788 -> NONTERM_atomicExprQualification + | 789 -> NONTERM_atomicExprQualification + | 790 -> NONTERM_atomicExprQualification + | 791 -> NONTERM_atomicExprQualification + | 792 -> NONTERM_atomicExprQualification + | 793 -> NONTERM_atomicExprQualification + | 794 -> NONTERM_atomicExprQualification + | 795 -> NONTERM_atomicExprAfterType + | 796 -> NONTERM_atomicExprAfterType + | 797 -> NONTERM_atomicExprAfterType + | 798 -> NONTERM_atomicExprAfterType + | 799 -> NONTERM_atomicExprAfterType + | 800 -> NONTERM_atomicExprAfterType + | 801 -> NONTERM_atomicExprAfterType + | 802 -> NONTERM_atomicExprAfterType + | 803 -> NONTERM_atomicExprAfterType + | 804 -> NONTERM_atomicExprAfterType + | 805 -> NONTERM_atomicExprAfterType + | 806 -> NONTERM_beginEndExpr + | 807 -> NONTERM_beginEndExpr + | 808 -> NONTERM_beginEndExpr + | 809 -> NONTERM_beginEndExpr + | 810 -> NONTERM_quoteExpr + | 811 -> NONTERM_quoteExpr + | 812 -> NONTERM_quoteExpr + | 813 -> NONTERM_quoteExpr + | 814 -> NONTERM_arrayExpr + | 815 -> NONTERM_arrayExpr + | 816 -> NONTERM_arrayExpr + | 817 -> NONTERM_arrayExpr + | 818 -> NONTERM_parenExpr + | 819 -> NONTERM_parenExpr + | 820 -> NONTERM_parenExpr + | 821 -> NONTERM_parenExpr + | 822 -> NONTERM_parenExpr + | 823 -> NONTERM_parenExpr + | 824 -> NONTERM_parenExpr + | 825 -> NONTERM_parenExpr + | 826 -> NONTERM_parenExpr + | 827 -> NONTERM_parenExpr + | 828 -> NONTERM_parenExprBody + | 829 -> NONTERM_parenExprBody + | 830 -> NONTERM_parenExprBody + | 831 -> NONTERM_typars + | 832 -> NONTERM_typars + | 833 -> NONTERM_typarAlts + | 834 -> NONTERM_typarAlts + | 835 -> NONTERM_braceExpr + | 836 -> NONTERM_braceExpr + | 837 -> NONTERM_braceExpr + | 838 -> NONTERM_braceExpr + | 839 -> NONTERM_braceExpr + | 840 -> NONTERM_braceExprBody + | 841 -> NONTERM_braceExprBody + | 842 -> NONTERM_braceExprBody + | 843 -> NONTERM_listExprElements + | 844 -> NONTERM_listExprElements + | 845 -> NONTERM_arrayExprElements + | 846 -> NONTERM_arrayExprElements + | 847 -> NONTERM_computationExpr + | 848 -> NONTERM_arrowThenExprR + | 849 -> NONTERM_forLoopBinder + | 850 -> NONTERM_forLoopBinder + | 851 -> NONTERM_forLoopBinder + | 852 -> NONTERM_forLoopRange + | 853 -> NONTERM_forLoopDirection + | 854 -> NONTERM_forLoopDirection + | 855 -> NONTERM_inlineAssemblyExpr + | 856 -> NONTERM_optCurriedArgExprs + | 857 -> NONTERM_optCurriedArgExprs + | 858 -> NONTERM_opt_atomicExprAfterType + | 859 -> NONTERM_opt_atomicExprAfterType + | 860 -> NONTERM_opt_inlineAssemblyTypeArg + | 861 -> NONTERM_opt_inlineAssemblyTypeArg + | 862 -> NONTERM_optInlineAssemblyReturnTypes + | 863 -> NONTERM_optInlineAssemblyReturnTypes + | 864 -> NONTERM_optInlineAssemblyReturnTypes + | 865 -> NONTERM_recdExpr + | 866 -> NONTERM_recdExpr + | 867 -> NONTERM_recdExprCore + | 868 -> NONTERM_recdExprCore + | 869 -> NONTERM_recdExprCore + | 870 -> NONTERM_recdExprCore + | 871 -> NONTERM_recdExprCore + | 872 -> NONTERM_recdExprCore + | 873 -> NONTERM_recdExprCore + | 874 -> NONTERM_recdExprCore + | 875 -> NONTERM_recdExprCore + | 876 -> NONTERM_opt_seps_recd + | 877 -> NONTERM_opt_seps_recd + | 878 -> NONTERM_seps_recd + | 879 -> NONTERM_seps_recd + | 880 -> NONTERM_seps_recd + | 881 -> NONTERM_seps_recd + | 882 -> NONTERM_pathOrUnderscore + | 883 -> NONTERM_pathOrUnderscore + | 884 -> NONTERM_recdExprBindings + | 885 -> NONTERM_recdExprBindings + | 886 -> NONTERM_recdBinding + | 887 -> NONTERM_recdBinding + | 888 -> NONTERM_recdBinding + | 889 -> NONTERM_recdBinding + | 890 -> NONTERM_recdBinding + | 891 -> NONTERM_objExpr + | 892 -> NONTERM_objExpr + | 893 -> NONTERM_objExpr + | 894 -> NONTERM_objExprBaseCall + | 895 -> NONTERM_objExprBaseCall + | 896 -> NONTERM_objExprBaseCall + | 897 -> NONTERM_opt_objExprBindings + | 898 -> NONTERM_opt_objExprBindings + | 899 -> NONTERM_objExprBindings + | 900 -> NONTERM_objExprBindings + | 901 -> NONTERM_objExprBindings + | 902 -> NONTERM_objExprInterfaces + | 903 -> NONTERM_opt_objExprInterfaces + | 904 -> NONTERM_opt_objExprInterfaces + | 905 -> NONTERM_opt_objExprInterfaces + | 906 -> NONTERM_objExprInterface + | 907 -> NONTERM_braceBarExpr + | 908 -> NONTERM_braceBarExpr + | 909 -> NONTERM_braceBarExprCore + | 910 -> NONTERM_braceBarExprCore + | 911 -> NONTERM_braceBarExprCore + | 912 -> NONTERM_braceBarExprCore + | 913 -> NONTERM_braceBarExprCore + | 914 -> NONTERM_anonLambdaExpr + | 915 -> NONTERM_anonLambdaExpr + | 916 -> NONTERM_anonLambdaExpr + | 917 -> NONTERM_anonLambdaExpr + | 918 -> NONTERM_anonLambdaExpr + | 919 -> NONTERM_anonLambdaExpr + | 920 -> NONTERM_anonLambdaExpr + | 921 -> NONTERM_anonLambdaExpr + | 922 -> NONTERM_anonMatchingExpr + | 923 -> NONTERM_anonMatchingExpr + | 924 -> NONTERM_typeWithTypeConstraints + | 925 -> NONTERM_typeWithTypeConstraints + | 926 -> NONTERM_topTypeWithTypeConstraints + | 927 -> NONTERM_topTypeWithTypeConstraints + | 928 -> NONTERM_opt_topReturnTypeWithTypeConstraints + | 929 -> NONTERM_opt_topReturnTypeWithTypeConstraints + | 930 -> NONTERM_opt_topReturnTypeWithTypeConstraints + | 931 -> NONTERM_topType + | 932 -> NONTERM_topType + | 933 -> NONTERM_topType + | 934 -> NONTERM_topTupleType + | 935 -> NONTERM_topTupleType + | 936 -> NONTERM_topTupleType + | 937 -> NONTERM_topTupleType + | 938 -> NONTERM_topTupleTypeElements + | 939 -> NONTERM_topTupleTypeElements + | 940 -> NONTERM_topTupleTypeElements + | 941 -> NONTERM_topTupleTypeElements + | 942 -> NONTERM_topAppType + | 943 -> NONTERM_topAppType + | 944 -> NONTERM_topAppType + | 945 -> NONTERM_topAppType + | 946 -> NONTERM_topAppType + | 947 -> NONTERM_topAppType + | 948 -> NONTERM_topAppType + | 949 -> NONTERM_topAppType + | 950 -> NONTERM_topAppType + | 951 -> NONTERM_topAppType + | 952 -> NONTERM_invalidUseOfAppTypeFunction + | 953 -> NONTERM_invalidUseOfAppTypeFunction + | 954 -> NONTERM_invalidUseOfAppTypeFunction + | 955 -> NONTERM_invalidUseOfAppTypeFunction + | 956 -> NONTERM_typ + | 957 -> NONTERM_typ + | 958 -> NONTERM_typ + | 959 -> NONTERM_typ + | 960 -> NONTERM_typEOF + | 961 -> NONTERM_tupleType + | 962 -> NONTERM_tupleType + | 963 -> NONTERM_tupleType + | 964 -> NONTERM_tupleType + | 965 -> NONTERM_tupleType + | 966 -> NONTERM_tupleType + | 967 -> NONTERM_tupleType + | 968 -> NONTERM_tupleType + | 969 -> NONTERM_tupleOrQuotTypeElements + | 970 -> NONTERM_tupleOrQuotTypeElements + | 971 -> NONTERM_tupleOrQuotTypeElements + | 972 -> NONTERM_tupleOrQuotTypeElements + | 973 -> NONTERM_tupleOrQuotTypeElements + | 974 -> NONTERM_tupleOrQuotTypeElements + | 975 -> NONTERM_tupleOrQuotTypeElements + | 976 -> NONTERM_intersectionType + | 977 -> NONTERM_intersectionType + | 978 -> NONTERM_appTypeCon + | 979 -> NONTERM_appTypeCon + | 980 -> NONTERM_appTypeConPower + | 981 -> NONTERM_appTypeConPower + | 982 -> NONTERM_appType + | 983 -> NONTERM_appType + | 984 -> NONTERM_appType + | 985 -> NONTERM_appType + | 986 -> NONTERM_appType + | 987 -> NONTERM_appType + | 988 -> NONTERM_appType + | 989 -> NONTERM_appType + | 990 -> NONTERM_arrayTypeSuffix + | 991 -> NONTERM_arrayTypeSuffix + | 992 -> NONTERM_arrayTypeSuffix + | 993 -> NONTERM_arrayTypeSuffix + | 994 -> NONTERM_arrayTypeSuffix + | 995 -> NONTERM_arrayTypeSuffix + | 996 -> NONTERM_arrayTypeSuffix + | 997 -> NONTERM_arrayTypeSuffix + | 998 -> NONTERM_arrayTypeSuffix + | 999 -> NONTERM_arrayTypeSuffix + | 1000 -> NONTERM_arrayTypeSuffix + | 1001 -> NONTERM_arrayTypeSuffix + | 1002 -> NONTERM_arrayTypeSuffix + | 1003 -> NONTERM_arrayTypeSuffix + | 1004 -> NONTERM_arrayTypeSuffix + | 1005 -> NONTERM_arrayTypeSuffix + | 1006 -> NONTERM_arrayTypeSuffix + | 1007 -> NONTERM_arrayTypeSuffix + | 1008 -> NONTERM_arrayTypeSuffix + | 1009 -> NONTERM_arrayTypeSuffix + | 1010 -> NONTERM_arrayTypeSuffix + | 1011 -> NONTERM_arrayTypeSuffix + | 1012 -> NONTERM_arrayTypeSuffix + | 1013 -> NONTERM_arrayTypeSuffix + | 1014 -> NONTERM_arrayTypeSuffix + | 1015 -> NONTERM_arrayTypeSuffix + | 1016 -> NONTERM_arrayTypeSuffix + | 1017 -> NONTERM_arrayTypeSuffix + | 1018 -> NONTERM_arrayTypeSuffix + | 1019 -> NONTERM_arrayTypeSuffix + | 1020 -> NONTERM_arrayTypeSuffix + | 1021 -> NONTERM_arrayTypeSuffix + | 1022 -> NONTERM_appTypePrefixArguments + | 1023 -> NONTERM_typeArgListElements + | 1024 -> NONTERM_typeArgListElements + | 1025 -> NONTERM_typeArgListElements + | 1026 -> NONTERM_powerType + | 1027 -> NONTERM_powerType + | 1028 -> NONTERM_atomTypeNonAtomicDeprecated + | 1029 -> NONTERM_atomTypeNonAtomicDeprecated + | 1030 -> NONTERM_atomTypeOrAnonRecdType + | 1031 -> NONTERM_atomTypeOrAnonRecdType + | 1032 -> NONTERM_atomType + | 1033 -> NONTERM_atomType + | 1034 -> NONTERM_atomType + | 1035 -> NONTERM_atomType + | 1036 -> NONTERM_atomType + | 1037 -> NONTERM_atomType + | 1038 -> NONTERM_atomType + | 1039 -> NONTERM_atomType + | 1040 -> NONTERM_atomType + | 1041 -> NONTERM_atomType + | 1042 -> NONTERM_atomType + | 1043 -> NONTERM_atomType + | 1044 -> NONTERM_atomType + | 1045 -> NONTERM_atomType + | 1046 -> NONTERM_atomType + | 1047 -> NONTERM_atomType + | 1048 -> NONTERM_atomType + | 1049 -> NONTERM_atomType + | 1050 -> NONTERM_atomType + | 1051 -> NONTERM_atomType + | 1052 -> NONTERM_typeArgsNoHpaDeprecated + | 1053 -> NONTERM_typeArgsNoHpaDeprecated + | 1054 -> NONTERM_typeArgsActual + | 1055 -> NONTERM_typeArgsActual + | 1056 -> NONTERM_typeArgsActual + | 1057 -> NONTERM_typeArgsActual + | 1058 -> NONTERM_typeArgsActual + | 1059 -> NONTERM_typeArgsActual + | 1060 -> NONTERM_typeArgsActual + | 1061 -> NONTERM_typeArgActual + | 1062 -> NONTERM_typeArgActual + | 1063 -> NONTERM_typeArgActual + | 1064 -> NONTERM_typeArgActualOrDummyIfEmpty + | 1065 -> NONTERM_typeArgActualOrDummyIfEmpty + | 1066 -> NONTERM_dummyTypeArg + | 1067 -> NONTERM_measureTypeArg + | 1068 -> NONTERM_measureTypeArg + | 1069 -> NONTERM_measureTypeAtom + | 1070 -> NONTERM_measureTypeAtom + | 1071 -> NONTERM_measureTypeAtom + | 1072 -> NONTERM_measureTypePower + | 1073 -> NONTERM_measureTypePower + | 1074 -> NONTERM_measureTypePower + | 1075 -> NONTERM_measureTypeSeq + | 1076 -> NONTERM_measureTypeSeq + | 1077 -> NONTERM_measureTypeExpr + | 1078 -> NONTERM_measureTypeExpr + | 1079 -> NONTERM_measureTypeExpr + | 1080 -> NONTERM_measureTypeExpr + | 1081 -> NONTERM_typar + | 1082 -> NONTERM_typar + | 1083 -> NONTERM_ident + | 1084 -> NONTERM_path + | 1085 -> NONTERM_path + | 1086 -> NONTERM_path + | 1087 -> NONTERM_path + | 1088 -> NONTERM_opName + | 1089 -> NONTERM_opName + | 1090 -> NONTERM_opName + | 1091 -> NONTERM_opName + | 1092 -> NONTERM_opName + | 1093 -> NONTERM_operatorName + | 1094 -> NONTERM_operatorName + | 1095 -> NONTERM_operatorName + | 1096 -> NONTERM_operatorName + | 1097 -> NONTERM_operatorName + | 1098 -> NONTERM_operatorName + | 1099 -> NONTERM_operatorName + | 1100 -> NONTERM_operatorName + | 1101 -> NONTERM_operatorName + | 1102 -> NONTERM_operatorName + | 1103 -> NONTERM_operatorName + | 1104 -> NONTERM_operatorName + | 1105 -> NONTERM_operatorName + | 1106 -> NONTERM_operatorName + | 1107 -> NONTERM_operatorName + | 1108 -> NONTERM_operatorName + | 1109 -> NONTERM_operatorName + | 1110 -> NONTERM_operatorName + | 1111 -> NONTERM_operatorName + | 1112 -> NONTERM_operatorName + | 1113 -> NONTERM_operatorName + | 1114 -> NONTERM_operatorName + | 1115 -> NONTERM_operatorName + | 1116 -> NONTERM_operatorName + | 1117 -> NONTERM_operatorName + | 1118 -> NONTERM_operatorName + | 1119 -> NONTERM_activePatternCaseName + | 1120 -> NONTERM_activePatternCaseNames + | 1121 -> NONTERM_activePatternCaseNames + | 1122 -> NONTERM_identOrOp + | 1123 -> NONTERM_identOrOp + | 1124 -> NONTERM_pathOp + | 1125 -> NONTERM_pathOp + | 1126 -> NONTERM_pathOp + | 1127 -> NONTERM_pathOp + | 1128 -> NONTERM_nameop + | 1129 -> NONTERM_identExpr + | 1130 -> NONTERM_identExpr + | 1131 -> NONTERM_topSeparator + | 1132 -> NONTERM_topSeparator + | 1133 -> NONTERM_topSeparator + | 1134 -> NONTERM_topSeparators + | 1135 -> NONTERM_topSeparators + | 1136 -> NONTERM_opt_topSeparators + | 1137 -> NONTERM_opt_topSeparators + | 1138 -> NONTERM_seps + | 1139 -> NONTERM_seps + | 1140 -> NONTERM_seps + | 1141 -> NONTERM_seps + | 1142 -> NONTERM_declEnd + | 1143 -> NONTERM_declEnd + | 1144 -> NONTERM_declEnd + | 1145 -> NONTERM_opt_declEnd + | 1146 -> NONTERM_opt_declEnd + | 1147 -> NONTERM_opt_declEnd + | 1148 -> NONTERM_opt_declEnd + | 1149 -> NONTERM_opt_ODECLEND + | 1150 -> NONTERM_opt_ODECLEND + | 1151 -> NONTERM_deprecated_opt_equals + | 1152 -> NONTERM_deprecated_opt_equals + | 1153 -> NONTERM_opt_equals + | 1154 -> NONTERM_opt_equals + | 1155 -> NONTERM_opt_OBLOCKSEP + | 1156 -> NONTERM_opt_OBLOCKSEP + | 1157 -> NONTERM_opt_seps + | 1158 -> NONTERM_opt_seps + | 1159 -> NONTERM_opt_rec + | 1160 -> NONTERM_opt_rec + | 1161 -> NONTERM_opt_bar + | 1162 -> NONTERM_opt_bar + | 1163 -> NONTERM_opt_inline + | 1164 -> NONTERM_opt_inline + | 1165 -> NONTERM_opt_mutable + | 1166 -> NONTERM_opt_mutable + | 1167 -> NONTERM_doToken + | 1168 -> NONTERM_doToken + | 1169 -> NONTERM_doneDeclEnd + | 1170 -> NONTERM_doneDeclEnd + | 1171 -> NONTERM_structOrBegin + | 1172 -> NONTERM_structOrBegin + | 1173 -> NONTERM_sigOrBegin + | 1174 -> NONTERM_sigOrBegin + | 1175 -> NONTERM_colonOrEquals + | 1176 -> NONTERM_colonOrEquals + | 1177 -> NONTERM_string + | 1178 -> NONTERM_sourceIdentifier + | 1179 -> NONTERM_interpolatedStringFill + | 1180 -> NONTERM_interpolatedStringFill + | 1181 -> NONTERM_interpolatedStringParts + | 1182 -> NONTERM_interpolatedStringParts + | 1183 -> NONTERM_interpolatedStringParts + | 1184 -> NONTERM_interpolatedString + | 1185 -> NONTERM_interpolatedString + | 1186 -> NONTERM_interpolatedString + | 1187 -> NONTERM_opt_HIGH_PRECEDENCE_APP + | 1188 -> NONTERM_opt_HIGH_PRECEDENCE_APP + | 1189 -> NONTERM_opt_HIGH_PRECEDENCE_APP + | 1190 -> NONTERM_opt_HIGH_PRECEDENCE_TYAPP + | 1191 -> NONTERM_opt_HIGH_PRECEDENCE_TYAPP + | 1192 -> NONTERM_typeKeyword + | 1193 -> NONTERM_typeKeyword + | 1194 -> NONTERM_typeKeyword + | 1195 -> NONTERM_moduleKeyword + | 1196 -> NONTERM_moduleKeyword + | 1197 -> NONTERM_moduleKeyword + | 1198 -> NONTERM_rbrace + | 1199 -> NONTERM_rbrace + | 1200 -> NONTERM_rbrace + | 1201 -> NONTERM_bar_rbrace + | 1202 -> NONTERM_rparen + | 1203 -> NONTERM_rparen + | 1204 -> NONTERM_rparen + | 1205 -> NONTERM_oblockend + | 1206 -> NONTERM_oblockend + | 1207 -> NONTERM_oblockend + | 1208 -> NONTERM_ends_other_than_rparen_coming_soon_or_recover + | 1209 -> NONTERM_ends_other_than_rparen_coming_soon_or_recover + | 1210 -> NONTERM_ends_other_than_rparen_coming_soon_or_recover + | 1211 -> NONTERM_ends_other_than_rparen_coming_soon_or_recover + | 1212 -> NONTERM_ends_other_than_rparen_coming_soon_or_recover + | 1213 -> NONTERM_ends_coming_soon_or_recover + | 1214 -> NONTERM_ends_coming_soon_or_recover + | 1215 -> NONTERM_ends_coming_soon_or_recover + | 1216 -> NONTERM_ends_coming_soon_or_recover + | 1217 -> NONTERM_ends_coming_soon_or_recover + | 1218 -> NONTERM_ends_coming_soon_or_recover | _ -> failwith "prodIdxToNonTerminal: bad production index" -let _fsyacc_endOfInputTag = 204 -let _fsyacc_tagOfErrorTerminal = 202 +let _fsyacc_endOfInputTag = 205 +let _fsyacc_tagOfErrorTerminal = 203 // This function gets the name of a token as a string let token_to_string (t:token) = @@ -2378,11 +2446,11 @@ let token_to_string (t:token) = | ODUMMY _ -> "ODUMMY" | FIXED -> "FIXED" | OINTERFACE_MEMBER -> "OINTERFACE_MEMBER" - | OBLOCKEND -> "OBLOCKEND" | OBLOCKEND_COMING_SOON -> "OBLOCKEND_COMING_SOON" | OBLOCKEND_IS_HERE -> "OBLOCKEND_IS_HERE" - | ORIGHT_BLOCK_END -> "ORIGHT_BLOCK_END" - | ODECLEND -> "ODECLEND" + | OBLOCKEND _ -> "OBLOCKEND" + | ORIGHT_BLOCK_END _ -> "ORIGHT_BLOCK_END" + | ODECLEND _ -> "ODECLEND" | OEND -> "OEND" | OBLOCKSEP -> "OBLOCKSEP" | OBLOCKBEGIN -> "OBLOCKBEGIN" @@ -2449,6 +2517,7 @@ let token_to_string (t:token) = | SEMICOLON -> "SEMICOLON" | WHEN -> "WHEN" | WHILE -> "WHILE" + | WHILE_BANG -> "WHILE_BANG" | WITH -> "WITH" | HASH -> "HASH" | AMP -> "AMP" @@ -2584,11 +2653,11 @@ let _fsyacc_dataOfToken (t:token) = | ODUMMY _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x | FIXED -> (null : System.Object) | OINTERFACE_MEMBER -> (null : System.Object) - | OBLOCKEND -> (null : System.Object) | OBLOCKEND_COMING_SOON -> (null : System.Object) | OBLOCKEND_IS_HERE -> (null : System.Object) - | ORIGHT_BLOCK_END -> (null : System.Object) - | ODECLEND -> (null : System.Object) + | OBLOCKEND _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | ORIGHT_BLOCK_END _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | ODECLEND _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x | OEND -> (null : System.Object) | OBLOCKSEP -> (null : System.Object) | OBLOCKBEGIN -> (null : System.Object) @@ -2655,6 +2724,7 @@ let _fsyacc_dataOfToken (t:token) = | SEMICOLON -> (null : System.Object) | WHEN -> (null : System.Object) | WHILE -> (null : System.Object) + | WHILE_BANG -> (null : System.Object) | WITH -> (null : System.Object) | HASH -> (null : System.Object) | AMP -> (null : System.Object) @@ -2771,18 +2841,18 @@ let _fsyacc_dataOfToken (t:token) = | INTERP_STRING_BEGIN_END _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x | STRING _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x | BYTEARRAY _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x -let _fsyacc_gotos = [| 0us;65535us;0us;65535us;0us;65535us;0us;65535us;0us;65535us;1us;65535us;4us;5us;7us;65535us;4us;15us;16us;17us;18us;19us;20us;21us;22us;15us;24us;15us;26us;15us;4us;65535us;4us;10us;22us;23us;24us;25us;26us;27us;5us;65535us;4us;16us;22us;16us;24us;16us;26us;16us;28us;29us;4us;65535us;4us;18us;22us;18us;24us;18us;26us;18us;4us;65535us;4us;20us;22us;20us;24us;20us;26us;20us;4us;65535us;16us;22us;18us;24us;20us;26us;34us;35us;4us;65535us;16us;34us;18us;34us;20us;34us;34us;34us;23us;65535us;0us;87us;2us;260us;4us;33us;22us;33us;24us;33us;26us;33us;63us;87us;67us;87us;71us;87us;82us;87us;85us;87us;117us;87us;120us;87us;124us;87us;226us;260us;230us;260us;233us;260us;245us;260us;249us;260us;251us;260us;257us;260us;286us;260us;296us;260us;1us;65535us;39us;40us;1us;65535us;40us;41us;1us;65535us;0us;1us;6us;65535us;31us;272us;66us;67us;90us;91us;229us;230us;243us;272us;262us;272us;4us;65535us;58us;62us;60us;62us;221us;225us;223us;225us;1us;65535us;0us;44us;2us;65535us;58us;59us;60us;61us;2us;65535us;58us;60us;60us;60us;2us;65535us;0us;58us;63us;64us;3us;65535us;0us;69us;63us;69us;67us;68us;6us;65535us;0us;70us;63us;70us;67us;70us;71us;72us;120us;121us;124us;125us;9us;65535us;0us;78us;63us;78us;67us;78us;71us;78us;82us;83us;85us;86us;117us;118us;120us;78us;124us;78us;9us;65535us;0us;81us;63us;81us;67us;81us;71us;81us;82us;81us;85us;81us;117us;81us;120us;81us;124us;81us;9us;65535us;0us;88us;63us;88us;67us;88us;71us;88us;82us;88us;85us;88us;117us;88us;120us;88us;124us;88us;2us;65535us;109us;110us;183us;184us;1us;65535us;92us;94us;2us;65535us;97us;98us;128us;129us;3us;65535us;96us;97us;127us;128us;194us;195us;1us;65535us;131us;132us;2us;65535us;131us;141us;134us;135us;2us;65535us;131us;144us;134us;144us;2us;65535us;131us;148us;134us;148us;3us;65535us;149us;150us;159us;160us;212us;213us;8us;65535us;134us;156us;136us;137us;149us;167us;155us;156us;159us;167us;163us;164us;170us;171us;212us;167us;8us;65535us;134us;168us;136us;168us;149us;168us;155us;168us;159us;168us;163us;168us;170us;168us;212us;168us;11us;65535us;134us;169us;136us;169us;149us;169us;155us;169us;159us;169us;163us;169us;170us;169us;212us;169us;615us;616us;622us;623us;1445us;1446us;3us;65535us;182us;183us;441us;442us;471us;472us;2us;65535us;199us;200us;201us;202us;2us;65535us;174us;176us;175us;176us;2us;65535us;66us;99us;90us;99us;5us;65535us;130us;133us;137us;138us;139us;140us;141us;142us;210us;211us;1us;65535us;2us;3us;1us;65535us;2us;215us;2us;65535us;221us;222us;223us;224us;2us;65535us;221us;223us;223us;223us;2us;65535us;2us;221us;226us;227us;3us;65535us;2us;232us;226us;232us;230us;231us;5us;65535us;2us;240us;226us;240us;230us;240us;233us;234us;296us;297us;9us;65535us;2us;241us;226us;241us;230us;241us;233us;241us;245us;246us;251us;252us;257us;258us;286us;290us;296us;241us;10us;65535us;2us;247us;226us;247us;230us;247us;233us;247us;245us;247us;249us;250us;251us;247us;257us;247us;286us;247us;296us;247us;10us;65535us;2us;249us;226us;249us;230us;249us;233us;249us;245us;249us;249us;249us;251us;249us;257us;249us;286us;249us;296us;249us;15us;65535us;2us;259us;4us;28us;22us;28us;24us;28us;26us;28us;28us;28us;226us;259us;230us;259us;233us;259us;245us;259us;249us;259us;251us;259us;257us;259us;286us;259us;296us;259us;24us;65535us;0us;100us;2us;278us;4us;278us;22us;278us;24us;278us;26us;278us;28us;278us;63us;100us;67us;100us;71us;100us;82us;100us;85us;100us;117us;100us;120us;100us;124us;100us;226us;278us;230us;278us;233us;278us;245us;278us;249us;278us;251us;278us;257us;278us;286us;278us;296us;278us;1us;65535us;92us;93us;1us;65535us;273us;274us;2us;65535us;273us;294us;286us;287us;1us;65535us;351us;354us;82us;65535us;0us;65us;2us;228us;4us;30us;22us;30us;24us;30us;26us;30us;28us;261us;50us;51us;63us;65us;67us;89us;71us;89us;82us;89us;85us;89us;96us;345us;101us;102us;117us;89us;120us;89us;124us;89us;127us;345us;131us;534us;134us;173us;136us;172us;149us;172us;155us;172us;159us;172us;163us;172us;170us;172us;194us;345us;212us;172us;226us;228us;230us;242us;233us;242us;245us;242us;249us;261us;251us;242us;257us;242us;268us;345us;286us;242us;296us;242us;301us;424us;348us;345us;351us;355us;352us;534us;360us;534us;362us;425us;364us;424us;378us;424us;382us;424us;384us;424us;388us;424us;394us;424us;397us;424us;408us;409us;457us;345us;491us;519us;494us;424us;511us;519us;517us;519us;548us;687us;557us;687us;574us;583us;579us;583us;580us;583us;586us;583us;591us;583us;615us;172us;622us;172us;632us;642us;635us;642us;640us;642us;684us;687us;696us;697us;709us;760us;715us;760us;727us;754us;732us;741us;737us;741us;739us;741us;757us;760us;1445us;172us;1544us;520us;1546us;760us;123us;65535us;0us;304us;2us;276us;4us;276us;22us;276us;24us;276us;26us;276us;28us;276us;50us;304us;63us;304us;67us;304us;71us;304us;82us;304us;85us;304us;96us;304us;101us;304us;108us;1617us;117us;304us;120us;304us;124us;304us;127us;304us;131us;304us;134us;304us;136us;304us;146us;1617us;149us;304us;155us;304us;159us;304us;163us;304us;170us;304us;181us;1617us;194us;304us;197us;1617us;212us;304us;226us;276us;230us;276us;233us;276us;245us;276us;249us;276us;251us;276us;257us;276us;268us;304us;286us;276us;296us;276us;301us;304us;305us;306us;348us;304us;351us;304us;352us;304us;360us;304us;362us;304us;364us;304us;375us;1617us;378us;304us;382us;304us;384us;304us;388us;304us;394us;304us;397us;304us;408us;304us;440us;1617us;457us;304us;491us;304us;494us;304us;511us;304us;517us;304us;548us;304us;557us;304us;574us;304us;579us;304us;580us;304us;586us;304us;591us;304us;615us;304us;622us;304us;632us;304us;635us;304us;640us;304us;652us;1617us;684us;304us;696us;304us;709us;304us;715us;304us;727us;304us;732us;304us;737us;304us;739us;304us;757us;304us;835us;835us;836us;835us;838us;835us;878us;964us;897us;964us;913us;964us;916us;964us;927us;964us;935us;964us;958us;964us;964us;964us;965us;964us;967us;964us;968us;964us;971us;964us;973us;964us;974us;964us;980us;964us;982us;964us;1091us;964us;1250us;964us;1252us;964us;1257us;964us;1264us;964us;1266us;964us;1445us;304us;1544us;304us;1546us;304us;1589us;964us;1591us;964us;1598us;1617us;1602us;1617us;1606us;1617us;1609us;1617us;1612us;1617us;1615us;1617us;123us;65535us;0us;305us;2us;305us;4us;305us;22us;305us;24us;305us;26us;305us;28us;305us;50us;305us;63us;305us;67us;305us;71us;305us;82us;305us;85us;305us;96us;305us;101us;305us;108us;305us;117us;305us;120us;305us;124us;305us;127us;305us;131us;305us;134us;305us;136us;305us;146us;305us;149us;305us;155us;305us;159us;305us;163us;305us;170us;305us;181us;305us;194us;305us;197us;305us;212us;305us;226us;305us;230us;305us;233us;305us;245us;305us;249us;305us;251us;305us;257us;305us;268us;305us;286us;305us;296us;305us;301us;305us;305us;305us;348us;305us;351us;305us;352us;305us;360us;305us;362us;305us;364us;305us;375us;305us;378us;305us;382us;305us;384us;305us;388us;305us;394us;305us;397us;305us;408us;305us;440us;305us;457us;305us;491us;305us;494us;305us;511us;305us;517us;305us;548us;305us;557us;305us;574us;305us;579us;305us;580us;305us;586us;305us;591us;305us;615us;305us;622us;305us;632us;305us;635us;305us;640us;305us;652us;305us;684us;305us;696us;305us;709us;305us;715us;305us;727us;305us;732us;305us;737us;305us;739us;305us;757us;305us;835us;305us;836us;305us;838us;305us;878us;305us;897us;305us;913us;305us;916us;305us;927us;305us;935us;305us;958us;305us;964us;305us;965us;305us;967us;305us;968us;305us;971us;305us;973us;305us;974us;305us;980us;305us;982us;305us;1091us;305us;1250us;305us;1252us;305us;1257us;305us;1264us;305us;1266us;305us;1445us;305us;1544us;305us;1546us;305us;1589us;305us;1591us;305us;1598us;305us;1602us;305us;1606us;305us;1609us;305us;1612us;305us;1615us;305us;1us;65535us;307us;308us;2us;65535us;307us;317us;318us;319us;2us;65535us;307us;323us;318us;323us;4us;65535us;174us;208us;175us;208us;426us;430us;427us;430us;6us;65535us;96us;130us;127us;130us;194us;130us;268us;351us;348us;351us;457us;351us;2us;65535us;269us;270us;349us;350us;3us;65535us;268us;269us;348us;349us;457us;458us;2us;65535us;352us;353us;360us;361us;3us;65535us;352us;370us;360us;370us;362us;363us;3us;65535us;352us;373us;360us;373us;362us;373us;3us;65535us;352us;377us;360us;377us;362us;377us;3us;65535us;301us;302us;378us;379us;494us;495us;10us;65535us;301us;392us;362us;385us;364us;365us;378us;392us;382us;395us;384us;385us;388us;389us;394us;395us;397us;398us;494us;392us;10us;65535us;301us;393us;362us;393us;364us;393us;378us;393us;382us;393us;384us;393us;388us;393us;394us;393us;397us;393us;494us;393us;1us;65535us;416us;419us;2us;65535us;399us;400us;401us;402us;3us;65535us;399us;405us;401us;405us;406us;407us;3us;65535us;430us;431us;521us;522us;527us;528us;4us;65535us;174us;209us;175us;209us;426us;436us;427us;436us;10us;65535us;301us;396us;362us;396us;364us;396us;378us;396us;382us;396us;384us;396us;388us;396us;394us;396us;397us;396us;494us;396us;3us;65535us;340us;447us;426us;445us;427us;445us;2us;65535us;430us;449us;521us;524us;1us;65535us;468us;469us;52us;65535us;409us;882us;414us;882us;451us;922us;764us;882us;857us;882us;859us;882us;860us;882us;864us;882us;865us;882us;868us;882us;870us;882us;871us;882us;878us;882us;882us;922us;883us;922us;885us;922us;887us;922us;890us;922us;892us;922us;897us;882us;901us;922us;903us;922us;905us;922us;913us;882us;916us;882us;927us;882us;935us;882us;956us;882us;958us;882us;964us;882us;965us;882us;967us;882us;968us;882us;971us;882us;973us;882us;974us;882us;980us;882us;982us;882us;1029us;882us;1034us;882us;1091us;882us;1122us;882us;1129us;882us;1250us;882us;1252us;882us;1257us;882us;1264us;882us;1266us;882us;1572us;922us;1577us;922us;1589us;882us;1591us;882us;22us;65535us;30us;31us;51us;52us;65us;66us;89us;90us;104us;105us;172us;174us;173us;175us;177us;178us;228us;229us;242us;243us;261us;262us;345us;568us;355us;356us;424us;426us;425us;427us;460us;461us;466us;467us;534us;535us;642us;643us;689us;690us;697us;698us;728us;729us;74us;65535us;30us;487us;51us;487us;65us;487us;89us;487us;104us;487us;172us;487us;173us;487us;177us;487us;228us;487us;242us;487us;261us;487us;345us;487us;355us;487us;409us;482us;414us;482us;424us;487us;425us;487us;451us;482us;460us;487us;466us;487us;534us;487us;642us;487us;689us;487us;697us;487us;728us;487us;764us;482us;857us;482us;859us;482us;860us;482us;864us;482us;865us;482us;868us;482us;870us;482us;871us;482us;878us;482us;882us;482us;883us;482us;885us;482us;887us;482us;890us;482us;892us;482us;897us;482us;901us;482us;903us;482us;905us;482us;913us;482us;916us;482us;927us;482us;935us;482us;956us;482us;958us;482us;964us;482us;965us;482us;967us;482us;968us;482us;971us;482us;973us;482us;974us;482us;980us;482us;982us;482us;1029us;482us;1034us;482us;1091us;482us;1122us;482us;1129us;482us;1250us;482us;1252us;482us;1257us;482us;1264us;482us;1266us;482us;1572us;482us;1577us;482us;1589us;482us;1591us;482us;1us;65535us;434us;435us;4us;65535us;365us;366us;367us;368us;370us;371us;694us;695us;2us;65535us;426us;444us;427us;444us;2us;65535us;358us;359us;452us;453us;2us;65535us;358us;504us;452us;504us;2us;65535us;498us;499us;501us;502us;3us;65535us;498us;507us;501us;507us;1327us;1542us;2us;65535us;491us;492us;1544us;1549us;4us;65535us;491us;515us;511us;512us;517us;518us;1544us;515us;4us;65535us;491us;516us;511us;516us;517us;516us;1544us;516us;2us;65535us;519us;521us;520us;521us;5us;65535us;131us;143us;134us;143us;352us;372us;360us;372us;362us;372us;8us;65535us;175us;542us;427us;542us;535us;542us;646us;681us;648us;681us;669us;681us;672us;681us;703us;681us;80us;65535us;8us;1770us;108us;1770us;146us;1770us;175us;1770us;181us;1770us;185us;1770us;187us;1770us;197us;1770us;281us;1770us;375us;1770us;427us;1770us;433us;1770us;440us;1770us;463us;1770us;473us;1770us;535us;1770us;543us;1770us;596us;1770us;600us;1770us;605us;1770us;608us;1770us;618us;1770us;629us;1770us;646us;1770us;648us;1770us;652us;1770us;669us;1770us;672us;1770us;675us;1770us;678us;1770us;692us;1770us;703us;1770us;787us;1770us;832us;1770us;894us;1770us;961us;1770us;998us;1770us;1184us;1770us;1187us;1770us;1190us;1770us;1455us;1770us;1488us;1770us;1491us;1770us;1493us;1770us;1557us;1770us;1595us;1770us;1597us;1770us;1598us;1770us;1602us;1770us;1606us;1770us;1609us;1770us;1612us;1770us;1615us;1770us;1617us;1770us;1619us;1770us;1624us;1770us;1628us;1770us;1633us;1770us;1637us;1770us;1640us;1770us;1645us;1770us;1648us;1770us;1650us;1770us;1653us;1770us;1657us;1770us;1660us;1770us;1662us;1770us;1665us;1770us;1679us;1770us;1684us;1770us;1687us;1770us;1754us;1770us;1758us;1770us;1764us;1770us;1775us;1770us;1781us;1770us;1782us;1770us;1805us;1770us;1807us;1770us;1818us;1770us;81us;65535us;8us;556us;108us;556us;146us;556us;175us;556us;181us;556us;185us;556us;187us;556us;197us;556us;281us;556us;375us;556us;427us;556us;433us;556us;440us;556us;463us;556us;473us;556us;535us;556us;543us;556us;554us;555us;596us;556us;600us;556us;605us;556us;608us;556us;618us;556us;629us;556us;646us;556us;648us;556us;652us;556us;669us;556us;672us;556us;675us;556us;678us;556us;692us;556us;703us;556us;787us;556us;832us;556us;894us;556us;961us;556us;998us;556us;1184us;556us;1187us;556us;1190us;556us;1455us;556us;1488us;556us;1491us;556us;1493us;556us;1557us;556us;1595us;556us;1597us;556us;1598us;556us;1602us;556us;1606us;556us;1609us;556us;1612us;556us;1615us;556us;1617us;556us;1619us;556us;1624us;556us;1628us;556us;1633us;556us;1637us;556us;1640us;556us;1645us;556us;1648us;556us;1650us;556us;1653us;556us;1657us;556us;1660us;556us;1662us;556us;1665us;556us;1679us;556us;1684us;556us;1687us;556us;1754us;556us;1758us;556us;1764us;556us;1775us;556us;1781us;556us;1782us;556us;1805us;556us;1807us;556us;1818us;556us;5us;65535us;131us;149us;134us;149us;352us;378us;360us;378us;362us;378us;9us;65535us;174us;185us;175us;185us;426us;433us;427us;433us;1538us;1557us;1540us;1557us;1551us;1557us;1553us;1557us;1555us;1557us;1us;65535us;345us;346us;1us;65535us;568us;570us;3us;65535us;574us;575us;586us;577us;591us;578us;5us;65535us;574us;582us;579us;581us;580us;581us;586us;582us;591us;582us;1us;65535us;569us;572us;1us;65535us;591us;592us;4us;65535us;106us;595us;179us;595us;438us;595us;882us;883us;3us;65535us;106us;107us;179us;180us;438us;439us;3us;65535us;346us;347us;577us;587us;592us;593us;3us;65535us;596us;597us;1595us;598us;1597us;599us;4us;65535us;596us;602us;600us;601us;1595us;602us;1597us;602us;1us;65535us;618us;619us;3us;65535us;175us;541us;427us;541us;535us;541us;5us;65535us;175us;632us;427us;632us;535us;632us;634us;635us;639us;640us;3us;65535us;632us;633us;635us;636us;640us;641us;3us;65535us;632us;639us;635us;639us;640us;639us;1us;65535us;643us;644us;3us;65535us;175us;634us;427us;634us;535us;634us;3us;65535us;175us;637us;427us;637us;535us;637us;6us;65535us;646us;682us;648us;682us;669us;682us;672us;682us;675us;676us;703us;682us;6us;65535us;646us;674us;648us;674us;669us;674us;672us;674us;675us;674us;703us;674us;5us;65535us;646us;647us;648us;649us;669us;670us;672us;673us;703us;704us;3us;65535us;548us;549us;557us;558us;684us;685us;3us;65535us;548us;683us;557us;683us;684us;683us;3us;65535us;189us;190us;192us;193us;687us;688us;4us;65535us;31us;271us;229us;271us;243us;271us;262us;271us;6us;65535us;31us;694us;66us;210us;90us;210us;229us;694us;243us;694us;262us;694us;1us;65535us;698us;699us;1us;65535us;699us;700us;117us;65535us;6us;1040us;31us;264us;111us;1040us;113us;1040us;229us;264us;243us;264us;262us;263us;266us;1040us;340us;721us;412us;1040us;417us;1040us;426us;721us;427us;721us;454us;1040us;470us;1040us;712us;1040us;718us;1040us;767us;1040us;771us;1040us;781us;1040us;984us;1040us;989us;1040us;1004us;1040us;1006us;1040us;1009us;1040us;1012us;1040us;1030us;1040us;1035us;1040us;1041us;1040us;1044us;1040us;1047us;1040us;1053us;1040us;1057us;1040us;1061us;1040us;1065us;1040us;1067us;1040us;1072us;1040us;1074us;1040us;1076us;1040us;1078us;1040us;1080us;1040us;1082us;1040us;1093us;1040us;1103us;1040us;1110us;1040us;1116us;1040us;1118us;1040us;1123us;1040us;1127us;1040us;1130us;1040us;1134us;1040us;1137us;1040us;1140us;1040us;1142us;1040us;1145us;1040us;1147us;1040us;1193us;1040us;1195us;1040us;1199us;1040us;1200us;1040us;1201us;1040us;1202us;1040us;1203us;1040us;1204us;1040us;1205us;1040us;1206us;1040us;1207us;1040us;1208us;1040us;1209us;1040us;1211us;1040us;1212us;1040us;1213us;1040us;1214us;1040us;1215us;1040us;1216us;1040us;1217us;1040us;1218us;1040us;1219us;1040us;1240us;1040us;1241us;1040us;1242us;1040us;1243us;1040us;1247us;1040us;1271us;1040us;1272us;1040us;1276us;1040us;1278us;1040us;1282us;1040us;1284us;1040us;1288us;1040us;1291us;1040us;1293us;1040us;1295us;1040us;1371us;1040us;1378us;1040us;1385us;1040us;1392us;1040us;1409us;1040us;1416us;1040us;1417us;1040us;1423us;1040us;1429us;1040us;1430us;1040us;1431us;1040us;1447us;1040us;1457us;1040us;1470us;1040us;1472us;1040us;1475us;1040us;1476us;1040us;1502us;1040us;1507us;1040us;1532us;1040us;1574us;1040us;1579us;1040us;1949us;1040us;1953us;1040us;7us;65535us;31us;267us;229us;267us;243us;267us;262us;267us;340us;722us;426us;722us;427us;722us;117us;65535us;6us;1012us;31us;266us;111us;1044us;113us;1044us;229us;266us;243us;266us;262us;265us;266us;1012us;340us;723us;412us;1012us;417us;1012us;426us;723us;427us;723us;454us;1012us;470us;1012us;712us;1012us;718us;1012us;767us;1012us;771us;1012us;781us;1012us;984us;1012us;989us;1012us;1004us;1012us;1006us;1012us;1009us;1012us;1012us;1012us;1030us;1012us;1035us;1012us;1041us;1012us;1044us;1012us;1047us;1012us;1053us;1012us;1057us;1012us;1061us;1012us;1065us;1012us;1067us;1044us;1072us;1044us;1074us;1044us;1076us;1044us;1078us;1044us;1080us;1044us;1082us;1012us;1093us;1012us;1103us;1012us;1110us;1012us;1116us;1044us;1118us;1044us;1123us;1012us;1127us;1012us;1130us;1012us;1134us;1012us;1137us;1012us;1140us;1012us;1142us;1012us;1145us;1044us;1147us;1012us;1193us;1044us;1195us;1044us;1199us;1044us;1200us;1044us;1201us;1044us;1202us;1044us;1203us;1044us;1204us;1044us;1205us;1044us;1206us;1044us;1207us;1044us;1208us;1044us;1209us;1044us;1211us;1044us;1212us;1044us;1213us;1044us;1214us;1044us;1215us;1044us;1216us;1044us;1217us;1044us;1218us;1044us;1219us;1044us;1240us;1044us;1241us;1044us;1242us;1044us;1243us;1044us;1247us;1012us;1271us;1044us;1272us;1012us;1276us;1044us;1278us;1012us;1282us;1044us;1284us;1012us;1288us;1044us;1291us;1044us;1293us;1044us;1295us;1044us;1371us;1012us;1378us;1044us;1385us;1012us;1392us;1012us;1409us;1012us;1416us;1012us;1417us;1012us;1423us;1012us;1429us;1012us;1430us;1012us;1431us;1012us;1447us;1012us;1457us;1012us;1470us;1012us;1472us;1044us;1475us;1044us;1476us;1044us;1502us;1044us;1507us;1044us;1532us;1044us;1574us;1012us;1579us;1012us;1949us;1044us;1953us;1044us;116us;65535us;6us;1050us;31us;1050us;111us;1050us;113us;1050us;229us;1050us;243us;1050us;266us;1050us;340us;724us;412us;1050us;417us;1050us;426us;724us;427us;724us;454us;1050us;470us;1050us;712us;1050us;718us;1050us;767us;1050us;771us;1050us;781us;1050us;984us;1050us;989us;1050us;1004us;1050us;1006us;1050us;1009us;1050us;1012us;1050us;1030us;1050us;1035us;1050us;1041us;1050us;1044us;1050us;1047us;1050us;1053us;1050us;1057us;1050us;1061us;1050us;1065us;1050us;1067us;1050us;1072us;1050us;1074us;1050us;1076us;1050us;1078us;1050us;1080us;1050us;1082us;1050us;1093us;1050us;1103us;1050us;1110us;1050us;1116us;1050us;1118us;1050us;1123us;1050us;1127us;1050us;1130us;1050us;1134us;1050us;1137us;1050us;1140us;1050us;1142us;1050us;1145us;1050us;1147us;1050us;1193us;1050us;1195us;1050us;1199us;1050us;1200us;1050us;1201us;1050us;1202us;1050us;1203us;1050us;1204us;1050us;1205us;1050us;1206us;1050us;1207us;1050us;1208us;1050us;1209us;1050us;1211us;1050us;1212us;1050us;1213us;1050us;1214us;1050us;1215us;1050us;1216us;1050us;1217us;1050us;1218us;1050us;1219us;1050us;1240us;1050us;1241us;1050us;1242us;1050us;1243us;1050us;1247us;1050us;1271us;1050us;1272us;1050us;1276us;1050us;1278us;1050us;1282us;1050us;1284us;1050us;1288us;1050us;1291us;1050us;1293us;1050us;1295us;1050us;1371us;1050us;1378us;1050us;1385us;1050us;1392us;1050us;1409us;1050us;1416us;1050us;1417us;1050us;1423us;1050us;1429us;1050us;1430us;1050us;1431us;1050us;1447us;1050us;1457us;1050us;1470us;1050us;1472us;1050us;1475us;1050us;1476us;1050us;1502us;1050us;1507us;1050us;1532us;1050us;1574us;1050us;1579us;1050us;1949us;1050us;1953us;1050us;3us;65535us;340us;429us;426us;428us;427us;428us;5us;65535us;716us;717us;719us;720us;1036us;1037us;1131us;1132us;1143us;1144us;117us;65535us;6us;711us;31us;711us;111us;711us;113us;711us;229us;711us;243us;711us;262us;711us;266us;711us;340us;711us;412us;711us;417us;711us;426us;711us;427us;711us;454us;711us;470us;711us;712us;711us;718us;711us;767us;711us;771us;711us;781us;711us;984us;711us;989us;711us;1004us;711us;1006us;711us;1009us;711us;1012us;711us;1030us;711us;1035us;711us;1041us;711us;1044us;711us;1047us;711us;1053us;711us;1057us;711us;1061us;711us;1065us;711us;1067us;711us;1072us;711us;1074us;711us;1076us;711us;1078us;711us;1080us;711us;1082us;711us;1093us;711us;1103us;711us;1110us;711us;1116us;711us;1118us;711us;1123us;711us;1127us;711us;1130us;711us;1134us;711us;1137us;711us;1140us;711us;1142us;711us;1145us;711us;1147us;711us;1193us;711us;1195us;711us;1199us;711us;1200us;711us;1201us;711us;1202us;711us;1203us;711us;1204us;711us;1205us;711us;1206us;711us;1207us;711us;1208us;711us;1209us;711us;1211us;711us;1212us;711us;1213us;711us;1214us;711us;1215us;711us;1216us;711us;1217us;711us;1218us;711us;1219us;711us;1240us;711us;1241us;711us;1242us;711us;1243us;711us;1247us;711us;1271us;711us;1272us;711us;1276us;711us;1278us;711us;1282us;711us;1284us;711us;1288us;711us;1291us;711us;1293us;711us;1295us;711us;1371us;711us;1378us;711us;1385us;711us;1392us;711us;1409us;711us;1416us;711us;1417us;711us;1423us;711us;1429us;711us;1430us;711us;1431us;711us;1447us;711us;1457us;711us;1470us;711us;1472us;711us;1475us;711us;1476us;711us;1502us;711us;1507us;711us;1532us;711us;1574us;711us;1579us;711us;1949us;711us;1953us;711us;1us;65535us;732us;733us;1us;65535us;732us;735us;3us;65535us;732us;736us;737us;738us;739us;740us;2us;65535us;741us;742us;754us;745us;1us;65535us;727us;728us;4us;65535us;709us;710us;715us;716us;1544us;1545us;1546us;1547us;2us;65535us;755us;756us;758us;759us;5us;65535us;709us;755us;715us;755us;757us;758us;1544us;755us;1546us;755us;2us;65535us;520us;761us;760us;761us;1us;65535us;767us;768us;2us;65535us;767us;775us;771us;772us;1us;65535us;776us;777us;1us;65535us;777us;778us;1us;65535us;779us;780us;2us;65535us;779us;785us;783us;784us;289us;65535us;6us;823us;8us;1789us;31us;823us;108us;1789us;111us;823us;113us;823us;146us;1789us;175us;1789us;181us;1789us;185us;1789us;187us;1789us;197us;1789us;229us;823us;243us;823us;266us;823us;281us;1789us;321us;823us;325us;823us;330us;823us;375us;1789us;409us;823us;412us;823us;414us;823us;417us;823us;427us;1789us;433us;1789us;440us;1789us;451us;823us;454us;823us;463us;1789us;470us;823us;473us;1789us;497us;1789us;500us;823us;535us;1789us;543us;1789us;544us;1789us;596us;1789us;600us;1789us;605us;1789us;608us;1789us;618us;1789us;629us;1789us;646us;1789us;648us;1789us;652us;1789us;654us;823us;665us;823us;669us;1789us;672us;1789us;675us;1789us;678us;1789us;692us;1789us;703us;1789us;712us;823us;718us;823us;764us;823us;767us;823us;771us;823us;781us;823us;787us;1789us;832us;1789us;857us;823us;859us;823us;860us;823us;864us;823us;865us;823us;868us;823us;870us;823us;871us;823us;878us;823us;882us;823us;883us;823us;885us;823us;887us;823us;890us;823us;892us;823us;894us;1789us;897us;823us;901us;823us;903us;823us;905us;823us;913us;823us;916us;823us;927us;823us;935us;823us;956us;823us;958us;823us;961us;1789us;964us;823us;965us;823us;967us;823us;968us;823us;971us;823us;973us;823us;974us;823us;980us;823us;982us;823us;984us;823us;989us;823us;998us;1789us;1004us;823us;1006us;823us;1009us;823us;1012us;823us;1029us;823us;1030us;823us;1034us;823us;1035us;823us;1041us;823us;1044us;823us;1047us;823us;1053us;823us;1057us;823us;1061us;823us;1065us;823us;1067us;823us;1072us;823us;1074us;823us;1076us;823us;1078us;823us;1080us;823us;1082us;823us;1091us;823us;1093us;823us;1103us;823us;1110us;823us;1116us;823us;1118us;823us;1122us;823us;1123us;823us;1127us;823us;1129us;823us;1130us;823us;1134us;823us;1137us;823us;1140us;823us;1142us;823us;1145us;823us;1147us;823us;1184us;1789us;1187us;1789us;1190us;1789us;1193us;823us;1195us;823us;1199us;823us;1200us;823us;1201us;823us;1202us;823us;1203us;823us;1204us;823us;1205us;823us;1206us;823us;1207us;823us;1208us;823us;1209us;823us;1211us;823us;1212us;823us;1213us;823us;1214us;823us;1215us;823us;1216us;823us;1217us;823us;1218us;823us;1219us;823us;1240us;823us;1241us;823us;1242us;823us;1243us;823us;1247us;823us;1250us;823us;1252us;823us;1257us;823us;1264us;823us;1266us;823us;1271us;823us;1272us;823us;1276us;823us;1278us;823us;1282us;823us;1284us;823us;1288us;823us;1291us;823us;1293us;823us;1295us;823us;1297us;823us;1298us;823us;1299us;823us;1300us;823us;1302us;823us;1303us;823us;1305us;823us;1306us;823us;1308us;823us;1309us;823us;1311us;823us;1312us;823us;1314us;823us;1315us;823us;1317us;823us;1318us;823us;1320us;1789us;1321us;1789us;1324us;823us;1325us;823us;1332us;823us;1334us;823us;1336us;823us;1337us;823us;1338us;823us;1341us;823us;1348us;823us;1349us;823us;1352us;823us;1353us;823us;1371us;823us;1378us;823us;1385us;823us;1392us;823us;1409us;823us;1416us;823us;1417us;823us;1423us;823us;1429us;823us;1430us;823us;1431us;823us;1447us;823us;1455us;1789us;1457us;823us;1470us;823us;1472us;823us;1475us;823us;1476us;823us;1482us;823us;1488us;1789us;1491us;1789us;1493us;1789us;1495us;1789us;1497us;823us;1502us;823us;1507us;823us;1532us;823us;1557us;1789us;1565us;823us;1572us;823us;1574us;823us;1577us;823us;1579us;823us;1589us;823us;1591us;823us;1595us;1789us;1597us;1789us;1598us;1789us;1602us;1789us;1606us;1789us;1609us;1789us;1612us;1789us;1615us;1789us;1617us;1789us;1619us;1789us;1624us;1789us;1628us;1789us;1633us;1789us;1637us;1789us;1640us;1789us;1645us;1789us;1648us;1789us;1650us;1789us;1653us;1789us;1657us;1789us;1660us;1789us;1662us;1789us;1665us;1789us;1679us;1789us;1684us;1789us;1687us;1789us;1754us;1789us;1758us;1789us;1764us;1789us;1771us;1789us;1775us;1789us;1781us;1789us;1782us;1789us;1791us;823us;1805us;1789us;1807us;1789us;1818us;1789us;1949us;823us;1953us;823us;1us;65535us;817us;818us;4us;65535us;821us;822us;1672us;820us;1762us;820us;1833us;820us;3us;65535us;1672us;1673us;1762us;1763us;1833us;1834us;203us;65535us;6us;1398us;31us;1398us;111us;1398us;113us;1398us;229us;1398us;243us;1398us;266us;1398us;321us;1398us;325us;1398us;330us;1398us;409us;923us;412us;1398us;414us;923us;417us;1398us;451us;923us;454us;1398us;470us;1398us;500us;1398us;654us;1398us;665us;1398us;712us;1398us;718us;1398us;764us;923us;767us;1398us;771us;1398us;781us;1398us;857us;923us;859us;923us;860us;923us;864us;923us;865us;923us;868us;923us;870us;923us;871us;923us;878us;923us;882us;923us;883us;923us;885us;923us;887us;923us;890us;923us;892us;923us;897us;923us;901us;923us;903us;923us;905us;923us;913us;923us;916us;923us;927us;923us;935us;923us;956us;923us;958us;923us;964us;923us;965us;923us;967us;923us;968us;923us;971us;923us;973us;923us;974us;923us;980us;923us;982us;923us;984us;1398us;989us;1398us;1004us;1398us;1006us;1398us;1009us;1398us;1012us;1398us;1029us;923us;1030us;1398us;1034us;923us;1035us;1398us;1041us;1398us;1044us;1398us;1047us;1398us;1053us;1398us;1057us;1398us;1061us;1398us;1065us;1398us;1067us;1398us;1072us;1398us;1074us;1398us;1076us;1398us;1078us;1398us;1080us;1398us;1082us;1398us;1091us;923us;1093us;1398us;1103us;1398us;1110us;1398us;1116us;1398us;1118us;1398us;1122us;923us;1123us;1398us;1127us;1398us;1129us;923us;1130us;1398us;1134us;1398us;1137us;1398us;1140us;1398us;1142us;1398us;1145us;1398us;1147us;1398us;1193us;1398us;1195us;1398us;1199us;1398us;1200us;1398us;1201us;1398us;1202us;1398us;1203us;1398us;1204us;1398us;1205us;1398us;1206us;1398us;1207us;1398us;1208us;1398us;1209us;1398us;1211us;1398us;1212us;1398us;1213us;1398us;1214us;1398us;1215us;1398us;1216us;1398us;1217us;1398us;1218us;1398us;1219us;1398us;1240us;1398us;1241us;1398us;1242us;1398us;1243us;1398us;1247us;1398us;1250us;923us;1252us;923us;1257us;923us;1264us;923us;1266us;923us;1271us;1398us;1272us;1398us;1276us;1398us;1278us;1398us;1282us;1398us;1284us;1398us;1288us;1398us;1291us;1398us;1293us;1398us;1295us;1398us;1297us;1398us;1298us;1398us;1299us;1398us;1300us;1398us;1302us;1398us;1303us;1398us;1305us;1398us;1306us;1398us;1308us;1398us;1309us;1398us;1311us;1398us;1312us;1398us;1314us;1398us;1315us;1398us;1317us;1398us;1318us;1398us;1324us;1398us;1325us;1398us;1332us;1398us;1334us;1398us;1336us;1398us;1337us;1398us;1338us;1398us;1341us;1398us;1348us;1398us;1349us;1398us;1352us;1398us;1353us;1398us;1371us;1398us;1378us;1398us;1385us;1398us;1392us;1398us;1409us;1398us;1416us;1398us;1417us;1398us;1423us;1398us;1429us;1398us;1430us;1398us;1431us;1398us;1447us;1398us;1457us;1398us;1470us;1398us;1472us;1398us;1475us;1398us;1476us;1398us;1482us;1398us;1497us;1398us;1502us;1398us;1507us;1398us;1532us;1398us;1565us;1398us;1572us;923us;1574us;1398us;1577us;923us;1579us;1398us;1589us;923us;1591us;923us;1791us;1398us;1949us;1398us;1953us;1398us;3us;65535us;409us;410us;414us;415us;764us;765us;3us;65535us;835us;830us;836us;831us;838us;831us;2us;65535us;836us;837us;838us;839us;1us;65535us;357us;358us;14us;65535us;409us;826us;414us;826us;764us;826us;859us;846us;860us;847us;864us;848us;865us;849us;868us;850us;870us;851us;871us;852us;1029us;853us;1034us;854us;1122us;855us;1129us;856us;14us;65535us;409us;861us;414us;861us;764us;861us;859us;861us;860us;861us;864us;861us;865us;861us;868us;861us;870us;861us;871us;861us;1029us;861us;1034us;861us;1122us;861us;1129us;861us;14us;65535us;409us;862us;414us;862us;764us;862us;859us;862us;860us;862us;864us;862us;865us;862us;868us;862us;870us;862us;871us;862us;1029us;862us;1034us;862us;1122us;862us;1129us;862us;2us;65535us;874us;875us;897us;898us;2us;65535us;874us;872us;897us;872us;40us;65535us;409us;863us;414us;863us;764us;863us;857us;858us;859us;863us;860us;863us;864us;863us;865us;863us;868us;863us;870us;863us;871us;863us;878us;966us;897us;966us;913us;966us;916us;966us;927us;966us;935us;966us;956us;957us;958us;966us;964us;966us;965us;966us;967us;966us;968us;966us;971us;966us;973us;966us;974us;966us;980us;966us;982us;966us;1029us;863us;1034us;863us;1091us;966us;1122us;863us;1129us;863us;1250us;966us;1252us;966us;1257us;966us;1264us;966us;1266us;966us;1589us;966us;1591us;966us;6us;65535us;882us;889us;883us;884us;885us;886us;887us;888us;890us;891us;892us;893us;11us;65535us;882us;900us;883us;900us;885us;900us;887us;900us;890us;900us;892us;900us;901us;902us;903us;904us;905us;906us;1572us;1573us;1577us;1578us;52us;65535us;409us;896us;414us;896us;451us;452us;764us;896us;857us;896us;859us;896us;860us;896us;864us;896us;865us;896us;868us;896us;870us;896us;871us;896us;878us;896us;882us;901us;883us;901us;885us;901us;887us;901us;890us;901us;892us;901us;897us;896us;901us;901us;903us;901us;905us;901us;913us;896us;916us;896us;927us;896us;935us;896us;956us;896us;958us;896us;964us;896us;965us;896us;967us;896us;968us;896us;971us;896us;973us;896us;974us;896us;980us;896us;982us;896us;1029us;896us;1034us;896us;1091us;896us;1122us;896us;1129us;896us;1250us;896us;1252us;896us;1257us;896us;1264us;896us;1266us;896us;1572us;901us;1577us;901us;1589us;896us;1591us;896us;2us;65535us;897us;928us;927us;928us;24us;65535us;878us;879us;897us;942us;913us;953us;916us;953us;927us;942us;935us;950us;958us;943us;964us;944us;965us;945us;967us;946us;968us;947us;971us;948us;973us;949us;974us;951us;980us;952us;982us;953us;1091us;954us;1250us;955us;1252us;955us;1257us;955us;1264us;955us;1266us;955us;1589us;955us;1591us;955us;24us;65535us;878us;959us;897us;959us;913us;959us;916us;959us;927us;959us;935us;936us;958us;959us;964us;959us;965us;959us;967us;959us;968us;959us;971us;959us;973us;959us;974us;959us;980us;959us;982us;959us;1091us;959us;1250us;959us;1252us;959us;1257us;959us;1264us;959us;1266us;959us;1589us;959us;1591us;959us;24us;65535us;878us;960us;897us;960us;913us;960us;916us;960us;927us;960us;935us;960us;958us;960us;964us;960us;965us;960us;967us;960us;968us;960us;971us;960us;973us;960us;974us;960us;980us;960us;982us;960us;1091us;960us;1250us;960us;1252us;960us;1257us;960us;1264us;960us;1266us;960us;1589us;960us;1591us;960us;2us;65535us;910us;911us;977us;978us;2us;65535us;910us;975us;977us;975us;3us;65535us;913us;914us;916us;917us;982us;983us;25us;65535us;266us;1045us;412us;413us;417us;418us;454us;455us;470us;471us;712us;713us;718us;719us;781us;782us;1012us;1045us;1030us;1031us;1035us;1036us;1044us;1045us;1047us;1048us;1065us;1066us;1082us;1083us;1093us;1094us;1103us;1104us;1110us;1111us;1123us;1124us;1127us;1128us;1130us;1131us;1134us;1135us;1140us;1141us;1142us;1143us;1574us;1575us;6us;65535us;1076us;1077us;1078us;1079us;1195us;1196us;1502us;1503us;1507us;1508us;1532us;1533us;5us;65535us;1061us;1062us;1147us;1148us;1272us;1273us;1470us;1471us;1579us;1580us;52us;65535us;6us;1001us;266us;988us;412us;988us;417us;988us;454us;988us;470us;988us;712us;988us;718us;988us;767us;776us;771us;776us;781us;988us;984us;985us;989us;990us;1009us;1010us;1012us;988us;1030us;988us;1035us;988us;1041us;1042us;1044us;988us;1047us;988us;1053us;1054us;1057us;1058us;1061us;993us;1065us;988us;1082us;988us;1093us;988us;1103us;988us;1110us;988us;1123us;988us;1127us;988us;1130us;988us;1134us;988us;1137us;1138us;1140us;988us;1142us;988us;1147us;993us;1247us;1248us;1272us;993us;1278us;1279us;1284us;1285us;1385us;1390us;1392us;1393us;1409us;1410us;1416us;1418us;1417us;1418us;1429us;1449us;1430us;1449us;1431us;1449us;1447us;1448us;1470us;993us;1574us;988us;1579us;993us;1us;65535us;6us;7us;57us;65535us;6us;997us;266us;997us;412us;997us;417us;997us;454us;997us;470us;997us;712us;997us;718us;997us;767us;997us;771us;997us;781us;997us;984us;997us;989us;997us;1004us;1005us;1006us;1007us;1009us;997us;1012us;997us;1030us;997us;1035us;997us;1041us;997us;1044us;997us;1047us;997us;1053us;997us;1057us;997us;1061us;997us;1065us;997us;1082us;997us;1093us;997us;1103us;997us;1110us;997us;1123us;997us;1127us;997us;1130us;997us;1134us;997us;1137us;997us;1140us;997us;1142us;997us;1147us;997us;1247us;997us;1272us;997us;1278us;997us;1284us;997us;1371us;1467us;1385us;997us;1392us;997us;1409us;997us;1416us;997us;1417us;997us;1423us;1468us;1429us;997us;1430us;997us;1431us;997us;1447us;997us;1457us;1469us;1470us;997us;1574us;997us;1579us;997us;143us;65535us;72us;75us;150us;152us;156us;158us;160us;162us;164us;166us;234us;237us;276us;277us;287us;289us;290us;292us;297us;299us;307us;1994us;309us;1994us;366us;369us;379us;381us;385us;386us;389us;390us;497us;1994us;512us;514us;538us;539us;549us;551us;558us;560us;643us;645us;646us;651us;648us;650us;669us;671us;698us;701us;703us;705us;716us;726us;719us;726us;766us;770us;772us;774us;832us;834us;838us;845us;839us;842us;864us;1994us;865us;1994us;868us;1994us;876us;881us;877us;881us;878us;880us;897us;933us;927us;933us;928us;930us;935us;941us;936us;938us;954us;1115us;961us;963us;967us;1994us;968us;1994us;971us;1994us;985us;987us;998us;1000us;1036us;726us;1054us;1056us;1058us;1060us;1061us;995us;1062us;1064us;1067us;1071us;1068us;1070us;1080us;1089us;1081us;1088us;1083us;1085us;1091us;1994us;1092us;1994us;1093us;1994us;1094us;1994us;1102us;1109us;1103us;1108us;1104us;1106us;1116us;1120us;1118us;1121us;1131us;726us;1143us;726us;1147us;995us;1175us;1290us;1184us;1186us;1187us;1189us;1190us;1192us;1198us;1380us;1209us;1210us;1253us;1255us;1262us;1270us;1263us;1269us;1264us;1268us;1272us;995us;1279us;1281us;1285us;1287us;1291us;1994us;1293us;1994us;1295us;1994us;1328us;1384us;1359us;1384us;1362us;1384us;1371us;1376us;1372us;1374us;1392us;1397us;1393us;1395us;1410us;1412us;1416us;1422us;1417us;1422us;1418us;1420us;1423us;1428us;1424us;1426us;1429us;1442us;1430us;1442us;1431us;1442us;1433us;1988us;1457us;1462us;1458us;1460us;1470us;995us;1472us;1994us;1531us;1994us;1532us;1994us;1565us;1570us;1566us;1568us;1579us;996us;1580us;1582us;1598us;1600us;1602us;1604us;1606us;1608us;1612us;1614us;1619us;1621us;1624us;1626us;1628us;1630us;1633us;1635us;1637us;1639us;1645us;1647us;1650us;1652us;1653us;1655us;1657us;1659us;1662us;1664us;1674us;1787us;1757us;1810us;1776us;1779us;1777us;1779us;1781us;1788us;1782us;1786us;1783us;1785us;1800us;1994us;1805us;1816us;1807us;1994us;1812us;1994us;1853us;1994us;4us;65535us;1032us;1033us;1038us;1039us;1126us;1127us;1133us;1134us;113us;65535us;6us;1003us;31us;32us;111us;112us;113us;114us;229us;244us;243us;244us;266us;1003us;412us;1003us;417us;1003us;454us;1003us;470us;1003us;712us;1003us;718us;1003us;767us;1003us;771us;1003us;781us;1003us;984us;1003us;989us;1003us;1004us;1003us;1006us;1003us;1009us;1003us;1012us;1003us;1030us;1003us;1035us;1003us;1041us;1003us;1044us;1003us;1047us;1003us;1053us;1003us;1057us;1003us;1061us;1003us;1065us;1003us;1067us;1068us;1072us;1073us;1074us;1075us;1076us;992us;1078us;992us;1080us;1081us;1082us;1003us;1093us;1003us;1103us;1003us;1110us;1003us;1116us;1117us;1118us;1119us;1123us;1003us;1127us;1003us;1130us;1003us;1134us;1003us;1137us;1003us;1140us;1003us;1142us;1003us;1145us;1146us;1147us;1003us;1193us;1149us;1195us;992us;1199us;1150us;1200us;1151us;1201us;1152us;1202us;1153us;1203us;1154us;1204us;1155us;1205us;1156us;1206us;1157us;1207us;1158us;1208us;1159us;1209us;1160us;1211us;1161us;1212us;1162us;1213us;1163us;1214us;1164us;1215us;1165us;1216us;1166us;1217us;1167us;1218us;1168us;1219us;1169us;1240us;1170us;1241us;1171us;1242us;1171us;1243us;1171us;1247us;1003us;1271us;1172us;1272us;1003us;1276us;1173us;1278us;1003us;1282us;1174us;1284us;1003us;1288us;1175us;1291us;1176us;1293us;1178us;1295us;1179us;1371us;1003us;1378us;1177us;1385us;1003us;1392us;1003us;1409us;1003us;1416us;1003us;1417us;1003us;1423us;1003us;1429us;1003us;1430us;1003us;1431us;1003us;1447us;1003us;1457us;1003us;1470us;1003us;1472us;1180us;1475us;1181us;1476us;1182us;1502us;992us;1507us;992us;1532us;992us;1574us;1003us;1579us;1003us;1949us;1183us;1953us;1183us;1us;65535us;1367us;1368us;3us;65535us;1054us;1055us;1058us;1059us;1062us;1063us;4us;65535us;1250us;1251us;1252us;1253us;1589us;1590us;1591us;1592us;7us;65535us;1250us;1262us;1252us;1262us;1257us;1262us;1264us;1262us;1266us;1262us;1589us;1262us;1591us;1262us;7us;65535us;1250us;1256us;1252us;1256us;1257us;1258us;1264us;1265us;1266us;1267us;1589us;1256us;1591us;1256us;1us;65535us;955us;1261us;1us;65535us;1262us;1263us;2us;65535us;1068us;1069us;1175us;1289us;2us;65535us;1068us;1274us;1175us;1274us;1us;65535us;1274us;1275us;113us;65535us;6us;1197us;31us;1197us;111us;1197us;113us;1197us;229us;1197us;243us;1197us;266us;1197us;412us;1197us;417us;1197us;454us;1197us;470us;1197us;712us;1197us;718us;1197us;767us;1197us;771us;1197us;781us;1197us;984us;1197us;989us;1197us;1004us;1197us;1006us;1197us;1009us;1197us;1012us;1197us;1030us;1197us;1035us;1197us;1041us;1197us;1044us;1197us;1047us;1197us;1053us;1197us;1057us;1197us;1061us;1197us;1065us;1197us;1067us;1197us;1072us;1197us;1074us;1197us;1076us;1197us;1078us;1197us;1080us;1197us;1082us;1197us;1093us;1197us;1103us;1197us;1110us;1197us;1116us;1197us;1118us;1197us;1123us;1197us;1127us;1197us;1130us;1197us;1134us;1197us;1137us;1197us;1140us;1197us;1142us;1197us;1145us;1197us;1147us;1197us;1193us;1197us;1195us;1197us;1199us;1197us;1200us;1197us;1201us;1197us;1202us;1197us;1203us;1197us;1204us;1197us;1205us;1197us;1206us;1197us;1207us;1197us;1208us;1197us;1209us;1197us;1211us;1197us;1212us;1197us;1213us;1197us;1214us;1197us;1215us;1197us;1216us;1197us;1217us;1197us;1218us;1197us;1219us;1197us;1240us;1197us;1241us;1197us;1242us;1197us;1243us;1197us;1247us;1197us;1271us;1197us;1272us;1197us;1276us;1197us;1278us;1197us;1282us;1197us;1284us;1197us;1288us;1197us;1291us;1197us;1293us;1197us;1295us;1197us;1371us;1197us;1378us;1198us;1385us;1197us;1392us;1197us;1409us;1197us;1416us;1197us;1417us;1197us;1423us;1197us;1429us;1197us;1430us;1197us;1431us;1197us;1447us;1197us;1457us;1197us;1470us;1197us;1472us;1197us;1475us;1197us;1476us;1197us;1502us;1197us;1507us;1197us;1532us;1197us;1574us;1197us;1579us;1197us;1949us;1197us;1953us;1197us;131us;65535us;6us;1194us;31us;1194us;111us;1194us;113us;1194us;229us;1194us;243us;1194us;266us;1194us;412us;1194us;417us;1194us;454us;1194us;470us;1194us;712us;1194us;718us;1194us;767us;1194us;771us;1194us;781us;1194us;984us;1194us;989us;1194us;1004us;1194us;1006us;1194us;1009us;1194us;1012us;1194us;1030us;1194us;1035us;1194us;1041us;1194us;1044us;1194us;1047us;1194us;1053us;1194us;1057us;1194us;1061us;1194us;1065us;1194us;1067us;1194us;1072us;1194us;1074us;1194us;1076us;1194us;1078us;1194us;1080us;1194us;1082us;1194us;1093us;1194us;1103us;1194us;1110us;1194us;1116us;1194us;1118us;1194us;1123us;1194us;1127us;1194us;1130us;1194us;1134us;1194us;1137us;1194us;1140us;1194us;1142us;1194us;1145us;1194us;1147us;1194us;1193us;1194us;1195us;1194us;1199us;1194us;1200us;1194us;1201us;1194us;1202us;1194us;1203us;1194us;1204us;1194us;1205us;1194us;1206us;1194us;1207us;1194us;1208us;1194us;1209us;1194us;1211us;1194us;1212us;1194us;1213us;1194us;1214us;1194us;1215us;1194us;1216us;1194us;1217us;1194us;1218us;1194us;1219us;1194us;1240us;1194us;1241us;1194us;1242us;1194us;1243us;1194us;1247us;1194us;1271us;1194us;1272us;1194us;1276us;1194us;1278us;1194us;1282us;1194us;1284us;1194us;1288us;1194us;1291us;1194us;1293us;1194us;1295us;1194us;1297us;1301us;1298us;1301us;1299us;1301us;1300us;1301us;1302us;1304us;1303us;1304us;1305us;1307us;1306us;1307us;1308us;1310us;1309us;1310us;1311us;1313us;1312us;1313us;1314us;1316us;1315us;1316us;1317us;1319us;1318us;1319us;1332us;1333us;1334us;1335us;1371us;1194us;1378us;1194us;1385us;1194us;1392us;1194us;1409us;1194us;1416us;1194us;1417us;1194us;1423us;1194us;1429us;1194us;1430us;1194us;1431us;1194us;1447us;1194us;1457us;1194us;1470us;1194us;1472us;1194us;1475us;1194us;1476us;1194us;1502us;1194us;1507us;1194us;1532us;1194us;1574us;1194us;1579us;1194us;1949us;1194us;1953us;1194us;132us;65535us;6us;1336us;31us;1336us;111us;1336us;113us;1336us;229us;1336us;243us;1336us;266us;1336us;412us;1336us;417us;1336us;454us;1336us;470us;1336us;712us;1336us;718us;1336us;767us;1336us;771us;1336us;781us;1336us;984us;1336us;989us;1336us;1004us;1336us;1006us;1336us;1009us;1336us;1012us;1336us;1030us;1336us;1035us;1336us;1041us;1336us;1044us;1336us;1047us;1336us;1053us;1336us;1057us;1336us;1061us;1336us;1065us;1336us;1067us;1336us;1072us;1336us;1074us;1336us;1076us;1336us;1078us;1336us;1080us;1336us;1082us;1336us;1093us;1336us;1103us;1336us;1110us;1336us;1116us;1336us;1118us;1336us;1123us;1336us;1127us;1336us;1130us;1336us;1134us;1336us;1137us;1336us;1140us;1336us;1142us;1336us;1145us;1336us;1147us;1336us;1193us;1336us;1195us;1336us;1199us;1336us;1200us;1336us;1201us;1336us;1202us;1336us;1203us;1336us;1204us;1336us;1205us;1336us;1206us;1336us;1207us;1336us;1208us;1336us;1209us;1336us;1211us;1336us;1212us;1336us;1213us;1336us;1214us;1336us;1215us;1336us;1216us;1336us;1217us;1336us;1218us;1336us;1219us;1336us;1240us;1336us;1241us;1336us;1242us;1336us;1243us;1336us;1247us;1336us;1271us;1336us;1272us;1336us;1276us;1336us;1278us;1336us;1282us;1336us;1284us;1336us;1288us;1336us;1291us;1336us;1293us;1336us;1295us;1336us;1297us;1336us;1298us;1336us;1299us;1336us;1300us;1336us;1302us;1336us;1303us;1336us;1305us;1336us;1306us;1336us;1308us;1336us;1309us;1336us;1311us;1336us;1312us;1336us;1314us;1336us;1315us;1336us;1317us;1336us;1318us;1336us;1332us;1336us;1334us;1336us;1371us;1336us;1378us;1336us;1385us;1336us;1392us;1336us;1409us;1336us;1416us;1336us;1417us;1336us;1423us;1336us;1429us;1336us;1430us;1336us;1431us;1336us;1447us;1336us;1457us;1337us;1470us;1336us;1472us;1336us;1475us;1336us;1476us;1336us;1502us;1336us;1507us;1336us;1532us;1336us;1565us;1338us;1574us;1336us;1579us;1336us;1949us;1336us;1953us;1336us;4us;65535us;1336us;1339us;1337us;1339us;1338us;1339us;1482us;1485us;144us;65535us;6us;1340us;31us;1340us;111us;1340us;113us;1340us;229us;1340us;243us;1340us;266us;1340us;412us;1340us;417us;1340us;454us;1340us;470us;1340us;654us;655us;665us;666us;712us;1340us;718us;1340us;767us;1340us;771us;1340us;781us;1340us;984us;1340us;989us;1340us;1004us;1340us;1006us;1340us;1009us;1340us;1012us;1340us;1030us;1340us;1035us;1340us;1041us;1340us;1044us;1340us;1047us;1340us;1053us;1340us;1057us;1340us;1061us;1340us;1065us;1340us;1067us;1340us;1072us;1340us;1074us;1340us;1076us;1340us;1078us;1340us;1080us;1340us;1082us;1340us;1093us;1340us;1103us;1340us;1110us;1340us;1116us;1340us;1118us;1340us;1123us;1340us;1127us;1340us;1130us;1340us;1134us;1340us;1137us;1340us;1140us;1340us;1142us;1340us;1145us;1340us;1147us;1340us;1193us;1340us;1195us;1340us;1199us;1340us;1200us;1340us;1201us;1340us;1202us;1340us;1203us;1340us;1204us;1340us;1205us;1340us;1206us;1340us;1207us;1340us;1208us;1340us;1209us;1340us;1211us;1340us;1212us;1340us;1213us;1340us;1214us;1340us;1215us;1340us;1216us;1340us;1217us;1340us;1218us;1340us;1219us;1340us;1240us;1340us;1241us;1340us;1242us;1340us;1243us;1340us;1247us;1340us;1271us;1340us;1272us;1340us;1276us;1340us;1278us;1340us;1282us;1340us;1284us;1340us;1288us;1340us;1291us;1340us;1293us;1340us;1295us;1340us;1297us;1340us;1298us;1340us;1299us;1340us;1300us;1340us;1302us;1340us;1303us;1340us;1305us;1340us;1306us;1340us;1308us;1340us;1309us;1340us;1311us;1340us;1312us;1340us;1314us;1340us;1315us;1340us;1317us;1340us;1318us;1340us;1332us;1340us;1334us;1340us;1336us;1343us;1337us;1343us;1338us;1343us;1341us;1342us;1348us;1344us;1349us;1345us;1352us;1346us;1353us;1346us;1371us;1340us;1378us;1340us;1385us;1340us;1392us;1340us;1409us;1340us;1416us;1340us;1417us;1340us;1423us;1340us;1429us;1340us;1430us;1340us;1431us;1340us;1447us;1340us;1457us;1340us;1470us;1340us;1472us;1340us;1475us;1340us;1476us;1340us;1482us;1343us;1502us;1340us;1507us;1340us;1532us;1340us;1565us;1340us;1574us;1340us;1579us;1340us;1791us;1347us;1949us;1340us;1953us;1340us;3us;65535us;1328us;1329us;1359us;1360us;1362us;1363us;151us;65535us;6us;1381us;31us;1381us;111us;1381us;113us;1381us;229us;1381us;243us;1381us;266us;1381us;321us;1486us;325us;1486us;330us;1486us;412us;1381us;417us;1381us;454us;1381us;470us;1381us;500us;501us;654us;1381us;665us;1381us;712us;1381us;718us;1381us;767us;1381us;771us;1381us;781us;1381us;984us;1381us;989us;1381us;1004us;1381us;1006us;1381us;1009us;1381us;1012us;1381us;1030us;1381us;1035us;1381us;1041us;1381us;1044us;1381us;1047us;1381us;1053us;1381us;1057us;1381us;1061us;1381us;1065us;1381us;1067us;1381us;1072us;1381us;1074us;1381us;1076us;1381us;1078us;1381us;1080us;1381us;1082us;1381us;1093us;1381us;1103us;1381us;1110us;1381us;1116us;1381us;1118us;1381us;1123us;1381us;1127us;1381us;1130us;1381us;1134us;1381us;1137us;1381us;1140us;1381us;1142us;1381us;1145us;1381us;1147us;1381us;1193us;1381us;1195us;1381us;1199us;1381us;1200us;1381us;1201us;1381us;1202us;1381us;1203us;1381us;1204us;1381us;1205us;1381us;1206us;1381us;1207us;1381us;1208us;1381us;1209us;1381us;1211us;1381us;1212us;1381us;1213us;1381us;1214us;1381us;1215us;1381us;1216us;1381us;1217us;1381us;1218us;1381us;1219us;1381us;1240us;1381us;1241us;1381us;1242us;1381us;1243us;1381us;1247us;1381us;1271us;1381us;1272us;1381us;1276us;1381us;1278us;1381us;1282us;1381us;1284us;1381us;1288us;1381us;1291us;1381us;1293us;1381us;1295us;1381us;1297us;1381us;1298us;1381us;1299us;1381us;1300us;1381us;1302us;1381us;1303us;1381us;1305us;1381us;1306us;1381us;1308us;1381us;1309us;1381us;1311us;1381us;1312us;1381us;1314us;1381us;1315us;1381us;1317us;1381us;1318us;1381us;1324us;1326us;1325us;1327us;1332us;1381us;1334us;1381us;1336us;1381us;1337us;1381us;1338us;1381us;1341us;1381us;1348us;1381us;1349us;1381us;1352us;1381us;1353us;1381us;1371us;1381us;1378us;1381us;1385us;1381us;1392us;1381us;1409us;1381us;1416us;1381us;1417us;1381us;1423us;1381us;1429us;1381us;1430us;1381us;1431us;1381us;1447us;1381us;1457us;1381us;1470us;1381us;1472us;1381us;1475us;1381us;1476us;1381us;1482us;1381us;1497us;1486us;1502us;1381us;1507us;1381us;1532us;1381us;1565us;1381us;1574us;1381us;1579us;1381us;1791us;1381us;1949us;1381us;1953us;1381us;151us;65535us;6us;1408us;31us;1408us;111us;1408us;113us;1408us;229us;1408us;243us;1408us;266us;1408us;321us;1408us;325us;1408us;330us;1408us;412us;1408us;417us;1408us;454us;1408us;470us;1408us;500us;1408us;654us;1408us;665us;1408us;712us;1408us;718us;1408us;767us;1408us;771us;1408us;781us;1408us;984us;1408us;989us;1408us;1004us;1408us;1006us;1408us;1009us;1408us;1012us;1408us;1030us;1408us;1035us;1408us;1041us;1408us;1044us;1408us;1047us;1408us;1053us;1408us;1057us;1408us;1061us;1408us;1065us;1408us;1067us;1408us;1072us;1408us;1074us;1408us;1076us;1408us;1078us;1408us;1080us;1408us;1082us;1408us;1093us;1408us;1103us;1408us;1110us;1408us;1116us;1408us;1118us;1408us;1123us;1408us;1127us;1408us;1130us;1408us;1134us;1408us;1137us;1408us;1140us;1408us;1142us;1408us;1145us;1408us;1147us;1408us;1193us;1408us;1195us;1408us;1199us;1408us;1200us;1408us;1201us;1408us;1202us;1408us;1203us;1408us;1204us;1408us;1205us;1408us;1206us;1408us;1207us;1408us;1208us;1408us;1209us;1408us;1211us;1408us;1212us;1408us;1213us;1408us;1214us;1408us;1215us;1408us;1216us;1408us;1217us;1408us;1218us;1408us;1219us;1408us;1240us;1408us;1241us;1408us;1242us;1408us;1243us;1408us;1247us;1408us;1271us;1408us;1272us;1408us;1276us;1408us;1278us;1408us;1282us;1408us;1284us;1408us;1288us;1408us;1291us;1408us;1293us;1408us;1295us;1408us;1297us;1408us;1298us;1408us;1299us;1408us;1300us;1408us;1302us;1408us;1303us;1408us;1305us;1408us;1306us;1408us;1308us;1408us;1309us;1408us;1311us;1408us;1312us;1408us;1314us;1408us;1315us;1408us;1317us;1408us;1318us;1408us;1324us;1408us;1325us;1408us;1332us;1408us;1334us;1408us;1336us;1408us;1337us;1408us;1338us;1408us;1341us;1408us;1348us;1408us;1349us;1408us;1352us;1408us;1353us;1408us;1371us;1408us;1378us;1408us;1385us;1408us;1392us;1408us;1409us;1408us;1416us;1408us;1417us;1408us;1423us;1408us;1429us;1408us;1430us;1408us;1431us;1408us;1447us;1408us;1457us;1408us;1470us;1408us;1472us;1408us;1475us;1408us;1476us;1408us;1482us;1408us;1497us;1408us;1502us;1408us;1507us;1408us;1532us;1408us;1565us;1408us;1574us;1408us;1579us;1408us;1791us;1408us;1949us;1408us;1953us;1408us;203us;65535us;6us;1406us;31us;1406us;111us;1406us;113us;1406us;229us;1406us;243us;1406us;266us;1406us;321us;1406us;325us;1406us;330us;1406us;409us;907us;412us;1406us;414us;907us;417us;1406us;451us;907us;454us;1406us;470us;1406us;500us;1406us;654us;1406us;665us;1406us;712us;1406us;718us;1406us;764us;907us;767us;1406us;771us;1406us;781us;1406us;857us;907us;859us;907us;860us;907us;864us;907us;865us;907us;868us;907us;870us;907us;871us;907us;878us;907us;882us;907us;883us;907us;885us;907us;887us;907us;890us;907us;892us;907us;897us;907us;901us;907us;903us;907us;905us;907us;913us;907us;916us;907us;927us;907us;935us;907us;956us;907us;958us;907us;964us;907us;965us;907us;967us;907us;968us;907us;971us;907us;973us;907us;974us;907us;980us;907us;982us;907us;984us;1406us;989us;1406us;1004us;1406us;1006us;1406us;1009us;1406us;1012us;1406us;1029us;907us;1030us;1406us;1034us;907us;1035us;1406us;1041us;1406us;1044us;1406us;1047us;1406us;1053us;1406us;1057us;1406us;1061us;1406us;1065us;1406us;1067us;1406us;1072us;1406us;1074us;1406us;1076us;1406us;1078us;1406us;1080us;1406us;1082us;1406us;1091us;907us;1093us;1406us;1103us;1406us;1110us;1406us;1116us;1406us;1118us;1406us;1122us;907us;1123us;1406us;1127us;1406us;1129us;907us;1130us;1406us;1134us;1406us;1137us;1406us;1140us;1406us;1142us;1406us;1145us;1406us;1147us;1406us;1193us;1406us;1195us;1406us;1199us;1406us;1200us;1406us;1201us;1406us;1202us;1406us;1203us;1406us;1204us;1406us;1205us;1406us;1206us;1406us;1207us;1406us;1208us;1406us;1209us;1406us;1211us;1406us;1212us;1406us;1213us;1406us;1214us;1406us;1215us;1406us;1216us;1406us;1217us;1406us;1218us;1406us;1219us;1406us;1240us;1406us;1241us;1406us;1242us;1406us;1243us;1406us;1247us;1406us;1250us;907us;1252us;907us;1257us;907us;1264us;907us;1266us;907us;1271us;1406us;1272us;1406us;1276us;1406us;1278us;1406us;1282us;1406us;1284us;1406us;1288us;1406us;1291us;1406us;1293us;1406us;1295us;1406us;1297us;1406us;1298us;1406us;1299us;1406us;1300us;1406us;1302us;1406us;1303us;1406us;1305us;1406us;1306us;1406us;1308us;1406us;1309us;1406us;1311us;1406us;1312us;1406us;1314us;1406us;1315us;1406us;1317us;1406us;1318us;1406us;1324us;1406us;1325us;1406us;1332us;1406us;1334us;1406us;1336us;1406us;1337us;1406us;1338us;1406us;1341us;1406us;1348us;1406us;1349us;1406us;1352us;1406us;1353us;1406us;1371us;1406us;1378us;1406us;1385us;1406us;1392us;1406us;1409us;1406us;1416us;1406us;1417us;1406us;1423us;1406us;1429us;1406us;1430us;1406us;1431us;1406us;1447us;1406us;1457us;1406us;1470us;1406us;1472us;1406us;1475us;1406us;1476us;1406us;1482us;1406us;1497us;1406us;1502us;1406us;1507us;1406us;1532us;1406us;1565us;1406us;1572us;907us;1574us;1406us;1577us;907us;1579us;1406us;1589us;907us;1591us;907us;1791us;1406us;1949us;1406us;1953us;1406us;151us;65535us;6us;1407us;31us;1407us;111us;1407us;113us;1407us;229us;1407us;243us;1407us;266us;1407us;321us;1407us;325us;1407us;330us;1407us;412us;1407us;417us;1407us;454us;1407us;470us;1407us;500us;1407us;654us;1407us;665us;1407us;712us;1407us;718us;1407us;767us;1407us;771us;1407us;781us;1407us;984us;1407us;989us;1407us;1004us;1407us;1006us;1407us;1009us;1407us;1012us;1407us;1030us;1407us;1035us;1407us;1041us;1407us;1044us;1407us;1047us;1407us;1053us;1407us;1057us;1407us;1061us;1407us;1065us;1407us;1067us;1407us;1072us;1407us;1074us;1407us;1076us;1407us;1078us;1407us;1080us;1407us;1082us;1407us;1093us;1407us;1103us;1407us;1110us;1407us;1116us;1407us;1118us;1407us;1123us;1407us;1127us;1407us;1130us;1407us;1134us;1407us;1137us;1407us;1140us;1407us;1142us;1407us;1145us;1407us;1147us;1407us;1193us;1407us;1195us;1407us;1199us;1407us;1200us;1407us;1201us;1407us;1202us;1407us;1203us;1407us;1204us;1407us;1205us;1407us;1206us;1407us;1207us;1407us;1208us;1407us;1209us;1407us;1211us;1407us;1212us;1407us;1213us;1407us;1214us;1407us;1215us;1407us;1216us;1407us;1217us;1407us;1218us;1407us;1219us;1407us;1240us;1407us;1241us;1407us;1242us;1407us;1243us;1407us;1247us;1407us;1271us;1407us;1272us;1407us;1276us;1407us;1278us;1407us;1282us;1407us;1284us;1407us;1288us;1407us;1291us;1407us;1293us;1407us;1295us;1407us;1297us;1407us;1298us;1407us;1299us;1407us;1300us;1407us;1302us;1407us;1303us;1407us;1305us;1407us;1306us;1407us;1308us;1407us;1309us;1407us;1311us;1407us;1312us;1407us;1314us;1407us;1315us;1407us;1317us;1407us;1318us;1407us;1324us;1407us;1325us;1407us;1332us;1407us;1334us;1407us;1336us;1407us;1337us;1407us;1338us;1407us;1341us;1407us;1348us;1407us;1349us;1407us;1352us;1407us;1353us;1407us;1371us;1407us;1378us;1407us;1385us;1407us;1392us;1407us;1409us;1407us;1416us;1407us;1417us;1407us;1423us;1407us;1429us;1407us;1430us;1407us;1431us;1407us;1447us;1407us;1457us;1407us;1470us;1407us;1472us;1407us;1475us;1407us;1476us;1407us;1482us;1407us;1497us;1407us;1502us;1407us;1507us;1407us;1532us;1407us;1565us;1407us;1574us;1407us;1579us;1407us;1791us;1407us;1949us;1407us;1953us;1407us;151us;65535us;6us;1399us;31us;1399us;111us;1399us;113us;1399us;229us;1399us;243us;1399us;266us;1399us;321us;1399us;325us;1399us;330us;1399us;412us;1399us;417us;1399us;454us;1399us;470us;1399us;500us;1399us;654us;1399us;665us;1399us;712us;1399us;718us;1399us;767us;1399us;771us;1399us;781us;1399us;984us;1399us;989us;1399us;1004us;1399us;1006us;1399us;1009us;1399us;1012us;1399us;1030us;1399us;1035us;1399us;1041us;1399us;1044us;1399us;1047us;1399us;1053us;1399us;1057us;1399us;1061us;1399us;1065us;1399us;1067us;1399us;1072us;1399us;1074us;1399us;1076us;1399us;1078us;1399us;1080us;1399us;1082us;1399us;1093us;1399us;1103us;1399us;1110us;1399us;1116us;1399us;1118us;1399us;1123us;1399us;1127us;1399us;1130us;1399us;1134us;1399us;1137us;1399us;1140us;1399us;1142us;1399us;1145us;1399us;1147us;1399us;1193us;1399us;1195us;1399us;1199us;1399us;1200us;1399us;1201us;1399us;1202us;1399us;1203us;1399us;1204us;1399us;1205us;1399us;1206us;1399us;1207us;1399us;1208us;1399us;1209us;1399us;1211us;1399us;1212us;1399us;1213us;1399us;1214us;1399us;1215us;1399us;1216us;1399us;1217us;1399us;1218us;1399us;1219us;1399us;1240us;1399us;1241us;1399us;1242us;1399us;1243us;1399us;1247us;1399us;1271us;1399us;1272us;1399us;1276us;1399us;1278us;1399us;1282us;1399us;1284us;1399us;1288us;1399us;1291us;1399us;1293us;1399us;1295us;1399us;1297us;1399us;1298us;1399us;1299us;1399us;1300us;1399us;1302us;1399us;1303us;1399us;1305us;1399us;1306us;1399us;1308us;1399us;1309us;1399us;1311us;1399us;1312us;1399us;1314us;1399us;1315us;1399us;1317us;1399us;1318us;1399us;1324us;1399us;1325us;1399us;1332us;1399us;1334us;1399us;1336us;1399us;1337us;1399us;1338us;1399us;1341us;1399us;1348us;1399us;1349us;1399us;1352us;1399us;1353us;1399us;1371us;1399us;1378us;1399us;1385us;1399us;1392us;1399us;1409us;1399us;1416us;1399us;1417us;1399us;1423us;1399us;1429us;1399us;1430us;1399us;1431us;1399us;1447us;1399us;1457us;1399us;1470us;1399us;1472us;1399us;1475us;1399us;1476us;1399us;1482us;1399us;1497us;1399us;1502us;1399us;1507us;1399us;1532us;1399us;1565us;1399us;1574us;1399us;1579us;1399us;1791us;1399us;1949us;1399us;1953us;1399us;3us;65535us;1429us;1433us;1430us;1433us;1431us;1433us;3us;65535us;1429us;1443us;1430us;1443us;1431us;1443us;1us;65535us;1430us;1453us;151us;65535us;6us;1400us;31us;1400us;111us;1400us;113us;1400us;229us;1400us;243us;1400us;266us;1400us;321us;1400us;325us;1400us;330us;1400us;412us;1400us;417us;1400us;454us;1400us;470us;1400us;500us;1400us;654us;1400us;665us;1400us;712us;1400us;718us;1400us;767us;1400us;771us;1400us;781us;1400us;984us;1400us;989us;1400us;1004us;1400us;1006us;1400us;1009us;1400us;1012us;1400us;1030us;1400us;1035us;1400us;1041us;1400us;1044us;1400us;1047us;1400us;1053us;1400us;1057us;1400us;1061us;1400us;1065us;1400us;1067us;1400us;1072us;1400us;1074us;1400us;1076us;1400us;1078us;1400us;1080us;1400us;1082us;1400us;1093us;1400us;1103us;1400us;1110us;1400us;1116us;1400us;1118us;1400us;1123us;1400us;1127us;1400us;1130us;1400us;1134us;1400us;1137us;1400us;1140us;1400us;1142us;1400us;1145us;1400us;1147us;1400us;1193us;1400us;1195us;1400us;1199us;1400us;1200us;1400us;1201us;1400us;1202us;1400us;1203us;1400us;1204us;1400us;1205us;1400us;1206us;1400us;1207us;1400us;1208us;1400us;1209us;1400us;1211us;1400us;1212us;1400us;1213us;1400us;1214us;1400us;1215us;1400us;1216us;1400us;1217us;1400us;1218us;1400us;1219us;1400us;1240us;1400us;1241us;1400us;1242us;1400us;1243us;1400us;1247us;1400us;1271us;1400us;1272us;1400us;1276us;1400us;1278us;1400us;1282us;1400us;1284us;1400us;1288us;1400us;1291us;1400us;1293us;1400us;1295us;1400us;1297us;1400us;1298us;1400us;1299us;1400us;1300us;1400us;1302us;1400us;1303us;1400us;1305us;1400us;1306us;1400us;1308us;1400us;1309us;1400us;1311us;1400us;1312us;1400us;1314us;1400us;1315us;1400us;1317us;1400us;1318us;1400us;1324us;1400us;1325us;1400us;1332us;1400us;1334us;1400us;1336us;1400us;1337us;1400us;1338us;1400us;1341us;1400us;1348us;1400us;1349us;1400us;1352us;1400us;1353us;1400us;1371us;1400us;1378us;1400us;1385us;1400us;1392us;1400us;1409us;1400us;1416us;1400us;1417us;1400us;1423us;1400us;1429us;1400us;1430us;1400us;1431us;1400us;1447us;1400us;1457us;1400us;1470us;1400us;1472us;1400us;1475us;1400us;1476us;1400us;1482us;1400us;1497us;1400us;1502us;1400us;1507us;1400us;1532us;1400us;1565us;1400us;1574us;1400us;1579us;1400us;1791us;1400us;1949us;1400us;1953us;1400us;1us;65535us;1457us;1458us;1us;65535us;1371us;1372us;1us;65535us;1423us;1424us;1us;65535us;1457us;1466us;1us;65535us;1100us;1101us;1us;65535us;1091us;1092us;1us;65535us;1091us;1102us;1us;65535us;1181us;1476us;3us;65535us;1429us;1450us;1430us;1450us;1431us;1450us;1us;65535us;1481us;1482us;4us;65535us;321us;322us;325us;326us;330us;331us;1497us;1498us;1us;65535us;1480us;1481us;1us;65535us;1482us;1483us;1us;65535us;1457us;1464us;2us;65535us;1457us;1501us;1565us;1566us;6us;65535us;1499us;1500us;1504us;1505us;1509us;1510us;1513us;1514us;1515us;1516us;1519us;1520us;6us;65535us;1499us;1523us;1504us;1523us;1509us;1523us;1513us;1523us;1515us;1522us;1519us;1523us;3us;65535us;1511us;1531us;1515us;1531us;1523us;1531us;5us;65535us;1498us;1499us;1503us;1504us;1508us;1509us;1512us;1513us;1518us;1519us;3us;65535us;1511us;1512us;1515us;1518us;1523us;1530us;1us;65535us;1457us;1465us;1us;65535us;1457us;1536us;1us;65535us;1558us;1559us;2us;65535us;1536us;1537us;1558us;1543us;1us;65535us;1540us;1541us;4us;65535us;1538us;1539us;1551us;1552us;1553us;1554us;1555us;1556us;5us;65535us;1538us;1553us;1540us;1551us;1551us;1553us;1553us;1553us;1555us;1553us;151us;65535us;6us;1401us;31us;1401us;111us;1401us;113us;1401us;229us;1401us;243us;1401us;266us;1401us;321us;1401us;325us;1401us;330us;1401us;412us;1401us;417us;1401us;454us;1401us;470us;1401us;500us;1401us;654us;1401us;665us;1401us;712us;1401us;718us;1401us;767us;1401us;771us;1401us;781us;1401us;984us;1401us;989us;1401us;1004us;1401us;1006us;1401us;1009us;1401us;1012us;1401us;1030us;1401us;1035us;1401us;1041us;1401us;1044us;1401us;1047us;1401us;1053us;1401us;1057us;1401us;1061us;1401us;1065us;1401us;1067us;1401us;1072us;1401us;1074us;1401us;1076us;1401us;1078us;1401us;1080us;1401us;1082us;1401us;1093us;1401us;1103us;1401us;1110us;1401us;1116us;1401us;1118us;1401us;1123us;1401us;1127us;1401us;1130us;1401us;1134us;1401us;1137us;1401us;1140us;1401us;1142us;1401us;1145us;1401us;1147us;1401us;1193us;1401us;1195us;1401us;1199us;1401us;1200us;1401us;1201us;1401us;1202us;1401us;1203us;1401us;1204us;1401us;1205us;1401us;1206us;1401us;1207us;1401us;1208us;1401us;1209us;1401us;1211us;1401us;1212us;1401us;1213us;1401us;1214us;1401us;1215us;1401us;1216us;1401us;1217us;1401us;1218us;1401us;1219us;1401us;1240us;1401us;1241us;1401us;1242us;1401us;1243us;1401us;1247us;1401us;1271us;1401us;1272us;1401us;1276us;1401us;1278us;1401us;1282us;1401us;1284us;1401us;1288us;1401us;1291us;1401us;1293us;1401us;1295us;1401us;1297us;1401us;1298us;1401us;1299us;1401us;1300us;1401us;1302us;1401us;1303us;1401us;1305us;1401us;1306us;1401us;1308us;1401us;1309us;1401us;1311us;1401us;1312us;1401us;1314us;1401us;1315us;1401us;1317us;1401us;1318us;1401us;1324us;1401us;1325us;1401us;1332us;1401us;1334us;1401us;1336us;1401us;1337us;1401us;1338us;1401us;1341us;1401us;1348us;1401us;1349us;1401us;1352us;1401us;1353us;1401us;1371us;1401us;1378us;1401us;1385us;1401us;1392us;1401us;1409us;1401us;1416us;1401us;1417us;1401us;1423us;1401us;1429us;1401us;1430us;1401us;1431us;1401us;1447us;1401us;1457us;1401us;1470us;1401us;1472us;1401us;1475us;1401us;1476us;1401us;1482us;1401us;1497us;1401us;1502us;1401us;1507us;1401us;1532us;1401us;1565us;1401us;1574us;1401us;1579us;1401us;1791us;1401us;1949us;1401us;1953us;1401us;153us;65535us;6us;1564us;31us;1564us;111us;1564us;113us;1564us;229us;1564us;243us;1564us;266us;1564us;321us;1564us;325us;1564us;330us;1564us;412us;1564us;417us;1564us;454us;1564us;470us;1564us;500us;1564us;654us;1564us;665us;1564us;712us;1564us;718us;1564us;767us;1564us;771us;1564us;781us;1564us;984us;1564us;989us;1564us;1004us;1564us;1006us;1564us;1009us;1564us;1012us;1564us;1030us;1564us;1035us;1564us;1041us;1564us;1044us;1564us;1047us;1564us;1053us;1564us;1057us;1564us;1061us;1564us;1065us;1564us;1067us;1564us;1072us;1564us;1074us;1564us;1076us;1564us;1078us;1564us;1080us;1564us;1082us;1564us;1093us;1564us;1103us;1564us;1110us;1564us;1116us;1564us;1118us;1564us;1123us;1564us;1127us;1564us;1130us;1564us;1134us;1564us;1137us;1564us;1140us;1564us;1142us;1564us;1145us;1564us;1147us;1564us;1193us;1564us;1195us;1564us;1199us;1564us;1200us;1564us;1201us;1564us;1202us;1564us;1203us;1564us;1204us;1564us;1205us;1564us;1206us;1564us;1207us;1564us;1208us;1564us;1209us;1564us;1211us;1564us;1212us;1564us;1213us;1564us;1214us;1564us;1215us;1564us;1216us;1564us;1217us;1564us;1218us;1564us;1219us;1564us;1240us;1564us;1241us;1564us;1242us;1564us;1243us;1564us;1247us;1564us;1271us;1564us;1272us;1564us;1276us;1564us;1278us;1564us;1282us;1564us;1284us;1564us;1288us;1564us;1291us;1564us;1293us;1564us;1295us;1564us;1297us;1564us;1298us;1564us;1299us;1564us;1300us;1564us;1302us;1564us;1303us;1564us;1305us;1564us;1306us;1564us;1308us;1564us;1309us;1564us;1311us;1564us;1312us;1564us;1314us;1564us;1315us;1564us;1317us;1564us;1318us;1564us;1324us;1564us;1325us;1564us;1332us;1564us;1334us;1564us;1336us;1564us;1337us;1564us;1338us;1564us;1341us;1564us;1348us;1564us;1349us;1564us;1352us;1564us;1353us;1564us;1371us;1564us;1377us;1563us;1378us;1564us;1385us;1564us;1392us;1564us;1409us;1564us;1416us;1564us;1417us;1564us;1423us;1564us;1429us;1564us;1430us;1564us;1431us;1564us;1447us;1564us;1457us;1564us;1470us;1564us;1472us;1564us;1475us;1564us;1476us;1564us;1482us;1564us;1497us;1564us;1502us;1564us;1507us;1564us;1532us;1564us;1562us;1563us;1565us;1564us;1574us;1564us;1579us;1564us;1791us;1564us;1949us;1564us;1953us;1564us;113us;65535us;6us;1052us;31us;1052us;111us;1052us;113us;1052us;229us;1052us;243us;1052us;266us;1052us;412us;1052us;417us;1052us;454us;1052us;470us;1052us;712us;1052us;718us;1052us;767us;1052us;771us;1052us;781us;1052us;984us;1052us;989us;1052us;1004us;1052us;1006us;1052us;1009us;1052us;1012us;1052us;1030us;1052us;1035us;1052us;1041us;1052us;1044us;1052us;1047us;1052us;1053us;1052us;1057us;1052us;1061us;1052us;1065us;1052us;1067us;1052us;1072us;1052us;1074us;1052us;1076us;1052us;1078us;1052us;1080us;1052us;1082us;1052us;1093us;1052us;1103us;1052us;1110us;1052us;1116us;1052us;1118us;1052us;1123us;1052us;1127us;1052us;1130us;1052us;1134us;1052us;1137us;1052us;1140us;1052us;1142us;1052us;1145us;1052us;1147us;1052us;1193us;1052us;1195us;1052us;1199us;1052us;1200us;1052us;1201us;1052us;1202us;1052us;1203us;1052us;1204us;1052us;1205us;1052us;1206us;1052us;1207us;1052us;1208us;1052us;1209us;1052us;1211us;1052us;1212us;1052us;1213us;1052us;1214us;1052us;1215us;1052us;1216us;1052us;1217us;1052us;1218us;1052us;1219us;1052us;1240us;1052us;1241us;1052us;1242us;1052us;1243us;1052us;1247us;1052us;1271us;1052us;1272us;1052us;1276us;1052us;1278us;1052us;1282us;1052us;1284us;1052us;1288us;1052us;1291us;1052us;1293us;1052us;1295us;1052us;1371us;1052us;1378us;1052us;1385us;1052us;1392us;1052us;1409us;1052us;1416us;1052us;1417us;1052us;1423us;1052us;1429us;1052us;1430us;1052us;1431us;1052us;1447us;1052us;1457us;1052us;1470us;1052us;1472us;1052us;1475us;1052us;1476us;1052us;1502us;1052us;1507us;1052us;1532us;1052us;1574us;1052us;1579us;1052us;1949us;1052us;1953us;1052us;113us;65535us;6us;1051us;31us;1051us;111us;1051us;113us;1051us;229us;1051us;243us;1051us;266us;1051us;412us;1051us;417us;1051us;454us;1051us;470us;1051us;712us;1051us;718us;1051us;767us;1051us;771us;1051us;781us;1051us;984us;1051us;989us;1051us;1004us;1051us;1006us;1051us;1009us;1051us;1012us;1051us;1030us;1051us;1035us;1051us;1041us;1051us;1044us;1051us;1047us;1051us;1053us;1051us;1057us;1051us;1061us;1051us;1065us;1051us;1067us;1051us;1072us;1051us;1074us;1051us;1076us;1051us;1078us;1051us;1080us;1051us;1082us;1051us;1093us;1051us;1103us;1051us;1110us;1051us;1116us;1051us;1118us;1051us;1123us;1051us;1127us;1051us;1130us;1051us;1134us;1051us;1137us;1051us;1140us;1051us;1142us;1051us;1145us;1051us;1147us;1051us;1193us;1051us;1195us;1051us;1199us;1051us;1200us;1051us;1201us;1051us;1202us;1051us;1203us;1051us;1204us;1051us;1205us;1051us;1206us;1051us;1207us;1051us;1208us;1051us;1209us;1051us;1211us;1051us;1212us;1051us;1213us;1051us;1214us;1051us;1215us;1051us;1216us;1051us;1217us;1051us;1218us;1051us;1219us;1051us;1240us;1051us;1241us;1051us;1242us;1051us;1243us;1051us;1247us;1051us;1271us;1051us;1272us;1051us;1276us;1051us;1278us;1051us;1282us;1051us;1284us;1051us;1288us;1051us;1291us;1051us;1293us;1051us;1295us;1051us;1371us;1051us;1378us;1051us;1385us;1051us;1392us;1051us;1409us;1051us;1416us;1051us;1417us;1051us;1423us;1051us;1429us;1051us;1430us;1051us;1431us;1051us;1447us;1051us;1457us;1051us;1470us;1051us;1472us;1051us;1475us;1051us;1476us;1051us;1502us;1051us;1507us;1051us;1532us;1051us;1574us;1051us;1579us;1051us;1949us;1051us;1953us;1051us;3us;65535us;832us;833us;961us;962us;998us;999us;5us;65535us;108us;109us;181us;182us;197us;198us;440us;441us;1598us;1599us;3us;65535us;410us;411us;415us;416us;765us;766us;9us;65535us;108us;1596us;146us;147us;181us;1596us;197us;1596us;375us;376us;440us;1596us;652us;653us;1598us;1596us;1602us;1603us;9us;65535us;108us;1601us;146us;1601us;181us;1601us;197us;1601us;375us;1601us;440us;1601us;652us;1601us;1598us;1601us;1602us;1601us;4us;65535us;1606us;1607us;1609us;1610us;1612us;1613us;1615us;1616us;13us;65535us;108us;1605us;146us;1605us;181us;1605us;197us;1605us;375us;1605us;440us;1605us;652us;1605us;1598us;1605us;1602us;1605us;1606us;1611us;1609us;1611us;1612us;1611us;1615us;1611us;33us;65535us;8us;1642us;175us;540us;427us;540us;463us;464us;473us;474us;535us;540us;543us;1777us;605us;606us;608us;609us;618us;1777us;692us;693us;787us;788us;832us;1594us;961us;1594us;998us;1594us;1184us;1185us;1187us;1188us;1190us;1191us;1488us;1489us;1491us;1492us;1493us;1777us;1637us;1638us;1640us;1641us;1679us;1777us;1684us;1685us;1687us;1688us;1754us;1817us;1758us;1817us;1764us;1777us;1775us;1776us;1805us;1817us;1807us;1817us;1818us;1819us;1us;65535us;8us;9us;33us;65535us;8us;1636us;175us;1636us;427us;1636us;463us;1636us;473us;1636us;535us;1636us;543us;1636us;605us;1636us;608us;1636us;618us;1636us;692us;1636us;787us;1636us;832us;1636us;961us;1636us;998us;1636us;1184us;1636us;1187us;1636us;1190us;1636us;1488us;1636us;1491us;1636us;1493us;1636us;1637us;1636us;1640us;1636us;1679us;1636us;1684us;1636us;1687us;1636us;1754us;1636us;1758us;1636us;1764us;1636us;1775us;1636us;1805us;1636us;1807us;1636us;1818us;1636us;9us;65535us;1645us;1646us;1648us;1649us;1650us;1651us;1653us;1654us;1657us;1658us;1660us;1661us;1662us;1663us;1665us;1666us;1782us;1783us;108us;65535us;8us;1671us;108us;1671us;146us;1671us;175us;1671us;181us;1671us;185us;1671us;186us;1670us;187us;1671us;188us;1670us;197us;1671us;281us;1671us;282us;1670us;375us;1671us;427us;1671us;433us;1671us;434us;1670us;440us;1671us;463us;1671us;473us;1671us;497us;1671us;535us;1671us;543us;1671us;544us;1671us;596us;1671us;600us;1671us;605us;1671us;608us;1671us;618us;1671us;628us;1670us;629us;1671us;630us;1670us;631us;1670us;646us;1671us;648us;1671us;652us;1671us;669us;1671us;672us;1671us;675us;1671us;678us;1671us;679us;1670us;680us;1670us;692us;1671us;703us;1671us;787us;1671us;832us;1671us;894us;1671us;961us;1671us;998us;1671us;1184us;1671us;1187us;1671us;1190us;1671us;1320us;1671us;1321us;1671us;1455us;1671us;1456us;1670us;1488us;1671us;1491us;1671us;1493us;1671us;1495us;1671us;1557us;1671us;1558us;1670us;1595us;1671us;1597us;1671us;1598us;1671us;1602us;1671us;1606us;1671us;1609us;1671us;1612us;1671us;1615us;1671us;1617us;1671us;1618us;1670us;1619us;1671us;1620us;1670us;1624us;1671us;1625us;1670us;1627us;1670us;1628us;1671us;1629us;1670us;1633us;1671us;1634us;1670us;1637us;1671us;1640us;1671us;1644us;1670us;1645us;1671us;1648us;1671us;1650us;1671us;1653us;1671us;1656us;1670us;1657us;1671us;1660us;1671us;1662us;1671us;1665us;1671us;1674us;1670us;1679us;1671us;1681us;1670us;1684us;1671us;1687us;1671us;1754us;1671us;1758us;1671us;1764us;1671us;1766us;1670us;1771us;1671us;1775us;1671us;1781us;1671us;1782us;1671us;1805us;1671us;1807us;1671us;1818us;1671us;108us;65535us;8us;1773us;108us;1773us;146us;1773us;175us;1773us;181us;1773us;185us;1773us;186us;1678us;187us;1773us;188us;1678us;197us;1773us;281us;1773us;282us;1678us;375us;1773us;427us;1773us;433us;1773us;434us;1678us;440us;1773us;463us;1773us;473us;1773us;497us;1773us;535us;1773us;543us;1773us;544us;1773us;596us;1773us;600us;1773us;605us;1773us;608us;1773us;618us;1773us;628us;1678us;629us;1773us;630us;1678us;631us;1678us;646us;1773us;648us;1773us;652us;1773us;669us;1773us;672us;1773us;675us;1773us;678us;1773us;679us;1678us;680us;1678us;692us;1773us;703us;1773us;787us;1773us;832us;1773us;894us;1773us;961us;1773us;998us;1773us;1184us;1773us;1187us;1773us;1190us;1773us;1320us;1773us;1321us;1773us;1455us;1773us;1456us;1678us;1488us;1773us;1491us;1773us;1493us;1773us;1495us;1773us;1557us;1773us;1558us;1678us;1595us;1773us;1597us;1773us;1598us;1773us;1602us;1773us;1606us;1773us;1609us;1773us;1612us;1773us;1615us;1773us;1617us;1773us;1618us;1678us;1619us;1773us;1620us;1678us;1624us;1773us;1625us;1678us;1627us;1678us;1628us;1773us;1629us;1678us;1633us;1773us;1634us;1678us;1637us;1773us;1640us;1773us;1644us;1678us;1645us;1773us;1648us;1773us;1650us;1773us;1653us;1773us;1656us;1678us;1657us;1773us;1660us;1773us;1662us;1773us;1665us;1773us;1674us;1678us;1679us;1773us;1681us;1682us;1684us;1773us;1687us;1773us;1754us;1773us;1758us;1773us;1764us;1773us;1766us;1767us;1771us;1773us;1775us;1773us;1781us;1773us;1782us;1773us;1805us;1773us;1807us;1773us;1818us;1773us;79us;65535us;8us;1644us;108us;1627us;146us;1627us;175us;1644us;181us;1627us;185us;186us;187us;188us;197us;1627us;281us;282us;375us;1627us;427us;1644us;433us;434us;440us;1627us;463us;1644us;473us;1644us;535us;1644us;543us;1644us;596us;628us;600us;628us;605us;1644us;608us;1644us;618us;631us;629us;630us;646us;680us;648us;680us;652us;1627us;669us;680us;672us;680us;675us;680us;678us;679us;692us;1644us;703us;680us;787us;1644us;832us;1644us;961us;1644us;998us;1644us;1184us;1644us;1187us;1644us;1190us;1644us;1455us;1456us;1488us;1644us;1491us;1644us;1493us;1644us;1557us;1558us;1595us;628us;1597us;628us;1598us;1627us;1602us;1627us;1606us;1627us;1609us;1627us;1612us;1627us;1615us;1627us;1617us;1618us;1619us;1620us;1624us;1625us;1628us;1629us;1633us;1634us;1637us;1644us;1640us;1644us;1645us;1656us;1648us;1656us;1650us;1656us;1653us;1656us;1657us;1656us;1660us;1656us;1662us;1656us;1665us;1656us;1679us;1644us;1684us;1644us;1687us;1644us;1754us;1644us;1758us;1644us;1764us;1644us;1775us;1644us;1781us;1674us;1782us;1656us;1805us;1644us;1807us;1644us;1818us;1644us;21us;65535us;186us;1675us;188us;1675us;282us;1675us;434us;1675us;628us;1675us;630us;1675us;631us;1675us;679us;1675us;680us;1675us;1456us;1675us;1558us;1675us;1618us;1675us;1620us;1675us;1625us;1675us;1627us;1675us;1629us;1675us;1634us;1675us;1644us;1675us;1656us;1675us;1674us;1675us;1676us;1677us;5us;65535us;543us;1680us;618us;1680us;1493us;1680us;1679us;1680us;1764us;1765us;2us;65535us;1755us;1756us;1808us;1757us;79us;65535us;8us;1683us;108us;1683us;146us;1683us;175us;1683us;181us;1683us;185us;1683us;187us;1683us;197us;1683us;281us;1683us;375us;1683us;427us;1683us;433us;1683us;440us;1683us;463us;1683us;473us;1683us;535us;1683us;543us;1683us;596us;1683us;600us;1683us;605us;1683us;608us;1683us;618us;1683us;629us;1683us;646us;1683us;648us;1683us;652us;1683us;669us;1683us;672us;1683us;675us;1683us;678us;1683us;692us;1683us;703us;1683us;787us;1683us;832us;1683us;961us;1683us;998us;1683us;1184us;1683us;1187us;1683us;1190us;1683us;1455us;1683us;1488us;1683us;1491us;1683us;1493us;1683us;1557us;1683us;1595us;1683us;1597us;1683us;1598us;1683us;1602us;1683us;1606us;1683us;1609us;1683us;1612us;1683us;1615us;1683us;1617us;1683us;1619us;1683us;1624us;1683us;1628us;1683us;1633us;1683us;1637us;1683us;1640us;1683us;1645us;1683us;1648us;1683us;1650us;1683us;1653us;1683us;1657us;1683us;1660us;1683us;1662us;1683us;1665us;1683us;1679us;1683us;1684us;1683us;1687us;1683us;1754us;1683us;1758us;1683us;1764us;1683us;1775us;1683us;1781us;1683us;1782us;1683us;1805us;1683us;1807us;1683us;1818us;1683us;4us;65535us;497us;498us;1320us;1322us;1321us;1323us;1495us;1496us;80us;65535us;8us;1761us;108us;1761us;146us;1761us;175us;1761us;181us;1761us;185us;1761us;187us;1761us;197us;1761us;281us;1761us;375us;1761us;427us;1761us;433us;1761us;440us;1761us;463us;1761us;473us;1761us;535us;1761us;543us;1761us;596us;1761us;600us;1761us;605us;1761us;608us;1761us;618us;1761us;629us;1761us;646us;1761us;648us;1761us;652us;1761us;669us;1761us;672us;1761us;675us;1761us;678us;1761us;692us;1761us;703us;1761us;787us;1761us;832us;1761us;894us;895us;961us;1761us;998us;1761us;1184us;1761us;1187us;1761us;1190us;1761us;1455us;1761us;1488us;1761us;1491us;1761us;1493us;1761us;1557us;1761us;1595us;1761us;1597us;1761us;1598us;1761us;1602us;1761us;1606us;1761us;1609us;1761us;1612us;1761us;1615us;1761us;1617us;1761us;1619us;1761us;1624us;1761us;1628us;1761us;1633us;1761us;1637us;1761us;1640us;1761us;1645us;1761us;1648us;1761us;1650us;1761us;1653us;1761us;1657us;1761us;1660us;1761us;1662us;1761us;1665us;1761us;1679us;1761us;1684us;1761us;1687us;1761us;1754us;1761us;1758us;1761us;1764us;1761us;1775us;1761us;1781us;1761us;1782us;1761us;1805us;1761us;1807us;1761us;1818us;1761us;86us;65535us;8us;1769us;108us;1769us;146us;1769us;175us;1769us;181us;1769us;185us;1769us;187us;1769us;197us;1769us;281us;1769us;375us;1769us;427us;1769us;433us;1769us;440us;1769us;463us;1769us;473us;1769us;497us;1768us;535us;1769us;543us;1769us;544us;1772us;596us;1769us;600us;1769us;605us;1769us;608us;1769us;618us;1769us;629us;1769us;646us;1769us;648us;1769us;652us;1769us;669us;1769us;672us;1769us;675us;1769us;678us;1769us;692us;1769us;703us;1769us;787us;1769us;832us;1769us;894us;1769us;961us;1769us;998us;1769us;1184us;1769us;1187us;1769us;1190us;1769us;1320us;1768us;1321us;1768us;1455us;1769us;1488us;1769us;1491us;1769us;1493us;1769us;1495us;1768us;1557us;1769us;1595us;1769us;1597us;1769us;1598us;1769us;1602us;1769us;1606us;1769us;1609us;1769us;1612us;1769us;1615us;1769us;1617us;1769us;1619us;1769us;1624us;1769us;1628us;1769us;1633us;1769us;1637us;1769us;1640us;1769us;1645us;1769us;1648us;1769us;1650us;1769us;1653us;1769us;1657us;1769us;1660us;1769us;1662us;1769us;1665us;1769us;1679us;1769us;1684us;1769us;1687us;1769us;1754us;1769us;1758us;1769us;1764us;1769us;1771us;1772us;1775us;1769us;1781us;1769us;1782us;1769us;1805us;1769us;1807us;1769us;1818us;1769us;4us;65535us;612us;627us;625us;626us;1671us;1796us;1798us;1799us;6us;65535us;612us;1802us;625us;1802us;1350us;1351us;1671us;1802us;1798us;1802us;1803us;1804us;9us;65535us;543us;1753us;618us;1753us;1493us;1753us;1679us;1753us;1754us;1755us;1758us;1759us;1764us;1753us;1805us;1812us;1807us;1820us;2us;65535us;1805us;1806us;1807us;1808us;3us;65535us;1758us;1760us;1805us;1821us;1807us;1821us;1us;65535us;824us;825us;6us;65535us;1822us;1832us;1829us;1832us;1836us;1832us;1842us;1832us;1843us;1832us;1844us;1832us;6us;65535us;1822us;1836us;1829us;1836us;1836us;1836us;1842us;1836us;1843us;1836us;1844us;1836us;6us;65535us;1822us;1838us;1829us;1838us;1836us;1837us;1842us;1838us;1843us;1838us;1844us;1838us;5us;65535us;1822us;1823us;1829us;1830us;1842us;1839us;1843us;1840us;1844us;1841us;122us;65535us;8us;1669us;108us;1669us;146us;1669us;175us;1669us;181us;1669us;185us;1669us;186us;1668us;187us;1669us;188us;1668us;197us;1669us;281us;1669us;282us;1668us;375us;1669us;427us;1669us;433us;1669us;434us;1668us;440us;1669us;463us;1669us;473us;1669us;497us;1668us;535us;1669us;543us;1669us;544us;1668us;568us;573us;583us;584us;596us;607us;600us;607us;603us;604us;605us;1669us;608us;1669us;618us;1669us;628us;1668us;629us;1669us;630us;1668us;631us;1668us;646us;1669us;648us;1669us;652us;1669us;669us;1669us;672us;1669us;675us;1669us;678us;1669us;679us;1668us;680us;1668us;692us;1669us;703us;1669us;779us;786us;783us;786us;787us;1669us;832us;1669us;894us;1668us;961us;1669us;998us;1669us;1184us;1669us;1187us;1669us;1190us;1669us;1320us;1668us;1321us;1668us;1429us;1451us;1430us;1452us;1431us;1451us;1455us;1669us;1456us;1668us;1488us;1669us;1491us;1669us;1493us;1669us;1495us;1668us;1557us;1669us;1558us;1668us;1595us;607us;1597us;607us;1598us;1669us;1602us;1669us;1606us;1669us;1609us;1669us;1612us;1669us;1615us;1669us;1617us;1669us;1618us;1668us;1619us;1669us;1620us;1668us;1624us;1669us;1625us;1668us;1627us;1668us;1628us;1669us;1629us;1668us;1633us;1669us;1634us;1668us;1637us;1669us;1640us;1669us;1644us;1668us;1645us;1669us;1648us;1669us;1650us;1669us;1653us;1669us;1656us;1668us;1657us;1669us;1660us;1669us;1662us;1669us;1665us;1669us;1674us;1668us;1679us;1669us;1681us;1668us;1684us;1669us;1687us;1669us;1754us;1669us;1758us;1669us;1764us;1669us;1766us;1668us;1771us;1668us;1775us;1669us;1781us;1669us;1782us;1669us;1805us;1669us;1807us;1669us;1818us;1669us;1822us;1828us;1829us;1828us;1836us;1828us;1842us;1828us;1843us;1828us;1844us;1828us;371us;65535us;6us;1907us;8us;1852us;31us;1907us;53us;1852us;56us;1852us;92us;1852us;105us;1899us;108us;1852us;111us;1907us;113us;1907us;117us;1852us;146us;1852us;175us;663us;178us;1899us;181us;1852us;185us;1852us;186us;1852us;187us;1852us;188us;1852us;197us;1852us;199us;1899us;201us;1899us;206us;1899us;229us;1907us;243us;1907us;266us;1907us;273us;1852us;279us;1852us;281us;1852us;282us;1852us;307us;336us;318us;336us;323us;1852us;327us;1852us;375us;1852us;409us;1901us;412us;1907us;414us;1901us;417us;1907us;427us;663us;433us;1852us;434us;1852us;437us;1899us;440us;1852us;451us;1901us;454us;1907us;461us;462us;463us;1852us;467us;468us;470us;1907us;473us;1852us;476us;1901us;479us;1901us;482us;1901us;484us;1901us;497us;1852us;505us;506us;508us;509us;535us;663us;543us;1852us;544us;1852us;568us;1852us;570us;1852us;596us;1852us;600us;1852us;605us;1852us;608us;1852us;618us;1852us;628us;1852us;629us;1852us;630us;1852us;631us;1852us;643us;1899us;646us;677us;648us;677us;652us;1852us;654us;1907us;665us;1907us;669us;677us;672us;677us;675us;677us;678us;1852us;679us;1852us;680us;1852us;690us;691us;692us;1852us;698us;702us;703us;677us;706us;1852us;712us;1907us;718us;1907us;729us;730us;741us;1852us;742us;743us;754us;1852us;764us;1901us;767us;1907us;771us;1907us;781us;1907us;787us;1852us;828us;829us;832us;1852us;835us;827us;836us;827us;838us;827us;857us;1901us;859us;1901us;860us;1901us;864us;1901us;865us;1901us;868us;1901us;870us;1901us;871us;1901us;874us;876us;878us;1901us;882us;1901us;883us;1901us;885us;1901us;887us;1901us;890us;1901us;892us;1901us;894us;1852us;897us;877us;901us;1901us;903us;1901us;905us;1901us;910us;1852us;913us;1901us;916us;1901us;919us;921us;920us;921us;927us;1901us;935us;1901us;956us;1901us;958us;1901us;961us;1852us;964us;1901us;965us;1901us;967us;1901us;968us;1901us;971us;1901us;973us;1901us;974us;1901us;977us;1852us;980us;1901us;982us;1901us;984us;1907us;989us;1907us;998us;1852us;1004us;1907us;1006us;1907us;1009us;1907us;1012us;1907us;1029us;1901us;1030us;1907us;1034us;1901us;1035us;1907us;1041us;1907us;1044us;1907us;1047us;1907us;1053us;1907us;1057us;1907us;1061us;1907us;1065us;1907us;1067us;1907us;1072us;1907us;1074us;1907us;1076us;1907us;1078us;1907us;1080us;1907us;1082us;1907us;1091us;1901us;1093us;1907us;1103us;1907us;1110us;1907us;1116us;1907us;1118us;1907us;1122us;1901us;1123us;1907us;1127us;1907us;1129us;1901us;1130us;1907us;1134us;1907us;1137us;1907us;1140us;1907us;1142us;1907us;1145us;1907us;1147us;1907us;1184us;1852us;1187us;1852us;1190us;1852us;1193us;1907us;1195us;1907us;1199us;1907us;1200us;1907us;1201us;1907us;1202us;1907us;1203us;1907us;1204us;1907us;1205us;1907us;1206us;1907us;1207us;1907us;1208us;1907us;1209us;1907us;1211us;1907us;1212us;1907us;1213us;1907us;1214us;1907us;1215us;1907us;1216us;1907us;1217us;1907us;1218us;1907us;1219us;1907us;1240us;1907us;1241us;1907us;1242us;1907us;1243us;1907us;1247us;1907us;1250us;1901us;1252us;1901us;1257us;1901us;1264us;1901us;1266us;1901us;1271us;1907us;1272us;1907us;1276us;1907us;1278us;1907us;1282us;1907us;1284us;1907us;1288us;1907us;1291us;1907us;1293us;1907us;1295us;1907us;1297us;1907us;1298us;1849us;1299us;1849us;1300us;1907us;1302us;1907us;1303us;1907us;1305us;1907us;1306us;1907us;1308us;1907us;1309us;1907us;1311us;1907us;1312us;1907us;1314us;1907us;1315us;1907us;1317us;1907us;1318us;1907us;1320us;1852us;1321us;1852us;1328us;1899us;1332us;1907us;1334us;1907us;1336us;1907us;1337us;1907us;1338us;1907us;1341us;1907us;1348us;1907us;1349us;1907us;1352us;1907us;1353us;1907us;1354us;1356us;1355us;1357us;1359us;1899us;1362us;1899us;1364us;1899us;1365us;1899us;1371us;1907us;1378us;1907us;1385us;1907us;1392us;1907us;1409us;1907us;1416us;1907us;1417us;1907us;1423us;1907us;1429us;1907us;1430us;1907us;1431us;1907us;1447us;1907us;1455us;1852us;1456us;1852us;1457us;1907us;1470us;1907us;1472us;1907us;1475us;1907us;1476us;1907us;1482us;1907us;1488us;1852us;1491us;1852us;1493us;1852us;1495us;1852us;1502us;1907us;1507us;1907us;1511us;1852us;1515us;1852us;1523us;1852us;1532us;1907us;1557us;1852us;1558us;1852us;1565us;1907us;1572us;1901us;1574us;1907us;1577us;1901us;1579us;1907us;1589us;1901us;1591us;1901us;1595us;1852us;1597us;1852us;1598us;1852us;1602us;1852us;1606us;1852us;1609us;1852us;1612us;1852us;1615us;1852us;1617us;1852us;1618us;1852us;1619us;1852us;1620us;1852us;1622us;1623us;1624us;1852us;1625us;1852us;1627us;1852us;1628us;1852us;1629us;1852us;1631us;1632us;1633us;1852us;1634us;1852us;1637us;1852us;1640us;1852us;1644us;1852us;1645us;1852us;1648us;1852us;1650us;1852us;1653us;1852us;1656us;1852us;1657us;1852us;1660us;1852us;1662us;1852us;1665us;1852us;1674us;1852us;1679us;1852us;1681us;1852us;1684us;1852us;1687us;1852us;1754us;1852us;1758us;1852us;1764us;1852us;1766us;1852us;1771us;1852us;1775us;1852us;1781us;1852us;1782us;1852us;1791us;1907us;1797us;1852us;1805us;1852us;1807us;1852us;1818us;1852us;1822us;1852us;1829us;1852us;1836us;1852us;1842us;1852us;1843us;1852us;1844us;1852us;1845us;1846us;1847us;1848us;1853us;1854us;1903us;1901us;1946us;1947us;1949us;1907us;1953us;1907us;135us;65535us;8us;1667us;53us;54us;56us;57us;92us;285us;108us;1667us;117us;283us;146us;1667us;175us;536us;181us;1667us;185us;1667us;186us;1667us;187us;1667us;188us;1667us;197us;1667us;273us;295us;279us;280us;281us;1667us;282us;1667us;307us;320us;318us;320us;323us;324us;327us;328us;375us;1667us;427us;536us;433us;1667us;434us;1667us;440us;1667us;463us;1667us;473us;1667us;497us;1667us;535us;536us;543us;1667us;544us;1667us;568us;569us;570us;571us;596us;1667us;600us;1667us;605us;1667us;608us;1667us;618us;1667us;628us;1667us;629us;1667us;630us;1667us;631us;1667us;646us;1667us;648us;1667us;652us;1667us;669us;1667us;672us;1667us;675us;1667us;678us;1667us;679us;1667us;680us;1667us;692us;1667us;703us;1667us;706us;707us;741us;744us;754us;744us;787us;1667us;832us;1667us;894us;1667us;910us;979us;961us;1667us;977us;979us;998us;1667us;1184us;1667us;1187us;1667us;1190us;1667us;1320us;1667us;1321us;1667us;1455us;1667us;1456us;1667us;1488us;1667us;1491us;1667us;1493us;1667us;1495us;1667us;1511us;1528us;1515us;1528us;1523us;1528us;1557us;1667us;1558us;1667us;1595us;1667us;1597us;1667us;1598us;1667us;1602us;1667us;1606us;1667us;1609us;1667us;1612us;1667us;1615us;1667us;1617us;1667us;1618us;1667us;1619us;1667us;1620us;1667us;1624us;1667us;1625us;1667us;1627us;1667us;1628us;1667us;1629us;1667us;1633us;1667us;1634us;1667us;1637us;1667us;1640us;1667us;1644us;1667us;1645us;1667us;1648us;1667us;1650us;1667us;1653us;1667us;1656us;1667us;1657us;1667us;1660us;1667us;1662us;1667us;1665us;1667us;1674us;1667us;1679us;1667us;1681us;1667us;1684us;1667us;1687us;1667us;1754us;1667us;1758us;1667us;1764us;1667us;1766us;1667us;1771us;1667us;1775us;1667us;1781us;1667us;1782us;1667us;1797us;1798us;1805us;1667us;1807us;1667us;1818us;1667us;1822us;1827us;1829us;1827us;1836us;1827us;1842us;1827us;1843us;1827us;1844us;1827us;213us;65535us;6us;1908us;31us;1908us;105us;1900us;111us;1908us;113us;1908us;178us;1900us;199us;1900us;201us;1900us;206us;1900us;229us;1908us;243us;1908us;266us;1908us;409us;1902us;412us;1908us;414us;1902us;417us;1908us;437us;1900us;451us;1902us;454us;1908us;470us;1908us;476us;1902us;479us;1902us;482us;1902us;484us;1902us;643us;1900us;654us;1908us;665us;1908us;712us;1908us;718us;1908us;764us;1902us;767us;1908us;771us;1908us;781us;1908us;857us;1902us;859us;1902us;860us;1902us;864us;1902us;865us;1902us;868us;1902us;870us;1902us;871us;1902us;878us;1902us;882us;1902us;883us;1902us;885us;1902us;887us;1902us;890us;1902us;892us;1902us;897us;1902us;901us;1902us;903us;1902us;905us;1902us;913us;1902us;916us;1902us;927us;1902us;935us;1902us;956us;1902us;958us;1902us;964us;1902us;965us;1902us;967us;1902us;968us;1902us;971us;1902us;973us;1902us;974us;1902us;980us;1902us;982us;1902us;984us;1908us;989us;1908us;1004us;1908us;1006us;1908us;1009us;1908us;1012us;1908us;1029us;1902us;1030us;1908us;1034us;1902us;1035us;1908us;1041us;1908us;1044us;1908us;1047us;1908us;1053us;1908us;1057us;1908us;1061us;1908us;1065us;1908us;1067us;1908us;1072us;1908us;1074us;1908us;1076us;1908us;1078us;1908us;1080us;1908us;1082us;1908us;1091us;1902us;1093us;1908us;1103us;1908us;1110us;1908us;1116us;1908us;1118us;1908us;1122us;1902us;1123us;1908us;1127us;1908us;1129us;1902us;1130us;1908us;1134us;1908us;1137us;1908us;1140us;1908us;1142us;1908us;1145us;1908us;1147us;1908us;1193us;1908us;1195us;1908us;1199us;1908us;1200us;1908us;1201us;1908us;1202us;1908us;1203us;1908us;1204us;1908us;1205us;1908us;1206us;1908us;1207us;1908us;1208us;1908us;1209us;1908us;1211us;1908us;1212us;1908us;1213us;1908us;1214us;1908us;1215us;1908us;1216us;1908us;1217us;1908us;1218us;1908us;1219us;1908us;1240us;1908us;1241us;1908us;1242us;1908us;1243us;1908us;1247us;1908us;1250us;1902us;1252us;1902us;1257us;1902us;1264us;1902us;1266us;1902us;1271us;1908us;1272us;1908us;1276us;1908us;1278us;1908us;1282us;1908us;1284us;1908us;1288us;1908us;1291us;1908us;1293us;1908us;1295us;1908us;1297us;1908us;1298us;1908us;1299us;1908us;1300us;1908us;1302us;1908us;1303us;1908us;1305us;1908us;1306us;1908us;1308us;1908us;1309us;1908us;1311us;1908us;1312us;1908us;1314us;1908us;1315us;1908us;1317us;1908us;1318us;1908us;1328us;1900us;1332us;1908us;1334us;1908us;1336us;1908us;1337us;1908us;1338us;1908us;1341us;1908us;1348us;1908us;1349us;1908us;1352us;1908us;1353us;1908us;1359us;1900us;1362us;1900us;1364us;1900us;1365us;1900us;1371us;1908us;1378us;1908us;1385us;1908us;1392us;1908us;1409us;1908us;1416us;1908us;1417us;1908us;1423us;1908us;1429us;1908us;1430us;1908us;1431us;1908us;1447us;1908us;1457us;1908us;1470us;1908us;1472us;1908us;1475us;1908us;1476us;1908us;1482us;1908us;1502us;1908us;1507us;1908us;1532us;1908us;1565us;1908us;1572us;1902us;1574us;1908us;1577us;1902us;1579us;1908us;1589us;1902us;1591us;1902us;1791us;1908us;1903us;1902us;1949us;1908us;1953us;1908us;7us;65535us;657us;1857us;897us;1857us;927us;1857us;1385us;1857us;1430us;1857us;1431us;1857us;1856us;1857us;2us;65535us;1863us;1898us;1896us;1897us;7us;65535us;657us;1862us;897us;1862us;927us;1862us;1385us;1862us;1430us;1862us;1431us;1862us;1856us;1862us;12us;65535us;105us;1906us;178us;1906us;199us;1906us;201us;1906us;206us;1906us;437us;1906us;643us;1906us;1328us;1382us;1359us;1382us;1362us;1382us;1364us;1906us;1365us;1906us;57us;65535us;409us;481us;414us;481us;451us;481us;476us;477us;479us;480us;482us;486us;484us;485us;764us;481us;857us;481us;859us;481us;860us;481us;864us;481us;865us;481us;868us;481us;870us;481us;871us;481us;878us;481us;882us;481us;883us;481us;885us;481us;887us;481us;890us;481us;892us;481us;897us;481us;901us;481us;903us;481us;905us;481us;913us;481us;916us;481us;927us;481us;935us;481us;956us;481us;958us;481us;964us;481us;965us;481us;967us;481us;968us;481us;971us;481us;973us;481us;974us;481us;980us;481us;982us;481us;1029us;481us;1034us;481us;1091us;481us;1122us;481us;1129us;481us;1250us;481us;1252us;481us;1257us;481us;1264us;481us;1266us;481us;1572us;481us;1577us;481us;1589us;481us;1591us;481us;1903us;1904us;9us;65535us;105us;106us;178us;179us;199us;205us;201us;205us;206us;207us;437us;438us;643us;656us;1364us;1366us;1365us;1366us;144us;65535us;6us;1370us;31us;1370us;111us;1370us;113us;1370us;229us;1370us;243us;1370us;266us;1370us;412us;1370us;417us;1370us;454us;1370us;470us;1370us;654us;1370us;665us;1370us;712us;1370us;718us;1370us;767us;1370us;771us;1370us;781us;1370us;984us;1370us;989us;1370us;1004us;1370us;1006us;1370us;1009us;1370us;1012us;1370us;1030us;1370us;1035us;1370us;1041us;1370us;1044us;1370us;1047us;1370us;1053us;1370us;1057us;1370us;1061us;1370us;1065us;1370us;1067us;1370us;1072us;1370us;1074us;1370us;1076us;1370us;1078us;1370us;1080us;1370us;1082us;1370us;1093us;1370us;1103us;1370us;1110us;1370us;1116us;1370us;1118us;1370us;1123us;1370us;1127us;1370us;1130us;1370us;1134us;1370us;1137us;1370us;1140us;1370us;1142us;1370us;1145us;1370us;1147us;1370us;1193us;1370us;1195us;1370us;1199us;1370us;1200us;1370us;1201us;1370us;1202us;1370us;1203us;1370us;1204us;1370us;1205us;1370us;1206us;1370us;1207us;1370us;1208us;1370us;1209us;1370us;1211us;1370us;1212us;1370us;1213us;1370us;1214us;1370us;1215us;1370us;1216us;1370us;1217us;1370us;1218us;1370us;1219us;1370us;1240us;1370us;1241us;1370us;1242us;1370us;1243us;1370us;1247us;1370us;1271us;1370us;1272us;1370us;1276us;1370us;1278us;1370us;1282us;1370us;1284us;1370us;1288us;1370us;1291us;1370us;1293us;1370us;1295us;1370us;1297us;1370us;1298us;1370us;1299us;1370us;1300us;1370us;1302us;1370us;1303us;1370us;1305us;1370us;1306us;1370us;1308us;1370us;1309us;1370us;1311us;1370us;1312us;1370us;1314us;1370us;1315us;1370us;1317us;1370us;1318us;1370us;1332us;1370us;1334us;1370us;1336us;1370us;1337us;1370us;1338us;1370us;1341us;1370us;1348us;1370us;1349us;1370us;1352us;1370us;1353us;1370us;1371us;1370us;1378us;1370us;1385us;1370us;1392us;1370us;1409us;1370us;1416us;1370us;1417us;1370us;1423us;1370us;1429us;1370us;1430us;1370us;1431us;1370us;1447us;1370us;1457us;1370us;1470us;1370us;1472us;1370us;1475us;1370us;1476us;1370us;1482us;1370us;1502us;1370us;1507us;1370us;1532us;1370us;1565us;1370us;1574us;1370us;1579us;1370us;1791us;1370us;1949us;1370us;1953us;1370us;16us;65535us;48us;1912us;76us;1912us;79us;1912us;80us;1912us;81us;1914us;84us;1912us;219us;1912us;238us;1912us;244us;1912us;249us;1912us;253us;1912us;254us;1912us;255us;1912us;256us;1912us;1912us;1912us;1914us;1914us;14us;65535us;48us;85us;76us;85us;79us;85us;80us;85us;84us;85us;219us;257us;238us;257us;244us;245us;249us;251us;253us;257us;254us;257us;255us;257us;256us;257us;1912us;1913us;2us;65535us;81us;82us;1914us;1915us;9us;65535us;169us;1930us;308us;318us;396us;1930us;516us;1930us;683us;684us;872us;874us;953us;982us;975us;977us;1003us;1004us;4us;65535us;213us;214us;302us;303us;492us;493us;495us;496us;2us;65535us;1549us;1550us;1559us;1560us;10us;65535us;115us;116us;431us;432us;442us;443us;445us;446us;447us;448us;449us;450us;455us;456us;522us;523us;524us;525us;528us;529us;2us;65535us;62us;63us;225us;226us;1us;65535us;351us;352us;17us;65535us;73us;74us;135us;136us;235us;236us;310us;311us;313us;314us;363us;364us;637us;668us;663us;664us;666us;667us;1037us;1038us;1092us;1100us;1125us;1126us;1132us;1133us;1139us;1140us;1536us;1540us;1537us;1538us;1560us;1561us;8us;65535us;169us;170us;308us;309us;396us;397us;516us;517us;683us;686us;872us;873us;953us;981us;975us;976us;4us;65535us;52us;53us;55us;56us;708us;709us;714us;715us;0us;65535us;11us;65535us;102us;103us;176us;177us;399us;408us;401us;408us;406us;408us;430us;414us;436us;437us;520us;763us;521us;414us;527us;414us;760us;763us;7us;65535us;103us;104us;189us;689us;192us;689us;459us;460us;465us;466us;687us;689us;763us;764us;4us;65535us;1017us;1110us;1081us;1082us;1092us;1093us;1102us;1103us;9us;65535us;1014us;1090us;1015us;1097us;1016us;1107us;1018us;1114us;1083us;1084us;1086us;1087us;1094us;1095us;1104us;1105us;1111us;1112us;2us;65535us;273us;296us;286us;296us;2us;65535us;92us;124us;117us;120us;2us;65535us;67us;92us;91us;92us;291us;65535us;6us;806us;8us;806us;31us;806us;40us;42us;108us;806us;111us;806us;113us;806us;146us;806us;175us;806us;181us;806us;185us;806us;187us;806us;197us;806us;229us;806us;243us;806us;266us;806us;281us;806us;321us;806us;325us;806us;330us;806us;375us;806us;409us;806us;412us;806us;414us;806us;417us;806us;427us;806us;433us;806us;440us;806us;451us;806us;454us;806us;463us;806us;470us;806us;473us;806us;497us;806us;500us;806us;535us;806us;543us;806us;544us;545us;596us;806us;600us;806us;605us;806us;608us;806us;618us;806us;629us;806us;646us;806us;648us;806us;652us;806us;654us;806us;665us;806us;669us;806us;672us;806us;675us;806us;678us;806us;692us;806us;703us;806us;712us;806us;718us;806us;764us;806us;767us;806us;771us;806us;781us;806us;787us;806us;832us;806us;857us;806us;859us;806us;860us;806us;864us;806us;865us;806us;868us;806us;870us;806us;871us;806us;878us;806us;882us;806us;883us;806us;885us;806us;887us;806us;890us;806us;892us;806us;894us;806us;897us;806us;901us;806us;903us;806us;905us;806us;913us;806us;916us;806us;927us;806us;935us;806us;956us;806us;958us;806us;961us;806us;964us;806us;965us;806us;967us;806us;968us;806us;971us;806us;973us;806us;974us;806us;980us;806us;982us;806us;984us;806us;989us;806us;998us;806us;1004us;806us;1006us;806us;1009us;806us;1012us;806us;1029us;806us;1030us;806us;1034us;806us;1035us;806us;1041us;806us;1044us;806us;1047us;806us;1053us;806us;1057us;806us;1061us;806us;1065us;806us;1067us;806us;1072us;806us;1074us;806us;1076us;806us;1078us;806us;1080us;806us;1082us;806us;1091us;806us;1093us;806us;1103us;806us;1110us;806us;1116us;806us;1118us;806us;1122us;806us;1123us;806us;1127us;806us;1129us;806us;1130us;806us;1134us;806us;1137us;806us;1140us;806us;1142us;806us;1145us;806us;1147us;806us;1184us;806us;1187us;806us;1190us;806us;1193us;806us;1195us;806us;1199us;806us;1200us;806us;1201us;806us;1202us;806us;1203us;806us;1204us;806us;1205us;806us;1206us;806us;1207us;806us;1208us;806us;1209us;806us;1211us;806us;1212us;806us;1213us;806us;1214us;806us;1215us;806us;1216us;806us;1217us;806us;1218us;806us;1219us;806us;1240us;806us;1241us;806us;1242us;806us;1243us;806us;1247us;806us;1250us;806us;1252us;806us;1257us;806us;1264us;806us;1266us;806us;1271us;806us;1272us;806us;1276us;806us;1278us;806us;1282us;806us;1284us;806us;1288us;806us;1291us;806us;1293us;806us;1295us;806us;1297us;806us;1298us;806us;1299us;806us;1300us;806us;1302us;806us;1303us;806us;1305us;806us;1306us;806us;1308us;806us;1309us;806us;1311us;806us;1312us;806us;1314us;806us;1315us;806us;1317us;806us;1318us;806us;1320us;806us;1321us;806us;1324us;806us;1325us;806us;1332us;806us;1334us;806us;1336us;806us;1337us;806us;1338us;806us;1341us;806us;1348us;806us;1349us;806us;1352us;806us;1353us;806us;1371us;806us;1378us;806us;1385us;806us;1392us;806us;1409us;806us;1416us;806us;1417us;806us;1423us;806us;1429us;806us;1430us;806us;1431us;806us;1447us;806us;1455us;806us;1457us;806us;1470us;806us;1472us;806us;1475us;806us;1476us;806us;1479us;1480us;1482us;806us;1488us;806us;1491us;806us;1493us;806us;1495us;806us;1497us;806us;1502us;806us;1507us;806us;1532us;806us;1557us;806us;1565us;806us;1572us;806us;1574us;806us;1577us;806us;1579us;806us;1589us;806us;1591us;806us;1595us;806us;1597us;806us;1598us;806us;1602us;806us;1606us;806us;1609us;806us;1612us;806us;1615us;806us;1617us;806us;1619us;806us;1624us;806us;1628us;806us;1633us;806us;1637us;806us;1640us;806us;1645us;806us;1648us;806us;1650us;806us;1653us;806us;1657us;806us;1660us;806us;1662us;806us;1665us;806us;1679us;806us;1684us;806us;1687us;806us;1754us;806us;1758us;806us;1764us;806us;1771us;806us;1775us;806us;1781us;806us;1782us;806us;1791us;806us;1805us;806us;1807us;806us;1818us;806us;1949us;806us;1953us;806us;290us;65535us;6us;807us;8us;807us;31us;807us;40us;43us;108us;807us;111us;807us;113us;807us;146us;807us;175us;807us;181us;807us;185us;807us;187us;807us;197us;807us;229us;807us;243us;807us;266us;807us;281us;807us;321us;807us;325us;807us;330us;807us;375us;807us;409us;807us;412us;807us;414us;807us;417us;807us;427us;807us;433us;807us;440us;807us;451us;807us;454us;807us;463us;807us;470us;807us;473us;807us;497us;807us;500us;807us;535us;807us;543us;807us;544us;807us;596us;807us;600us;807us;605us;807us;608us;807us;618us;807us;629us;807us;646us;807us;648us;807us;652us;807us;654us;807us;665us;807us;669us;807us;672us;807us;675us;807us;678us;807us;692us;807us;703us;807us;712us;807us;718us;807us;764us;807us;767us;807us;771us;807us;781us;807us;787us;807us;832us;807us;857us;807us;859us;807us;860us;807us;864us;807us;865us;807us;868us;807us;870us;807us;871us;807us;878us;807us;882us;807us;883us;807us;885us;807us;887us;807us;890us;807us;892us;807us;894us;807us;897us;807us;901us;807us;903us;807us;905us;807us;913us;807us;916us;807us;927us;807us;935us;807us;956us;807us;958us;807us;961us;807us;964us;807us;965us;807us;967us;807us;968us;807us;971us;807us;973us;807us;974us;807us;980us;807us;982us;807us;984us;807us;989us;807us;998us;807us;1004us;807us;1006us;807us;1009us;807us;1012us;807us;1029us;807us;1030us;807us;1034us;807us;1035us;807us;1041us;807us;1044us;807us;1047us;807us;1053us;807us;1057us;807us;1061us;807us;1065us;807us;1067us;807us;1072us;807us;1074us;807us;1076us;807us;1078us;807us;1080us;807us;1082us;807us;1091us;807us;1093us;807us;1103us;807us;1110us;807us;1116us;807us;1118us;807us;1122us;807us;1123us;807us;1127us;807us;1129us;807us;1130us;807us;1134us;807us;1137us;807us;1140us;807us;1142us;807us;1145us;807us;1147us;807us;1184us;807us;1187us;807us;1190us;807us;1193us;807us;1195us;807us;1199us;807us;1200us;807us;1201us;807us;1202us;807us;1203us;807us;1204us;807us;1205us;807us;1206us;807us;1207us;807us;1208us;807us;1209us;807us;1211us;807us;1212us;807us;1213us;807us;1214us;807us;1215us;807us;1216us;807us;1217us;807us;1218us;807us;1219us;807us;1240us;807us;1241us;807us;1242us;807us;1243us;807us;1247us;807us;1250us;807us;1252us;807us;1257us;807us;1264us;807us;1266us;807us;1271us;807us;1272us;807us;1276us;807us;1278us;807us;1282us;807us;1284us;807us;1288us;807us;1291us;807us;1293us;807us;1295us;807us;1297us;807us;1298us;807us;1299us;807us;1300us;807us;1302us;807us;1303us;807us;1305us;807us;1306us;807us;1308us;807us;1309us;807us;1311us;807us;1312us;807us;1314us;807us;1315us;807us;1317us;807us;1318us;807us;1320us;807us;1321us;807us;1324us;807us;1325us;807us;1332us;807us;1334us;807us;1336us;807us;1337us;807us;1338us;807us;1341us;807us;1348us;807us;1349us;807us;1352us;807us;1353us;807us;1371us;807us;1378us;807us;1385us;807us;1392us;807us;1409us;807us;1416us;807us;1417us;807us;1423us;807us;1429us;807us;1430us;807us;1431us;807us;1447us;807us;1455us;807us;1457us;807us;1470us;807us;1472us;807us;1475us;807us;1476us;807us;1482us;807us;1488us;807us;1491us;807us;1493us;807us;1495us;807us;1497us;807us;1502us;807us;1507us;807us;1532us;807us;1557us;807us;1565us;807us;1572us;807us;1574us;807us;1577us;807us;1579us;807us;1589us;807us;1591us;807us;1595us;807us;1597us;807us;1598us;807us;1602us;807us;1606us;807us;1609us;807us;1612us;807us;1615us;807us;1617us;807us;1619us;807us;1624us;807us;1628us;807us;1633us;807us;1637us;807us;1640us;807us;1645us;807us;1648us;807us;1650us;807us;1653us;807us;1657us;807us;1660us;807us;1662us;807us;1665us;807us;1679us;807us;1684us;807us;1687us;807us;1754us;807us;1758us;807us;1764us;807us;1771us;807us;1775us;807us;1781us;807us;1782us;807us;1791us;807us;1805us;807us;1807us;807us;1818us;807us;1949us;807us;1953us;807us;2us;65535us;1949us;1950us;1953us;1954us;4us;65535us;1949us;1952us;1950us;1951us;1953us;1957us;1954us;1955us;151us;65535us;6us;1402us;31us;1402us;111us;1402us;113us;1402us;229us;1402us;243us;1402us;266us;1402us;321us;1402us;325us;1402us;330us;1402us;412us;1402us;417us;1402us;454us;1402us;470us;1402us;500us;1402us;654us;1402us;665us;1402us;712us;1402us;718us;1402us;767us;1402us;771us;1402us;781us;1402us;984us;1402us;989us;1402us;1004us;1402us;1006us;1402us;1009us;1402us;1012us;1402us;1030us;1402us;1035us;1402us;1041us;1402us;1044us;1402us;1047us;1402us;1053us;1402us;1057us;1402us;1061us;1402us;1065us;1402us;1067us;1402us;1072us;1402us;1074us;1402us;1076us;1402us;1078us;1402us;1080us;1402us;1082us;1402us;1093us;1402us;1103us;1402us;1110us;1402us;1116us;1402us;1118us;1402us;1123us;1402us;1127us;1402us;1130us;1402us;1134us;1402us;1137us;1402us;1140us;1402us;1142us;1402us;1145us;1402us;1147us;1402us;1193us;1402us;1195us;1402us;1199us;1402us;1200us;1402us;1201us;1402us;1202us;1402us;1203us;1402us;1204us;1402us;1205us;1402us;1206us;1402us;1207us;1402us;1208us;1402us;1209us;1402us;1211us;1402us;1212us;1402us;1213us;1402us;1214us;1402us;1215us;1402us;1216us;1402us;1217us;1402us;1218us;1402us;1219us;1402us;1240us;1402us;1241us;1402us;1242us;1402us;1243us;1402us;1247us;1402us;1271us;1402us;1272us;1402us;1276us;1402us;1278us;1402us;1282us;1402us;1284us;1402us;1288us;1402us;1291us;1402us;1293us;1402us;1295us;1402us;1297us;1402us;1298us;1402us;1299us;1402us;1300us;1402us;1302us;1402us;1303us;1402us;1305us;1402us;1306us;1402us;1308us;1402us;1309us;1402us;1311us;1402us;1312us;1402us;1314us;1402us;1315us;1402us;1317us;1402us;1318us;1402us;1324us;1402us;1325us;1402us;1332us;1402us;1334us;1402us;1336us;1402us;1337us;1402us;1338us;1402us;1341us;1402us;1348us;1402us;1349us;1402us;1352us;1402us;1353us;1402us;1371us;1402us;1378us;1402us;1385us;1402us;1392us;1402us;1409us;1402us;1416us;1402us;1417us;1402us;1423us;1402us;1429us;1402us;1430us;1402us;1431us;1402us;1447us;1402us;1457us;1402us;1470us;1402us;1472us;1402us;1475us;1402us;1476us;1402us;1482us;1402us;1497us;1402us;1502us;1402us;1507us;1402us;1532us;1402us;1565us;1402us;1574us;1402us;1579us;1402us;1791us;1402us;1949us;1402us;1953us;1402us;11us;65535us;320us;321us;324us;325us;329us;330us;356us;357us;498us;500us;730us;731us;742us;746us;745us;746us;1322us;1324us;1323us;1325us;1496us;1497us;5us;65535us;106us;590us;179us;590us;438us;590us;569us;585us;882us;590us;14us;65535us;31us;268us;66us;96us;90us;96us;191us;194us;229us;268us;243us;268us;262us;268us;279us;281us;307us;334us;318us;334us;340us;457us;1480us;1487us;1961us;1963us;1962us;1963us;10us;65535us;31us;50us;66us;50us;90us;50us;229us;50us;243us;50us;262us;50us;307us;332us;318us;332us;1966us;1968us;1967us;1968us;7us;65535us;549us;550us;552us;553us;911us;912us;1026us;1461us;1457us;1463us;1458us;1459us;1971us;1972us;5us;65535us;558us;559us;561us;562us;1027us;1569us;1565us;1571us;1566us;1567us;43us;65535us;546us;547us;575us;576us;616us;617us;619us;620us;623us;624us;658us;659us;661us;662us;733us;734us;818us;819us;838us;841us;839us;840us;843us;844us;898us;899us;928us;929us;931us;932us;936us;937us;939us;940us;1024us;1436us;1025us;1437us;1198us;1379us;1248us;1249us;1386us;1387us;1390us;1391us;1429us;1432us;1430us;1432us;1431us;1432us;1433us;1434us;1446us;1447us;1453us;1454us;1489us;1490us;1493us;1494us;1680us;1681us;1765us;1766us;1776us;1778us;1777us;1778us;1783us;1784us;1794us;1795us;1830us;1831us;1857us;1858us;1859us;1860us;1863us;1864us;1866us;1867us;1976us;1977us;26us;65535us;72us;73us;76us;77us;114us;115us;118us;119us;122us;123us;138us;139us;156us;157us;164us;165us;234us;235us;238us;239us;255us;293us;283us;284us;287us;288us;290us;291us;328us;329us;366us;367us;385us;387us;389us;391us;512us;513us;772us;773us;985us;986us;990us;991us;1010us;1011us;1279us;1280us;1285us;1286us;1980us;1981us;1us;65535us;1433us;1435us;24us;65535us;307us;316us;309us;315us;497us;503us;864us;866us;865us;867us;868us;869us;954us;1474us;967us;969us;968us;970us;971us;972us;1091us;1113us;1092us;1099us;1093us;1098us;1094us;1096us;1291us;1292us;1293us;1294us;1295us;1296us;1472us;1473us;1531us;1535us;1532us;1534us;1800us;1801us;1807us;1811us;1812us;1814us;1853us;1855us;|] -let _fsyacc_sparseGotoTableRowOffsets = [|0us;1us;2us;3us;4us;5us;7us;15us;20us;26us;31us;36us;41us;46us;70us;72us;74us;76us;83us;88us;90us;93us;96us;99us;103us;110us;120us;130us;140us;143us;145us;148us;152us;154us;157us;160us;163us;167us;176us;185us;197us;201us;204us;207us;210us;216us;218us;220us;223us;226us;229us;233us;239us;249us;260us;271us;287us;312us;314us;316us;319us;321us;404us;528us;652us;654us;657us;660us;665us;672us;675us;679us;682us;686us;690us;694us;698us;709us;720us;722us;725us;729us;733us;738us;749us;753us;756us;758us;811us;834us;909us;911us;916us;919us;922us;925us;928us;932us;935us;940us;945us;948us;954us;963us;1044us;1126us;1132us;1142us;1144us;1146us;1150us;1156us;1158us;1160us;1165us;1169us;1173us;1177us;1182us;1184us;1188us;1194us;1198us;1202us;1204us;1208us;1212us;1219us;1226us;1232us;1236us;1240us;1244us;1249us;1256us;1258us;1260us;1378us;1386us;1504us;1621us;1625us;1631us;1749us;1751us;1753us;1757us;1760us;1762us;1767us;1770us;1776us;1779us;1781us;1784us;1786us;1788us;1790us;1793us;2083us;2085us;2090us;2094us;2298us;2302us;2306us;2309us;2311us;2326us;2341us;2356us;2359us;2362us;2403us;2410us;2422us;2475us;2478us;2503us;2528us;2553us;2556us;2559us;2563us;2589us;2596us;2602us;2655us;2657us;2715us;2859us;2864us;2978us;2980us;2984us;2989us;2997us;3005us;3007us;3009us;3012us;3015us;3017us;3131us;3263us;3396us;3401us;3546us;3550us;3702us;3854us;4058us;4210us;4362us;4366us;4370us;4372us;4524us;4526us;4528us;4530us;4532us;4534us;4536us;4538us;4540us;4544us;4546us;4551us;4553us;4555us;4557us;4560us;4567us;4574us;4578us;4584us;4588us;4590us;4592us;4594us;4597us;4599us;4604us;4610us;4762us;4916us;5030us;5144us;5148us;5154us;5158us;5168us;5178us;5183us;5197us;5231us;5233us;5267us;5277us;5386us;5495us;5575us;5597us;5603us;5606us;5686us;5691us;5772us;5859us;5864us;5871us;5881us;5884us;5888us;5890us;5897us;5904us;5911us;5917us;6040us;6412us;6548us;6762us;6770us;6773us;6781us;6794us;6852us;6862us;7007us;7024us;7039us;7042us;7052us;7057us;7060us;7071us;7074us;7076us;7094us;7103us;7108us;7109us;7121us;7129us;7134us;7144us;7147us;7150us;7153us;7445us;7736us;7739us;7744us;7896us;7908us;7914us;7929us;7940us;7948us;7954us;7998us;8025us;8027us;|] -let _fsyacc_stateToProdIdxsTableElements = [| 1us;0us;1us;0us;1us;1us;1us;1us;1us;2us;1us;2us;1us;3us;1us;3us;1us;4us;1us;4us;1us;5us;1us;6us;1us;7us;1us;8us;1us;9us;1us;10us;2us;11us;14us;1us;11us;2us;12us;15us;1us;12us;2us;13us;16us;1us;13us;1us;14us;1us;14us;1us;15us;1us;15us;1us;16us;1us;16us;2us;17us;18us;1us;18us;8us;19us;136us;137us;138us;139us;140us;141us;142us;8us;19us;136us;137us;138us;139us;140us;141us;142us;53us;19us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;1us;20us;2us;21us;22us;1us;22us;1us;23us;1us;24us;1us;25us;1us;25us;2us;25us;27us;1us;27us;1us;28us;1us;29us;2us;30us;31us;1us;30us;1us;31us;1us;31us;3us;32us;47us;50us;1us;32us;1us;33us;1us;33us;1us;33us;1us;33us;3us;33us;1026us;1027us;1us;34us;1us;34us;3us;34us;1026us;1027us;2us;35us;36us;1us;36us;2us;37us;38us;1us;37us;1us;39us;1us;39us;1us;39us;7us;40us;54us;55us;56us;57us;58us;60us;7us;40us;54us;55us;56us;57us;58us;60us;4us;40us;54us;55us;56us;1us;40us;1us;41us;1us;42us;3us;43us;44us;45us;2us;43us;44us;1us;43us;1us;43us;1us;44us;3us;45us;47us;50us;1us;45us;1us;46us;2us;47us;50us;3us;47us;50us;56us;2us;49us;51us;2us;49us;51us;1us;49us;1us;50us;1us;50us;1us;50us;1us;52us;1us;53us;6us;54us;55us;56us;57us;58us;60us;6us;54us;55us;56us;57us;58us;60us;3us;54us;55us;56us;2us;54us;55us;1us;54us;1us;55us;1us;56us;1us;57us;1us;57us;1us;57us;1us;58us;1us;59us;1us;60us;1us;60us;1us;60us;1us;60us;1us;60us;1us;60us;1us;60us;1us;60us;1us;60us;1us;60us;2us;62us;63us;53us;62us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;1us;63us;53us;63us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;1us;63us;1us;63us;3us;64us;65us;147us;1us;64us;1us;64us;1us;65us;1us;65us;1us;65us;1us;65us;1us;66us;1us;66us;1us;66us;1us;67us;1us;67us;1us;67us;2us;69us;70us;1us;69us;1us;69us;1us;70us;3us;71us;80us;81us;1us;71us;1us;71us;1us;71us;1us;71us;1us;71us;1us;71us;1us;72us;1us;72us;1us;73us;1us;74us;1us;75us;1us;75us;1us;75us;1us;76us;3us;77us;78us;79us;2us;77us;78us;1us;77us;1us;78us;1us;79us;1us;79us;2us;80us;81us;2us;80us;81us;1us;80us;1us;81us;2us;82us;83us;2us;82us;83us;1us;82us;1us;83us;2us;84us;85us;2us;84us;85us;1us;84us;1us;85us;1us;86us;1us;87us;1us;89us;1us;89us;1us;89us;7us;90us;91us;92us;93us;94us;95us;96us;12us;90us;91us;92us;93us;94us;95us;96us;271us;272us;273us;274us;275us;7us;90us;91us;92us;93us;94us;95us;96us;12us;90us;91us;92us;93us;94us;95us;96us;271us;272us;273us;274us;275us;1us;90us;1us;90us;1us;90us;1us;90us;1us;90us;1us;90us;1us;90us;1us;90us;1us;90us;1us;91us;4us;91us;923us;924us;925us;1us;92us;4us;92us;923us;924us;925us;1us;93us;1us;93us;5us;94us;95us;177us;217us;218us;1us;94us;1us;94us;1us;95us;1us;95us;1us;96us;1us;96us;1us;96us;1us;98us;1us;98us;2us;99us;100us;2us;99us;100us;1us;99us;1us;100us;2us;101us;102us;1us;102us;1us;102us;1us;103us;1us;104us;1us;105us;1us;105us;1us;106us;1us;106us;1us;106us;2us;108us;109us;1us;108us;1us;109us;1us;109us;2us;110us;133us;1us;110us;2us;111us;112us;1us;112us;2us;113us;114us;1us;113us;1us;115us;1us;115us;1us;115us;12us;116us;124us;125us;126us;128us;136us;137us;138us;139us;140us;141us;142us;11us;116us;124us;125us;126us;136us;137us;138us;139us;140us;141us;142us;3us;116us;141us;142us;1us;116us;1us;117us;3us;118us;119us;120us;2us;118us;119us;1us;118us;1us;118us;1us;119us;2us;120us;133us;1us;120us;1us;121us;1us;122us;11us;124us;125us;126us;128us;136us;137us;138us;139us;140us;141us;142us;10us;124us;125us;126us;136us;137us;138us;139us;140us;141us;142us;55us;124us;125us;126us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;2us;124us;125us;1us;124us;1us;127us;1us;128us;4us;129us;130us;131us;132us;1us;129us;2us;130us;132us;1us;130us;1us;133us;2us;133us;142us;2us;133us;153us;2us;133us;158us;1us;133us;1us;133us;1us;134us;1us;135us;7us;136us;137us;138us;139us;140us;141us;142us;7us;136us;137us;138us;139us;140us;141us;142us;1us;136us;3us;136us;551us;552us;1us;137us;5us;137us;553us;554us;555us;556us;1us;138us;1us;139us;1us;139us;1us;139us;1us;140us;2us;141us;142us;1us;141us;1us;141us;1us;142us;2us;143us;160us;1us;143us;1us;144us;2us;145us;146us;3us;145us;1026us;1027us;1us;146us;4us;146us;923us;924us;925us;3us;147us;1026us;1027us;1us;147us;3us;148us;1026us;1027us;5us;149us;150us;151us;152us;153us;2us;149us;150us;1us;149us;1us;150us;2us;151us;152us;1us;151us;1us;152us;1us;153us;1us;154us;3us;155us;1026us;1027us;3us;156us;157us;158us;2us;156us;157us;1us;156us;1us;157us;1us;158us;1us;159us;1us;159us;1us;159us;1us;160us;2us;162us;163us;1us;163us;4us;164us;165us;166us;167us;3us;164us;166us;169us;2us;164us;166us;1us;164us;1us;164us;2us;165us;546us;1us;165us;1us;165us;1us;166us;1us;167us;1us;168us;2us;169us;1097us;1us;169us;3us;170us;1026us;1027us;1us;170us;1us;170us;2us;171us;172us;3us;171us;1026us;1027us;1us;171us;1us;171us;1us;172us;3us;172us;1026us;1027us;1us;172us;1us;172us;1us;172us;1us;173us;1us;173us;1us;174us;1us;174us;2us;175us;1025us;1us;175us;1us;176us;1us;176us;6us;177us;217us;218us;220us;226us;229us;1us;177us;1us;178us;1us;179us;1us;180us;1us;181us;1us;181us;1us;181us;1us;182us;1us;182us;1us;182us;4us;184us;185us;186us;187us;1us;185us;1us;185us;1us;186us;1us;187us;1us;187us;1us;187us;1us;187us;1us;187us;1us;187us;1us;187us;4us;188us;189us;198us;199us;2us;188us;189us;2us;188us;189us;2us;188us;189us;2us;188us;189us;1us;188us;1us;188us;1us;189us;1us;190us;1us;190us;1us;191us;1us;192us;1us;193us;1us;193us;1us;193us;1us;194us;3us;195us;196us;197us;2us;195us;196us;1us;195us;1us;196us;2us;197us;204us;1us;197us;2us;198us;199us;2us;198us;199us;1us;198us;1us;199us;2us;200us;201us;2us;200us;201us;1us;200us;1us;201us;1us;202us;1us;203us;1us;204us;1us;204us;1us;206us;1us;206us;1us;206us;1us;207us;1us;207us;2us;208us;209us;2us;208us;209us;1us;208us;1us;209us;2us;210us;211us;1us;211us;1us;211us;1us;212us;1us;212us;1us;212us;1us;212us;1us;212us;1us;212us;2us;213us;214us;2us;213us;214us;2us;213us;214us;1us;213us;1us;213us;1us;214us;2us;215us;216us;1us;216us;2us;217us;218us;1us;218us;11us;219us;220us;221us;222us;223us;224us;225us;226us;227us;228us;229us;16us;219us;220us;221us;222us;223us;224us;225us;226us;227us;228us;229us;271us;272us;273us;274us;275us;11us;219us;220us;221us;222us;223us;224us;225us;226us;227us;228us;229us;16us;219us;220us;221us;222us;223us;224us;225us;226us;227us;228us;229us;271us;272us;273us;274us;275us;1us;219us;1us;220us;2us;221us;227us;1us;221us;1us;221us;1us;222us;4us;222us;923us;924us;925us;1us;222us;1us;223us;1us;223us;1us;223us;1us;223us;1us;223us;1us;223us;1us;223us;1us;223us;1us;224us;1us;225us;1us;225us;1us;226us;1us;226us;1us;227us;1us;227us;1us;228us;1us;228us;1us;228us;1us;228us;1us;228us;1us;228us;1us;229us;1us;229us;1us;230us;1us;230us;1us;230us;1us;230us;1us;230us;1us;230us;1us;231us;1us;231us;1us;231us;1us;231us;1us;231us;1us;231us;1us;231us;1us;231us;1us;233us;1us;233us;2us;234us;488us;1us;234us;1us;234us;1us;235us;1us;235us;1us;235us;1us;236us;2us;237us;238us;1us;237us;1us;237us;1us;237us;1us;238us;1us;240us;1us;241us;1us;242us;1us;243us;2us;244us;245us;1us;244us;1us;244us;1us;247us;1us;247us;1us;247us;3us;249us;250us;251us;2us;249us;250us;1us;249us;1us;250us;1us;250us;1us;250us;1us;251us;1us;252us;1us;254us;1us;254us;1us;255us;2us;257us;258us;1us;257us;1us;258us;2us;259us;260us;2us;259us;260us;1us;259us;1us;260us;1us;261us;2us;262us;263us;2us;262us;263us;1us;262us;4us;264us;265us;266us;267us;5us;264us;265us;266us;267us;392us;3us;264us;265us;266us;1us;264us;1us;264us;1us;265us;1us;265us;1us;266us;1us;267us;1us;267us;1us;267us;1us;268us;1us;268us;1us;269us;1us;270us;5us;271us;272us;273us;274us;275us;5us;271us;272us;273us;274us;275us;4us;271us;919us;1026us;1027us;1us;271us;1us;271us;1us;271us;1us;272us;1us;273us;1us;274us;5us;275us;926us;975us;976us;987us;2us;275us;972us;2us;275us;423us;1us;275us;1us;275us;3us;276us;277us;278us;2us;276us;277us;1us;276us;1us;277us;1us;278us;1us;278us;6us;279us;977us;978us;979us;980us;981us;1us;279us;1us;280us;3us;281us;282us;283us;2us;281us;282us;1us;281us;1us;282us;1us;283us;1us;283us;1us;284us;1us;285us;1us;286us;1us;287us;1us;288us;3us;289us;290us;291us;4us;289us;291us;1026us;1027us;1us;290us;3us;290us;1026us;1027us;1us;291us;1us;292us;1us;293us;2us;293us;294us;1us;293us;2us;294us;297us;3us;294us;298us;299us;1us;294us;2us;294us;298us;1us;294us;1us;295us;1us;296us;1us;296us;1us;297us;1us;297us;1us;297us;1us;297us;1us;298us;1us;301us;1us;301us;1us;301us;1us;301us;1us;301us;1us;302us;1us;305us;2us;305us;306us;2us;306us;872us;2us;306us;874us;1us;306us;1us;306us;1us;307us;1us;308us;1us;308us;1us;308us;1us;308us;10us;309us;310us;311us;312us;313us;315us;316us;317us;920us;928us;2us;309us;928us;2us;309us;928us;7us;310us;311us;312us;313us;315us;316us;317us;1us;310us;3us;311us;316us;317us;1us;311us;1us;312us;1us;313us;1us;313us;1us;313us;5us;314us;926us;975us;976us;987us;2us;314us;319us;1us;314us;1us;314us;1us;314us;1us;314us;1us;314us;1us;315us;1us;315us;1us;316us;4us;318us;923us;924us;925us;1us;319us;4us;319us;923us;924us;925us;9us;320us;904us;905us;909us;910us;911us;923us;924us;925us;1us;321us;1us;321us;1us;322us;1us;322us;1us;322us;2us;323us;340us;1us;324us;2us;325us;326us;1us;325us;1us;325us;8us;327us;328us;329us;330us;331us;332us;333us;334us;8us;327us;328us;329us;330us;331us;332us;333us;334us;5us;327us;329us;332us;333us;334us;1us;328us;2us;329us;332us;1us;329us;2us;330us;331us;1us;330us;1us;331us;1us;332us;1us;333us;1us;333us;1us;334us;6us;334us;716us;717us;718us;722us;725us;1us;335us;6us;336us;337us;1028us;1029us;1031us;1032us;1us;336us;1us;336us;1us;337us;1us;337us;1us;337us;6us;338us;339us;341us;342us;344us;1025us;1us;338us;2us;339us;344us;7us;339us;344us;716us;717us;718us;722us;725us;2us;339us;344us;1us;340us;2us;341us;342us;1us;341us;1us;342us;1us;343us;1us;343us;2us;345us;346us;1us;345us;1us;345us;2us;347us;1025us;1us;347us;4us;347us;923us;924us;925us;4us;348us;923us;924us;925us;1us;349us;1us;350us;2us;351us;352us;2us;351us;1097us;1us;351us;1us;352us;1us;353us;1us;353us;1us;354us;1us;354us;1us;354us;1us;354us;1us;354us;1us;355us;1us;355us;2us;356us;357us;2us;356us;357us;2us;356us;357us;1us;356us;1us;356us;1us;357us;3us;358us;359us;360us;2us;359us;360us;1us;359us;1us;360us;1us;362us;3us;362us;1026us;1027us;1us;363us;1us;363us;1us;363us;1us;364us;1us;365us;1us;365us;1us;366us;1us;366us;1us;366us;1us;366us;1us;367us;1us;367us;1us;367us;1us;368us;1us;369us;1us;370us;1us;371us;1us;372us;1us;373us;1us;374us;1us;374us;1us;374us;1us;374us;1us;374us;1us;374us;1us;374us;1us;374us;2us;375us;378us;2us;376us;379us;1us;378us;1us;378us;1us;379us;1us;379us;2us;380us;381us;5us;380us;381us;383us;384us;385us;1us;381us;3us;382us;1026us;1027us;4us;383us;384us;385us;387us;1us;383us;1us;383us;1us;383us;1us;384us;1us;385us;1us;386us;2us;386us;388us;1us;386us;2us;387us;388us;1us;389us;1us;389us;1us;390us;1us;390us;1us;390us;1us;392us;1us;392us;1us;393us;3us;394us;395us;396us;3us;394us;395us;396us;3us;394us;395us;396us;3us;394us;395us;396us;2us;394us;395us;1us;394us;1us;395us;1us;396us;2us;397us;398us;2us;397us;398us;1us;397us;1us;398us;1us;399us;1us;400us;2us;400us;401us;1us;401us;1us;403us;2us;403us;404us;1us;403us;1us;403us;1us;404us;1us;404us;1us;405us;2us;406us;407us;1us;406us;1us;406us;1us;407us;1us;408us;1us;409us;1us;410us;1us;411us;1us;412us;1us;413us;1us;414us;1us;415us;1us;416us;1us;417us;1us;418us;1us;419us;1us;420us;2us;420us;484us;1us;421us;1us;422us;1us;423us;1us;424us;1us;425us;2us;426us;428us;1us;426us;1us;426us;2us;427us;429us;2us;427us;429us;1us;427us;1us;427us;1us;430us;1us;431us;1us;431us;1us;431us;1us;432us;1us;433us;1us;433us;2us;434us;435us;1us;435us;1us;435us;7us;436us;449us;450us;451us;456us;458us;462us;1us;437us;1us;438us;1us;438us;3us;439us;440us;441us;4us;439us;440us;442us;443us;2us;439us;440us;1us;439us;1us;440us;1us;441us;1us;443us;1us;443us;5us;444us;445us;446us;447us;448us;2us;444us;446us;1us;444us;1us;445us;1us;446us;2us;447us;546us;1us;447us;1us;448us;7us;449us;450us;450us;451us;456us;458us;462us;7us;449us;450us;451us;451us;456us;458us;462us;7us;449us;450us;451us;455us;456us;458us;462us;7us;449us;450us;451us;456us;456us;458us;462us;7us;449us;450us;451us;456us;458us;459us;462us;7us;449us;450us;451us;456us;458us;461us;462us;7us;449us;450us;451us;456us;458us;462us;462us;7us;449us;450us;451us;456us;458us;462us;548us;7us;449us;450us;451us;456us;458us;462us;549us;7us;449us;450us;451us;456us;458us;462us;601us;8us;449us;450us;451us;456us;458us;462us;602us;603us;1us;449us;1us;449us;1us;450us;1us;451us;3us;452us;455us;457us;2us;453us;461us;1us;454us;2us;455us;457us;2us;456us;458us;1us;457us;1us;458us;2us;459us;460us;1us;460us;1us;461us;1us;462us;2us;463us;464us;1us;463us;2us;464us;1097us;1us;464us;3us;465us;466us;467us;6us;465us;466us;467us;1064us;1066us;1067us;2us;465us;466us;9us;465us;505us;506us;509us;510us;512us;515us;517us;521us;1us;466us;1us;467us;8us;468us;469us;470us;471us;472us;473us;474us;490us;4us;468us;469us;470us;471us;1us;469us;1us;470us;1us;470us;1us;471us;1us;471us;1us;472us;1us;473us;1us;473us;1us;474us;1us;474us;1us;475us;1us;475us;1us;476us;9us;477us;495us;496us;497us;498us;1028us;1029us;1031us;1032us;1us;477us;1us;477us;1us;478us;4us;479us;480us;481us;482us;1us;479us;1us;480us;1us;480us;1us;481us;1us;481us;1us;483us;1us;484us;1us;484us;1us;485us;1us;485us;1us;485us;1us;486us;1us;486us;1us;486us;1us;487us;1us;487us;1us;487us;1us;489us;2us;489us;1049us;1us;489us;1us;490us;1us;491us;1us;492us;1us;493us;1us;494us;8us;495us;496us;497us;498us;1028us;1029us;1031us;1032us;2us;495us;496us;1us;495us;1us;496us;3us;497us;546us;1029us;2us;497us;1029us;1us;498us;4us;499us;500us;501us;502us;4us;499us;500us;501us;502us;5us;499us;500us;507us;514us;516us;1us;499us;1us;500us;2us;501us;546us;1us;501us;1us;502us;9us;503us;505us;506us;509us;510us;512us;515us;517us;521us;9us;505us;506us;506us;509us;510us;512us;515us;517us;521us;9us;505us;506us;509us;510us;511us;512us;515us;517us;521us;9us;505us;506us;509us;510us;512us;512us;515us;517us;521us;9us;505us;506us;509us;510us;512us;514us;515us;517us;521us;9us;505us;506us;509us;510us;512us;515us;515us;517us;521us;9us;505us;506us;509us;510us;512us;515us;517us;518us;521us;9us;505us;506us;509us;510us;512us;515us;517us;520us;521us;8us;505us;506us;509us;510us;512us;515us;517us;521us;9us;505us;506us;509us;510us;512us;515us;517us;521us;521us;9us;505us;506us;509us;510us;512us;515us;517us;521us;524us;10us;505us;506us;509us;510us;512us;515us;517us;521us;526us;527us;14us;505us;506us;509us;510us;512us;515us;517us;521us;595us;596us;798us;799us;800us;801us;9us;505us;506us;509us;510us;512us;515us;517us;521us;672us;1us;505us;1us;505us;1us;506us;3us;507us;514us;516us;2us;508us;520us;2us;509us;510us;1us;509us;1us;510us;1us;511us;1us;512us;1us;513us;2us;514us;516us;2us;515us;517us;1us;516us;1us;517us;2us;518us;519us;1us;519us;1us;520us;1us;521us;2us;522us;523us;1us;522us;2us;523us;1097us;1us;523us;3us;524us;1026us;1027us;1us;524us;1us;526us;2us;527us;1097us;1us;527us;2us;528us;529us;2us;528us;529us;1us;528us;1us;529us;1us;530us;1us;531us;1us;531us;1us;531us;53us;532us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;2us;533us;534us;1us;533us;1us;535us;2us;535us;866us;3us;536us;537us;538us;2us;536us;537us;1us;536us;1us;537us;1us;539us;1us;539us;57us;540us;541us;542us;543us;544us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;2us;540us;541us;1us;540us;1us;543us;1us;543us;1us;544us;1us;544us;1us;544us;1us;544us;5us;545us;553us;554us;555us;556us;1us;546us;2us;546us;581us;2us;546us;584us;2us;546us;590us;2us;546us;593us;2us;546us;595us;2us;546us;675us;2us;546us;730us;2us;546us;743us;2us;546us;762us;2us;546us;766us;2us;546us;771us;3us;546us;771us;1029us;2us;546us;786us;2us;546us;858us;1us;547us;1us;548us;1us;548us;1us;548us;1us;548us;1us;548us;1us;549us;1us;549us;1us;549us;1us;549us;1us;549us;1us;549us;2us;551us;552us;2us;551us;552us;1us;551us;1us;552us;4us;553us;554us;555us;556us;1us;553us;1us;554us;2us;555us;556us;1us;555us;1us;556us;1us;557us;1us;558us;1us;559us;2us;560us;561us;2us;560us;561us;1us;560us;1us;561us;2us;562us;563us;2us;562us;563us;1us;562us;1us;563us;3us;564us;565us;566us;3us;564us;565us;566us;1us;564us;1us;565us;1us;566us;1us;566us;3us;567us;568us;569us;54us;567us;568us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;1us;567us;1us;568us;1us;569us;1us;570us;53us;570us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;2us;571us;572us;53us;571us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;1us;573us;1us;573us;2us;574us;575us;1us;574us;6us;576us;577us;578us;579us;580us;581us;56us;576us;577us;578us;579us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;3us;576us;577us;578us;2us;576us;577us;1us;576us;1us;577us;1us;578us;1us;578us;1us;579us;1us;580us;1us;581us;15us;582us;583us;584us;585us;586us;587us;588us;589us;590us;591us;592us;593us;594us;595us;596us;6us;582us;583us;584us;585us;586us;587us;4us;582us;583us;584us;585us;2us;582us;583us;1us;582us;1us;583us;1us;584us;1us;585us;1us;586us;1us;587us;1us;587us;5us;588us;589us;590us;591us;592us;4us;588us;589us;590us;591us;2us;588us;589us;1us;588us;1us;589us;1us;590us;1us;591us;1us;592us;1us;593us;1us;593us;1us;593us;1us;594us;1us;595us;2us;596us;1158us;2us;597us;599us;53us;597us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;2us;598us;600us;53us;598us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;1us;599us;1us;600us;1us;601us;1us;601us;1us;601us;1us;601us;1us;601us;1us;601us;1us;601us;2us;602us;603us;2us;602us;603us;2us;602us;603us;2us;602us;603us;2us;602us;603us;1us;602us;1us;602us;1us;603us;1us;604us;1us;604us;1us;604us;1us;604us;1us;604us;1us;605us;1us;605us;1us;605us;1us;606us;53us;606us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;1us;607us;1us;607us;53us;608us;609us;610us;611us;612us;613us;614us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;53us;608us;609us;610us;611us;612us;613us;614us;617us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;53us;608us;609us;610us;611us;612us;613us;614us;617us;618us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;53us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;53us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;53us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;53us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;53us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;53us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;53us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;53us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;53us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;53us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;53us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;53us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;53us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;53us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;53us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;53us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;53us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;53us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;53us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;658us;659us;694us;695us;53us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;660us;694us;695us;53us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;679us;694us;695us;53us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;683us;694us;695us;53us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;687us;694us;695us;54us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;690us;691us;694us;695us;53us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;692us;694us;695us;52us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;53us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;695us;53us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;696us;53us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;798us;53us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;801us;53us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;801us;54us;608us;609us;610us;611us;612us;613us;614us;617us;618us;619us;620us;621us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;637us;638us;639us;640us;641us;642us;643us;644us;645us;646us;647us;648us;649us;650us;651us;652us;653us;654us;655us;656us;657us;658us;659us;694us;695us;1119us;1120us;2us;608us;609us;1us;608us;1us;609us;2us;610us;611us;1us;610us;1us;611us;2us;612us;613us;1us;612us;1us;613us;1us;614us;2us;615us;662us;1us;615us;1us;615us;3us;616us;692us;693us;5us;616us;692us;693us;732us;733us;2us;617us;638us;2us;618us;639us;2us;619us;640us;2us;620us;641us;2us;621us;642us;2us;622us;643us;2us;623us;644us;2us;624us;645us;2us;625us;646us;2us;626us;647us;3us;627us;628us;648us;1us;628us;2us;629us;649us;2us;630us;650us;2us;631us;651us;2us;632us;652us;2us;633us;653us;2us;634us;654us;2us;635us;655us;2us;636us;656us;2us;637us;657us;1us;638us;1us;639us;1us;640us;1us;641us;1us;642us;1us;643us;1us;644us;1us;645us;1us;646us;1us;647us;1us;648us;1us;649us;1us;650us;1us;651us;1us;652us;1us;653us;1us;654us;1us;655us;1us;656us;1us;657us;2us;658us;659us;1us;660us;3us;660us;1056us;1057us;2us;660us;1057us;1us;661us;2us;661us;1044us;1us;663us;1us;664us;1us;664us;1us;664us;1us;665us;1us;665us;2us;666us;667us;2us;666us;667us;1us;666us;1us;667us;1us;668us;2us;669us;670us;1us;669us;1us;670us;1us;671us;1us;672us;6us;673us;674us;675us;676us;677us;678us;4us;673us;674us;676us;677us;2us;674us;676us;1us;674us;1us;675us;1us;675us;1us;676us;1us;677us;1us;678us;1us;679us;1us;681us;1us;681us;1us;682us;1us;682us;1us;683us;2us;684us;685us;2us;684us;685us;2us;684us;685us;1us;684us;1us;685us;1us;687us;2us;688us;689us;2us;688us;689us;2us;688us;689us;1us;688us;1us;689us;2us;690us;691us;1us;690us;1us;691us;2us;692us;693us;1us;693us;2us;694us;695us;1us;694us;2us;696us;697us;1us;697us;1us;698us;2us;698us;1022us;3us;698us;1022us;1036us;2us;698us;1036us;1us;698us;1us;699us;2us;699us;1043us;1us;699us;1us;700us;2us;700us;1039us;1us;700us;1us;701us;2us;701us;1042us;1us;701us;1us;702us;2us;702us;1055us;1us;702us;1us;703us;2us;703us;1050us;1us;703us;1us;704us;2us;704us;1051us;1us;704us;4us;705us;706us;707us;708us;8us;705us;706us;707us;708us;840us;841us;842us;843us;3us;705us;706us;707us;7us;705us;706us;707us;840us;841us;842us;843us;3us;705us;706us;707us;5us;705us;706us;707us;841us;842us;2us;705us;706us;4us;705us;706us;841us;842us;1us;705us;1us;705us;1us;707us;1us;708us;1us;709us;1us;709us;1us;710us;1us;710us;2us;711us;712us;6us;711us;712us;816us;820us;821us;822us;5us;712us;816us;820us;821us;822us;1us;712us;6us;713us;716us;717us;718us;722us;725us;1us;714us;6us;714us;716us;717us;718us;722us;725us;6us;715us;716us;717us;718us;722us;725us;6us;716us;716us;717us;718us;722us;725us;6us;716us;717us;717us;718us;722us;725us;6us;716us;717us;718us;719us;722us;725us;6us;716us;717us;718us;722us;725us;984us;1us;716us;1us;717us;1us;718us;1us;718us;1us;719us;2us;719us;1033us;1us;720us;2us;720us;1021us;1us;720us;2us;720us;1021us;1us;721us;1us;722us;1us;722us;1us;723us;1us;723us;1us;723us;1us;724us;2us;724us;1049us;1us;724us;1us;725us;1us;725us;1us;726us;1us;727us;4us;728us;729us;730us;731us;2us;728us;729us;1us;728us;1us;729us;1us;730us;1us;731us;3us;732us;733us;854us;2us;732us;733us;1us;732us;1us;733us;1us;734us;1us;735us;1us;736us;1us;738us;6us;739us;740us;1028us;1029us;1031us;1032us;1us;739us;1us;739us;1us;739us;1us;739us;1us;740us;1us;740us;4us;741us;742us;743us;744us;2us;741us;742us;1us;741us;1us;742us;1us;743us;1us;744us;1us;745us;1us;746us;1us;747us;1us;748us;1us;749us;1us;750us;1us;751us;1us;752us;1us;753us;1us;754us;1us;755us;4us;756us;757us;758us;759us;2us;756us;757us;1us;756us;1us;757us;1us;758us;1us;758us;1us;759us;4us;760us;761us;762us;763us;5us;760us;761us;762us;763us;1058us;2us;760us;761us;1us;760us;1us;761us;1us;762us;1us;763us;4us;764us;765us;766us;767us;2us;764us;765us;1us;764us;1us;765us;1us;766us;1us;767us;9us;768us;769us;770us;771us;772us;773us;774us;775us;776us;14us;768us;769us;770us;771us;772us;773us;774us;775us;776us;781us;1028us;1029us;1031us;1032us;13us;768us;769us;770us;771us;772us;773us;774us;775us;776us;1028us;1029us;1031us;1032us;1us;768us;2us;769us;770us;1us;769us;1us;770us;1us;771us;2us;771us;1029us;1us;772us;1us;773us;1us;774us;1us;775us;1us;776us;1us;777us;1us;777us;1us;777us;1us;777us;1us;777us;1us;777us;1us;778us;1us;779us;1us;780us;2us;780us;783us;2us;781us;782us;1us;781us;1us;782us;4us;782us;923us;924us;925us;5us;784us;785us;786us;787us;788us;2us;784us;785us;1us;784us;1us;785us;1us;786us;1us;787us;1us;788us;1us;789us;1us;790us;1us;791us;1us;792us;1us;794us;1us;796us;1us;797us;1us;797us;2us;798us;799us;1us;799us;1us;800us;1us;801us;1us;801us;1us;802us;1us;803us;1us;804us;1us;804us;1us;804us;2us;804us;805us;1us;804us;1us;804us;1us;805us;1us;808us;1us;810us;1us;810us;1us;810us;1us;810us;2us;812us;813us;1us;812us;5us;813us;926us;975us;976us;987us;1us;813us;1us;814us;1us;814us;1us;814us;1us;814us;2us;814us;831us;1us;814us;1us;815us;1us;816us;1us;816us;2us;816us;831us;1us;816us;3us;817us;818us;819us;2us;818us;819us;1us;819us;2us;819us;831us;1us;819us;1us;820us;1us;820us;2us;820us;831us;1us;820us;2us;821us;822us;1us;821us;1us;821us;1us;822us;2us;822us;831us;1us;822us;1us;822us;1us;823us;2us;823us;831us;2us;825us;828us;2us;826us;827us;1us;827us;1us;828us;3us;829us;1026us;1027us;1us;830us;1us;831us;5us;833us;834us;835us;836us;837us;3us;833us;834us;835us;1us;833us;1us;835us;1us;837us;2us;838us;839us;1us;838us;1us;838us;1us;838us;1us;839us;1us;839us;1us;841us;1us;844us;2us;846us;848us;1us;846us;1us;847us;1us;847us;1us;847us;1us;848us;1us;848us;1us;849us;1us;849us;1us;851us;1us;851us;1us;852us;1us;852us;1us;853us;4us;853us;923us;924us;925us;1us;853us;1us;853us;1us;853us;1us;854us;1us;854us;1us;855us;5us;856us;857us;858us;859us;860us;2us;856us;857us;1us;856us;1us;857us;1us;858us;1us;859us;1us;860us;2us;861us;862us;2us;861us;862us;2us;861us;862us;1us;861us;1us;862us;6us;863us;864us;865us;866us;867us;868us;5us;863us;864us;865us;866us;867us;4us;863us;864us;865us;866us;2us;863us;864us;1us;863us;1us;864us;1us;865us;1us;865us;1us;867us;1us;867us;1us;868us;1us;868us;1us;869us;1us;869us;1us;870us;1us;870us;1us;870us;2us;871us;872us;1us;872us;2us;873us;874us;1us;874us;2us;876us;877us;1us;876us;1us;877us;3us;878us;879us;880us;2us;878us;879us;1us;878us;1us;879us;3us;881us;882us;884us;2us;881us;882us;1us;881us;1us;882us;1us;883us;1us;883us;3us;885us;886us;888us;2us;885us;886us;1us;885us;1us;886us;1us;887us;1us;887us;5us;889us;890us;891us;892us;893us;6us;889us;890us;893us;923us;924us;925us;2us;889us;890us;4us;889us;923us;924us;925us;1us;890us;2us;891us;892us;2us;891us;892us;2us;891us;892us;4us;891us;923us;924us;925us;1us;892us;6us;894us;895us;898us;923us;924us;925us;2us;894us;895us;4us;894us;923us;924us;925us;1us;895us;2us;896us;897us;2us;896us;897us;2us;896us;897us;4us;896us;923us;924us;925us;1us;897us;4us;899us;900us;901us;902us;3us;899us;900us;901us;1us;899us;1us;900us;1us;901us;1us;901us;1us;903us;1us;903us;8us;904us;905us;909us;910us;911us;923us;924us;925us;2us;904us;905us;1us;904us;1us;905us;1us;906us;1us;906us;2us;907us;908us;1us;907us;1us;908us;2us;909us;910us;1us;909us;1us;910us;8us;912us;913us;915us;916us;918us;923us;924us;925us;2us;912us;913us;1us;912us;1us;913us;1us;914us;1us;914us;2us;915us;916us;1us;915us;1us;916us;1us;917us;1us;917us;3us;919us;1026us;1027us;1us;920us;2us;920us;928us;2us;921us;922us;4us;921us;922us;988us;991us;1us;921us;1us;921us;7us;923us;924us;925us;977us;978us;979us;980us;1us;923us;1us;924us;1us;924us;1us;925us;4us;926us;975us;976us;987us;1us;926us;1us;926us;1us;926us;1us;927us;1us;928us;1us;928us;2us;929us;974us;1us;929us;1us;929us;32us;930us;931us;932us;933us;934us;935us;936us;937us;938us;939us;940us;941us;942us;943us;944us;945us;946us;947us;948us;949us;950us;951us;952us;953us;954us;955us;956us;957us;958us;959us;960us;961us;1us;930us;31us;931us;932us;933us;934us;935us;936us;937us;938us;939us;940us;941us;942us;943us;944us;945us;946us;947us;948us;949us;950us;951us;952us;953us;954us;955us;956us;957us;958us;959us;960us;961us;1us;931us;30us;932us;933us;934us;935us;936us;937us;938us;939us;940us;941us;942us;943us;944us;945us;946us;947us;948us;949us;950us;951us;952us;953us;954us;955us;956us;957us;958us;959us;960us;961us;1us;932us;29us;933us;934us;935us;936us;937us;938us;939us;940us;941us;942us;943us;944us;945us;946us;947us;948us;949us;950us;951us;952us;953us;954us;955us;956us;957us;958us;959us;960us;961us;1us;933us;28us;934us;935us;936us;937us;938us;939us;940us;941us;942us;943us;944us;945us;946us;947us;948us;949us;950us;951us;952us;953us;954us;955us;956us;957us;958us;959us;960us;961us;1us;934us;27us;935us;936us;937us;938us;939us;940us;941us;942us;943us;944us;945us;946us;947us;948us;949us;950us;951us;952us;953us;954us;955us;956us;957us;958us;959us;960us;961us;1us;935us;26us;936us;937us;938us;939us;940us;941us;942us;943us;944us;945us;946us;947us;948us;949us;950us;951us;952us;953us;954us;955us;956us;957us;958us;959us;960us;961us;1us;936us;25us;937us;938us;939us;940us;941us;942us;943us;944us;945us;946us;947us;948us;949us;950us;951us;952us;953us;954us;955us;956us;957us;958us;959us;960us;961us;1us;937us;24us;938us;939us;940us;941us;942us;943us;944us;945us;946us;947us;948us;949us;950us;951us;952us;953us;954us;955us;956us;957us;958us;959us;960us;961us;1us;938us;23us;939us;940us;941us;942us;943us;944us;945us;946us;947us;948us;949us;950us;951us;952us;953us;954us;955us;956us;957us;958us;959us;960us;961us;1us;939us;22us;940us;941us;942us;943us;944us;945us;946us;947us;948us;949us;950us;951us;952us;953us;954us;955us;956us;957us;958us;959us;960us;961us;1us;940us;21us;941us;942us;943us;944us;945us;946us;947us;948us;949us;950us;951us;952us;953us;954us;955us;956us;957us;958us;959us;960us;961us;1us;941us;20us;942us;943us;944us;945us;946us;947us;948us;949us;950us;951us;952us;953us;954us;955us;956us;957us;958us;959us;960us;961us;1us;942us;19us;943us;944us;945us;946us;947us;948us;949us;950us;951us;952us;953us;954us;955us;956us;957us;958us;959us;960us;961us;1us;943us;18us;944us;945us;946us;947us;948us;949us;950us;951us;952us;953us;954us;955us;956us;957us;958us;959us;960us;961us;1us;944us;17us;945us;946us;947us;948us;949us;950us;951us;952us;953us;954us;955us;956us;957us;958us;959us;960us;961us;1us;945us;16us;946us;947us;948us;949us;950us;951us;952us;953us;954us;955us;956us;957us;958us;959us;960us;961us;1us;946us;15us;947us;948us;949us;950us;951us;952us;953us;954us;955us;956us;957us;958us;959us;960us;961us;1us;947us;14us;948us;949us;950us;951us;952us;953us;954us;955us;956us;957us;958us;959us;960us;961us;1us;948us;13us;949us;950us;951us;952us;953us;954us;955us;956us;957us;958us;959us;960us;961us;1us;949us;12us;950us;951us;952us;953us;954us;955us;956us;957us;958us;959us;960us;961us;1us;950us;11us;951us;952us;953us;954us;955us;956us;957us;958us;959us;960us;961us;1us;951us;10us;952us;953us;954us;955us;956us;957us;958us;959us;960us;961us;1us;952us;9us;953us;954us;955us;956us;957us;958us;959us;960us;961us;1us;953us;8us;954us;955us;956us;957us;958us;959us;960us;961us;1us;954us;7us;955us;956us;957us;958us;959us;960us;961us;1us;955us;6us;956us;957us;958us;959us;960us;961us;1us;956us;5us;957us;958us;959us;960us;961us;1us;957us;4us;958us;959us;960us;961us;1us;958us;3us;959us;960us;961us;1us;959us;2us;960us;961us;1us;960us;1us;961us;1us;961us;1us;962us;1us;962us;1us;962us;3us;962us;963us;964us;4us;963us;964us;994us;995us;2us;963us;964us;1us;963us;1us;964us;2us;966us;967us;1us;967us;1us;967us;4us;968us;975us;976us;987us;1us;968us;1us;968us;1us;968us;3us;969us;989us;990us;3us;970us;989us;990us;1us;971us;1us;972us;3us;972us;989us;990us;1us;973us;1us;974us;3us;975us;976us;987us;2us;975us;976us;5us;975us;976us;1001us;1002us;1003us;1us;975us;1us;976us;5us;977us;978us;979us;980us;981us;5us;977us;978us;979us;980us;981us;3us;977us;978us;979us;2us;977us;978us;1us;977us;1us;978us;1us;979us;1us;980us;1us;981us;1us;982us;1us;983us;1us;984us;1us;985us;1us;986us;1us;987us;1us;987us;1us;988us;2us;989us;990us;4us;989us;990us;1026us;1027us;1us;990us;1us;991us;1us;991us;1us;992us;1us;993us;1us;993us;7us;994us;995us;996us;997us;998us;999us;1000us;3us;994us;995us;996us;3us;994us;995us;996us;2us;994us;995us;1us;994us;1us;995us;1us;996us;3us;997us;998us;1004us;1us;997us;1us;998us;1us;999us;1us;1000us;3us;1001us;1002us;1003us;2us;1002us;1003us;1us;1002us;1us;1004us;1us;1005us;2us;1007us;1008us;3us;1007us;1018us;1019us;1us;1007us;1us;1008us;1us;1008us;3us;1009us;1026us;1027us;1us;1010us;1us;1011us;3us;1011us;1018us;1019us;1us;1011us;2us;1012us;1013us;1us;1013us;1us;1013us;1us;1014us;2us;1015us;1016us;1us;1016us;1us;1017us;3us;1018us;1018us;1019us;3us;1018us;1019us;1019us;3us;1018us;1019us;1020us;1us;1018us;1us;1019us;1us;1020us;1us;1021us;1us;1021us;1us;1022us;1us;1022us;2us;1022us;1069us;1us;1023us;1us;1024us;1us;1025us;2us;1026us;1027us;1us;1026us;1us;1027us;4us;1028us;1029us;1031us;1032us;1us;1028us;1us;1028us;1us;1029us;1us;1029us;1us;1030us;3us;1031us;1032us;1061us;3us;1031us;1032us;1061us;1us;1031us;1us;1032us;1us;1032us;1us;1032us;1us;1033us;1us;1034us;1us;1035us;1us;1036us;1us;1037us;1us;1038us;1us;1039us;1us;1040us;1us;1041us;1us;1042us;1us;1043us;1us;1044us;1us;1045us;1us;1046us;1us;1047us;1us;1048us;1us;1049us;1us;1050us;1us;1051us;1us;1052us;1us;1053us;1us;1054us;1us;1055us;2us;1056us;1057us;1us;1057us;1us;1058us;1us;1058us;1us;1059us;1us;1060us;1us;1060us;1us;1061us;1us;1062us;1us;1063us;3us;1064us;1066us;1067us;1us;1065us;2us;1066us;1067us;1us;1066us;1us;1067us;1us;1068us;1us;1069us;1us;1070us;1us;1071us;1us;1072us;1us;1073us;2us;1074us;1075us;1us;1075us;1us;1076us;1us;1076us;2us;1078us;1080us;2us;1079us;1081us;1us;1080us;1us;1081us;1us;1082us;1us;1083us;1us;1084us;1us;1085us;1us;1086us;1us;1087us;1us;1089us;1us;1091us;1us;1093us;1us;1095us;1us;1097us;1us;1099us;1us;1103us;1us;1105us;1us;1107us;1us;1108us;1us;1109us;1us;1110us;1us;1111us;1us;1112us;1us;1113us;1us;1114us;1us;1115us;1us;1116us;1us;1117us;1us;1118us;1us;1120us;1us;1120us;1us;1121us;2us;1122us;1123us;1us;1122us;1us;1122us;1us;1123us;2us;1124us;1126us;1us;1124us;1us;1124us;1us;1125us;1us;1126us;1us;1127us;1us;1128us;1us;1130us;1us;1132us;2us;1132us;1153us;1us;1132us;1us;1133us;1us;1134us;1us;1135us;2us;1135us;1154us;1us;1135us;1us;1136us;1us;1137us;1us;1138us;1us;1138us;1us;1139us;1us;1140us;1us;1141us;1us;1142us;1us;1142us;1us;1143us;1us;1144us;1us;1145us;1us;1145us;1us;1146us;1us;1147us;1us;1148us;1us;1149us;1us;1150us;1us;1151us;1us;1152us;1us;1153us;1us;1154us;1us;1155us;1us;1156us;1us;1157us;1us;1158us;|] -let _fsyacc_stateToProdIdxsTableRowOffsets = [|0us;2us;4us;6us;8us;10us;12us;14us;16us;18us;20us;22us;24us;26us;28us;30us;32us;35us;37us;40us;42us;45us;47us;49us;51us;53us;55us;57us;59us;62us;64us;73us;82us;136us;138us;141us;143us;145us;147us;149us;151us;154us;156us;158us;160us;163us;165us;167us;169us;173us;175us;177us;179us;181us;183us;187us;189us;191us;195us;198us;200us;203us;205us;207us;209us;211us;219us;227us;232us;234us;236us;238us;242us;245us;247us;249us;251us;255us;257us;259us;262us;266us;269us;272us;274us;276us;278us;280us;282us;284us;291us;298us;302us;305us;307us;309us;311us;313us;315us;317us;319us;321us;323us;325us;327us;329us;331us;333us;335us;337us;339us;341us;344us;398us;400us;454us;456us;458us;462us;464us;466us;468us;470us;472us;474us;476us;478us;480us;482us;484us;486us;489us;491us;493us;495us;499us;501us;503us;505us;507us;509us;511us;513us;515us;517us;519us;521us;523us;525us;527us;531us;534us;536us;538us;540us;542us;545us;548us;550us;552us;555us;558us;560us;562us;565us;568us;570us;572us;574us;576us;578us;580us;582us;590us;603us;611us;624us;626us;628us;630us;632us;634us;636us;638us;640us;642us;644us;649us;651us;656us;658us;660us;666us;668us;670us;672us;674us;676us;678us;680us;682us;684us;687us;690us;692us;694us;697us;699us;701us;703us;705us;707us;709us;711us;713us;715us;718us;720us;722us;724us;727us;729us;732us;734us;737us;739us;741us;743us;745us;758us;770us;774us;776us;778us;782us;785us;787us;789us;791us;794us;796us;798us;800us;812us;823us;879us;882us;884us;886us;888us;893us;895us;898us;900us;902us;905us;908us;911us;913us;915us;917us;919us;927us;935us;937us;941us;943us;949us;951us;953us;955us;957us;959us;962us;964us;966us;968us;971us;973us;975us;978us;982us;984us;989us;993us;995us;999us;1005us;1008us;1010us;1012us;1015us;1017us;1019us;1021us;1023us;1027us;1031us;1034us;1036us;1038us;1040us;1042us;1044us;1046us;1048us;1051us;1053us;1058us;1062us;1065us;1067us;1069us;1072us;1074us;1076us;1078us;1080us;1082us;1085us;1087us;1091us;1093us;1095us;1098us;1102us;1104us;1106us;1108us;1112us;1114us;1116us;1118us;1120us;1122us;1124us;1126us;1129us;1131us;1133us;1135us;1142us;1144us;1146us;1148us;1150us;1152us;1154us;1156us;1158us;1160us;1162us;1167us;1169us;1171us;1173us;1175us;1177us;1179us;1181us;1183us;1185us;1187us;1192us;1195us;1198us;1201us;1204us;1206us;1208us;1210us;1212us;1214us;1216us;1218us;1220us;1222us;1224us;1226us;1230us;1233us;1235us;1237us;1240us;1242us;1245us;1248us;1250us;1252us;1255us;1258us;1260us;1262us;1264us;1266us;1268us;1270us;1272us;1274us;1276us;1278us;1280us;1283us;1286us;1288us;1290us;1293us;1295us;1297us;1299us;1301us;1303us;1305us;1307us;1309us;1312us;1315us;1318us;1320us;1322us;1324us;1327us;1329us;1332us;1334us;1346us;1363us;1375us;1392us;1394us;1396us;1399us;1401us;1403us;1405us;1410us;1412us;1414us;1416us;1418us;1420us;1422us;1424us;1426us;1428us;1430us;1432us;1434us;1436us;1438us;1440us;1442us;1444us;1446us;1448us;1450us;1452us;1454us;1456us;1458us;1460us;1462us;1464us;1466us;1468us;1470us;1472us;1474us;1476us;1478us;1480us;1482us;1484us;1486us;1488us;1490us;1493us;1495us;1497us;1499us;1501us;1503us;1505us;1508us;1510us;1512us;1514us;1516us;1518us;1520us;1522us;1524us;1527us;1529us;1531us;1533us;1535us;1537us;1541us;1544us;1546us;1548us;1550us;1552us;1554us;1556us;1558us;1560us;1562us;1565us;1567us;1569us;1572us;1575us;1577us;1579us;1581us;1584us;1587us;1589us;1594us;1600us;1604us;1606us;1608us;1610us;1612us;1614us;1616us;1618us;1620us;1622us;1624us;1626us;1628us;1634us;1640us;1645us;1647us;1649us;1651us;1653us;1655us;1657us;1663us;1666us;1669us;1671us;1673us;1677us;1680us;1682us;1684us;1686us;1688us;1695us;1697us;1699us;1703us;1706us;1708us;1710us;1712us;1714us;1716us;1718us;1720us;1722us;1724us;1728us;1733us;1735us;1739us;1741us;1743us;1745us;1748us;1750us;1753us;1757us;1759us;1762us;1764us;1766us;1768us;1770us;1772us;1774us;1776us;1778us;1780us;1782us;1784us;1786us;1788us;1790us;1792us;1794us;1797us;1800us;1803us;1805us;1807us;1809us;1811us;1813us;1815us;1817us;1828us;1831us;1834us;1842us;1844us;1848us;1850us;1852us;1854us;1856us;1858us;1864us;1867us;1869us;1871us;1873us;1875us;1877us;1879us;1881us;1883us;1888us;1890us;1895us;1905us;1907us;1909us;1911us;1913us;1915us;1918us;1920us;1923us;1925us;1927us;1936us;1945us;1951us;1953us;1956us;1958us;1961us;1963us;1965us;1967us;1969us;1971us;1973us;1980us;1982us;1989us;1991us;1993us;1995us;1997us;1999us;2006us;2008us;2011us;2019us;2022us;2024us;2027us;2029us;2031us;2033us;2035us;2038us;2040us;2042us;2045us;2047us;2052us;2057us;2059us;2061us;2064us;2067us;2069us;2071us;2073us;2075us;2077us;2079us;2081us;2083us;2085us;2087us;2089us;2092us;2095us;2098us;2100us;2102us;2104us;2108us;2111us;2113us;2115us;2117us;2121us;2123us;2125us;2127us;2129us;2131us;2133us;2135us;2137us;2139us;2141us;2143us;2145us;2147us;2149us;2151us;2153us;2155us;2157us;2159us;2161us;2163us;2165us;2167us;2169us;2171us;2173us;2175us;2178us;2181us;2183us;2185us;2187us;2189us;2192us;2198us;2200us;2204us;2209us;2211us;2213us;2215us;2217us;2219us;2221us;2224us;2226us;2229us;2231us;2233us;2235us;2237us;2239us;2241us;2243us;2245us;2249us;2253us;2257us;2261us;2264us;2266us;2268us;2270us;2273us;2276us;2278us;2280us;2282us;2284us;2287us;2289us;2291us;2294us;2296us;2298us;2300us;2302us;2304us;2307us;2309us;2311us;2313us;2315us;2317us;2319us;2321us;2323us;2325us;2327us;2329us;2331us;2333us;2335us;2337us;2339us;2342us;2344us;2346us;2348us;2350us;2352us;2355us;2357us;2359us;2362us;2365us;2367us;2369us;2371us;2373us;2375us;2377us;2379us;2381us;2383us;2386us;2388us;2390us;2398us;2400us;2402us;2404us;2408us;2413us;2416us;2418us;2420us;2422us;2424us;2426us;2432us;2435us;2437us;2439us;2441us;2444us;2446us;2448us;2456us;2464us;2472us;2480us;2488us;2496us;2504us;2512us;2520us;2528us;2537us;2539us;2541us;2543us;2545us;2549us;2552us;2554us;2557us;2560us;2562us;2564us;2567us;2569us;2571us;2573us;2576us;2578us;2581us;2583us;2587us;2594us;2597us;2607us;2609us;2611us;2620us;2625us;2627us;2629us;2631us;2633us;2635us;2637us;2639us;2641us;2643us;2645us;2647us;2649us;2651us;2661us;2663us;2665us;2667us;2672us;2674us;2676us;2678us;2680us;2682us;2684us;2686us;2688us;2690us;2692us;2694us;2696us;2698us;2700us;2702us;2704us;2706us;2708us;2711us;2713us;2715us;2717us;2719us;2721us;2723us;2732us;2735us;2737us;2739us;2743us;2746us;2748us;2753us;2758us;2764us;2766us;2768us;2771us;2773us;2775us;2785us;2795us;2805us;2815us;2825us;2835us;2845us;2855us;2864us;2874us;2884us;2895us;2910us;2920us;2922us;2924us;2926us;2930us;2933us;2936us;2938us;2940us;2942us;2944us;2946us;2949us;2952us;2954us;2956us;2959us;2961us;2963us;2965us;2968us;2970us;2973us;2975us;2979us;2981us;2983us;2986us;2988us;2991us;2994us;2996us;2998us;3000us;3002us;3004us;3006us;3060us;3063us;3065us;3067us;3070us;3074us;3077us;3079us;3081us;3083us;3085us;3143us;3146us;3148us;3150us;3152us;3154us;3156us;3158us;3160us;3166us;3168us;3171us;3174us;3177us;3180us;3183us;3186us;3189us;3192us;3195us;3198us;3201us;3205us;3208us;3211us;3213us;3215us;3217us;3219us;3221us;3223us;3225us;3227us;3229us;3231us;3233us;3235us;3238us;3241us;3243us;3245us;3250us;3252us;3254us;3257us;3259us;3261us;3263us;3265us;3267us;3270us;3273us;3275us;3277us;3280us;3283us;3285us;3287us;3291us;3295us;3297us;3299us;3301us;3303us;3307us;3362us;3364us;3366us;3368us;3370us;3424us;3427us;3481us;3483us;3485us;3488us;3490us;3497us;3554us;3558us;3561us;3563us;3565us;3567us;3569us;3571us;3573us;3575us;3591us;3598us;3603us;3606us;3608us;3610us;3612us;3614us;3616us;3618us;3620us;3626us;3631us;3634us;3636us;3638us;3640us;3642us;3644us;3646us;3648us;3650us;3652us;3654us;3657us;3660us;3714us;3717us;3771us;3773us;3775us;3777us;3779us;3781us;3783us;3785us;3787us;3789us;3792us;3795us;3798us;3801us;3804us;3806us;3808us;3810us;3812us;3814us;3816us;3818us;3820us;3822us;3824us;3826us;3828us;3882us;3884us;3886us;3940us;3994us;4048us;4102us;4156us;4210us;4264us;4318us;4372us;4426us;4480us;4534us;4588us;4642us;4696us;4750us;4804us;4858us;4912us;4966us;5020us;5074us;5128us;5182us;5236us;5290us;5345us;5399us;5452us;5506us;5560us;5614us;5668us;5722us;5777us;5780us;5782us;5784us;5787us;5789us;5791us;5794us;5796us;5798us;5800us;5803us;5805us;5807us;5811us;5817us;5820us;5823us;5826us;5829us;5832us;5835us;5838us;5841us;5844us;5847us;5851us;5853us;5856us;5859us;5862us;5865us;5868us;5871us;5874us;5877us;5880us;5882us;5884us;5886us;5888us;5890us;5892us;5894us;5896us;5898us;5900us;5902us;5904us;5906us;5908us;5910us;5912us;5914us;5916us;5918us;5920us;5923us;5925us;5929us;5932us;5934us;5937us;5939us;5941us;5943us;5945us;5947us;5949us;5952us;5955us;5957us;5959us;5961us;5964us;5966us;5968us;5970us;5972us;5979us;5984us;5987us;5989us;5991us;5993us;5995us;5997us;5999us;6001us;6003us;6005us;6007us;6009us;6011us;6014us;6017us;6020us;6022us;6024us;6026us;6029us;6032us;6035us;6037us;6039us;6042us;6044us;6046us;6049us;6051us;6054us;6056us;6059us;6061us;6063us;6066us;6070us;6073us;6075us;6077us;6080us;6082us;6084us;6087us;6089us;6091us;6094us;6096us;6098us;6101us;6103us;6105us;6108us;6110us;6112us;6115us;6117us;6122us;6131us;6135us;6143us;6147us;6153us;6156us;6161us;6163us;6165us;6167us;6169us;6171us;6173us;6175us;6177us;6180us;6187us;6193us;6195us;6202us;6204us;6211us;6218us;6225us;6232us;6239us;6246us;6248us;6250us;6252us;6254us;6256us;6259us;6261us;6264us;6266us;6269us;6271us;6273us;6275us;6277us;6279us;6281us;6283us;6286us;6288us;6290us;6292us;6294us;6296us;6301us;6304us;6306us;6308us;6310us;6312us;6316us;6319us;6321us;6323us;6325us;6327us;6329us;6331us;6338us;6340us;6342us;6344us;6346us;6348us;6350us;6355us;6358us;6360us;6362us;6364us;6366us;6368us;6370us;6372us;6374us;6376us;6378us;6380us;6382us;6384us;6386us;6388us;6393us;6396us;6398us;6400us;6402us;6404us;6406us;6411us;6417us;6420us;6422us;6424us;6426us;6428us;6433us;6436us;6438us;6440us;6442us;6444us;6454us;6469us;6483us;6485us;6488us;6490us;6492us;6494us;6497us;6499us;6501us;6503us;6505us;6507us;6509us;6511us;6513us;6515us;6517us;6519us;6521us;6523us;6525us;6528us;6531us;6533us;6535us;6540us;6546us;6549us;6551us;6553us;6555us;6557us;6559us;6561us;6563us;6565us;6567us;6569us;6571us;6573us;6575us;6578us;6580us;6582us;6584us;6586us;6588us;6590us;6592us;6594us;6596us;6599us;6601us;6603us;6605us;6607us;6609us;6611us;6613us;6615us;6618us;6620us;6626us;6628us;6630us;6632us;6634us;6636us;6639us;6641us;6643us;6645us;6647us;6650us;6652us;6656us;6659us;6661us;6664us;6666us;6668us;6670us;6673us;6675us;6678us;6680us;6682us;6684us;6687us;6689us;6691us;6693us;6696us;6699us;6702us;6704us;6706us;6710us;6712us;6714us;6720us;6724us;6726us;6728us;6730us;6733us;6735us;6737us;6739us;6741us;6743us;6745us;6747us;6750us;6752us;6754us;6756us;6758us;6760us;6762us;6764us;6766us;6768us;6770us;6772us;6774us;6776us;6781us;6783us;6785us;6787us;6789us;6791us;6793us;6799us;6802us;6804us;6806us;6808us;6810us;6812us;6815us;6818us;6821us;6823us;6825us;6832us;6838us;6843us;6846us;6848us;6850us;6852us;6854us;6856us;6858us;6860us;6862us;6864us;6866us;6868us;6870us;6872us;6875us;6877us;6880us;6882us;6885us;6887us;6889us;6893us;6896us;6898us;6900us;6904us;6907us;6909us;6911us;6913us;6915us;6919us;6922us;6924us;6926us;6928us;6930us;6936us;6943us;6946us;6951us;6953us;6956us;6959us;6962us;6967us;6969us;6976us;6979us;6984us;6986us;6989us;6992us;6995us;7000us;7002us;7007us;7011us;7013us;7015us;7017us;7019us;7021us;7023us;7032us;7035us;7037us;7039us;7041us;7043us;7046us;7048us;7050us;7053us;7055us;7057us;7066us;7069us;7071us;7073us;7075us;7077us;7080us;7082us;7084us;7086us;7088us;7092us;7094us;7097us;7100us;7105us;7107us;7109us;7117us;7119us;7121us;7123us;7125us;7130us;7132us;7134us;7136us;7138us;7140us;7142us;7145us;7147us;7149us;7182us;7184us;7216us;7218us;7249us;7251us;7281us;7283us;7312us;7314us;7342us;7344us;7371us;7373us;7399us;7401us;7426us;7428us;7452us;7454us;7477us;7479us;7501us;7503us;7524us;7526us;7546us;7548us;7567us;7569us;7587us;7589us;7606us;7608us;7624us;7626us;7641us;7643us;7657us;7659us;7672us;7674us;7686us;7688us;7699us;7701us;7711us;7713us;7722us;7724us;7732us;7734us;7741us;7743us;7749us;7751us;7756us;7758us;7762us;7764us;7767us;7769us;7771us;7773us;7775us;7777us;7779us;7783us;7788us;7791us;7793us;7795us;7798us;7800us;7802us;7807us;7809us;7811us;7813us;7817us;7821us;7823us;7825us;7829us;7831us;7833us;7837us;7840us;7846us;7848us;7850us;7856us;7862us;7866us;7869us;7871us;7873us;7875us;7877us;7879us;7881us;7883us;7885us;7887us;7889us;7891us;7893us;7895us;7898us;7903us;7905us;7907us;7909us;7911us;7913us;7915us;7923us;7927us;7931us;7934us;7936us;7938us;7940us;7944us;7946us;7948us;7950us;7952us;7956us;7959us;7961us;7963us;7965us;7968us;7972us;7974us;7976us;7978us;7982us;7984us;7986us;7990us;7992us;7995us;7997us;7999us;8001us;8004us;8006us;8008us;8012us;8016us;8020us;8022us;8024us;8026us;8028us;8030us;8032us;8034us;8037us;8039us;8041us;8043us;8046us;8048us;8050us;8055us;8057us;8059us;8061us;8063us;8065us;8069us;8073us;8075us;8077us;8079us;8081us;8083us;8085us;8087us;8089us;8091us;8093us;8095us;8097us;8099us;8101us;8103us;8105us;8107us;8109us;8111us;8113us;8115us;8117us;8119us;8121us;8123us;8125us;8127us;8130us;8132us;8134us;8136us;8138us;8140us;8142us;8144us;8146us;8148us;8152us;8154us;8157us;8159us;8161us;8163us;8165us;8167us;8169us;8171us;8173us;8176us;8178us;8180us;8182us;8185us;8188us;8190us;8192us;8194us;8196us;8198us;8200us;8202us;8204us;8206us;8208us;8210us;8212us;8214us;8216us;8218us;8220us;8222us;8224us;8226us;8228us;8230us;8232us;8234us;8236us;8238us;8240us;8242us;8244us;8246us;8248us;8250us;8253us;8255us;8257us;8259us;8262us;8264us;8266us;8268us;8270us;8272us;8274us;8276us;8278us;8281us;8283us;8285us;8287us;8289us;8292us;8294us;8296us;8298us;8300us;8302us;8304us;8306us;8308us;8310us;8312us;8314us;8316us;8318us;8320us;8322us;8324us;8326us;8328us;8330us;8332us;8334us;8336us;8338us;8340us;8342us;8344us;|] -let _fsyacc_action_rows = 1995 -let _fsyacc_actionTableElements = [|16us;16432us;22us;71us;37us;16545us;38us;16545us;39us;16545us;40us;16545us;43us;16545us;44us;16545us;45us;16545us;73us;307us;87us;38us;100us;279us;107us;16545us;108us;16545us;120us;16545us;149us;16545us;202us;48us;0us;49152us;94us;16507us;13us;16545us;22us;233us;24us;16545us;25us;16545us;29us;16545us;30us;16545us;32us;16545us;33us;16545us;37us;16545us;38us;16545us;39us;16545us;40us;16545us;41us;16545us;43us;16545us;44us;16545us;45us;16545us;46us;16545us;56us;16545us;62us;16545us;70us;16545us;71us;16545us;72us;16545us;73us;307us;74us;16545us;85us;16545us;87us;38us;88us;16545us;89us;16545us;90us;16545us;91us;16545us;95us;16545us;96us;16545us;97us;16545us;99us;16545us;100us;279us;105us;16545us;106us;16545us;107us;16545us;113us;16545us;114us;16545us;115us;16545us;116us;16545us;118us;16545us;120us;16545us;121us;16545us;122us;16545us;123us;16545us;124us;16545us;125us;16545us;129us;16545us;132us;16545us;133us;16545us;135us;16545us;136us;16545us;142us;16545us;145us;16545us;146us;16545us;147us;16545us;148us;16545us;149us;16545us;153us;16545us;154us;16545us;157us;16545us;158us;16545us;161us;16545us;162us;16545us;163us;16545us;165us;16545us;166us;16545us;167us;16545us;168us;16545us;169us;16545us;170us;16545us;171us;16545us;172us;16545us;173us;16545us;174us;16545us;175us;16545us;176us;16545us;177us;16545us;179us;16545us;180us;16545us;182us;16545us;183us;16545us;186us;16545us;188us;16545us;192us;16545us;193us;16545us;194us;16545us;198us;16545us;199us;16545us;200us;16545us;201us;16545us;202us;219us;0us;49152us;7us;16545us;10us;14us;21us;12us;67us;13us;73us;307us;83us;11us;87us;38us;100us;279us;0us;49152us;78us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;49152us;33us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1648us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;0us;49152us;0us;16389us;0us;16390us;0us;16391us;0us;16392us;0us;16393us;0us;16394us;4us;32768us;10us;14us;21us;37us;67us;13us;83us;36us;0us;16395us;4us;32768us;10us;14us;21us;37us;67us;13us;83us;36us;0us;16396us;4us;32768us;10us;14us;21us;37us;67us;13us;83us;36us;0us;16397us;5us;16545us;10us;14us;67us;13us;73us;307us;87us;38us;100us;279us;0us;16398us;5us;16545us;10us;14us;67us;13us;73us;307us;87us;38us;100us;279us;0us;16399us;5us;16545us;10us;14us;67us;13us;73us;307us;87us;38us;100us;279us;0us;16400us;16us;16401us;33us;16545us;37us;16545us;38us;16545us;39us;16545us;40us;16545us;41us;16545us;43us;16545us;44us;16545us;45us;16545us;73us;307us;100us;279us;107us;16545us;120us;16545us;136us;16545us;149us;16545us;161us;16545us;0us;16402us;3us;16623us;43us;489us;44us;488us;45us;490us;86us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;37us;1961us;38us;1964us;39us;1966us;40us;1969us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;107us;1965us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;120us;696us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;136us;712us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;149us;1970us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;26us;16403us;62us;1216us;63us;1208us;69us;1206us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;82us;1193us;88us;1203us;89us;1204us;95us;1217us;96us;1293us;101us;1202us;127us;1199us;142us;1240us;144us;1200us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;0us;16404us;2us;16405us;21us;37us;83us;36us;0us;16406us;0us;16407us;0us;16408us;1us;32768us;192us;39us;0us;16410us;2us;16409us;193us;1945us;200us;1944us;0us;16411us;0us;16412us;0us;16413us;2us;32768us;10us;45us;202us;46us;0us;16414us;1us;32768us;10us;47us;0us;16415us;4us;16431us;10us;49us;21us;1911us;67us;1910us;83us;1909us;0us;16416us;1us;16545us;73us;307us;3us;16623us;43us;489us;44us;488us;45us;490us;1us;17484us;102us;1931us;2us;32768us;46us;1851us;192us;1850us;1us;16417us;76us;1853us;1us;17484us;102us;1931us;2us;32768us;46us;1851us;192us;1850us;1us;16418us;76us;1853us;1us;16419us;150us;55us;0us;16420us;1us;16422us;150us;55us;0us;16421us;1us;17476us;69us;1927us;16us;16432us;22us;71us;37us;16545us;38us;16545us;39us;16545us;40us;16545us;43us;16545us;44us;16545us;45us;16545us;73us;307us;87us;38us;100us;279us;107us;16545us;108us;16545us;120us;16545us;149us;16545us;202us;79us;0us;16423us;3us;16623us;43us;489us;44us;488us;45us;490us;8us;32768us;37us;1961us;38us;1964us;39us;1966us;40us;1969us;107us;1965us;108us;101us;120us;696us;149us;1970us;18us;16432us;22us;71us;37us;16545us;38us;16545us;39us;16545us;40us;16545us;43us;16545us;44us;16545us;45us;16545us;69us;1943us;73us;307us;77us;1942us;87us;38us;100us;279us;107us;16545us;108us;16545us;120us;16545us;149us;16545us;202us;80us;0us;16424us;0us;16425us;0us;16426us;15us;16432us;37us;16545us;38us;16545us;39us;16545us;40us;16545us;43us;16545us;44us;16545us;45us;16545us;73us;307us;87us;38us;100us;279us;107us;16545us;108us;16545us;120us;16545us;149us;16545us;202us;76us;5us;32768us;10us;1028us;15us;1983us;16us;1980us;17us;1982us;202us;1013us;1us;17480us;21us;1929us;0us;16427us;0us;16428us;6us;16431us;15us;1983us;16us;1980us;17us;1982us;21us;1911us;67us;1910us;83us;1909us;0us;16429us;0us;16430us;3us;16431us;21us;1911us;67us;1910us;83us;1909us;17us;16431us;21us;1911us;37us;16440us;38us;16440us;39us;16440us;40us;16440us;43us;16440us;44us;16440us;45us;16440us;67us;1910us;73us;16440us;83us;1909us;87us;16440us;100us;16440us;107us;16440us;108us;16440us;120us;16440us;149us;16440us;3us;17461us;21us;1911us;67us;1910us;83us;1909us;15us;16435us;37us;16545us;38us;16545us;39us;16545us;40us;16545us;43us;16545us;44us;16545us;45us;16545us;73us;307us;87us;38us;100us;279us;107us;16545us;108us;16545us;120us;16545us;149us;16545us;202us;84us;0us;16433us;3us;32768us;21us;1911us;67us;1910us;83us;1909us;4us;16545us;73us;307us;87us;38us;100us;279us;202us;84us;0us;16434us;0us;16436us;0us;16437us;3us;16623us;43us;489us;44us;488us;45us;490us;8us;32768us;37us;1961us;38us;1964us;39us;1966us;40us;1969us;107us;1965us;108us;101us;120us;696us;149us;1970us;3us;32768us;69us;1943us;77us;1942us;202us;95us;5us;32768us;22us;117us;46us;1851us;57us;1940us;135us;1941us;192us;1850us;0us;16438us;0us;16439us;0us;16440us;1us;16545us;73us;307us;1us;16452us;130us;127us;0us;16441us;0us;16442us;0us;16443us;1us;16545us;73us;307us;1us;17488us;109us;1932us;1us;17490us;117us;1933us;3us;16623us;43us;489us;44us;488us;45us;490us;3us;32768us;91us;1856us;99us;1861us;192us;1850us;2us;16687us;34us;1960us;159us;17515us;1us;32768us;77us;108us;34us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;73us;307us;74us;1631us;87us;1771us;90us;1845us;91us;1679us;95us;1609us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;1us;16445us;69us;111us;0us;16444us;79us;32768us;13us;1145us;22us;113us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;26us;16446us;62us;1216us;63us;1208us;69us;1206us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;82us;1193us;88us;1203us;89us;1204us;95us;1217us;96us;1293us;101us;1202us;127us;1199us;142us;1240us;144us;1200us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;78us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;29us;32768us;15us;1983us;16us;1980us;17us;1982us;62us;1216us;63us;1208us;69us;1206us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;82us;1193us;88us;1203us;89us;1204us;95us;1217us;96us;1293us;101us;1202us;127us;1199us;142us;1240us;144us;1200us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;1us;17474us;19us;1926us;0us;16447us;8us;16545us;46us;1851us;57us;1940us;73us;307us;87us;38us;100us;279us;135us;1941us;192us;1850us;202us;84us;3us;32768us;15us;1983us;16us;1980us;17us;1982us;0us;16448us;15us;16432us;37us;16545us;38us;16545us;39us;16545us;40us;16545us;43us;16545us;44us;16545us;45us;16545us;73us;307us;87us;38us;100us;279us;107us;16545us;108us;16545us;120us;16545us;149us;16545us;202us;79us;1us;32768us;141us;122us;3us;32768us;15us;1983us;16us;1980us;17us;1982us;0us;16449us;15us;16432us;37us;16545us;38us;16545us;39us;16545us;40us;16545us;43us;16545us;44us;16545us;45us;16545us;73us;307us;87us;38us;100us;279us;107us;16545us;108us;16545us;120us;16545us;149us;16545us;202us;79us;1us;32768us;141us;126us;0us;16450us;1us;16545us;73us;307us;1us;16452us;130us;127us;0us;16451us;2us;16491us;69us;131us;86us;212us;7us;16545us;22us;134us;49us;563us;56us;565us;73us;307us;110us;564us;135us;159us;151us;145us;0us;16453us;0us;16454us;54us;16472us;14us;16545us;22us;155us;43us;16545us;44us;16545us;45us;16545us;46us;16545us;47us;16545us;48us;16545us;49us;563us;50us;16545us;51us;16545us;52us;16545us;54us;16545us;56us;565us;58us;16545us;66us;16545us;72us;16545us;73us;307us;87us;16545us;90us;16545us;91us;16545us;95us;16545us;105us;16545us;108us;16545us;110us;564us;112us;16545us;118us;16545us;119us;16545us;121us;16545us;135us;159us;147us;16545us;151us;145us;165us;16545us;166us;16545us;167us;16545us;168us;16545us;169us;16545us;170us;16545us;171us;16545us;172us;16545us;173us;16545us;174us;16545us;175us;16545us;176us;16545us;177us;16545us;179us;16545us;180us;16545us;185us;16545us;188us;16545us;192us;16545us;193us;16545us;194us;16545us;200us;16545us;201us;16545us;1us;17480us;21us;1929us;14us;16472us;14us;16545us;43us;16545us;44us;16545us;45us;16545us;47us;16545us;48us;16545us;50us;16545us;51us;16545us;52us;16545us;54us;16545us;73us;307us;108us;16545us;110us;16545us;118us;16545us;1us;16491us;86us;212us;3us;32768us;15us;1983us;16us;1980us;17us;1982us;1us;16491us;86us;212us;0us;16455us;1us;16491us;86us;212us;0us;16456us;0us;16457us;0us;16458us;1us;32768us;119us;146us;34us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;73us;307us;74us;1631us;87us;1771us;90us;1845us;91us;1679us;95us;1609us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;0us;16459us;0us;16460us;16us;16472us;14us;16545us;22us;163us;43us;16545us;44us;16545us;45us;16545us;47us;16545us;48us;16545us;50us;16545us;51us;16545us;52us;16545us;54us;16545us;73us;307us;108us;16545us;110us;16545us;118us;16545us;202us;153us;3us;32768us;10us;1028us;141us;151us;202us;1013us;0us;16461us;0us;16462us;1us;32768us;141us;154us;0us;16463us;14us;16472us;14us;16545us;43us;16545us;44us;16545us;45us;16545us;47us;16545us;48us;16545us;50us;16545us;51us;16545us;52us;16545us;54us;16545us;73us;307us;108us;16545us;110us;16545us;118us;16545us;5us;32768us;10us;1028us;15us;1983us;16us;1980us;17us;1982us;202us;1013us;0us;16464us;0us;16465us;15us;16472us;14us;16545us;22us;163us;43us;16545us;44us;16545us;45us;16545us;47us;16545us;48us;16545us;50us;16545us;51us;16545us;52us;16545us;54us;16545us;73us;307us;108us;16545us;110us;16545us;118us;16545us;3us;32768us;10us;1028us;141us;161us;202us;1013us;0us;16466us;0us;16467us;14us;16472us;14us;16545us;43us;16545us;44us;16545us;45us;16545us;47us;16545us;48us;16545us;50us;16545us;51us;16545us;52us;16545us;54us;16545us;73us;307us;108us;16545us;110us;16545us;118us;16545us;5us;32768us;10us;1028us;15us;1983us;16us;1980us;17us;1982us;202us;1013us;0us;16468us;0us;16469us;0us;16470us;0us;16471us;2us;17482us;21us;1916us;83us;1917us;14us;16472us;14us;16545us;43us;16545us;44us;16545us;45us;16545us;47us;16545us;48us;16545us;50us;16545us;51us;16545us;52us;16545us;54us;16545us;73us;307us;108us;16545us;110us;16545us;118us;16545us;0us;16473us;3us;16623us;43us;489us;44us;488us;45us;490us;3us;16623us;43us;489us;44us;488us;45us;490us;10us;32768us;14us;567us;47us;191us;48us;342us;50us;420us;51us;343us;52us;344us;54us;187us;108us;189us;110us;566us;118us;196us;46us;32768us;14us;567us;46us;1851us;47us;191us;48us;342us;50us;420us;51us;343us;52us;344us;54us;187us;56us;554us;58us;638us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;543us;95us;1648us;105us;1793us;108us;189us;110us;566us;112us;1791us;118us;196us;119us;672us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;194us;548us;200us;1944us;201us;808us;1us;17488us;109us;1932us;3us;16623us;43us;489us;44us;488us;45us;490us;3us;32768us;91us;1856us;99us;1861us;192us;1850us;2us;16687us;34us;1960us;159us;17515us;1us;32768us;77us;181us;34us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;73us;307us;74us;1631us;87us;1771us;90us;1845us;91us;1679us;95us;1609us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;2us;16481us;26us;201us;86us;199us;1us;16445us;69us;111us;0us;16474us;31us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;6us;16475us;36us;1676us;46us;1851us;70us;1689us;90us;1845us;188us;1847us;192us;1850us;31us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;6us;16476us;36us;1676us;46us;1851us;70us;1689us;90us;1845us;188us;1847us;192us;1850us;1us;17490us;117us;1933us;0us;16477us;6us;32768us;37us;1961us;38us;1964us;48us;341us;50us;422us;107us;1965us;108us;192us;1us;17490us;117us;1933us;0us;16478us;1us;16545us;73us;307us;0us;16479us;1us;32768us;77us;197us;34us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;73us;307us;74us;1631us;87us;1771us;90us;1845us;91us;1679us;95us;1609us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;0us;16480us;3us;32768us;91us;1856us;99us;1861us;192us;1850us;0us;16482us;3us;32768us;91us;1856us;99us;1861us;192us;1850us;2us;32768us;20us;203us;202us;204us;0us;16483us;0us;16484us;1us;16485us;96us;206us;3us;32768us;91us;1856us;99us;1861us;192us;1850us;0us;16486us;0us;16487us;0us;16488us;1us;16491us;86us;212us;0us;16489us;15us;16472us;14us;16545us;22us;163us;43us;16545us;44us;16545us;45us;16545us;47us;16545us;48us;16545us;50us;16545us;51us;16545us;52us;16545us;54us;16545us;73us;307us;108us;16545us;110us;16545us;118us;16545us;3us;32768us;19us;1920us;20us;1921us;141us;1922us;0us;16490us;2us;32768us;10us;216us;202us;217us;0us;16492us;1us;32768us;10us;218us;0us;16493us;4us;32768us;10us;220us;21us;1911us;67us;1910us;83us;1909us;0us;16494us;1us;16495us;150us;55us;0us;16496us;1us;16498us;150us;55us;0us;16497us;1us;17476us;69us;1927us;94us;16507us;13us;16545us;22us;233us;24us;16545us;25us;16545us;29us;16545us;30us;16545us;32us;16545us;33us;16545us;37us;16545us;38us;16545us;39us;16545us;40us;16545us;41us;16545us;43us;16545us;44us;16545us;45us;16545us;46us;16545us;56us;16545us;62us;16545us;70us;16545us;71us;16545us;72us;16545us;73us;307us;74us;16545us;85us;16545us;87us;38us;88us;16545us;89us;16545us;90us;16545us;91us;16545us;95us;16545us;96us;16545us;97us;16545us;99us;16545us;100us;279us;105us;16545us;106us;16545us;107us;16545us;113us;16545us;114us;16545us;115us;16545us;116us;16545us;118us;16545us;120us;16545us;121us;16545us;122us;16545us;123us;16545us;124us;16545us;125us;16545us;129us;16545us;132us;16545us;133us;16545us;135us;16545us;136us;16545us;142us;16545us;145us;16545us;146us;16545us;147us;16545us;148us;16545us;149us;16545us;153us;16545us;154us;16545us;157us;16545us;158us;16545us;161us;16545us;162us;16545us;163us;16545us;165us;16545us;166us;16545us;167us;16545us;168us;16545us;169us;16545us;170us;16545us;171us;16545us;172us;16545us;173us;16545us;174us;16545us;175us;16545us;176us;16545us;177us;16545us;179us;16545us;180us;16545us;182us;16545us;183us;16545us;186us;16545us;188us;16545us;192us;16545us;193us;16545us;194us;16545us;198us;16545us;199us;16545us;200us;16545us;201us;16545us;202us;253us;0us;16499us;4us;16623us;43us;489us;44us;488us;45us;490us;202us;248us;86us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;37us;1961us;38us;1964us;39us;1966us;40us;1969us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;107us;1965us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;120us;696us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;136us;712us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;149us;1970us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;95us;16507us;13us;16545us;22us;233us;24us;16545us;25us;16545us;29us;16545us;30us;16545us;32us;16545us;33us;16545us;37us;16545us;38us;16545us;39us;16545us;40us;16545us;41us;16545us;43us;16545us;44us;16545us;45us;16545us;46us;16545us;56us;16545us;62us;16545us;69us;273us;70us;16545us;71us;16545us;72us;16545us;73us;307us;74us;16545us;85us;16545us;87us;38us;88us;16545us;89us;16545us;90us;16545us;91us;16545us;95us;16545us;96us;16545us;97us;16545us;99us;16545us;100us;279us;105us;16545us;106us;16545us;107us;16545us;113us;16545us;114us;16545us;115us;16545us;116us;16545us;118us;16545us;120us;16545us;121us;16545us;122us;16545us;123us;16545us;124us;16545us;125us;16545us;129us;16545us;132us;16545us;133us;16545us;135us;16545us;136us;16545us;142us;16545us;145us;16545us;146us;16545us;147us;16545us;148us;16545us;149us;16545us;153us;16545us;154us;16545us;157us;16545us;158us;16545us;161us;16545us;162us;16545us;163us;16545us;165us;16545us;166us;16545us;167us;16545us;168us;16545us;169us;16545us;170us;16545us;171us;16545us;172us;16545us;173us;16545us;174us;16545us;175us;16545us;176us;16545us;177us;16545us;179us;16545us;180us;16545us;182us;16545us;183us;16545us;186us;16545us;188us;16545us;192us;16545us;193us;16545us;194us;16545us;198us;16545us;199us;16545us;200us;16545us;201us;16545us;202us;254us;0us;16500us;0us;16501us;93us;16507us;13us;16545us;24us;16545us;25us;16545us;29us;16545us;30us;16545us;32us;16545us;33us;16545us;37us;16545us;38us;16545us;39us;16545us;40us;16545us;41us;16545us;43us;16545us;44us;16545us;45us;16545us;46us;16545us;56us;16545us;62us;16545us;70us;16545us;71us;16545us;72us;16545us;73us;307us;74us;16545us;85us;16545us;87us;38us;88us;16545us;89us;16545us;90us;16545us;91us;16545us;95us;16545us;96us;16545us;97us;16545us;99us;16545us;100us;279us;105us;16545us;106us;16545us;107us;16545us;113us;16545us;114us;16545us;115us;16545us;116us;16545us;118us;16545us;120us;16545us;121us;16545us;122us;16545us;123us;16545us;124us;16545us;125us;16545us;129us;16545us;132us;16545us;133us;16545us;135us;16545us;136us;16545us;142us;16545us;145us;16545us;146us;16545us;147us;16545us;148us;16545us;149us;16545us;153us;16545us;154us;16545us;157us;16545us;158us;16545us;161us;16545us;162us;16545us;163us;16545us;165us;16545us;166us;16545us;167us;16545us;168us;16545us;169us;16545us;170us;16545us;171us;16545us;172us;16545us;173us;16545us;174us;16545us;175us;16545us;176us;16545us;177us;16545us;179us;16545us;180us;16545us;182us;16545us;183us;16545us;186us;16545us;188us;16545us;192us;16545us;193us;16545us;194us;16545us;198us;16545us;199us;16545us;200us;16545us;201us;16545us;202us;238us;5us;32768us;10us;1028us;15us;1983us;16us;1980us;17us;1982us;202us;1013us;1us;17480us;21us;1929us;0us;16502us;0us;16503us;6us;32768us;15us;1983us;16us;1980us;17us;1982us;21us;1911us;67us;1910us;83us;1909us;0us;16504us;0us;16505us;0us;16506us;4us;16623us;43us;489us;44us;488us;45us;490us;202us;248us;86us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;37us;1961us;38us;1964us;39us;1966us;40us;1969us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;107us;1965us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;120us;696us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;136us;712us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;149us;1970us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;29us;16510us;21us;1911us;62us;1216us;63us;1208us;67us;1910us;69us;1206us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;82us;1193us;83us;1909us;88us;1203us;89us;1204us;95us;1217us;96us;1293us;101us;1202us;127us;1199us;142us;1240us;144us;1200us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;93us;16509us;13us;16545us;24us;16545us;25us;16545us;29us;16545us;30us;16545us;32us;16545us;33us;16545us;37us;16545us;38us;16545us;39us;16545us;40us;16545us;41us;16545us;43us;16545us;44us;16545us;45us;16545us;46us;16545us;56us;16545us;62us;16545us;70us;16545us;71us;16545us;72us;16545us;73us;307us;74us;16545us;85us;16545us;87us;38us;88us;16545us;89us;16545us;90us;16545us;91us;16545us;95us;16545us;96us;16545us;97us;16545us;99us;16545us;100us;279us;105us;16545us;106us;16545us;107us;16545us;113us;16545us;114us;16545us;115us;16545us;116us;16545us;118us;16545us;120us;16545us;121us;16545us;122us;16545us;123us;16545us;124us;16545us;125us;16545us;129us;16545us;132us;16545us;133us;16545us;135us;16545us;136us;16545us;142us;16545us;145us;16545us;146us;16545us;147us;16545us;148us;16545us;149us;16545us;153us;16545us;154us;16545us;157us;16545us;158us;16545us;161us;16545us;162us;16545us;163us;16545us;165us;16545us;166us;16545us;167us;16545us;168us;16545us;169us;16545us;170us;16545us;171us;16545us;172us;16545us;173us;16545us;174us;16545us;175us;16545us;176us;16545us;177us;16545us;179us;16545us;180us;16545us;182us;16545us;183us;16545us;186us;16545us;188us;16545us;192us;16545us;193us;16545us;194us;16545us;198us;16545us;199us;16545us;200us;16545us;201us;16545us;202us;253us;0us;16508us;0us;16511us;0us;16512us;21us;16515us;21us;1911us;33us;16545us;37us;16545us;38us;16545us;39us;16545us;40us;16545us;41us;16545us;43us;16545us;44us;16545us;45us;16545us;67us;1910us;73us;307us;83us;1909us;87us;38us;100us;279us;107us;16545us;120us;16545us;136us;16545us;149us;16545us;161us;16545us;202us;253us;0us;16513us;93us;16516us;13us;16545us;24us;16545us;25us;16545us;29us;16545us;30us;16545us;32us;16545us;33us;16545us;37us;16545us;38us;16545us;39us;16545us;40us;16545us;41us;16545us;43us;16545us;44us;16545us;45us;16545us;46us;16545us;56us;16545us;62us;16545us;70us;16545us;71us;16545us;72us;16545us;73us;307us;74us;16545us;85us;16545us;87us;38us;88us;16545us;89us;16545us;90us;16545us;91us;16545us;95us;16545us;96us;16545us;97us;16545us;99us;16545us;100us;279us;105us;16545us;106us;16545us;107us;16545us;113us;16545us;114us;16545us;115us;16545us;116us;16545us;118us;16545us;120us;16545us;121us;16545us;122us;16545us;123us;16545us;124us;16545us;125us;16545us;129us;16545us;132us;16545us;133us;16545us;135us;16545us;136us;16545us;142us;16545us;145us;16545us;146us;16545us;147us;16545us;148us;16545us;149us;16545us;153us;16545us;154us;16545us;157us;16545us;158us;16545us;161us;16545us;162us;16545us;163us;16545us;165us;16545us;166us;16545us;167us;16545us;168us;16545us;169us;16545us;170us;16545us;171us;16545us;172us;16545us;173us;16545us;174us;16545us;175us;16545us;176us;16545us;177us;16545us;179us;16545us;180us;16545us;182us;16545us;183us;16545us;186us;16545us;188us;16545us;192us;16545us;193us;16545us;194us;16545us;198us;16545us;199us;16545us;200us;16545us;201us;16545us;202us;253us;0us;16514us;3us;32768us;21us;1911us;67us;1910us;83us;1909us;3us;16526us;21us;1911us;67us;1910us;83us;1909us;6us;32768us;15us;1983us;16us;1980us;17us;1982us;21us;1911us;67us;1910us;83us;1909us;4us;32768us;21us;1911us;67us;1910us;83us;1909us;141us;300us;4us;16545us;73us;307us;87us;38us;100us;279us;202us;253us;0us;16517us;0us;16518us;0us;16519us;3us;16623us;43us;489us;44us;488us;45us;490us;11us;32768us;33us;714us;37us;1961us;38us;1964us;39us;1966us;40us;1969us;41us;727us;107us;1965us;120us;696us;136us;712us;149us;1970us;161us;708us;0us;16520us;1us;16520us;126us;1041us;0us;16521us;79us;16521us;13us;1145us;22us;984us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1046us;0us;16522us;1us;16545us;73us;307us;1us;16567us;130us;348us;0us;16523us;0us;16524us;2us;32768us;69us;273us;202us;275us;5us;32768us;22us;286us;46us;1851us;56us;1938us;135us;1939us;192us;1850us;0us;16525us;0us;16526us;2us;16544us;10us;1028us;202us;1013us;0us;16527us;0us;16528us;5us;32768us;37us;1961us;38us;1964us;46us;1851us;107us;1965us;192us;1850us;1us;16529us;76us;1853us;31us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;6us;16530us;36us;1676us;46us;1851us;70us;1689us;90us;1845us;188us;1847us;192us;1850us;4us;32768us;15us;1983us;16us;1980us;17us;1982us;76us;1853us;0us;16531us;1us;16532us;76us;1853us;6us;16545us;56us;1938us;73us;307us;87us;38us;100us;279us;135us;1939us;202us;255us;5us;32768us;10us;1028us;15us;1983us;16us;1980us;17us;1982us;202us;1013us;0us;16533us;0us;16534us;5us;32768us;10us;1028us;15us;1983us;16us;1980us;17us;1982us;202us;1013us;0us;16535us;0us;16536us;0us;16537us;0us;16538us;1us;16539us;76us;1853us;93us;16507us;13us;16545us;24us;16545us;25us;16545us;29us;16545us;30us;16545us;32us;16545us;33us;16545us;37us;16545us;38us;16545us;39us;16545us;40us;16545us;41us;16545us;43us;16545us;44us;16545us;45us;16545us;46us;16545us;56us;16545us;62us;16545us;70us;16545us;71us;16545us;72us;16545us;73us;307us;74us;16545us;85us;16545us;87us;38us;88us;16545us;89us;16545us;90us;16545us;91us;16545us;95us;16545us;96us;16545us;97us;16545us;99us;16545us;100us;279us;105us;16545us;106us;16545us;107us;16545us;113us;16545us;114us;16545us;115us;16545us;116us;16545us;118us;16545us;120us;16545us;121us;16545us;122us;16545us;123us;16545us;124us;16545us;125us;16545us;129us;16545us;132us;16545us;133us;16545us;135us;16545us;136us;16545us;142us;16545us;145us;16545us;146us;16545us;147us;16545us;148us;16545us;149us;16545us;153us;16545us;154us;16545us;157us;16545us;158us;16545us;161us;16545us;162us;16545us;163us;16545us;165us;16545us;166us;16545us;167us;16545us;168us;16545us;169us;16545us;170us;16545us;171us;16545us;172us;16545us;173us;16545us;174us;16545us;175us;16545us;176us;16545us;177us;16545us;179us;16545us;180us;16545us;182us;16545us;183us;16545us;186us;16545us;188us;16545us;192us;16545us;193us;16545us;194us;16545us;198us;16545us;199us;16545us;200us;16545us;201us;16545us;202us;256us;3us;32768us;10us;1028us;141us;298us;202us;1013us;0us;16540us;0us;16541us;0us;16542us;6us;16545us;19us;16589us;20us;16589us;22us;388us;73us;307us;141us;16589us;202us;394us;3us;32768us;19us;1920us;20us;1921us;141us;1922us;0us;16543us;0us;16544us;1us;16546us;73us;307us;0us;16547us;14us;32768us;10us;1028us;16us;1993us;37us;1962us;38us;1964us;39us;1967us;40us;1969us;46us;1851us;60us;1991us;93us;1992us;107us;1965us;149us;1970us;162us;338us;192us;1850us;202us;312us;2us;17482us;21us;1916us;83us;1917us;8us;32768us;10us;1028us;16us;1993us;37us;1989us;39us;1990us;55us;310us;60us;1991us;93us;1992us;202us;1013us;1us;17480us;21us;1929us;0us;16548us;1us;16930us;55us;313us;1us;17480us;21us;1929us;0us;16549us;0us;16550us;0us;16551us;0us;16552us;9us;17481us;37us;1961us;38us;1964us;39us;1966us;40us;1969us;46us;1851us;107us;1965us;149us;1970us;162us;338us;192us;1850us;0us;16553us;3us;17513us;35us;1959us;36us;1958us;76us;1853us;30us;17191us;56us;1562us;71us;1423us;72us;1565us;91us;1429us;105us;1405us;121us;1404us;135us;1409us;147us;1403us;154us;1416us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;16554us;3us;32768us;22us;327us;46us;1851us;192us;1850us;3us;17513us;35us;1959us;36us;1958us;76us;1853us;30us;17191us;56us;1562us;71us;1423us;72us;1565us;91us;1429us;105us;1405us;121us;1404us;135us;1409us;147us;1403us;154us;1416us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;16555us;2us;32768us;46us;1851us;192us;1850us;4us;32768us;15us;1983us;16us;1980us;17us;1982us;76us;1853us;2us;17513us;35us;1959us;36us;1958us;30us;17191us;56us;1562us;71us;1423us;72us;1565us;91us;1429us;105us;1405us;121us;1404us;135us;1409us;147us;1403us;154us;1416us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;16556us;1us;32768us;77us;333us;0us;16557us;1us;32768us;77us;335us;0us;16558us;1us;17409us;77us;337us;0us;16559us;1us;32768us;77us;339us;0us;16560us;11us;32768us;30us;718us;33us;714us;37us;1961us;38us;1964us;41us;727us;48us;341us;50us;422us;107us;1965us;108us;459us;136us;712us;161us;708us;0us;16561us;0us;16562us;0us;16563us;0us;16564us;3us;16623us;43us;489us;44us;488us;45us;490us;1us;16688us;84us;596us;0us;16565us;1us;16545us;73us;307us;1us;16567us;130us;348us;0us;16566us;77us;16545us;10us;16568us;14us;16568us;15us;16568us;16us;16568us;17us;16568us;19us;16568us;20us;16568us;21us;16568us;22us;17478us;30us;16568us;33us;16568us;37us;16568us;38us;16568us;39us;16568us;40us;16568us;41us;16568us;46us;17478us;47us;16568us;48us;16568us;49us;17478us;50us;16568us;51us;16568us;52us;16568us;54us;16568us;56us;17478us;58us;17478us;66us;17478us;67us;16568us;69us;1928us;72us;17478us;73us;307us;83us;16568us;86us;301us;87us;16568us;90us;17478us;95us;17478us;100us;16568us;105us;17478us;107us;16568us;108us;16568us;110us;16568us;112us;17478us;118us;16568us;119us;17478us;120us;16568us;121us;17478us;130us;16568us;136us;16568us;141us;16568us;147us;17478us;149us;16568us;150us;16568us;151us;17478us;161us;16568us;165us;17478us;166us;17478us;167us;17478us;168us;17478us;169us;17478us;170us;17478us;171us;17478us;172us;17478us;173us;17478us;174us;17478us;175us;17478us;176us;17478us;177us;17478us;179us;17478us;180us;17478us;185us;17478us;188us;17478us;192us;17478us;193us;17478us;194us;17478us;200us;17478us;201us;17478us;202us;16568us;6us;16545us;22us;362us;49us;563us;56us;565us;73us;307us;110us;564us;151us;374us;0us;16569us;0us;16570us;3us;16623us;43us;489us;44us;488us;45us;490us;2us;17513us;35us;1959us;36us;1958us;1us;32768us;91us;838us;1us;16637us;131us;505us;1us;32768us;69us;360us;6us;16545us;22us;362us;49us;563us;56us;565us;73us;307us;110us;564us;151us;374us;0us;16571us;11us;16545us;10us;16589us;15us;16589us;16us;16589us;17us;16589us;22us;384us;49us;563us;56us;565us;73us;307us;110us;564us;151us;374us;202us;394us;1us;17480us;21us;1929us;7us;16545us;10us;16589us;15us;16589us;16us;16589us;17us;16589us;73us;307us;86us;16589us;202us;394us;1us;16632us;86us;494us;5us;32768us;10us;1028us;15us;1983us;16us;1980us;17us;1982us;202us;1013us;1us;16632us;86us;494us;0us;16572us;0us;16573us;1us;16632us;86us;494us;0us;16574us;0us;16575us;0us;16576us;1us;32768us;119us;375us;34us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;73us;307us;74us;1631us;87us;1771us;90us;1845us;91us;1679us;95us;1609us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;0us;16577us;0us;16578us;5us;16545us;10us;16589us;22us;388us;73us;307us;141us;16589us;202us;382us;3us;32768us;10us;1028us;141us;380us;202us;1013us;0us;16579us;0us;16580us;4us;16545us;10us;16589us;73us;307us;141us;383us;202us;394us;0us;16581us;6us;16545us;10us;16589us;15us;16589us;16us;16589us;17us;16589us;73us;307us;202us;394us;5us;32768us;10us;1028us;15us;1983us;16us;1980us;17us;1982us;202us;1013us;0us;16582us;0us;16583us;6us;16545us;10us;16589us;15us;16589us;16us;16589us;17us;16589us;73us;307us;202us;394us;5us;32768us;10us;1028us;15us;1983us;16us;1980us;17us;1982us;202us;1013us;0us;16584us;0us;16585us;0us;16586us;0us;16587us;10us;16545us;10us;16589us;15us;16589us;16us;16589us;17us;16589us;19us;16589us;20us;16589us;73us;307us;86us;16589us;141us;16589us;202us;394us;0us;16588us;2us;17482us;21us;1916us;83us;1917us;10us;16545us;10us;16589us;15us;16589us;16us;16589us;17us;16589us;19us;16589us;20us;16589us;73us;307us;86us;16589us;141us;16589us;202us;394us;0us;16590us;1us;17488us;109us;1932us;0us;16591us;1us;17488us;109us;1932us;2us;32768us;20us;403us;202us;404us;0us;16592us;0us;16593us;1us;16594us;130us;406us;1us;17488us;109us;1932us;0us;16595us;1us;16545us;73us;307us;37us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;74us;919us;81us;894us;91us;927us;96us;868us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;1us;17259us;77us;1598us;1us;32768us;69us;412us;79us;32768us;13us;1145us;22us;984us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;16596us;37us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;74us;919us;81us;894us;91us;927us;96us;868us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;1us;17259us;77us;1598us;3us;32768us;26us;401us;69us;417us;86us;399us;79us;32768us;13us;1145us;22us;984us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;16597us;0us;16598us;1us;16599us;48us;421us;0us;16600us;1us;16601us;48us;423us;0us;16602us;3us;16623us;43us;489us;44us;488us;45us;490us;3us;16623us;43us;489us;44us;488us;45us;490us;15us;32768us;14us;567us;30us;718us;33us;714us;41us;727us;47us;340us;48us;342us;50us;420us;51us;343us;52us;344us;54us;497us;108us;459us;110us;566us;118us;451us;136us;712us;161us;708us;51us;32768us;14us;567us;30us;718us;33us;714us;41us;727us;46us;1851us;47us;340us;48us;342us;50us;420us;51us;343us;52us;344us;54us;497us;56us;554us;58us;638us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;543us;95us;1648us;105us;1793us;108us;459us;110us;566us;112us;1791us;118us;451us;119us;672us;121us;1792us;136us;712us;147us;1790us;161us;708us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;194us;548us;200us;1944us;201us;808us;0us;16603us;0us;16604us;2us;17488us;108us;465us;109us;1932us;1us;17474us;19us;1926us;0us;16605us;31us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;7us;16630us;36us;1676us;46us;1851us;70us;1689us;86us;491us;90us;1845us;188us;1847us;192us;1850us;0us;16606us;1us;17488us;109us;1932us;3us;32768us;91us;1856us;99us;1861us;192us;1850us;2us;16687us;34us;1960us;159us;17515us;1us;32768us;77us;440us;34us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;73us;307us;74us;1631us;87us;1771us;90us;1845us;91us;1679us;95us;1609us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;2us;16481us;26us;201us;86us;199us;1us;17474us;19us;1926us;0us;16607us;0us;16608us;1us;17474us;19us;1926us;0us;16609us;1us;17474us;19us;1926us;0us;16610us;1us;17474us;19us;1926us;0us;16611us;35us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;74us;919us;91us;927us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;1us;16637us;131us;505us;1us;32768us;69us;454us;79us;32768us;13us;1145us;22us;984us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;1us;17474us;19us;1926us;0us;16612us;1us;16545us;73us;307us;0us;16613us;1us;17490us;117us;1933us;3us;16623us;43us;489us;44us;488us;45us;490us;1us;32768us;192us;1850us;1us;32768us;77us;463us;33us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1648us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;0us;16614us;1us;17490us;117us;1933us;3us;16623us;43us;489us;44us;488us;45us;490us;1us;32768us;192us;1850us;1us;16616us;77us;473us;1us;32768us;69us;470us;79us;32768us;13us;1145us;22us;984us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;2us;16481us;26us;201us;86us;199us;0us;16615us;33us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1648us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;0us;16617us;1us;16872us;76us;476us;3us;32768us;91us;1856us;99us;1861us;192us;1850us;0us;16618us;1us;32768us;76us;479us;3us;32768us;91us;1856us;99us;1861us;192us;1850us;0us;16619us;0us;16620us;4us;32768us;66us;483us;91us;1856us;99us;1861us;192us;1850us;1us;32768us;76us;484us;3us;32768us;91us;1856us;99us;1861us;192us;1850us;0us;16621us;0us;16622us;0us;16624us;0us;16625us;0us;16626us;0us;16627us;27us;16545us;10us;16629us;14us;16629us;15us;16629us;16us;16629us;17us;16629us;19us;16629us;20us;16629us;21us;16629us;22us;511us;30us;16629us;33us;16629us;41us;16629us;43us;16629us;44us;16629us;45us;16629us;50us;16629us;52us;16629us;54us;16629us;73us;307us;83us;16629us;86us;16629us;108us;16629us;110us;16629us;118us;16629us;136us;16629us;141us;16629us;161us;16629us;3us;32768us;19us;1920us;20us;1921us;141us;1922us;0us;16628us;6us;16545us;19us;16589us;20us;16589us;22us;388us;73us;307us;141us;16589us;202us;394us;3us;32768us;19us;1920us;20us;1921us;141us;1922us;0us;16631us;37us;32768us;10us;1028us;16us;1993us;37us;1989us;39us;1990us;46us;1851us;56us;1780us;60us;1991us;66us;1774us;87us;1771us;90us;1845us;91us;1764us;93us;1992us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1013us;33us;16640us;35us;1959us;36us;1958us;56us;17513us;71us;17513us;72us;17513us;91us;17513us;105us;17513us;121us;17513us;131us;508us;135us;17513us;147us;17513us;154us;17513us;165us;17513us;166us;17513us;167us;17513us;168us;17513us;169us;17513us;170us;17513us;171us;17513us;172us;17513us;173us;17513us;174us;17513us;175us;17513us;176us;17513us;177us;17513us;179us;17513us;180us;17513us;193us;17513us;194us;17513us;198us;17513us;199us;17513us;200us;17513us;201us;17513us;0us;16633us;30us;32768us;56us;1562us;71us;1423us;72us;1565us;91us;1429us;105us;1405us;121us;1404us;135us;1409us;147us;1403us;154us;1416us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;1us;16640us;131us;508us;0us;16634us;0us;16635us;0us;16636us;1us;32768us;192us;1850us;0us;16638us;0us;16639us;2us;32768us;153us;510us;192us;1850us;0us;16641us;0us;16642us;1us;16545us;73us;307us;5us;32768us;10us;1028us;15us;1983us;16us;1980us;17us;1982us;202us;1013us;0us;16643us;0us;16644us;0us;16645us;2us;17482us;21us;1916us;83us;1917us;14us;16545us;10us;16647us;14us;16647us;15us;16647us;16us;16647us;17us;16647us;19us;16647us;20us;16647us;21us;16647us;60us;16647us;61us;16647us;73us;307us;110us;16647us;141us;16647us;195us;16647us;0us;16646us;4us;32768us;47us;530us;48us;532us;51us;533us;202us;527us;5us;17488us;47us;530us;48us;532us;51us;533us;109us;1932us;202us;527us;3us;17488us;108us;465us;109us;1932us;202us;526us;1us;17474us;19us;1926us;0us;16648us;1us;17474us;19us;1926us;0us;16649us;0us;16650us;1us;17488us;109us;1932us;1us;17474us;19us;1926us;0us;16651us;1us;32768us;48us;531us;0us;16652us;0us;16653us;0us;16654us;3us;16623us;43us;489us;44us;488us;45us;490us;36us;32768us;46us;1851us;56us;554us;58us;638us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;543us;95us;1648us;105us;1793us;112us;1791us;119us;672us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;194us;548us;200us;1944us;201us;808us;2us;17303us;76us;1853us;154us;537us;1us;32768us;200us;538us;2us;32768us;10us;1028us;202us;1013us;0us;16655us;0us;16656us;0us;16657us;0us;16658us;34us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;544us;90us;1845us;91us;1679us;95us;1648us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1794us;30us;32768us;46us;1851us;56us;1780us;66us;1774us;87us;1771us;90us;1845us;91us;1775us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;1us;16807us;87us;546us;3us;32768us;92us;1979us;93us;1976us;94us;1978us;0us;16659us;2us;16545us;73us;307us;202us;552us;5us;32768us;10us;1028us;60us;1971us;61us;1973us;195us;1974us;202us;1013us;0us;16660us;0us;16661us;3us;32768us;60us;1971us;61us;1973us;195us;1974us;0us;16662us;2us;32768us;72us;557us;91us;1781us;0us;16663us;0us;16664us;2us;16545us;73us;307us;202us;561us;3us;32768us;10us;1028us;65us;1975us;202us;1013us;0us;16665us;0us;16666us;1us;32768us;65us;1975us;0us;16667us;0us;16668us;0us;16669us;0us;16670us;0us;16671us;0us;16672us;5us;32768us;46us;1851us;90us;1845us;91us;574us;188us;1847us;192us;1850us;3us;16673us;34us;1960us;76us;1853us;159us;17515us;2us;32768us;46us;1851us;192us;1850us;1us;16674us;76us;1853us;0us;16675us;0us;16676us;1us;16545us;73us;307us;4us;32768us;92us;1979us;93us;1976us;94us;1978us;96us;579us;0us;16677us;2us;16688us;84us;596us;96us;579us;1us;16683us;96us;580us;1us;16545us;73us;307us;2us;16545us;73us;307us;142us;589us;0us;16678us;0us;16679us;2us;32768us;90us;1845us;188us;1847us;0us;16680us;1us;32768us;159us;586us;1us;16545us;73us;307us;1us;32768us;160us;588us;0us;16681us;0us;16682us;1us;32768us;159us;591us;3us;16545us;73us;307us;84us;16684us;160us;16684us;1us;16688us;84us;596us;1us;32768us;160us;594us;0us;16685us;0us;16686us;32us;32768us;46us;1851us;52us;603us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;618us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;1us;16689us;130us;600us;1us;17256us;130us;600us;1us;17258us;130us;600us;32us;32768us;46us;1851us;52us;603us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;618us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;0us;16690us;0us;16691us;2us;32768us;90us;1845us;188us;1847us;1us;32768us;77us;605us;33us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1648us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;0us;16692us;2us;17304us;77us;610us;79us;608us;33us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1648us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;1us;16693us;70us;17312us;5us;32768us;56us;611us;91us;615us;147us;614us;151us;625us;192us;612us;0us;16694us;3us;16701us;34us;1803us;56us;613us;159us;1805us;0us;16695us;0us;16696us;1us;16545us;73us;307us;3us;32768us;92us;1979us;93us;1976us;94us;1978us;0us;16697us;34us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1648us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1794us;4us;32768us;92us;1979us;93us;1976us;94us;1978us;101us;629us;1us;32768us;77us;621us;1us;32768us;91us;622us;1us;16545us;73us;307us;3us;32768us;92us;1979us;93us;1976us;94us;1978us;0us;16698us;2us;32768us;34us;1803us;159us;1805us;0us;16699us;0us;16700us;6us;16702us;36us;1676us;46us;1851us;70us;1689us;90us;1845us;188us;1847us;192us;1850us;31us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;6us;16703us;36us;1676us;46us;1851us;70us;1689us;90us;1845us;188us;1847us;192us;1850us;13us;16704us;10us;17295us;36us;1676us;46us;1851us;69us;17295us;70us;1689us;90us;1845us;95us;1645us;96us;17295us;97us;17295us;185us;1653us;188us;1847us;192us;1850us;202us;17295us;1us;16545us;73us;307us;0us;16705us;1us;32768us;58us;638us;1us;16545us;73us;307us;0us;16706us;2us;16707us;21us;1929us;58us;17480us;0us;16708us;1us;16710us;58us;638us;1us;16545us;73us;307us;0us;16709us;3us;16623us;43us;489us;44us;488us;45us;490us;6us;32768us;10us;1028us;91us;657us;99us;1861us;119us;648us;192us;1850us;202us;1013us;3us;16711us;69us;654us;77us;652us;119us;646us;0us;16712us;34us;32768us;10us;1028us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;194us;548us;200us;1944us;201us;808us;202us;1013us;0us;16713us;34us;32768us;10us;1028us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;194us;548us;200us;1944us;201us;808us;202us;1013us;0us;16714us;0us;16715us;0us;16716us;34us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;73us;307us;74us;1631us;87us;1771us;90us;1845us;91us;1679us;95us;1609us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;0us;16717us;39us;32768us;46us;1369us;56us;1377us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;121us;1404us;135us;1409us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;186us;1352us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;5us;16718us;34us;1350us;35us;1349us;36us;1348us;74us;1367us;76us;1359us;0us;16719us;29us;32768us;58us;1896us;62us;1878us;63us;1876us;69us;1880us;70us;660us;74us;1884us;78us;658us;82us;1888us;88us;1885us;89us;1886us;95us;1879us;101us;1881us;142us;1891us;144us;1887us;154us;1893us;157us;1890us;159us;1882us;160us;1883us;181us;1889us;182us;1877us;183us;1874us;184us;1873us;185us;1875us;186us;1868us;187us;1872us;188us;1871us;189us;1870us;190us;1869us;202us;1859us;3us;32768us;92us;1979us;93us;1976us;94us;1978us;0us;16720us;1us;32768us;59us;661us;3us;32768us;92us;1979us;93us;1976us;94us;1978us;0us;16721us;4us;17409us;21us;1929us;58us;17480us;69us;665us;119us;669us;0us;16722us;39us;32768us;46us;1369us;56us;1377us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;121us;1404us;135us;1409us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;186us;1352us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;6us;17480us;21us;1929us;34us;1350us;35us;1349us;36us;1348us;74us;1367us;76us;1359us;45us;16723us;10us;16728us;14us;16728us;15us;16728us;16us;16728us;17us;16728us;19us;16728us;20us;16728us;21us;16728us;30us;16728us;33us;16728us;37us;16728us;38us;16728us;39us;16728us;40us;16728us;41us;16728us;43us;16728us;44us;16728us;45us;16728us;47us;16728us;48us;16728us;50us;16728us;51us;16728us;52us;16728us;54us;16728us;67us;16728us;73us;16728us;83us;16728us;86us;16728us;87us;16728us;92us;16728us;93us;16728us;94us;16728us;100us;16728us;107us;16728us;108us;16728us;110us;16728us;118us;16728us;120us;16728us;130us;16728us;136us;16728us;141us;16728us;149us;16728us;150us;16728us;161us;16728us;202us;16728us;0us;16724us;34us;32768us;10us;1028us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;194us;548us;200us;1944us;201us;808us;202us;1013us;0us;16725us;0us;16726us;32us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;194us;548us;200us;1944us;201us;808us;0us;16727us;1us;16730us;95us;675us;31us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;0us;16729us;1us;17409us;77us;678us;31us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;6us;16731us;36us;1676us;46us;1851us;70us;1689us;90us;1845us;188us;1847us;192us;1850us;6us;16732us;36us;1676us;46us;1851us;70us;1689us;90us;1845us;188us;1847us;192us;1850us;0us;16733us;0us;16734us;2us;17482us;21us;1916us;83us;1917us;7us;16545us;10us;17481us;60us;17481us;61us;17481us;65us;17481us;73us;307us;195us;17481us;202us;17481us;0us;16735us;0us;16736us;1us;17490us;117us;1933us;0us;16737us;3us;16623us;43us;489us;44us;488us;45us;490us;1us;32768us;192us;1850us;1us;32768us;77us;692us;33us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1648us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;0us;16738us;1us;16632us;86us;494us;0us;16739us;1us;16545us;73us;307us;3us;16623us;43us;489us;44us;488us;45us;490us;3us;32768us;10us;1028us;192us;1850us;202us;1013us;1us;16745us;69us;706us;0us;16740us;0us;16741us;1us;16742us;119us;703us;34us;32768us;10us;1028us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;194us;548us;200us;1944us;201us;808us;202us;1013us;0us;16743us;0us;16744us;2us;32768us;46us;1851us;192us;1850us;1us;16746us;76us;1853us;1us;17484us;102us;1931us;2us;16545us;73us;307us;202us;762us;0us;16747us;0us;16748us;79us;32768us;13us;1145us;22us;984us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;16749us;1us;17484us;102us;1931us;2us;16545us;73us;307us;202us;762us;3us;32768us;10us;1028us;19us;725us;202us;1013us;0us;16750us;79us;32768us;13us;1145us;22us;984us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;3us;32768us;10us;1028us;19us;725us;202us;1013us;0us;16751us;0us;16752us;0us;16753us;0us;16754us;0us;16755us;0us;16756us;0us;16757us;1us;16545us;73us;307us;3us;16623us;43us;489us;44us;488us;45us;490us;1us;32768us;192us;1850us;2us;17513us;35us;1959us;36us;1958us;1us;32768us;91us;732us;4us;16545us;73us;307us;92us;16761us;93us;16761us;94us;16761us;3us;32768us;92us;1979us;93us;1976us;94us;1978us;0us;16758us;1us;16759us;96us;737us;1us;16760us;96us;739us;1us;16545us;73us;307us;0us;16762us;1us;16545us;73us;307us;0us;16763us;3us;32768us;42us;751us;46us;1851us;192us;1850us;6us;16764us;35us;1959us;36us;1958us;70us;17513us;88us;750us;95us;749us;192us;1850us;0us;16765us;1us;16766us;76us;1853us;5us;16771us;35us;1959us;36us;1958us;70us;17513us;88us;750us;95us;749us;1us;32768us;70us;747us;1us;32768us;59us;748us;0us;16767us;0us;16768us;0us;16769us;1us;32768us;95us;753us;1us;16772us;95us;753us;0us;16770us;3us;32768us;42us;752us;46us;1851us;192us;1850us;1us;16775us;130us;757us;0us;16773us;2us;16545us;73us;307us;202us;762us;1us;16775us;130us;757us;0us;16774us;1us;17488us;109us;1932us;0us;16776us;0us;16777us;1us;17490us;117us;1933us;37us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;74us;919us;81us;894us;91us;927us;96us;868us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;1us;17259us;77us;1598us;3us;32768us;10us;1028us;69us;767us;202us;1013us;80us;32768us;13us;1145us;22us;771us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;769us;0us;16778us;0us;16779us;0us;16780us;78us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;5us;32768us;10us;1028us;15us;1983us;16us;1980us;17us;1982us;202us;1013us;0us;16781us;0us;16782us;0us;16783us;0us;16786us;1us;16784us;84us;779us;0us;16785us;2us;32768us;90us;1845us;188us;1847us;2us;32768us;69us;781us;130us;783us;79us;32768us;13us;1145us;22us;984us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;16787us;2us;32768us;90us;1845us;188us;1847us;0us;16788us;0us;16789us;2us;32768us;56us;789us;77us;787us;33us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1648us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;0us;16790us;0us;16791us;0us;16792us;0us;16793us;0us;16794us;0us;16795us;0us;16796us;0us;16797us;0us;16798us;0us;16799us;0us;16800us;0us;16801us;0us;16802us;0us;16803us;0us;16804us;1us;16804us;142us;908us;0us;16805us;0us;16806us;0us;16807us;0us;16808us;0us;16809us;1us;16812us;185us;810us;1us;32768us;177us;811us;0us;16810us;1us;32768us;177us;813us;1us;16813us;185us;814us;1us;32768us;177us;815us;0us;16811us;0us;16814us;2us;32768us;62us;812us;177us;809us;3us;32768us;92us;1979us;93us;1976us;94us;1978us;0us;16815us;0us;16816us;2us;32768us;91us;817us;177us;816us;0us;16817us;1us;16818us;34us;824us;1us;32768us;159us;1822us;0us;16819us;5us;16820us;58us;859us;78us;860us;88us;871us;96us;865us;131us;857us;0us;16821us;1us;32768us;192us;1850us;0us;16822us;1us;16825us;77us;832us;2us;16826us;77us;832us;96us;836us;35us;32768us;10us;1028us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1648us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1013us;0us;16823us;0us;16824us;3us;32768us;73us;307us;74us;828us;192us;1850us;3us;32768us;73us;307us;74us;828us;192us;1850us;0us;16827us;8us;32768us;10us;1028us;73us;307us;74us;828us;92us;1979us;93us;1976us;94us;1978us;192us;1850us;202us;843us;5us;32768us;10us;1028us;92us;1979us;93us;1976us;94us;1978us;202us;1013us;0us;16828us;0us;16829us;0us;16830us;3us;16930us;92us;1979us;93us;1976us;94us;1978us;0us;16831us;0us;16832us;3us;16834us;78us;860us;88us;871us;96us;865us;1us;16835us;78us;860us;2us;16839us;78us;860us;88us;871us;2us;16840us;78us;860us;88us;871us;2us;16843us;78us;860us;88us;871us;1us;16845us;78us;860us;1us;16846us;78us;860us;6us;32768us;58us;859us;69us;1030us;78us;860us;88us;871us;96us;865us;131us;857us;6us;32768us;58us;859us;69us;1035us;78us;860us;88us;871us;96us;865us;131us;857us;6us;32768us;58us;859us;69us;1123us;78us;860us;88us;871us;96us;865us;131us;857us;6us;32768us;58us;859us;69us;1130us;78us;860us;88us;871us;96us;865us;131us;857us;36us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;74us;919us;81us;894us;91us;927us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;0us;16833us;37us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;74us;919us;81us;894us;91us;927us;96us;868us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;37us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;74us;919us;81us;894us;91us;927us;96us;868us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;1us;16836us;96us;864us;0us;16837us;0us;16838us;44us;32768us;10us;1028us;16us;1993us;37us;1989us;39us;1990us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;60us;1991us;66us;475us;70us;913us;71us;916us;74us;919us;81us;894us;91us;927us;93us;1992us;96us;868us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;202us;1013us;44us;32768us;10us;1028us;16us;1993us;37us;1989us;39us;1990us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;60us;1991us;66us;475us;70us;913us;71us;916us;74us;919us;81us;894us;91us;927us;93us;1992us;96us;868us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;202us;1013us;0us;16841us;0us;16842us;44us;32768us;10us;1028us;16us;1993us;37us;1989us;39us;1990us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;60us;1991us;66us;475us;70us;913us;71us;916us;74us;919us;81us;894us;91us;927us;93us;1992us;96us;868us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;202us;1013us;0us;16844us;37us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;74us;919us;81us;894us;91us;927us;96us;868us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;37us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;74us;919us;81us;894us;91us;927us;96us;868us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;2us;17482us;21us;1916us;83us;1917us;0us;16847us;1us;17481us;192us;1850us;0us;16848us;3us;32768us;10us;1028us;69us;878us;202us;1013us;4us;17448us;10us;1028us;69us;878us;76us;1903us;202us;1013us;40us;32768us;10us;1028us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;73us;307us;74us;919us;81us;894us;91us;927us;96us;971us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;202us;1013us;6us;16849us;58us;958us;77us;961us;78us;965us;88us;974us;96us;968us;131us;956us;0us;16850us;0us;16851us;39us;16874us;34us;1960us;35us;890us;36us;892us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;74us;919us;91us;897us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;159us;17515us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;37us;16852us;35us;885us;36us;887us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;74us;919us;91us;897us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;0us;16853us;35us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;74us;919us;91us;897us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;0us;16854us;35us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;74us;919us;91us;897us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;0us;16855us;0us;16856us;35us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;74us;919us;91us;897us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;0us;16857us;35us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;74us;919us;91us;897us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;0us;16858us;31us;32768us;46us;1851us;56us;554us;66us;1774us;72us;557us;87us;1771us;90us;1845us;91us;1775us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;0us;16859us;0us;16860us;64us;16888us;10us;1028us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;58us;1896us;62us;1878us;63us;1876us;66us;475us;69us;1880us;70us;913us;71us;916us;73us;307us;74us;920us;81us;894us;82us;1888us;88us;1885us;89us;1886us;91us;927us;95us;1879us;96us;971us;99us;1861us;101us;1881us;105us;925us;121us;924us;142us;1891us;144us;1887us;147us;926us;154us;1417us;157us;1890us;159us;1882us;160us;1883us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;181us;1889us;182us;1877us;183us;1874us;184us;1873us;185us;1875us;186us;1868us;187us;1872us;188us;1871us;189us;1870us;190us;1869us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;202us;931us;3us;32768us;92us;1979us;93us;1976us;94us;1978us;0us;16861us;0us;16862us;37us;16866us;35us;905us;36us;903us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;74us;919us;91us;927us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;0us;16863us;35us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;74us;919us;91us;927us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;0us;16864us;35us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;74us;919us;91us;927us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;0us;16865us;0us;16867us;1us;32768us;167us;909us;0us;16868us;2us;32768us;46us;1851us;192us;1850us;3us;32768us;60us;1971us;61us;1973us;195us;1974us;0us;16869us;38us;16909us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;73us;307us;74us;919us;81us;894us;91us;927us;96us;971us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;1us;32768us;59us;915us;0us;16870us;38us;16909us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;73us;307us;74us;919us;81us;894us;91us;927us;96us;971us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;1us;32768us;64us;918us;0us;16871us;1us;32768us;192us;1850us;1us;17433us;192us;1850us;0us;16873us;0us;16874us;0us;16875us;0us;16876us;0us;16877us;0us;16878us;64us;16888us;10us;1028us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;58us;1896us;62us;1878us;63us;1876us;66us;475us;69us;1880us;70us;913us;71us;916us;73us;307us;74us;920us;81us;894us;82us;1888us;88us;1885us;89us;1886us;91us;927us;95us;1879us;96us;971us;99us;1861us;101us;1881us;105us;925us;121us;924us;142us;1891us;144us;1887us;147us;926us;154us;1417us;157us;1890us;159us;1882us;160us;1883us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;181us;1889us;182us;1877us;183us;1874us;184us;1873us;185us;1875us;186us;1868us;187us;1872us;188us;1871us;189us;1870us;190us;1869us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;202us;931us;5us;32768us;10us;1028us;92us;1979us;93us;1976us;94us;1978us;202us;1013us;0us;16879us;0us;16880us;3us;16930us;92us;1979us;93us;1976us;94us;1978us;2us;16881us;34us;17413us;159us;17413us;0us;16882us;1us;32768us;91us;935us;40us;32768us;10us;1028us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;73us;307us;74us;919us;81us;894us;91us;927us;96us;971us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;202us;939us;6us;16891us;10us;1028us;92us;1979us;93us;1976us;94us;1978us;96us;967us;202us;1013us;0us;16883us;0us;16884us;3us;16930us;92us;1979us;93us;1976us;94us;1978us;0us;16885us;0us;16886us;6us;16887us;58us;958us;77us;961us;78us;965us;88us;974us;96us;968us;131us;956us;4us;16890us;77us;961us;78us;965us;88us;974us;96us;968us;3us;16895us;77us;961us;78us;965us;88us;974us;2us;16896us;77us;961us;78us;965us;3us;16898us;77us;961us;78us;965us;88us;974us;3us;16899us;77us;961us;78us;965us;88us;974us;3us;16902us;77us;961us;78us;965us;88us;974us;2us;16904us;77us;961us;78us;965us;6us;32768us;58us;958us;77us;961us;78us;965us;88us;974us;96us;968us;131us;956us;2us;16905us;77us;961us;78us;965us;6us;16908us;58us;958us;77us;961us;78us;965us;88us;974us;96us;968us;131us;956us;8us;17482us;21us;1916us;58us;958us;77us;961us;78us;965us;83us;1917us;88us;974us;96us;968us;131us;956us;15us;32768us;10us;1028us;16us;1993us;37us;1989us;39us;1990us;58us;958us;60us;1991us;69us;1475us;77us;961us;78us;965us;88us;974us;93us;1992us;96us;968us;126us;1472us;131us;956us;202us;1018us;7us;17064us;58us;958us;77us;961us;78us;965us;84us;1271us;88us;974us;96us;968us;131us;956us;36us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;74us;919us;81us;894us;91us;927us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;0us;16889us;38us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;73us;307us;74us;919us;81us;894us;91us;927us;96us;971us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;1us;16891us;96us;967us;1us;16892us;88us;973us;35us;32768us;10us;1028us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1648us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1013us;0us;16893us;0us;16894us;38us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;73us;307us;74us;919us;81us;894us;91us;927us;96us;971us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;38us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;73us;307us;74us;919us;81us;894us;91us;927us;96us;971us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;0us;16897us;45us;32768us;10us;1028us;16us;1993us;37us;1989us;39us;1990us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;60us;1991us;66us;475us;70us;913us;71us;916us;73us;307us;74us;919us;81us;894us;91us;927us;93us;1992us;96us;971us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;202us;1013us;45us;32768us;10us;1028us;16us;1993us;37us;1989us;39us;1990us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;60us;1991us;66us;475us;70us;913us;71us;916us;73us;307us;74us;919us;81us;894us;91us;927us;93us;1992us;96us;971us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;202us;1013us;0us;16900us;0us;16901us;45us;32768us;10us;1028us;16us;1993us;37us;1989us;39us;1990us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;60us;1991us;66us;475us;70us;913us;71us;916us;73us;307us;74us;919us;81us;894us;91us;927us;93us;1992us;96us;971us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;202us;1013us;0us;16903us;38us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;73us;307us;74us;919us;81us;894us;91us;927us;96us;971us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;38us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;73us;307us;74us;919us;81us;894us;91us;927us;96us;971us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;2us;17482us;21us;1916us;83us;1917us;0us;16906us;2us;17481us;46us;1851us;192us;1850us;0us;16907us;2us;32768us;69us;980us;76us;1853us;38us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;73us;307us;74us;919us;81us;894us;91us;927us;96us;971us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;0us;16910us;38us;16909us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;73us;307us;74us;919us;81us;894us;91us;927us;96us;971us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;0us;16911us;78us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;5us;32768us;10us;1028us;15us;1983us;16us;1980us;17us;1982us;202us;1013us;0us;16912us;0us;16913us;0us;16914us;78us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;3us;32768us;15us;1983us;16us;1980us;17us;1982us;0us;16915us;26us;16916us;62us;1216us;63us;1208us;69us;1206us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;82us;1193us;88us;1203us;89us;1204us;95us;1217us;96us;1293us;101us;1202us;127us;1199us;142us;1240us;144us;1200us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;1us;16918us;18us;994us;0us;16917us;0us;16919us;93us;16919us;14us;17250us;15us;17250us;16us;17250us;17us;17250us;18us;17250us;19us;17250us;21us;17250us;26us;17250us;27us;17250us;28us;17250us;30us;17250us;33us;17250us;37us;17250us;38us;17250us;39us;17250us;40us;17250us;41us;17250us;43us;17250us;44us;17250us;45us;17250us;47us;17250us;48us;17250us;50us;17250us;51us;17250us;52us;17250us;54us;17250us;58us;17250us;59us;17250us;60us;17250us;61us;17250us;62us;17250us;63us;17250us;64us;17250us;65us;17250us;67us;17250us;69us;17250us;73us;17250us;77us;17250us;78us;17250us;79us;17250us;80us;17250us;81us;17250us;82us;17250us;83us;17250us;84us;17250us;86us;17250us;87us;17250us;88us;17250us;89us;17250us;92us;17250us;93us;17250us;94us;17250us;95us;17250us;96us;17250us;97us;17250us;100us;17250us;101us;17250us;103us;17250us;104us;17250us;107us;17250us;108us;17250us;110us;17250us;118us;17250us;120us;17250us;126us;17250us;127us;17250us;128us;17250us;130us;17250us;136us;17250us;137us;17250us;138us;17250us;139us;17250us;140us;17250us;141us;17250us;142us;17250us;144us;17250us;149us;17250us;150us;17250us;155us;17250us;157us;17250us;159us;17250us;160us;17250us;161us;17250us;183us;17250us;184us;17250us;185us;17250us;187us;17250us;188us;17250us;189us;17250us;190us;17250us;195us;17250us;196us;17250us;197us;17250us;1us;16922us;77us;998us;35us;32768us;10us;1028us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1648us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1013us;0us;16920us;0us;16921us;1us;32768us;10us;1002us;0us;16923us;30us;16926us;21us;1916us;28us;1008us;62us;1216us;63us;1208us;69us;1206us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;82us;1193us;83us;1917us;88us;1203us;89us;1204us;95us;1217us;96us;1293us;101us;1202us;103us;1006us;127us;1199us;142us;1240us;144us;1200us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;78us;16925us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;16924us;78us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;16927us;1us;32768us;22us;1009us;78us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;3us;32768us;15us;1983us;16us;1980us;17us;1982us;0us;16928us;81us;16929us;13us;1145us;21us;1047us;22us;984us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1046us;0us;16930us;2us;16930us;19us;1937us;137us;1936us;2us;16930us;19us;1937us;137us;1936us;2us;16930us;19us;1937us;137us;1936us;2us;16930us;30us;1935us;136us;1934us;2us;16930us;19us;1937us;137us;1936us;1us;16930us;58us;1266us;1us;16930us;59us;1375us;1us;16930us;59us;1396us;1us;16930us;155us;1421us;1us;16930us;64us;1427us;3us;16930us;92us;1979us;93us;1976us;94us;1978us;3us;16930us;92us;1979us;93us;1976us;94us;1978us;3us;16930us;60us;1971us;61us;1973us;195us;1974us;1us;16930us;65us;1975us;0us;16931us;37us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;74us;919us;81us;894us;91us;927us;96us;868us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;79us;32768us;13us;1145us;22us;984us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;1us;32768us;126us;1032us;2us;16934us;31us;1034us;164us;1029us;0us;16932us;37us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;74us;919us;81us;894us;91us;927us;96us;868us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;79us;32768us;13us;1145us;22us;984us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;3us;32768us;10us;1028us;19us;725us;202us;1013us;1us;17480us;21us;1929us;2us;16934us;31us;1034us;164us;1029us;0us;16933us;1us;32768us;126us;1041us;79us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1043us;0us;16935us;0us;16936us;81us;32768us;13us;1145us;21us;1047us;22us;984us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1046us;0us;16937us;0us;16938us;80us;32768us;13us;1145us;22us;984us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1049us;0us;16939us;0us;16940us;0us;16941us;0us;16942us;0us;16943us;78us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;4us;32768us;10us;1028us;26us;1252us;86us;1250us;202us;1013us;0us;16944us;0us;16945us;78us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;4us;32768us;10us;1028us;26us;1252us;86us;1250us;202us;1013us;0us;16946us;0us;16947us;80us;32768us;10us;1028us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1013us;5us;32768us;10us;1028us;26us;1252us;86us;1250us;128us;1065us;202us;1013us;0us;16948us;0us;16949us;79us;32768us;13us;1145us;22us;984us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;16950us;80us;32768us;10us;1028us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1013us;30us;32768us;10us;1028us;28us;1277us;62us;1216us;63us;1208us;69us;1206us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;82us;1193us;88us;1203us;89us;1204us;95us;1217us;96us;1293us;101us;1202us;103us;1276us;127us;1199us;142us;1240us;144us;1200us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;202us;1013us;0us;16951us;0us;16952us;0us;16953us;78us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;16954us;66us;16956us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;158us;1122us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;186us;1352us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;16955us;79us;32768us;13us;1145us;22us;989us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;16957us;67us;16959us;13us;1145us;22us;989us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;158us;1122us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;186us;1352us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;16958us;80us;32768us;10us;1028us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1014us;30us;32768us;10us;1028us;30us;1935us;62us;1216us;63us;1208us;69us;1206us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;82us;1193us;88us;1203us;89us;1204us;95us;1217us;96us;1293us;101us;1202us;127us;1199us;136us;1934us;142us;1240us;144us;1200us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;202us;1013us;80us;32768us;13us;1145us;22us;984us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1086us;4us;32768us;10us;1028us;19us;1937us;137us;1936us;202us;1013us;0us;16960us;0us;16961us;2us;32768us;19us;1937us;137us;1936us;0us;16962us;0us;16963us;0us;16964us;0us;16965us;45us;32768us;10us;1028us;16us;1993us;37us;1989us;39us;1990us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;60us;1991us;66us;475us;70us;913us;71us;916us;73us;307us;74us;919us;81us;894us;91us;927us;93us;1992us;96us;971us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;202us;1017us;10us;17480us;10us;1028us;16us;1993us;21us;1929us;30us;1935us;37us;1989us;39us;1990us;60us;1991us;93us;1992us;136us;1934us;202us;1013us;86us;32768us;10us;1028us;13us;1145us;16us;1993us;22us;984us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;37us;1989us;39us;1990us;41us;727us;46us;1369us;56us;1377us;60us;1991us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;93us;1992us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1015us;9us;32768us;10us;1028us;16us;1993us;19us;1937us;37us;1989us;39us;1990us;60us;1991us;93us;1992us;137us;1936us;202us;1013us;0us;16966us;0us;16967us;0us;16968us;0us;16969us;0us;16970us;1us;32768us;97us;1470us;0us;16971us;4us;32768us;10us;1028us;30us;1935us;136us;1934us;202us;1013us;81us;32768us;10us;1028us;13us;1145us;22us;984us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1016us;4us;32768us;10us;1028us;19us;1937us;137us;1936us;202us;1013us;0us;16972us;0us;16973us;0us;16974us;0us;16975us;0us;16976us;79us;32768us;13us;1145us;22us;984us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;2us;32768us;19us;1937us;137us;1936us;0us;16977us;0us;16978us;0us;16979us;0us;16980us;80us;32768us;10us;1028us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1013us;26us;16981us;62us;1216us;63us;1208us;69us;1206us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;82us;1193us;88us;1203us;89us;1204us;95us;1217us;96us;1293us;101us;1202us;127us;1199us;142us;1240us;144us;1200us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;80us;32768us;10us;1028us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1013us;26us;16982us;62us;1216us;63us;1208us;69us;1206us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;82us;1193us;88us;1203us;89us;1204us;95us;1217us;96us;1293us;101us;1202us;127us;1199us;142us;1240us;144us;1200us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;0us;16983us;0us;16984us;37us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;74us;919us;81us;894us;91us;927us;96us;868us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;79us;32768us;13us;1145us;22us;984us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;1us;32768us;126us;1125us;1us;17480us;21us;1929us;2us;16934us;31us;1034us;164us;1029us;79us;32768us;13us;1145us;22us;984us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;16985us;37us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;74us;919us;81us;894us;91us;927us;96us;868us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;79us;32768us;13us;1145us;22us;984us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;3us;32768us;10us;1028us;19us;725us;202us;1013us;1us;17480us;21us;1929us;3us;16934us;31us;1034us;164us;1029us;202us;1136us;79us;32768us;13us;1145us;22us;984us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;16986us;0us;16987us;78us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;1us;32768us;126us;1139us;1us;17480us;21us;1929us;79us;32768us;13us;1145us;22us;984us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;16988us;79us;32768us;13us;1145us;22us;984us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;3us;32768us;10us;1028us;19us;725us;202us;1013us;0us;16989us;78us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;26us;16990us;62us;1216us;63us;1208us;69us;1206us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;82us;1193us;88us;1203us;89us;1204us;95us;1217us;96us;1293us;101us;1202us;127us;1199us;142us;1240us;144us;1200us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;80us;32768us;10us;1028us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1013us;0us;16991us;26us;16998us;62us;1216us;63us;1208us;69us;1206us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;82us;1193us;88us;1203us;89us;1204us;95us;1217us;96us;1293us;101us;1202us;127us;1199us;142us;1240us;144us;1200us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;20us;17001us;62us;1216us;63us;1208us;69us;1206us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;88us;1203us;89us;1204us;95us;1217us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;20us;17002us;62us;1216us;63us;1208us;69us;1206us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;88us;1203us;89us;1204us;95us;1217us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;9us;17003us;62us;1216us;78us;1214us;81us;1184us;95us;1217us;157us;1213us;183us;1215us;185us;1218us;188us;1212us;190us;1219us;20us;17004us;62us;1216us;63us;1208us;69us;1206us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;88us;1203us;89us;1204us;95us;1217us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;18us;17005us;62us;1216us;63us;1208us;69us;1206us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;95us;1217us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;18us;17006us;62us;1216us;63us;1208us;69us;1206us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;95us;1217us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;9us;17007us;62us;1216us;78us;1214us;81us;1184us;95us;1217us;157us;1213us;183us;1215us;185us;1218us;188us;1212us;190us;1219us;9us;17008us;62us;1216us;78us;1214us;81us;1184us;95us;1217us;157us;1213us;183us;1215us;185us;1218us;188us;1212us;190us;1219us;9us;17009us;62us;1216us;78us;1214us;81us;1184us;95us;1217us;157us;1213us;183us;1215us;185us;1218us;188us;1212us;190us;1219us;9us;17010us;62us;1216us;78us;1214us;81us;1184us;95us;1217us;157us;1213us;183us;1215us;185us;1218us;188us;1212us;190us;1219us;9us;17011us;62us;1216us;78us;1214us;81us;1184us;95us;1217us;157us;1213us;183us;1215us;185us;1218us;188us;1212us;190us;1219us;9us;17013us;62us;1216us;78us;1214us;81us;1184us;95us;1217us;157us;1213us;183us;1215us;185us;1218us;188us;1212us;190us;1219us;9us;17014us;62us;1216us;78us;1214us;81us;1184us;95us;1217us;157us;1213us;183us;1215us;185us;1218us;188us;1212us;190us;1219us;1us;17015us;190us;1219us;8us;17016us;62us;1216us;78us;1214us;81us;1184us;95us;1217us;157us;1213us;183us;1215us;185us;1218us;190us;1219us;4us;17017us;95us;1217us;157us;1213us;185us;1218us;190us;1219us;4us;17018us;95us;1217us;157us;1213us;185us;1218us;190us;1219us;1us;17019us;190us;1219us;1us;17020us;190us;1219us;1us;17021us;190us;1219us;23us;17042us;62us;1216us;63us;1208us;69us;1206us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;88us;1203us;89us;1204us;95us;1217us;101us;1202us;127us;1199us;144us;1200us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;24us;17044us;62us;1216us;63us;1208us;69us;1206us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;88us;1203us;89us;1204us;95us;1217us;101us;1202us;127us;1199us;142us;1240us;144us;1200us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;26us;17063us;62us;1216us;63us;1208us;69us;1206us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;82us;1193us;88us;1203us;89us;1204us;95us;1217us;96us;1293us;101us;1202us;127us;1199us;142us;1240us;144us;1200us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;26us;17067us;62us;1216us;63us;1208us;69us;1206us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;82us;1193us;88us;1203us;89us;1204us;95us;1217us;96us;1293us;101us;1202us;127us;1199us;142us;1240us;144us;1200us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;26us;17071us;62us;1216us;63us;1208us;69us;1206us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;82us;1193us;88us;1203us;89us;1204us;95us;1217us;96us;1293us;101us;1202us;127us;1199us;142us;1240us;144us;1200us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;30us;32768us;10us;1028us;28us;1277us;62us;1216us;63us;1208us;69us;1206us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;82us;1193us;88us;1203us;89us;1204us;95us;1217us;96us;1293us;101us;1202us;103us;1276us;127us;1199us;142us;1240us;144us;1200us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;202us;1013us;24us;17076us;62us;1216us;63us;1208us;69us;1206us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;88us;1203us;89us;1204us;95us;1217us;101us;1202us;127us;1199us;142us;1240us;144us;1200us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;26us;32768us;62us;1216us;63us;1208us;69us;1206us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;82us;1193us;88us;1203us;89us;1204us;95us;1217us;96us;1293us;101us;1202us;127us;1199us;142us;1240us;144us;1200us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;24us;17079us;62us;1216us;63us;1208us;69us;1206us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;88us;1203us;89us;1204us;95us;1217us;101us;1202us;127us;1199us;142us;1240us;144us;1200us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;24us;17080us;62us;1216us;63us;1208us;69us;1206us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;88us;1203us;89us;1204us;95us;1217us;101us;1202us;127us;1199us;142us;1240us;144us;1200us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;26us;17182us;62us;1216us;63us;1208us;69us;1206us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;82us;1193us;88us;1203us;89us;1204us;95us;1217us;96us;1293us;101us;1202us;127us;1199us;142us;1240us;144us;1200us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;28us;32768us;62us;1216us;63us;1208us;69us;1206us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;82us;1193us;88us;1203us;89us;1204us;95us;1217us;96us;1293us;101us;1202us;104us;1477us;127us;1199us;138us;1478us;142us;1240us;144us;1200us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;26us;17185us;62us;1216us;63us;1208us;69us;1206us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;82us;1193us;88us;1203us;89us;1204us;95us;1217us;96us;1293us;101us;1202us;127us;1199us;142us;1240us;144us;1200us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;27us;17503us;62us;1216us;63us;1208us;69us;1206us;77us;1946us;78us;1214us;79us;1187us;80us;1190us;81us;1184us;82us;1193us;88us;1203us;89us;1204us;95us;1217us;96us;1293us;101us;1202us;127us;1199us;142us;1240us;144us;1200us;157us;1213us;159us;1209us;160us;1211us;183us;1215us;184us;1205us;185us;1218us;187us;1201us;188us;1212us;189us;1207us;190us;1219us;35us;32768us;10us;1028us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1648us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1013us;0us;16992us;0us;16993us;35us;32768us;10us;1028us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1648us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1013us;0us;16994us;0us;16995us;35us;32768us;10us;1028us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1648us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1013us;0us;16996us;0us;16997us;78us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;1us;17046us;68us;1195us;79us;32768us;13us;1145us;22us;989us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;16999us;1us;17000us;96us;1291us;6us;17000us;10us;1028us;92us;1979us;93us;1976us;94us;1978us;96us;1291us;202us;1013us;79us;32768us;13us;1145us;16us;1220us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;79us;32768us;13us;1145us;16us;1221us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;79us;32768us;13us;1145us;16us;1222us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;79us;32768us;13us;1145us;16us;1223us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;79us;32768us;13us;1145us;16us;1224us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;79us;32768us;13us;1145us;16us;1225us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;79us;32768us;13us;1145us;16us;1226us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;79us;32768us;13us;1145us;16us;1227us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;79us;32768us;13us;1145us;16us;1228us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;79us;32768us;13us;1145us;16us;1229us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;81us;32768us;10us;1028us;13us;1145us;16us;1230us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1013us;0us;17012us;79us;32768us;13us;1145us;16us;1231us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;79us;32768us;13us;1145us;16us;1232us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;79us;32768us;13us;1145us;16us;1233us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;79us;32768us;13us;1145us;16us;1234us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;79us;32768us;13us;1145us;16us;1235us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;79us;32768us;13us;1145us;16us;1236us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;79us;32768us;13us;1145us;16us;1237us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;79us;32768us;13us;1145us;16us;1238us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;79us;32768us;13us;1145us;16us;1239us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;17022us;0us;17023us;0us;17024us;0us;17025us;0us;17026us;0us;17027us;0us;17028us;0us;17029us;0us;17030us;0us;17031us;0us;17032us;0us;17033us;0us;17034us;0us;17035us;0us;17036us;0us;17037us;0us;17038us;0us;17039us;0us;17040us;0us;17041us;74us;17043us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;78us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;78us;17440us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1243us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;78us;17441us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;17045us;0us;17045us;0us;17047us;78us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;3us;32768us;92us;1979us;93us;1976us;94us;1978us;0us;17048us;40us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;58us;1257us;66us;475us;70us;913us;71us;916us;73us;307us;74us;919us;81us;894us;91us;927us;96us;971us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;202us;1260us;0us;17049us;40us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;58us;1257us;66us;475us;70us;913us;71us;916us;73us;307us;74us;919us;81us;894us;91us;927us;96us;971us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;202us;1260us;3us;32768us;10us;1028us;20us;1254us;202us;1013us;0us;17050us;0us;17051us;0us;17052us;39us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;73us;307us;74us;919us;81us;894us;91us;927us;96us;971us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;202us;1259us;0us;17053us;0us;17054us;0us;17055us;0us;17056us;3us;32768us;10us;1028us;97us;1272us;202us;1019us;3us;17057us;10us;1028us;58us;1264us;202us;1013us;40us;32768us;10us;1028us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;73us;307us;74us;919us;81us;894us;91us;927us;96us;971us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;202us;1013us;0us;17058us;38us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;73us;307us;74us;919us;81us;894us;91us;927us;96us;971us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;0us;17059us;0us;17060us;0us;17061us;0us;17062us;78us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;80us;32768us;10us;1028us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1013us;0us;17065us;3us;17070us;27us;1283us;139us;1282us;140us;1288us;0us;17066us;78us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;1us;32768us;22us;1278us;78us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;5us;32768us;10us;1028us;15us;1983us;16us;1980us;17us;1982us;202us;1013us;0us;17068us;0us;17069us;78us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;1us;32768us;22us;1284us;78us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;5us;32768us;10us;1028us;15us;1983us;16us;1980us;17us;1982us;202us;1013us;0us;17072us;0us;17073us;78us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;17074us;0us;17075us;85us;32768us;10us;1028us;13us;1145us;16us;1993us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;37us;1989us;39us;1990us;41us;727us;46us;1369us;56us;1377us;60us;1991us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;93us;1992us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1013us;0us;17077us;85us;32768us;10us;1028us;13us;1145us;16us;1993us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;37us;1989us;39us;1990us;41us;727us;46us;1369us;56us;1377us;60us;1991us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;93us;1992us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1013us;0us;17078us;85us;32768us;10us;1028us;13us;1145us;16us;1993us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;37us;1989us;39us;1990us;41us;727us;46us;1369us;56us;1377us;60us;1991us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;93us;1992us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1013us;0us;17081us;49us;32768us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;118us;1320us;121us;1404us;135us;1409us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;49us;32768us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;118us;1320us;121us;1404us;135us;1409us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;49us;17420us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;118us;1320us;121us;1404us;135us;1409us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;49us;17420us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;118us;1320us;121us;1404us;135us;1409us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;17082us;49us;32768us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;118us;1320us;121us;1404us;135us;1409us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;49us;17427us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;118us;1320us;121us;1404us;135us;1409us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;17083us;49us;32768us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;118us;1320us;121us;1404us;135us;1409us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;49us;17423us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;118us;1320us;121us;1404us;135us;1409us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;17084us;49us;32768us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;118us;1320us;121us;1404us;135us;1409us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;49us;17426us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;118us;1320us;121us;1404us;135us;1409us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;17085us;49us;32768us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;118us;1320us;121us;1404us;135us;1409us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;49us;17439us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;118us;1320us;121us;1404us;135us;1409us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;17086us;49us;32768us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;118us;1320us;121us;1404us;135us;1409us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;49us;17434us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;118us;1320us;121us;1404us;135us;1409us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;17087us;49us;32768us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;118us;1320us;121us;1404us;135us;1409us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;49us;17435us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;118us;1320us;121us;1404us;135us;1409us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;17088us;31us;32768us;46us;1851us;56us;1780us;66us;1774us;87us;1771us;90us;1845us;91us;1764us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1331us;31us;32768us;46us;1851us;56us;1780us;66us;1774us;87us;1771us;90us;1845us;91us;1764us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1331us;2us;17513us;35us;1959us;36us;1958us;37us;17224us;14us;17227us;21us;17227us;26us;17227us;35us;1959us;36us;1958us;56us;17513us;71us;17513us;72us;17513us;86us;17227us;91us;17513us;105us;17513us;110us;17227us;121us;17513us;135us;17513us;147us;17513us;154us;17513us;165us;17513us;166us;17513us;167us;17513us;168us;17513us;169us;17513us;170us;17513us;171us;17513us;172us;17513us;173us;17513us;174us;17513us;175us;17513us;176us;17513us;177us;17513us;179us;17513us;180us;17513us;193us;17513us;194us;17513us;198us;17513us;199us;17513us;200us;17513us;201us;17513us;31us;32768us;56us;1562us;71us;1423us;72us;1565us;91us;1429us;105us;1405us;121us;1404us;135us;1409us;147us;1403us;154us;1416us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1330us;31us;32768us;56us;1562us;71us;1423us;72us;1565us;91us;1429us;105us;1405us;121us;1404us;135us;1409us;147us;1403us;154us;1416us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1330us;1us;17090us;76us;1328us;6us;17090us;14us;17226us;26us;17226us;76us;1328us;86us;17226us;110us;17226us;131us;508us;7us;17121us;10us;1028us;46us;1383us;70us;1392us;91us;1385us;99us;1861us;192us;1850us;202us;1013us;0us;17089us;0us;17091us;0us;17092us;49us;32768us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;118us;1320us;121us;1404us;135us;1409us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;17093us;49us;32768us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;118us;1320us;121us;1404us;135us;1409us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;17094us;40us;17095us;46us;1369us;56us;1377us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;121us;1404us;135us;1409us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1341us;186us;1352us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;43us;17095us;26us;1515us;46us;1369us;56us;1377us;69us;1502us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;86us;1511us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;121us;1404us;135us;1409us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1341us;186us;1352us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;43us;32768us;26us;1515us;46us;1369us;56us;1377us;69us;1502us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;86us;1511us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;121us;1404us;135us;1409us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1341us;186us;1352us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;17096us;5us;17097us;34us;1350us;35us;1349us;36us;1348us;74us;1367us;76us;1359us;39us;32768us;46us;1369us;56us;1377us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;121us;1404us;135us;1409us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;186us;1352us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;5us;17098us;34us;1350us;35us;1349us;36us;1348us;74us;1367us;76us;1359us;5us;17099us;34us;1350us;35us;1349us;36us;1348us;74us;1367us;76us;1359us;2us;17100us;34us;1350us;35us;1349us;1us;17101us;34us;1350us;5us;17103us;34us;1350us;35us;1349us;36us;1348us;74us;1367us;76us;1359us;5us;17368us;34us;1350us;35us;1349us;36us;1348us;74us;1367us;76us;1359us;39us;32768us;46us;1369us;56us;1377us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;121us;1404us;135us;1409us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;186us;1352us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;39us;32768us;46us;1369us;56us;1377us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;121us;1404us;135us;1409us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;186us;1352us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;1us;32768us;159us;1805us;0us;17102us;39us;32768us;46us;1369us;56us;1377us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;121us;1404us;135us;1409us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;186us;1352us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;39us;17417us;46us;1369us;56us;1377us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;121us;1404us;135us;1409us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;186us;1352us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;1us;32768us;192us;1850us;1us;32768us;192us;1850us;0us;17104us;0us;17104us;0us;17105us;7us;17121us;10us;1028us;46us;1383us;70us;1392us;91us;1385us;99us;1861us;192us;1850us;202us;1013us;0us;17106us;1us;32768us;76us;1362us;7us;17121us;10us;1028us;46us;1383us;70us;1392us;91us;1385us;99us;1861us;192us;1850us;202us;1013us;0us;17107us;3us;32768us;91us;1856us;99us;1861us;192us;1850us;3us;17433us;91us;1856us;99us;1861us;192us;1850us;0us;17108us;2us;32768us;91us;1247us;192us;1246us;0us;17109us;0us;17110us;0us;17111us;80us;17177us;10us;1028us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1020us;3us;32768us;10us;1028us;59us;1373us;202us;1013us;0us;17112us;0us;17113us;0us;17114us;0us;17115us;2us;32768us;72us;1565us;91us;1378us;78us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;17116us;0us;17117us;0us;17118us;0us;17119us;0us;17120us;0us;17122us;94us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;58us;1896us;62us;1303us;63us;1876us;69us;1880us;70us;1371us;71us;1423us;72us;1565us;74us;1365us;78us;1386us;82us;1888us;85us;1080us;88us;1315us;89us;1318us;90us;1354us;91us;1431us;95us;1245us;96us;1295us;97us;1147us;99us;1861us;101us;1881us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1242us;144us;1887us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1417us;157us;1312us;158us;1122us;159us;1882us;160us;1883us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;181us;1889us;182us;1309us;183us;1306us;184us;1873us;185us;1875us;186us;1353us;187us;1872us;188us;1300us;189us;1870us;190us;1869us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1859us;3us;32768us;92us;1979us;93us;1976us;94us;1978us;1us;32768us;76us;1388us;1us;32768us;177us;1389us;0us;17123us;3us;32768us;92us;1979us;93us;1976us;94us;1978us;0us;17124us;80us;32768us;10us;1028us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1021us;3us;32768us;10us;1028us;59us;1394us;202us;1013us;0us;17125us;0us;17126us;0us;17127us;0us;17128us;0us;17129us;0us;17130us;0us;17131us;0us;17132us;0us;17133us;0us;17134us;0us;17135us;0us;17136us;0us;17137us;0us;17138us;0us;17139us;80us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;141us;1415us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1413us;3us;32768us;10us;1028us;141us;1411us;202us;1013us;0us;17140us;0us;17141us;1us;32768us;141us;1414us;0us;17142us;0us;17143us;80us;32768us;10us;1028us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1022us;81us;32768us;10us;1028us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;155us;1894us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1022us;3us;32768us;10us;1028us;155us;1419us;202us;1013us;0us;17144us;0us;17145us;0us;17146us;0us;17147us;80us;17179us;10us;1028us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1023us;3us;32768us;10us;1028us;64us;1425us;202us;1013us;0us;17148us;0us;17149us;0us;17150us;0us;17151us;88us;32768us;10us;1028us;13us;1145us;16us;1441us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;37us;1438us;39us;1439us;41us;727us;46us;1369us;56us;1377us;60us;1440us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;87us;1479us;88us;1314us;89us;1317us;90us;1355us;91us;1430us;92us;1979us;93us;1976us;94us;1978us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1298us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1024us;102us;32768us;10us;1028us;13us;1145us;16us;1441us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;37us;1438us;39us;1439us;41us;727us;46us;1369us;56us;1377us;58us;1896us;60us;1440us;62us;1303us;63us;1876us;69us;1880us;70us;1371us;71us;1423us;72us;1565us;74us;1365us;82us;1888us;85us;1080us;87us;1479us;88us;1315us;89us;1318us;90us;1355us;91us;1430us;92us;1979us;93us;1976us;94us;1978us;95us;1245us;96us;1295us;97us;1147us;99us;1861us;101us;1881us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1242us;144us;1887us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1417us;157us;1312us;158us;1122us;159us;1882us;160us;1883us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;181us;1889us;182us;1309us;183us;1306us;184us;1873us;185us;1875us;186us;1353us;187us;1872us;188us;1299us;189us;1870us;190us;1869us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1025us;102us;32768us;10us;1028us;13us;1145us;16us;1441us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;37us;1438us;39us;1439us;41us;727us;46us;1369us;56us;1377us;58us;1896us;60us;1440us;62us;1303us;63us;1876us;69us;1880us;70us;1371us;71us;1423us;72us;1565us;74us;1365us;82us;1888us;85us;1080us;87us;1479us;88us;1315us;89us;1318us;90us;1355us;91us;1430us;92us;1979us;93us;1976us;94us;1978us;95us;1245us;96us;1295us;97us;1147us;99us;1861us;101us;1881us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1242us;144us;1887us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1417us;157us;1312us;158us;1122us;159us;1882us;160us;1883us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;181us;1889us;182us;1309us;183us;1306us;184us;1873us;185us;1875us;186us;1353us;187us;1872us;188us;1299us;189us;1870us;190us;1869us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1025us;0us;17152us;9us;32768us;10us;1028us;16us;1987us;37us;1984us;39us;1985us;60us;1986us;92us;1979us;93us;1976us;94us;1978us;202us;1013us;0us;17153us;0us;17154us;0us;17155us;0us;17155us;0us;17156us;0us;17157us;0us;17158us;0us;17159us;0us;17160us;1us;32768us;77us;1444us;1us;32768us;91us;1445us;1us;16545us;73us;307us;3us;32768us;92us;1979us;93us;1976us;94us;1978us;78us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;17161us;0us;17162us;0us;17163us;0us;17164us;4us;17164us;92us;17167us;93us;17167us;94us;17167us;101us;17167us;4us;32768us;92us;1979us;93us;1976us;94us;1978us;101us;1455us;0us;17165us;31us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;6us;17166us;36us;1676us;46us;1851us;70us;1689us;90us;1845us;188us;1847us;192us;1850us;85us;32768us;10us;1028us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;54us;1495us;56us;1377us;60us;1971us;61us;1973us;62us;1302us;66us;1506us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1321us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;195us;1974us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1026us;5us;32768us;10us;1028us;60us;1971us;61us;1973us;195us;1974us;202us;1013us;0us;17168us;0us;17169us;0us;17170us;0us;17171us;0us;17172us;0us;17173us;0us;17174us;0us;17175us;0us;17176us;0us;17178us;0us;17180us;80us;32768us;10us;1028us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1013us;0us;17181us;85us;32768us;10us;1028us;13us;1145us;16us;1993us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;37us;1989us;39us;1990us;41us;727us;46us;1369us;56us;1377us;60us;1991us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;93us;1992us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1013us;0us;17183us;0us;17184us;78us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;78us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;17186us;0us;17187us;1us;32768us;200us;1944us;3us;17193us;37us;1961us;38us;1964us;107us;1965us;0us;17190us;41us;17195us;46us;1369us;56us;1377us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;77us;1491us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;121us;1404us;135us;1409us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1341us;186us;1352us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;1us;32768us;87us;1484us;0us;17188us;0us;17189us;0us;17192us;1us;32768us;91us;1488us;33us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1648us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;3us;32768us;92us;1979us;93us;1976us;94us;1978us;0us;17194us;33us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1493us;95us;1648us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;0us;17196us;37us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;92us;1979us;93us;1976us;94us;1978us;95us;1648us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1794us;0us;17197us;30us;32768us;46us;1851us;56us;1780us;66us;1774us;87us;1771us;90us;1845us;91us;1764us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;2us;17513us;35us;1959us;36us;1958us;30us;17191us;56us;1562us;71us;1423us;72us;1565us;91us;1429us;105us;1405us;121us;1404us;135us;1409us;147us;1403us;154us;1416us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;17216us;2us;17208us;21us;1524us;83us;1525us;0us;17198us;0us;17199us;79us;32768us;13us;1145us;22us;989us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;17216us;2us;17208us;21us;1524us;83us;1525us;0us;17200us;1us;17201us;69us;1507us;79us;17202us;13us;1145us;22us;989us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;17216us;2us;17208us;21us;1524us;83us;1525us;0us;17203us;3us;32768us;46us;1851us;66us;1529us;192us;1850us;0us;17216us;2us;17208us;21us;1524us;83us;1525us;0us;17204us;5us;17208us;21us;1524us;46us;1851us;66us;1529us;83us;1525us;192us;1850us;1us;32768us;20us;1517us;0us;17205us;0us;17216us;2us;17208us;21us;1524us;83us;1525us;1us;32768us;20us;1521us;0us;17206us;0us;17207us;3us;17207us;46us;1851us;66us;1529us;192us;1850us;1us;17209us;83us;1527us;1us;17210us;21us;1526us;0us;17211us;0us;17212us;1us;17213us;76us;1853us;0us;17214us;0us;17215us;8us;17220us;10us;1028us;16us;1993us;37us;1989us;39us;1990us;60us;1991us;69us;1532us;93us;1992us;202us;1013us;86us;17218us;10us;1028us;13us;1145us;16us;1993us;22us;989us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;37us;1989us;39us;1990us;41us;727us;46us;1369us;56us;1377us;60us;1991us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;93us;1992us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1013us;0us;17217us;0us;17219us;0us;17221us;3us;17480us;21us;1929us;26us;1546us;86us;1544us;1us;17480us;21us;1929us;3us;17234us;14us;567us;110us;566us;202us;1555us;0us;17222us;2us;32768us;14us;567us;110us;566us;0us;17223us;0us;17225us;0us;17228us;3us;16545us;22us;511us;73us;307us;202us;762us;0us;17230us;2us;16545us;73us;307us;202us;762us;1us;32768us;20us;1548us;0us;17231us;3us;17472us;19us;1923us;20us;1924us;141us;1925us;0us;17232us;3us;17234us;14us;567us;110us;566us;202us;1555us;0us;17233us;3us;17234us;14us;567us;110us;566us;202us;1555us;0us;17235us;3us;17234us;14us;567us;110us;566us;202us;1555us;0us;17236us;31us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;8us;17229us;26us;1546us;36us;1676us;46us;1851us;70us;1689us;86us;1544us;90us;1845us;188us;1847us;192us;1850us;3us;17472us;19us;1923us;20us;1924us;141us;1925us;1us;17480us;21us;1929us;0us;17237us;1us;32768us;72us;1565us;0us;17238us;0us;17239us;43us;32768us;10us;1028us;46us;1369us;56us;1377us;65us;1975us;66us;1506us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;121us;1404us;135us;1409us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;186us;1352us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1027us;3us;32768us;10us;1028us;65us;1975us;202us;1013us;0us;17240us;0us;17241us;0us;17242us;0us;17243us;0us;17244us;35us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;74us;919us;91us;927us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;1us;32768us;97us;1574us;80us;32768us;13us;1145us;22us;984us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1576us;0us;17245us;0us;17246us;36us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;66us;475us;70us;913us;71us;916us;74us;919us;91us;927us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;202us;1587us;2us;32768us;97us;1579us;202us;1585us;81us;32768us;10us;1028us;13us;1145us;18us;1583us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;202us;1013us;3us;32768us;10us;1028us;20us;1581us;202us;1013us;0us;17247us;0us;17248us;1us;32768us;20us;1584us;0us;17249us;1us;32768us;20us;1586us;0us;17251us;1us;32768us;20us;1588us;0us;17252us;40us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;58us;1257us;66us;475us;70us;913us;71us;916us;73us;307us;74us;919us;81us;894us;91us;927us;96us;971us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;202us;1260us;0us;17253us;40us;32768us;43us;489us;44us;488us;45us;490us;46us;478us;56us;934us;58us;1257us;66us;475us;70us;913us;71us;916us;73us;307us;74us;919us;81us;894us;91us;927us;96us;971us;99us;1861us;105us;925us;121us;924us;147us;926us;154us;1416us;165us;805us;166us;804us;167us;803us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;192us;1850us;193us;1945us;194us;910us;200us;1944us;201us;808us;202us;1260us;1us;32768us;20us;1593us;0us;17254us;1us;17255us;84us;1595us;32us;32768us;46us;1851us;52us;603us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;618us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;1us;17257us;84us;1597us;32us;32768us;46us;1851us;52us;603us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;618us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;36us;32768us;10us;1028us;46us;1851us;56us;554us;66us;1686us;72us;557us;73us;307us;74us;1631us;87us;1771us;90us;1845us;91us;1679us;95us;1609us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1013us;0us;17260us;0us;17261us;1us;17264us;97us;1602us;36us;32768us;10us;1028us;46us;1851us;56us;554us;66us;1686us;72us;557us;73us;307us;74us;1631us;87us;1771us;90us;1845us;91us;1679us;95us;1609us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1013us;0us;17262us;0us;17263us;1us;17268us;95us;1606us;36us;32768us;10us;1028us;46us;1851us;56us;554us;66us;1686us;72us;557us;73us;307us;74us;1631us;87us;1771us;90us;1845us;91us;1679us;95us;1615us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1013us;0us;17265us;0us;17266us;34us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;73us;307us;74us;1631us;87us;1771us;90us;1845us;91us;1679us;95us;1615us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;0us;17267us;1us;17272us;95us;1612us;36us;32768us;10us;1028us;46us;1851us;56us;554us;66us;1686us;72us;557us;73us;307us;74us;1631us;87us;1771us;90us;1845us;91us;1679us;95us;1615us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1013us;0us;17269us;0us;17270us;34us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;73us;307us;74us;1631us;87us;1771us;90us;1845us;91us;1679us;95us;1615us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;0us;17271us;32us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;74us;1622us;87us;1771us;90us;1845us;91us;1679us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;7us;17277us;36us;1676us;46us;1851us;70us;1689us;77us;1619us;90us;1845us;188us;1847us;192us;1850us;33us;32768us;10us;1028us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1013us;6us;17273us;36us;1676us;46us;1851us;70us;1689us;90us;1845us;188us;1847us;192us;1850us;0us;17274us;1us;32768us;192us;1850us;1us;32768us;77us;1624us;33us;32768us;10us;1028us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1013us;6us;17275us;36us;1676us;46us;1851us;70us;1689us;90us;1845us;188us;1847us;192us;1850us;0us;17276us;7us;17282us;36us;1676us;46us;1851us;70us;1689us;77us;1628us;90us;1845us;188us;1847us;192us;1850us;33us;32768us;10us;1028us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1013us;6us;17278us;36us;1676us;46us;1851us;70us;1689us;90us;1845us;188us;1847us;192us;1850us;0us;17279us;1us;32768us;192us;1850us;1us;32768us;77us;1633us;33us;32768us;10us;1028us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1013us;6us;17280us;36us;1676us;46us;1851us;70us;1689us;90us;1845us;188us;1847us;192us;1850us;0us;17281us;1us;17286us;97us;1637us;36us;32768us;10us;1028us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1648us;97us;1640us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1013us;0us;17283us;0us;17284us;33us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1648us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;0us;17285us;1us;32768us;10us;1643us;0us;17287us;8us;17295us;36us;1676us;46us;1851us;70us;1689us;90us;1845us;95us;1645us;185us;1653us;188us;1847us;192us;1850us;35us;32768us;10us;1028us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1660us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1665us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1013us;0us;17288us;0us;17289us;33us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1660us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1665us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;0us;17290us;35us;32768us;10us;1028us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1660us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1665us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1013us;0us;17291us;0us;17292us;35us;32768us;10us;1028us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1660us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1665us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1013us;0us;17293us;0us;17294us;8us;17302us;36us;1676us;46us;1851us;70us;1689us;90us;1845us;95us;1657us;185us;1662us;188us;1847us;192us;1850us;35us;32768us;10us;1028us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1660us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1665us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1013us;0us;17296us;0us;17297us;33us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1660us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1665us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;0us;17298us;35us;32768us;10us;1028us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1660us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1665us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1013us;0us;17299us;0us;17300us;33us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1660us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1665us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;0us;17301us;1us;17303us;76us;1853us;0us;17304us;1us;17304us;79us;1684us;1us;17306us;188us;1672us;4us;17306us;34us;1803us;76us;1800us;159us;1805us;188us;1672us;3us;32768us;62us;821us;91us;817us;177us;816us;0us;17305us;9us;32768us;10us;1028us;36us;1676us;46us;1851us;70us;1689us;90us;1845us;95us;1782us;188us;1847us;192us;1850us;202us;1013us;0us;17307us;1us;32768us;70us;1689us;0us;17308us;0us;17309us;34us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1648us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1794us;3us;32768us;92us;1979us;93us;1976us;94us;1978us;4us;32768us;46us;1851us;90us;1845us;188us;1847us;192us;1850us;0us;17310us;0us;17311us;33us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1648us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;0us;17312us;1us;17358us;79us;1687us;33us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1648us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;0us;17313us;2us;32768us;59us;1690us;96us;1691us;0us;17314us;2us;32768us;59us;1692us;96us;1693us;0us;17315us;2us;32768us;59us;1694us;96us;1695us;0us;17316us;2us;32768us;59us;1696us;96us;1697us;0us;17317us;2us;32768us;59us;1698us;96us;1699us;0us;17318us;2us;32768us;59us;1700us;96us;1701us;0us;17319us;2us;32768us;59us;1702us;96us;1703us;0us;17320us;2us;32768us;59us;1704us;96us;1705us;0us;17321us;2us;32768us;59us;1706us;96us;1707us;0us;17322us;2us;32768us;59us;1708us;96us;1709us;0us;17323us;2us;32768us;59us;1710us;96us;1711us;0us;17324us;2us;32768us;59us;1712us;96us;1713us;0us;17325us;2us;32768us;59us;1714us;96us;1715us;0us;17326us;2us;32768us;59us;1716us;96us;1717us;0us;17327us;2us;32768us;59us;1718us;96us;1719us;0us;17328us;2us;32768us;59us;1720us;96us;1721us;0us;17329us;2us;32768us;59us;1722us;96us;1723us;0us;17330us;2us;32768us;59us;1724us;96us;1725us;0us;17331us;2us;32768us;59us;1726us;96us;1727us;0us;17332us;2us;32768us;59us;1728us;96us;1729us;0us;17333us;2us;32768us;59us;1730us;96us;1731us;0us;17334us;2us;32768us;59us;1732us;96us;1733us;0us;17335us;2us;32768us;59us;1734us;96us;1735us;0us;17336us;2us;32768us;59us;1736us;96us;1737us;0us;17337us;2us;32768us;59us;1738us;96us;1739us;0us;17338us;2us;32768us;59us;1740us;96us;1741us;0us;17339us;2us;32768us;59us;1742us;96us;1743us;0us;17340us;2us;32768us;59us;1744us;96us;1745us;0us;17341us;2us;32768us;59us;1746us;96us;1747us;0us;17342us;2us;32768us;59us;1748us;96us;1749us;0us;17343us;2us;32768us;59us;1750us;96us;1751us;0us;17344us;1us;32768us;59us;1752us;0us;17345us;1us;32768us;96us;1754us;33us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1648us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;0us;17349us;1us;17346us;96us;1758us;4us;32768us;10us;1028us;96us;1758us;160us;1809us;202us;1013us;33us;17390us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1648us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;0us;17347us;0us;17348us;1us;17350us;188us;1762us;3us;32768us;62us;821us;91us;817us;177us;816us;0us;17351us;34us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1648us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1794us;3us;32768us;92us;1979us;93us;1976us;94us;1978us;4us;32768us;46us;1851us;90us;1845us;188us;1847us;192us;1850us;0us;17352us;1us;17353us;76us;1797us;1us;17354us;76us;1797us;0us;17355us;30us;32768us;46us;1851us;56us;1780us;66us;1774us;87us;1771us;90us;1845us;91us;1775us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;1us;17356us;76us;1797us;0us;17357us;0us;17358us;34us;32768us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1648us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1794us;5us;32768us;10us;1028us;92us;1979us;93us;1976us;94us;1978us;202us;1013us;6us;17385us;10us;1028us;69us;1818us;92us;1979us;93us;1976us;94us;1978us;202us;1013us;0us;17359us;0us;17360us;1us;32768us;91us;1781us;33us;32768us;10us;1028us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1013us;35us;32768us;10us;1028us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1660us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1665us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1013us;5us;32768us;10us;1028us;92us;1979us;93us;1976us;94us;1978us;202us;1013us;0us;17361us;0us;17362us;0us;17363us;0us;17364us;0us;17365us;0us;17366us;0us;17367us;39us;32768us;46us;1369us;56us;1377us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;90us;1354us;91us;1431us;99us;1861us;105us;1405us;121us;1404us;135us;1409us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;186us;1352us;192us;1850us;193us;1945us;194us;1457us;198us;1953us;199us;1956us;200us;1944us;201us;808us;0us;17369us;0us;17370us;3us;32768us;92us;1979us;93us;1976us;94us;1978us;0us;17371us;0us;17372us;2us;32768us;46us;1851us;192us;1850us;3us;17373us;34us;1803us;76us;1853us;159us;1805us;0us;17374us;7us;32768us;10us;1028us;16us;1993us;37us;1989us;39us;1990us;60us;1991us;93us;1992us;202us;1013us;0us;17375us;0us;17376us;1us;32768us;159us;1805us;0us;17377us;36us;17390us;10us;1028us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1648us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;160us;1815us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1013us;1us;32768us;96us;1807us;40us;17390us;10us;1028us;16us;1993us;37us;1989us;39us;1990us;46us;1851us;56us;554us;60us;1991us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;93us;1992us;95us;1648us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;202us;1013us;0us;17349us;0us;17378us;0us;17379us;0us;17380us;8us;17388us;10us;1028us;16us;1993us;37us;1989us;39us;1990us;60us;1991us;93us;1992us;160us;1813us;202us;1013us;0us;17381us;0us;17382us;0us;17383us;0us;17384us;1us;17385us;69us;1818us;33us;17387us;46us;1851us;56us;554us;66us;1686us;72us;557us;87us;1771us;90us;1845us;91us;1679us;95us;1648us;105us;1793us;112us;1791us;121us;1792us;147us;1790us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;185us;1650us;188us;1847us;192us;1850us;193us;1945us;200us;1944us;201us;808us;0us;17386us;0us;17388us;0us;17389us;8us;32768us;46us;1851us;66us;1825us;90us;1845us;91us;1829us;177us;1835us;185us;1844us;188us;1847us;192us;1850us;3us;32768us;95us;1842us;160us;1824us;185us;1843us;0us;17391us;1us;32768us;160us;1826us;0us;17392us;1us;17393us;76us;1853us;0us;17394us;7us;32768us;46us;1851us;90us;1845us;91us;1829us;177us;1835us;185us;1844us;188us;1847us;192us;1850us;5us;32768us;92us;1979us;93us;1976us;94us;1978us;95us;1842us;185us;1843us;0us;17395us;1us;17396us;188us;1833us;3us;32768us;62us;821us;91us;817us;177us;816us;0us;17397us;0us;17398us;6us;17399us;46us;1851us;90us;1845us;91us;1829us;177us;1835us;188us;1847us;192us;1850us;0us;17400us;0us;17401us;0us;17402us;0us;17403us;0us;17404us;7us;32768us;46us;1851us;90us;1845us;91us;1829us;177us;1835us;185us;1844us;188us;1847us;192us;1850us;7us;32768us;46us;1851us;90us;1845us;91us;1829us;177us;1835us;185us;1844us;188us;1847us;192us;1850us;7us;32768us;46us;1851us;90us;1845us;91us;1829us;177us;1835us;185us;1844us;188us;1847us;192us;1850us;1us;32768us;192us;1850us;0us;17405us;1us;32768us;192us;1850us;0us;17406us;80us;17406us;10us;17453us;16us;17453us;21us;17453us;28us;17453us;34us;17453us;35us;17453us;36us;17453us;37us;17453us;39us;17453us;46us;17453us;56us;17453us;60us;17453us;62us;17453us;63us;17453us;68us;17453us;69us;17453us;70us;17453us;71us;17453us;72us;17453us;74us;17453us;76us;17453us;78us;17453us;79us;17453us;80us;17453us;81us;17453us;82us;17453us;83us;17453us;88us;17453us;89us;17453us;90us;17453us;91us;17453us;95us;17453us;96us;17453us;99us;17453us;103us;17453us;105us;17453us;121us;17453us;127us;17453us;135us;17453us;142us;17453us;144us;17453us;147us;17453us;148us;17453us;153us;17453us;154us;17453us;157us;17453us;159us;17453us;160us;17453us;165us;17453us;166us;17453us;167us;17453us;168us;17453us;169us;17453us;170us;17453us;171us;17453us;172us;17453us;173us;17453us;174us;17453us;175us;17453us;176us;17453us;177us;17453us;179us;17453us;180us;17453us;182us;17453us;183us;17453us;184us;17453us;185us;17453us;186us;17453us;187us;17453us;188us;17453us;189us;17453us;190us;17453us;192us;17453us;193us;17453us;194us;17453us;198us;17453us;199us;17453us;200us;17453us;201us;17453us;202us;17453us;0us;17407us;0us;17408us;0us;17409us;8us;32768us;10us;1028us;16us;1993us;37us;1989us;39us;1990us;60us;1991us;93us;1992us;192us;1850us;202us;1013us;0us;17410us;0us;17411us;27us;32768us;58us;1896us;62us;1878us;63us;1876us;69us;1880us;74us;1884us;82us;1888us;88us;1885us;89us;1886us;95us;1879us;101us;1881us;142us;1891us;144us;1887us;154us;1893us;157us;1890us;159us;1882us;160us;1883us;181us;1889us;182us;1877us;183us;1874us;184us;1873us;185us;1875us;186us;1868us;187us;1872us;188us;1871us;189us;1870us;190us;1869us;202us;1859us;3us;32768us;92us;1979us;93us;1976us;94us;1978us;0us;17412us;3us;32768us;92us;1979us;93us;1976us;94us;1978us;0us;17413us;0us;17414us;1us;32768us;58us;1863us;5us;32768us;66us;1865us;92us;1979us;93us;1976us;94us;1978us;192us;1895us;0us;17415us;1us;32768us;58us;1866us;3us;32768us;92us;1979us;93us;1976us;94us;1978us;0us;17416us;0us;17417us;0us;17418us;0us;17419us;0us;17420us;0us;17421us;0us;17422us;0us;17423us;0us;17424us;0us;17425us;0us;17426us;0us;17427us;0us;17428us;0us;17429us;0us;17430us;0us;17431us;0us;17432us;0us;17433us;0us;17434us;0us;17435us;0us;17436us;0us;17437us;0us;17438us;0us;17439us;1us;17440us;142us;1892us;0us;17441us;1us;32768us;155us;1894us;0us;17442us;0us;17443us;1us;32768us;192us;1895us;0us;17444us;0us;17445us;0us;17446us;0us;17447us;1us;17448us;76us;1903us;0us;17449us;4us;32768us;91us;1856us;99us;1861us;192us;1850us;202us;1905us;0us;17450us;0us;17451us;0us;17452us;0us;17453us;0us;17454us;0us;17455us;0us;17456us;0us;17457us;3us;17458us;21us;1911us;67us;1910us;83us;1909us;0us;17459us;3us;17461us;21us;1911us;67us;1910us;83us;1909us;0us;17460us;1us;17462us;83us;1918us;1us;17463us;21us;1919us;0us;17464us;0us;17465us;0us;17466us;0us;17467us;0us;17468us;0us;17469us;0us;17470us;0us;17471us;0us;17473us;0us;17475us;0us;17477us;0us;17479us;0us;17481us;0us;17483us;0us;17487us;0us;17489us;0us;17491us;0us;17492us;0us;17493us;0us;17494us;0us;17495us;0us;17496us;0us;17497us;0us;17498us;0us;17499us;0us;17500us;0us;17501us;0us;17502us;1us;32768us;192us;1850us;0us;17504us;0us;17505us;80us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;196us;1948us;197us;1949us;198us;1953us;199us;1956us;200us;1944us;201us;808us;2us;32768us;196us;1948us;197us;1949us;0us;17506us;0us;17507us;80us;32768us;13us;1145us;24us;1577us;25us;1591us;29us;1142us;30us;718us;32us;1129us;33us;714us;41us;727us;46us;1369us;56us;1377us;62us;1302us;70us;1371us;71us;1423us;72us;1565us;74us;1364us;85us;1080us;88us;1314us;89us;1317us;90us;1354us;91us;1431us;95us;1244us;96us;1295us;97us;1147us;99us;1861us;105us;1405us;106us;1061us;113us;1072us;114us;1076us;115us;1053us;116us;1057us;118us;1320us;121us;1404us;122us;1091us;123us;1572us;124us;1589us;125us;1067us;129us;1137us;132us;1074us;133us;1078us;135us;1409us;142us;1241us;145us;1332us;146us;1334us;147us;1403us;148us;1358us;153us;1361us;154us;1416us;157us;1311us;158us;1122us;161us;708us;162us;1116us;163us;1118us;165us;805us;166us;804us;167us;802us;168us;801us;169us;800us;170us;799us;171us;797us;172us;795us;173us;793us;174us;791us;175us;798us;176us;796us;177us;794us;179us;792us;180us;790us;182us;1308us;183us;1305us;186us;1352us;188us;1297us;192us;1850us;193us;1945us;194us;1457us;196us;1948us;197us;1949us;198us;1953us;199us;1956us;200us;1944us;201us;808us;2us;32768us;196us;1948us;197us;1949us;0us;17508us;0us;17509us;0us;17510us;0us;17511us;0us;17512us;0us;17514us;3us;32768us;37us;1961us;38us;1964us;107us;1965us;3us;17537us;37us;1961us;38us;1964us;107us;1965us;0us;17516us;0us;17517us;0us;17518us;3us;32768us;39us;1966us;40us;1969us;149us;1970us;3us;17538us;39us;1966us;40us;1969us;149us;1970us;0us;17519us;0us;17520us;0us;17521us;3us;32768us;60us;1971us;61us;1973us;195us;1974us;0us;17522us;0us;17523us;0us;17524us;0us;17525us;3us;32768us;92us;1979us;93us;1976us;94us;1978us;0us;17526us;0us;17527us;0us;17528us;3us;32768us;15us;1983us;16us;1980us;17us;1982us;0us;17529us;0us;17530us;0us;17531us;0us;17532us;0us;17533us;0us;17534us;0us;17535us;0us;17536us;0us;17537us;0us;17538us;0us;17539us;0us;17540us;0us;17541us;0us;17542us;|] -let _fsyacc_actionTableRowOffsets = [|0us;17us;18us;113us;114us;122us;123us;202us;203us;237us;238us;239us;240us;241us;242us;243us;244us;249us;250us;255us;256us;261us;262us;268us;269us;275us;276us;282us;283us;300us;301us;305us;392us;419us;420us;423us;424us;425us;426us;428us;429us;432us;433us;434us;435us;438us;439us;441us;442us;447us;448us;450us;454us;456us;459us;461us;463us;466us;468us;470us;471us;473us;474us;476us;493us;494us;498us;507us;526us;527us;528us;529us;545us;551us;553us;554us;555us;562us;563us;564us;568us;586us;590us;606us;607us;611us;616us;617us;618us;619us;623us;632us;636us;642us;643us;644us;645us;647us;649us;650us;651us;652us;654us;656us;658us;662us;666us;669us;671us;706us;708us;709us;789us;816us;895us;925us;927us;928us;937us;941us;942us;958us;960us;964us;965us;981us;983us;984us;986us;988us;989us;992us;1000us;1001us;1002us;1057us;1059us;1074us;1076us;1080us;1082us;1083us;1085us;1086us;1087us;1088us;1090us;1125us;1126us;1127us;1144us;1148us;1149us;1150us;1152us;1153us;1168us;1174us;1175us;1176us;1192us;1196us;1197us;1198us;1213us;1219us;1220us;1221us;1222us;1223us;1226us;1241us;1242us;1246us;1250us;1261us;1308us;1310us;1314us;1318us;1321us;1323us;1358us;1361us;1363us;1364us;1396us;1403us;1435us;1442us;1444us;1445us;1452us;1454us;1455us;1457us;1458us;1460us;1495us;1496us;1500us;1501us;1505us;1508us;1509us;1510us;1512us;1516us;1517us;1518us;1519us;1521us;1522us;1538us;1542us;1543us;1546us;1547us;1549us;1550us;1555us;1556us;1558us;1559us;1561us;1562us;1564us;1659us;1660us;1665us;1752us;1848us;1849us;1850us;1944us;1950us;1952us;1953us;1954us;1961us;1962us;1963us;1964us;1969us;2056us;2086us;2180us;2181us;2182us;2183us;2205us;2206us;2300us;2301us;2305us;2309us;2316us;2321us;2326us;2327us;2328us;2329us;2333us;2345us;2346us;2348us;2349us;2429us;2430us;2432us;2434us;2435us;2436us;2439us;2445us;2446us;2447us;2450us;2451us;2452us;2458us;2460us;2492us;2499us;2504us;2505us;2507us;2514us;2520us;2521us;2522us;2528us;2529us;2530us;2531us;2532us;2534us;2628us;2632us;2633us;2634us;2635us;2642us;2646us;2647us;2648us;2650us;2651us;2666us;2669us;2678us;2680us;2681us;2683us;2685us;2686us;2687us;2688us;2689us;2699us;2700us;2704us;2735us;2736us;2740us;2744us;2775us;2776us;2779us;2784us;2787us;2818us;2819us;2821us;2822us;2824us;2825us;2827us;2828us;2830us;2831us;2843us;2844us;2845us;2846us;2847us;2851us;2853us;2854us;2856us;2858us;2859us;2937us;2944us;2945us;2946us;2950us;2953us;2955us;2957us;2959us;2966us;2967us;2979us;2981us;2989us;2991us;2997us;2999us;3000us;3001us;3003us;3004us;3005us;3006us;3008us;3043us;3044us;3045us;3051us;3055us;3056us;3057us;3062us;3063us;3070us;3076us;3077us;3078us;3085us;3091us;3092us;3093us;3094us;3095us;3106us;3107us;3110us;3121us;3122us;3124us;3125us;3127us;3130us;3131us;3132us;3134us;3136us;3137us;3139us;3177us;3179us;3181us;3261us;3262us;3300us;3302us;3306us;3386us;3387us;3388us;3390us;3391us;3393us;3394us;3398us;3402us;3418us;3470us;3471us;3472us;3475us;3477us;3478us;3510us;3518us;3519us;3521us;3525us;3528us;3530us;3565us;3568us;3570us;3571us;3572us;3574us;3575us;3577us;3578us;3580us;3581us;3617us;3619us;3621us;3701us;3703us;3704us;3706us;3707us;3709us;3713us;3715us;3717us;3751us;3752us;3754us;3758us;3760us;3762us;3764us;3844us;3847us;3848us;3882us;3883us;3885us;3889us;3890us;3892us;3896us;3897us;3898us;3903us;3905us;3909us;3910us;3911us;3912us;3913us;3914us;3915us;3943us;3947us;3948us;3955us;3959us;3960us;3998us;4032us;4033us;4064us;4066us;4067us;4068us;4069us;4071us;4072us;4073us;4076us;4077us;4078us;4080us;4086us;4087us;4088us;4089us;4092us;4107us;4108us;4113us;4119us;4123us;4125us;4126us;4128us;4129us;4130us;4132us;4134us;4135us;4137us;4138us;4139us;4140us;4144us;4181us;4184us;4186us;4189us;4190us;4191us;4192us;4193us;4228us;4259us;4261us;4265us;4266us;4269us;4275us;4276us;4277us;4281us;4282us;4285us;4286us;4287us;4290us;4294us;4295us;4296us;4298us;4299us;4300us;4301us;4302us;4303us;4304us;4310us;4314us;4317us;4319us;4320us;4321us;4323us;4328us;4329us;4332us;4334us;4336us;4339us;4340us;4341us;4344us;4345us;4347us;4349us;4351us;4352us;4353us;4355us;4359us;4361us;4363us;4364us;4365us;4398us;4400us;4402us;4404us;4437us;4438us;4439us;4442us;4444us;4478us;4479us;4482us;4516us;4518us;4524us;4525us;4529us;4530us;4531us;4533us;4537us;4538us;4573us;4578us;4580us;4582us;4584us;4588us;4589us;4592us;4593us;4594us;4601us;4633us;4640us;4654us;4656us;4657us;4659us;4661us;4662us;4665us;4666us;4668us;4670us;4671us;4675us;4682us;4686us;4687us;4722us;4723us;4758us;4759us;4760us;4761us;4796us;4797us;4837us;4843us;4844us;4874us;4878us;4879us;4881us;4885us;4886us;4891us;4892us;4932us;4939us;4985us;4986us;5021us;5022us;5023us;5056us;5057us;5059us;5091us;5092us;5094us;5126us;5133us;5140us;5141us;5142us;5145us;5153us;5154us;5155us;5157us;5158us;5162us;5164us;5166us;5200us;5201us;5203us;5204us;5206us;5210us;5214us;5216us;5217us;5218us;5220us;5255us;5256us;5257us;5260us;5262us;5264us;5267us;5268us;5269us;5349us;5350us;5352us;5355us;5359us;5360us;5440us;5444us;5445us;5446us;5447us;5448us;5449us;5450us;5451us;5453us;5457us;5459us;5462us;5464us;5469us;5473us;5474us;5476us;5478us;5480us;5481us;5483us;5484us;5488us;5495us;5496us;5498us;5504us;5506us;5508us;5509us;5510us;5511us;5513us;5515us;5516us;5520us;5522us;5523us;5526us;5528us;5529us;5531us;5532us;5533us;5535us;5573us;5575us;5579us;5660us;5661us;5662us;5663us;5742us;5748us;5749us;5750us;5751us;5752us;5754us;5755us;5758us;5761us;5841us;5842us;5845us;5846us;5847us;5850us;5884us;5885us;5886us;5887us;5888us;5889us;5890us;5891us;5892us;5893us;5894us;5895us;5896us;5897us;5898us;5899us;5901us;5902us;5903us;5904us;5905us;5906us;5908us;5910us;5911us;5913us;5915us;5917us;5918us;5919us;5922us;5926us;5927us;5928us;5931us;5932us;5934us;5936us;5937us;5943us;5944us;5946us;5947us;5949us;5952us;5988us;5989us;5990us;5994us;5998us;5999us;6008us;6014us;6015us;6016us;6017us;6021us;6022us;6023us;6027us;6029us;6032us;6035us;6038us;6040us;6042us;6049us;6056us;6063us;6070us;6107us;6108us;6146us;6184us;6186us;6187us;6188us;6233us;6278us;6279us;6280us;6325us;6326us;6364us;6402us;6405us;6406us;6408us;6409us;6413us;6418us;6459us;6466us;6467us;6468us;6508us;6546us;6547us;6583us;6584us;6620us;6621us;6622us;6658us;6659us;6695us;6696us;6728us;6729us;6730us;6795us;6799us;6800us;6801us;6839us;6840us;6876us;6877us;6913us;6914us;6915us;6917us;6918us;6921us;6925us;6926us;6965us;6967us;6968us;7007us;7009us;7010us;7012us;7014us;7015us;7016us;7017us;7018us;7019us;7020us;7085us;7091us;7092us;7093us;7097us;7100us;7101us;7103us;7144us;7151us;7152us;7153us;7157us;7158us;7159us;7166us;7171us;7175us;7178us;7182us;7186us;7190us;7193us;7200us;7203us;7210us;7219us;7235us;7243us;7280us;7281us;7320us;7322us;7324us;7360us;7361us;7362us;7401us;7440us;7441us;7487us;7533us;7534us;7535us;7581us;7582us;7621us;7660us;7663us;7664us;7667us;7668us;7671us;7710us;7711us;7750us;7751us;7830us;7836us;7837us;7838us;7839us;7918us;7922us;7923us;7950us;7952us;7953us;7954us;8048us;8050us;8086us;8087us;8088us;8090us;8091us;8122us;8201us;8202us;8281us;8282us;8284us;8363us;8367us;8368us;8450us;8451us;8454us;8457us;8460us;8463us;8466us;8468us;8470us;8472us;8474us;8476us;8480us;8484us;8488us;8490us;8491us;8529us;8609us;8611us;8614us;8615us;8653us;8733us;8737us;8739us;8742us;8743us;8745us;8825us;8826us;8827us;8909us;8910us;8911us;8992us;8993us;8994us;8995us;8996us;8997us;9076us;9081us;9082us;9083us;9162us;9167us;9168us;9169us;9250us;9256us;9257us;9258us;9338us;9339us;9420us;9451us;9452us;9453us;9454us;9533us;9534us;9601us;9602us;9682us;9683us;9751us;9752us;9833us;9864us;9945us;9950us;9951us;9952us;9955us;9956us;9957us;9958us;9959us;10005us;10016us;10103us;10113us;10114us;10115us;10116us;10117us;10118us;10120us;10121us;10126us;10208us;10213us;10214us;10215us;10216us;10217us;10218us;10298us;10301us;10302us;10303us;10304us;10305us;10386us;10413us;10494us;10521us;10522us;10523us;10561us;10641us;10643us;10645us;10648us;10728us;10729us;10767us;10847us;10851us;10853us;10857us;10937us;10938us;10939us;11018us;11020us;11022us;11102us;11103us;11183us;11187us;11188us;11267us;11294us;11375us;11376us;11403us;11424us;11445us;11455us;11476us;11495us;11514us;11524us;11534us;11544us;11554us;11564us;11574us;11584us;11586us;11595us;11600us;11605us;11607us;11609us;11611us;11635us;11660us;11687us;11714us;11741us;11772us;11797us;11824us;11849us;11874us;11901us;11930us;11957us;11985us;12021us;12022us;12023us;12059us;12060us;12061us;12097us;12098us;12099us;12178us;12180us;12260us;12261us;12263us;12270us;12350us;12430us;12510us;12590us;12670us;12750us;12830us;12910us;12990us;13070us;13152us;13153us;13233us;13313us;13393us;13473us;13553us;13633us;13713us;13793us;13873us;13874us;13875us;13876us;13877us;13878us;13879us;13880us;13881us;13882us;13883us;13884us;13885us;13886us;13887us;13888us;13889us;13890us;13891us;13892us;13893us;13968us;14047us;14126us;14205us;14206us;14207us;14208us;14287us;14291us;14292us;14333us;14334us;14375us;14379us;14380us;14381us;14382us;14422us;14423us;14424us;14425us;14426us;14430us;14434us;14475us;14476us;14515us;14516us;14517us;14518us;14519us;14598us;14679us;14680us;14684us;14685us;14764us;14766us;14845us;14851us;14852us;14853us;14932us;14934us;15013us;15019us;15020us;15021us;15100us;15101us;15102us;15188us;15189us;15275us;15276us;15362us;15363us;15413us;15463us;15513us;15563us;15564us;15614us;15664us;15665us;15715us;15765us;15766us;15816us;15866us;15867us;15917us;15967us;15968us;16018us;16068us;16069us;16119us;16169us;16170us;16202us;16234us;16237us;16275us;16307us;16339us;16341us;16348us;16356us;16357us;16358us;16359us;16409us;16410us;16460us;16461us;16502us;16546us;16590us;16591us;16597us;16637us;16643us;16649us;16652us;16654us;16660us;16666us;16706us;16746us;16748us;16749us;16789us;16829us;16831us;16833us;16834us;16835us;16836us;16844us;16845us;16847us;16855us;16856us;16860us;16864us;16865us;16868us;16869us;16870us;16871us;16952us;16956us;16957us;16958us;16959us;16960us;16963us;17042us;17043us;17044us;17045us;17046us;17047us;17048us;17143us;17147us;17149us;17151us;17152us;17156us;17157us;17238us;17242us;17243us;17244us;17245us;17246us;17247us;17248us;17249us;17250us;17251us;17252us;17253us;17254us;17255us;17256us;17257us;17338us;17342us;17343us;17344us;17346us;17347us;17348us;17429us;17511us;17515us;17516us;17517us;17518us;17519us;17600us;17604us;17605us;17606us;17607us;17608us;17697us;17800us;17903us;17904us;17914us;17915us;17916us;17917us;17918us;17919us;17920us;17921us;17922us;17923us;17925us;17927us;17929us;17933us;18012us;18013us;18014us;18015us;18016us;18021us;18026us;18027us;18059us;18066us;18152us;18158us;18159us;18160us;18161us;18162us;18163us;18164us;18165us;18166us;18167us;18168us;18169us;18250us;18251us;18337us;18338us;18339us;18418us;18497us;18498us;18499us;18501us;18505us;18506us;18548us;18550us;18551us;18552us;18553us;18555us;18589us;18593us;18594us;18628us;18629us;18667us;18668us;18699us;18702us;18733us;18734us;18737us;18738us;18739us;18819us;18820us;18823us;18824us;18826us;18906us;18907us;18910us;18911us;18915us;18916us;18919us;18920us;18926us;18928us;18929us;18930us;18933us;18935us;18936us;18937us;18941us;18943us;18945us;18946us;18947us;18949us;18950us;18951us;18960us;19047us;19048us;19049us;19050us;19054us;19056us;19060us;19061us;19064us;19065us;19066us;19067us;19071us;19072us;19075us;19077us;19078us;19082us;19083us;19087us;19088us;19092us;19093us;19097us;19098us;19130us;19139us;19143us;19145us;19146us;19148us;19149us;19150us;19194us;19198us;19199us;19200us;19201us;19202us;19203us;19239us;19241us;19322us;19323us;19324us;19361us;19364us;19446us;19450us;19451us;19452us;19454us;19455us;19457us;19458us;19460us;19461us;19502us;19503us;19544us;19546us;19547us;19549us;19582us;19584us;19617us;19654us;19655us;19656us;19658us;19695us;19696us;19697us;19699us;19736us;19737us;19738us;19773us;19774us;19776us;19813us;19814us;19815us;19850us;19851us;19884us;19892us;19926us;19933us;19934us;19936us;19938us;19972us;19979us;19980us;19988us;20022us;20029us;20030us;20032us;20034us;20068us;20075us;20076us;20078us;20115us;20116us;20117us;20151us;20152us;20154us;20155us;20164us;20200us;20201us;20202us;20236us;20237us;20273us;20274us;20275us;20311us;20312us;20313us;20322us;20358us;20359us;20360us;20394us;20395us;20431us;20432us;20433us;20467us;20468us;20470us;20471us;20473us;20475us;20480us;20484us;20485us;20495us;20496us;20498us;20499us;20500us;20535us;20539us;20544us;20545us;20546us;20580us;20581us;20583us;20617us;20618us;20621us;20622us;20625us;20626us;20629us;20630us;20633us;20634us;20637us;20638us;20641us;20642us;20645us;20646us;20649us;20650us;20653us;20654us;20657us;20658us;20661us;20662us;20665us;20666us;20669us;20670us;20673us;20674us;20677us;20678us;20681us;20682us;20685us;20686us;20689us;20690us;20693us;20694us;20697us;20698us;20701us;20702us;20705us;20706us;20709us;20710us;20713us;20714us;20717us;20718us;20721us;20722us;20725us;20726us;20729us;20730us;20733us;20734us;20737us;20738us;20741us;20742us;20744us;20745us;20747us;20781us;20782us;20784us;20789us;20823us;20824us;20825us;20827us;20831us;20832us;20867us;20871us;20876us;20877us;20879us;20881us;20882us;20913us;20915us;20916us;20917us;20952us;20958us;20965us;20966us;20967us;20969us;21003us;21039us;21045us;21046us;21047us;21048us;21049us;21050us;21051us;21052us;21092us;21093us;21094us;21098us;21099us;21100us;21103us;21107us;21108us;21116us;21117us;21118us;21120us;21121us;21158us;21160us;21201us;21202us;21203us;21204us;21205us;21214us;21215us;21216us;21217us;21218us;21220us;21254us;21255us;21256us;21257us;21266us;21270us;21271us;21273us;21274us;21276us;21277us;21285us;21291us;21292us;21294us;21298us;21299us;21300us;21307us;21308us;21309us;21310us;21311us;21312us;21320us;21328us;21336us;21338us;21339us;21341us;21342us;21423us;21424us;21425us;21426us;21435us;21436us;21437us;21465us;21469us;21470us;21474us;21475us;21476us;21478us;21484us;21485us;21487us;21491us;21492us;21493us;21494us;21495us;21496us;21497us;21498us;21499us;21500us;21501us;21502us;21503us;21504us;21505us;21506us;21507us;21508us;21509us;21510us;21511us;21512us;21513us;21514us;21515us;21517us;21518us;21520us;21521us;21522us;21524us;21525us;21526us;21527us;21528us;21530us;21531us;21536us;21537us;21538us;21539us;21540us;21541us;21542us;21543us;21544us;21548us;21549us;21553us;21554us;21556us;21558us;21559us;21560us;21561us;21562us;21563us;21564us;21565us;21566us;21567us;21568us;21569us;21570us;21571us;21572us;21573us;21574us;21575us;21576us;21577us;21578us;21579us;21580us;21581us;21582us;21583us;21584us;21585us;21586us;21588us;21589us;21590us;21671us;21674us;21675us;21676us;21757us;21760us;21761us;21762us;21763us;21764us;21765us;21766us;21770us;21774us;21775us;21776us;21777us;21781us;21785us;21786us;21787us;21788us;21792us;21793us;21794us;21795us;21796us;21800us;21801us;21802us;21803us;21807us;21808us;21809us;21810us;21811us;21812us;21813us;21814us;21815us;21816us;21817us;21818us;21819us;21820us;|] -let _fsyacc_reductionSymbolCounts = [|1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;2us;2us;2us;3us;3us;3us;1us;2us;3us;1us;1us;2us;1us;1us;3us;0us;2us;1us;1us;2us;3us;2us;5us;3us;1us;2us;2us;1us;3us;4us;1us;1us;4us;3us;3us;1us;1us;0us;3us;3us;2us;1us;1us;5us;5us;4us;5us;3us;1us;12us;0us;2us;5us;3us;5us;3us;3us;0us;3us;2us;7us;2us;1us;1us;3us;1us;3us;3us;3us;3us;3us;3us;3us;3us;3us;1us;1us;0us;3us;11us;4us;4us;4us;5us;5us;5us;0us;2us;3us;3us;1us;3us;1us;1us;2us;3us;0us;2us;3us;2us;1us;2us;2us;1us;3us;4us;1us;4us;3us;3us;1us;1us;0us;5us;4us;3us;1us;2us;2us;3us;1us;2us;3us;1us;1us;3us;3us;3us;5us;3us;5us;4us;2us;1us;2us;3us;3us;1us;3us;3us;3us;3us;3us;1us;1us;3us;3us;3us;3us;1us;0us;1us;2us;5us;4us;4us;2us;1us;3us;3us;4us;6us;2us;2us;2us;2us;2us;1us;1us;1us;3us;3us;0us;1us;3us;2us;8us;7us;6us;2us;1us;1us;3us;1us;3us;3us;3us;3us;3us;3us;3us;1us;1us;2us;0us;3us;2us;3us;3us;1us;3us;6us;5us;4us;1us;2us;2us;3us;3us;4us;5us;5us;10us;3us;4us;5us;5us;8us;5us;6us;8us;0us;2us;3us;3us;1us;4us;2us;0us;1us;1us;1us;1us;3us;1us;0us;3us;0us;3us;5us;2us;1us;0us;2us;1us;0us;2us;2us;3us;3us;1us;3us;2us;4us;4us;3us;4us;2us;1us;1us;6us;3us;3us;3us;7us;3us;3us;3us;2us;1us;3us;3us;3us;1us;1us;1us;1us;1us;2us;3us;3us;1us;3us;3us;1us;2us;5us;3us;1us;0us;5us;1us;0us;0us;2us;3us;1us;4us;3us;3us;4us;3us;5us;7us;4us;4us;3us;1us;3us;1us;2us;3us;1us;1us;3us;1us;3us;3us;5us;4us;4us;5us;5us;5us;1us;3us;4us;2us;4us;2us;3us;3us;2us;4us;3us;1us;3us;1us;1us;1us;3us;2us;2us;5us;2us;5us;4us;1us;3us;3us;0us;2us;3us;1us;2us;4us;3us;1us;1us;1us;1us;1us;1us;8us;1us;1us;0us;3us;3us;2us;3us;1us;4us;2us;2us;2us;2us;2us;2us;3us;0us;2us;1us;6us;6us;5us;3us;3us;1us;2us;2us;0us;4us;3us;1us;3us;2us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;3us;4us;1us;2us;1us;3us;1us;2us;1us;3us;1us;1us;2us;3us;3us;2us;1us;3us;3us;2us;3us;3us;2us;3us;3us;3us;1us;1us;1us;3us;3us;3us;3us;2us;2us;3us;3us;2us;3us;3us;3us;2us;2us;3us;4us;4us;2us;3us;3us;2us;1us;3us;1us;2us;3us;3us;1us;1us;3us;3us;3us;3us;1us;2us;1us;1us;1us;1us;1us;3us;3us;3us;2us;4us;4us;4us;3us;1us;0us;3us;3us;1us;1us;3us;3us;2us;3us;1us;3us;3us;3us;3us;2us;2us;3us;3us;2us;3us;3us;0us;2us;3us;3us;3us;1us;3us;1us;2us;1us;1us;3us;3us;1us;2us;3us;2us;1us;3us;5us;1us;1us;1us;6us;7us;0us;3us;3us;2us;2us;3us;3us;1us;1us;1us;3us;3us;3us;3us;3us;3us;4us;3us;3us;2us;2us;2us;1us;2us;2us;1us;5us;5us;5us;3us;2us;3us;5us;5us;5us;4us;3us;4us;5us;5us;5us;4us;3us;5us;2us;4us;3us;2us;2us;2us;2us;8us;8us;7us;5us;3us;2us;2us;3us;3us;3us;3us;3us;3us;3us;3us;1us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;2us;2us;1us;1us;1us;3us;2us;3us;3us;1us;2us;2us;1us;2us;2us;4us;4us;4us;3us;2us;2us;0us;2us;2us;2us;4us;4us;0us;2us;4us;4us;3us;3us;3us;3us;3us;3us;2us;2us;2us;2us;2us;2us;2us;2us;2us;6us;4us;4us;2us;2us;2us;1us;2us;1us;2us;1us;3us;3us;3us;2us;2us;1us;3us;3us;2us;3us;1us;1us;3us;3us;3us;2us;4us;4us;1us;1us;1us;0us;1us;5us;3us;3us;3us;3us;2us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;3us;3us;3us;2us;3us;3us;3us;2us;3us;3us;3us;2us;2us;3us;3us;3us;2us;2us;2us;2us;2us;6us;1us;1us;1us;3us;3us;1us;3us;3us;3us;2us;2us;1us;1us;1us;1us;0us;1us;0us;1us;2us;3us;3us;2us;5us;1us;1us;6us;2us;0us;0us;1us;0us;4us;0us;2us;3us;6us;1us;5us;1us;2us;5us;5us;4us;6us;1us;0us;1us;1us;2us;2us;1us;1us;3us;0us;3us;2us;3us;1us;2us;4us;3us;2us;5us;4us;2us;1us;0us;2us;3us;3us;2us;0us;2us;2us;5us;2us;1us;3us;3us;3us;2us;2us;4us;4us;5us;5us;5us;4us;4us;3us;2us;3us;1us;3us;1us;3us;0us;2us;2us;3us;3us;1us;3us;3us;2us;1us;3us;3us;2us;1us;4us;4us;5us;5us;2us;3us;3us;4us;4us;1us;3us;3us;4us;1us;2us;3us;3us;2us;2us;2us;3us;3us;1us;3us;3us;2us;3us;3us;2us;1us;1us;1us;3us;1us;2us;3us;2us;4us;1us;3us;3us;2us;3us;4us;5us;6us;7us;8us;9us;10us;11us;12us;13us;14us;15us;16us;17us;18us;19us;20us;21us;22us;23us;24us;25us;26us;27us;28us;29us;30us;31us;32us;33us;4us;3us;3us;0us;1us;3us;4us;1us;1us;1us;2us;1us;1us;3us;3us;6us;6us;5us;4us;3us;1us;1us;2us;1us;1us;3us;2us;3us;4us;3us;1us;2us;6us;6us;4us;3us;3us;2us;2us;1us;3us;2us;1us;1us;0us;3us;3us;1us;1us;3us;1us;3us;1us;1us;2us;1us;3us;3us;2us;2us;2us;1us;1us;1us;3us;3us;3us;3us;1us;4us;6us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;2us;2us;1us;2us;3us;1us;1us;1us;1us;3us;3us;1us;1us;1us;1us;1us;1us;1us;2us;2us;0us;1us;1us;2us;2us;1us;1us;1us;1us;1us;1us;0us;1us;0us;1us;0us;1us;0us;1us;0us;1us;0us;1us;0us;1us;0us;1us;0us;1us;0us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;3us;1us;3us;2us;3us;1us;2us;1us;1us;0us;1us;0us;2us;1us;1us;2us;1us;1us;2us;1us;1us;1us;2us;1us;1us;2us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;|] -let _fsyacc_productionToNonTerminalTable = [|0us;1us;2us;3us;4us;5us;5us;5us;6us;6us;7us;7us;7us;7us;7us;7us;7us;8us;8us;9us;10us;11us;11us;12us;12us;13us;14us;14us;15us;15us;16us;16us;16us;17us;18us;19us;19us;20us;20us;21us;22us;22us;23us;23us;23us;23us;24us;24us;24us;25us;25us;25us;26us;26us;26us;26us;26us;26us;26us;26us;27us;28us;28us;28us;29us;29us;29us;30us;30us;31us;31us;32us;32us;33us;33us;33us;34us;34us;34us;34us;35us;35us;35us;35us;36us;36us;36us;37us;37us;38us;39us;39us;39us;39us;39us;39us;39us;40us;40us;40us;40us;41us;41us;42us;42us;43us;44us;44us;45us;45us;45us;46us;46us;47us;47us;48us;49us;49us;50us;50us;50us;50us;51us;51us;52us;52us;52us;52us;52us;53us;53us;53us;53us;53us;54us;54us;55us;55us;55us;55us;55us;55us;55us;55us;55us;56us;56us;57us;57us;58us;58us;58us;58us;58us;58us;58us;59us;59us;59us;60us;61us;61us;62us;62us;63us;63us;63us;63us;64us;64us;65us;65us;65us;66us;66us;66us;66us;67us;67us;67us;67us;68us;69us;69us;70us;70us;70us;70us;71us;71us;71us;72us;72us;72us;73us;73us;73us;73us;74us;74us;75us;75us;75us;76us;76us;76us;77us;78us;78us;78us;79us;79us;80us;81us;81us;82us;82us;82us;82us;83us;83us;83us;83us;83us;83us;83us;83us;83us;83us;83us;84us;85us;86us;86us;87us;87us;87us;87us;87us;88us;88us;89us;89us;89us;90us;90us;90us;91us;91us;92us;92us;92us;93us;93us;94us;95us;95us;96us;96us;97us;97us;97us;98us;98us;99us;99us;99us;99us;100us;100us;100us;101us;101us;101us;101us;101us;102us;102us;102us;103us;103us;104us;104us;104us;105us;105us;105us;106us;106us;107us;107us;107us;108us;108us;109us;109us;110us;111us;112us;112us;112us;113us;114us;114us;115us;115us;116us;116us;117us;117us;117us;117us;117us;117us;117us;117us;117us;117us;117us;118us;118us;119us;119us;119us;120us;121us;121us;122us;122us;122us;122us;122us;122us;122us;122us;123us;123us;123us;124us;124us;124us;125us;125us;125us;125us;126us;126us;127us;127us;128us;128us;129us;129us;130us;131us;132us;133us;133us;134us;134us;134us;135us;135us;136us;136us;137us;138us;139us;140us;140us;140us;140us;141us;141us;142us;143us;143us;143us;144us;144us;145us;145us;146us;146us;146us;146us;146us;147us;147us;148us;149us;149us;150us;150us;151us;151us;151us;152us;152us;152us;153us;154us;154us;155us;156us;156us;157us;157us;158us;158us;158us;158us;158us;158us;158us;158us;158us;158us;158us;158us;158us;158us;158us;158us;158us;158us;159us;159us;159us;159us;160us;160us;161us;161us;162us;162us;163us;164us;164us;164us;164us;164us;165us;165us;166us;166us;166us;166us;166us;167us;167us;167us;167us;167us;167us;168us;168us;168us;168us;168us;168us;169us;169us;170us;170us;171us;171us;171us;172us;172us;172us;172us;172us;172us;172us;172us;172us;173us;173us;174us;174us;174us;174us;175us;175us;175us;175us;175us;175us;175us;175us;175us;175us;175us;175us;175us;175us;175us;175us;175us;175us;175us;175us;176us;176us;177us;177us;177us;177us;177us;177us;177us;177us;177us;178us;178us;178us;178us;178us;178us;179us;179us;180us;180us;181us;182us;182us;182us;183us;183us;183us;184us;184us;185us;185us;185us;186us;186us;186us;187us;188us;188us;188us;188us;188us;188us;189us;189us;190us;190us;190us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;191us;192us;192us;193us;193us;193us;194us;194us;194us;194us;195us;196us;196us;196us;196us;196us;196us;197us;197us;198us;199us;200us;200us;200us;201us;201us;201us;201us;201us;201us;202us;202us;202us;202us;202us;202us;203us;203us;203us;203us;203us;203us;203us;203us;203us;203us;203us;203us;203us;203us;204us;204us;205us;205us;206us;206us;206us;206us;206us;206us;206us;206us;206us;206us;206us;206us;206us;206us;206us;206us;206us;206us;206us;207us;207us;207us;207us;207us;207us;207us;207us;207us;207us;208us;208us;208us;208us;208us;208us;208us;208us;208us;208us;208us;209us;209us;209us;209us;210us;210us;210us;210us;211us;211us;211us;211us;212us;212us;212us;212us;212us;212us;212us;212us;212us;213us;213us;213us;214us;214us;215us;215us;216us;216us;216us;216us;216us;217us;217us;217us;218us;218us;219us;219us;220us;221us;222us;222us;222us;223us;224us;224us;225us;226us;226us;227us;227us;228us;228us;229us;229us;229us;230us;230us;231us;231us;231us;231us;231us;231us;231us;232us;232us;233us;233us;233us;233us;234us;234us;235us;235us;236us;236us;236us;236us;236us;237us;237us;237us;238us;238us;238us;239us;239us;240us;240us;240us;241us;242us;242us;242us;243us;244us;244us;245us;245us;245us;245us;245us;246us;246us;246us;246us;246us;246us;246us;246us;247us;247us;248us;248us;249us;249us;250us;250us;250us;251us;251us;251us;252us;252us;252us;252us;253us;253us;253us;253us;254us;254us;254us;254us;254us;254us;254us;254us;254us;254us;255us;255us;255us;255us;256us;257us;257us;257us;257us;257us;257us;257us;257us;258us;258us;258us;258us;258us;258us;258us;259us;259us;260us;260us;261us;261us;261us;261us;261us;261us;261us;262us;262us;262us;262us;262us;262us;262us;262us;262us;262us;262us;262us;262us;262us;262us;262us;262us;262us;262us;262us;262us;262us;262us;262us;262us;262us;262us;262us;262us;262us;262us;262us;263us;264us;264us;264us;265us;265us;266us;266us;267us;267us;268us;268us;268us;268us;268us;268us;268us;268us;268us;268us;268us;268us;268us;268us;268us;268us;268us;268us;268us;268us;269us;269us;270us;270us;270us;270us;270us;270us;270us;271us;271us;271us;272us;272us;273us;274us;274us;275us;275us;275us;276us;276us;276us;277us;277us;278us;278us;278us;278us;279us;279us;280us;281us;281us;281us;281us;282us;282us;282us;282us;282us;283us;283us;283us;283us;283us;283us;283us;283us;283us;283us;283us;283us;283us;283us;283us;283us;283us;283us;283us;283us;283us;283us;283us;283us;283us;283us;284us;285us;285us;286us;286us;287us;287us;287us;287us;288us;289us;289us;290us;290us;290us;291us;291us;292us;292us;293us;293us;293us;293us;294us;294us;294us;295us;295us;295us;295us;296us;296us;297us;297us;298us;298us;299us;299us;300us;300us;301us;301us;302us;302us;303us;303us;304us;304us;305us;305us;306us;306us;307us;307us;308us;308us;309us;309us;310us;311us;312us;312us;313us;313us;313us;314us;314us;314us;315us;315us;315us;316us;316us;317us;317us;317us;318us;318us;318us;319us;319us;319us;320us;321us;321us;321us;322us;322us;322us;323us;323us;323us;323us;323us;324us;324us;324us;324us;324us;324us;|] -let _fsyacc_immediateActions = [|65535us;49152us;65535us;49152us;65535us;49152us;65535us;49152us;65535us;49152us;16389us;16390us;16391us;16392us;16393us;16394us;65535us;16395us;65535us;16396us;65535us;16397us;65535us;16398us;65535us;16399us;65535us;16400us;65535us;16402us;65535us;65535us;65535us;16404us;65535us;16406us;16407us;16408us;65535us;65535us;65535us;16411us;16412us;16413us;65535us;16414us;65535us;16415us;65535us;16416us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16420us;65535us;16421us;65535us;65535us;16423us;65535us;65535us;65535us;16424us;16425us;16426us;65535us;65535us;65535us;16427us;16428us;65535us;16429us;16430us;65535us;65535us;65535us;65535us;16433us;65535us;65535us;16434us;16436us;16437us;65535us;65535us;65535us;65535us;16438us;16439us;16440us;65535us;65535us;16441us;16442us;16443us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16444us;65535us;65535us;65535us;65535us;65535us;16447us;65535us;65535us;16448us;65535us;65535us;65535us;16449us;65535us;65535us;16450us;65535us;65535us;16451us;65535us;65535us;16453us;16454us;65535us;65535us;65535us;65535us;65535us;65535us;16455us;65535us;16456us;16457us;16458us;65535us;65535us;16459us;16460us;65535us;65535us;16461us;16462us;65535us;16463us;65535us;65535us;16464us;16465us;65535us;65535us;16466us;16467us;65535us;65535us;16468us;16469us;16470us;16471us;65535us;65535us;16473us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16474us;65535us;65535us;65535us;65535us;65535us;16477us;65535us;65535us;16478us;65535us;16479us;65535us;65535us;16480us;65535us;16482us;65535us;65535us;16483us;16484us;65535us;65535us;16486us;16487us;16488us;65535us;16489us;65535us;65535us;16490us;65535us;16492us;65535us;16493us;65535us;16494us;65535us;16496us;65535us;16497us;65535us;65535us;16499us;65535us;65535us;65535us;16500us;16501us;65535us;65535us;65535us;16502us;16503us;65535us;16504us;16505us;16506us;65535us;65535us;65535us;65535us;16508us;16511us;16512us;65535us;16513us;65535us;16514us;65535us;65535us;65535us;65535us;65535us;16517us;16518us;16519us;65535us;65535us;16520us;65535us;16521us;65535us;16522us;65535us;65535us;16523us;16524us;65535us;65535us;16525us;16526us;65535us;16527us;16528us;65535us;65535us;65535us;65535us;65535us;16531us;65535us;65535us;65535us;16533us;16534us;65535us;16535us;16536us;16537us;16538us;65535us;65535us;65535us;16540us;16541us;16542us;65535us;65535us;16543us;16544us;65535us;16547us;65535us;65535us;65535us;65535us;16548us;65535us;65535us;16549us;16550us;16551us;16552us;65535us;16553us;65535us;65535us;16554us;65535us;65535us;65535us;16555us;65535us;65535us;65535us;65535us;16556us;65535us;16557us;65535us;16558us;65535us;16559us;65535us;16560us;65535us;16561us;16562us;16563us;16564us;65535us;65535us;16565us;65535us;65535us;16566us;65535us;65535us;16569us;16570us;65535us;65535us;65535us;65535us;65535us;65535us;16571us;65535us;65535us;65535us;65535us;65535us;65535us;16572us;16573us;65535us;16574us;16575us;16576us;65535us;65535us;16577us;16578us;65535us;65535us;16579us;16580us;65535us;16581us;65535us;65535us;16582us;16583us;65535us;65535us;16584us;16585us;16586us;16587us;65535us;16588us;65535us;65535us;16590us;65535us;16591us;65535us;65535us;16592us;16593us;65535us;65535us;16595us;65535us;65535us;65535us;65535us;65535us;16596us;65535us;65535us;65535us;65535us;16597us;16598us;65535us;16600us;65535us;16602us;65535us;65535us;65535us;65535us;16603us;16604us;65535us;65535us;16605us;65535us;65535us;16606us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16607us;16608us;65535us;16609us;65535us;16610us;65535us;16611us;65535us;65535us;65535us;65535us;65535us;16612us;65535us;16613us;65535us;65535us;65535us;65535us;65535us;16614us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16615us;65535us;16617us;65535us;65535us;16618us;65535us;65535us;16619us;16620us;65535us;65535us;65535us;16621us;16622us;16624us;16625us;16626us;16627us;65535us;65535us;16628us;65535us;65535us;16631us;65535us;65535us;16633us;65535us;65535us;16634us;16635us;16636us;65535us;16638us;16639us;65535us;16641us;16642us;65535us;65535us;16643us;16644us;16645us;65535us;65535us;16646us;65535us;65535us;65535us;65535us;16648us;65535us;16649us;16650us;65535us;65535us;16651us;65535us;16652us;16653us;16654us;65535us;65535us;65535us;65535us;65535us;16655us;16656us;16657us;16658us;65535us;65535us;65535us;65535us;16659us;65535us;65535us;16660us;16661us;65535us;16662us;65535us;16663us;16664us;65535us;65535us;16665us;16666us;65535us;16667us;16668us;16669us;16670us;16671us;16672us;65535us;65535us;65535us;65535us;16675us;16676us;65535us;65535us;16677us;65535us;65535us;65535us;65535us;16678us;16679us;65535us;16680us;65535us;65535us;65535us;16681us;16682us;65535us;65535us;65535us;65535us;16685us;16686us;65535us;65535us;65535us;65535us;65535us;16690us;16691us;65535us;65535us;65535us;16692us;65535us;65535us;65535us;65535us;16694us;65535us;16695us;16696us;65535us;65535us;16697us;65535us;65535us;65535us;65535us;65535us;65535us;16698us;65535us;16699us;16700us;65535us;65535us;65535us;65535us;65535us;16705us;65535us;65535us;16706us;65535us;16708us;65535us;65535us;16709us;65535us;65535us;65535us;16712us;65535us;16713us;65535us;16714us;16715us;16716us;65535us;16717us;65535us;65535us;16719us;65535us;65535us;16720us;65535us;65535us;16721us;65535us;16722us;65535us;65535us;65535us;16724us;65535us;16725us;16726us;65535us;16727us;65535us;65535us;16729us;65535us;65535us;65535us;65535us;16733us;16734us;65535us;65535us;16735us;16736us;65535us;16737us;65535us;65535us;65535us;65535us;16738us;65535us;16739us;65535us;65535us;65535us;65535us;16740us;16741us;65535us;65535us;16743us;16744us;65535us;65535us;65535us;65535us;16747us;16748us;65535us;16749us;65535us;65535us;65535us;16750us;65535us;65535us;16751us;16752us;16753us;16754us;16755us;16756us;16757us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16758us;65535us;65535us;65535us;16762us;65535us;16763us;65535us;65535us;16765us;65535us;65535us;65535us;65535us;16767us;16768us;16769us;65535us;65535us;16770us;65535us;65535us;16773us;65535us;65535us;16774us;65535us;16776us;16777us;65535us;65535us;65535us;65535us;65535us;16778us;16779us;16780us;65535us;65535us;16781us;16782us;16783us;65535us;65535us;16785us;65535us;65535us;65535us;16787us;65535us;16788us;16789us;65535us;65535us;16790us;16791us;16792us;16793us;16794us;16795us;16796us;16797us;16798us;16799us;16800us;16801us;16802us;16803us;16804us;65535us;16805us;16806us;16807us;16808us;16809us;65535us;65535us;16810us;65535us;65535us;65535us;16811us;16814us;65535us;65535us;16815us;16816us;65535us;16817us;65535us;65535us;16819us;65535us;16821us;65535us;16822us;65535us;65535us;65535us;16823us;16824us;65535us;65535us;16827us;65535us;65535us;16828us;16829us;16830us;65535us;16831us;16832us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16833us;65535us;65535us;65535us;65535us;16838us;65535us;65535us;16841us;16842us;65535us;16844us;65535us;65535us;65535us;16847us;65535us;16848us;65535us;65535us;65535us;65535us;16850us;16851us;65535us;65535us;16853us;65535us;16854us;65535us;16855us;16856us;65535us;16857us;65535us;16858us;65535us;16859us;16860us;65535us;65535us;16861us;16862us;65535us;16863us;65535us;16864us;65535us;16865us;16867us;65535us;16868us;65535us;65535us;16869us;65535us;65535us;16870us;65535us;65535us;16871us;65535us;65535us;16873us;16874us;16875us;16876us;16877us;16878us;65535us;65535us;16879us;16880us;65535us;65535us;16882us;65535us;65535us;65535us;16883us;16884us;65535us;16885us;16886us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16889us;65535us;65535us;65535us;65535us;16893us;16894us;65535us;65535us;16897us;65535us;65535us;16900us;16901us;65535us;16903us;65535us;65535us;65535us;16906us;65535us;16907us;65535us;65535us;16910us;65535us;16911us;65535us;65535us;16912us;16913us;16914us;65535us;65535us;16915us;65535us;65535us;16917us;16919us;65535us;65535us;65535us;16920us;16921us;65535us;16923us;65535us;65535us;16924us;65535us;16927us;65535us;65535us;65535us;16928us;65535us;16930us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16931us;65535us;65535us;65535us;65535us;16932us;65535us;65535us;65535us;65535us;65535us;16933us;65535us;65535us;16935us;16936us;65535us;16937us;16938us;65535us;16939us;16940us;16941us;16942us;16943us;65535us;65535us;16944us;16945us;65535us;65535us;16946us;16947us;65535us;65535us;16948us;16949us;65535us;16950us;65535us;65535us;16951us;16952us;16953us;65535us;65535us;65535us;65535us;65535us;16957us;65535us;16958us;65535us;65535us;65535us;65535us;16960us;16961us;65535us;16962us;16963us;16964us;16965us;65535us;65535us;65535us;65535us;16966us;16967us;16968us;16969us;16970us;65535us;16971us;65535us;65535us;65535us;16972us;16973us;16974us;16975us;16976us;65535us;65535us;16977us;16978us;16979us;65535us;65535us;65535us;65535us;65535us;16983us;16984us;65535us;65535us;65535us;65535us;65535us;65535us;16985us;65535us;65535us;65535us;65535us;65535us;65535us;16986us;16987us;65535us;65535us;65535us;65535us;16988us;65535us;65535us;16989us;65535us;65535us;65535us;16991us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16992us;16993us;65535us;16994us;16995us;65535us;16996us;16997us;65535us;65535us;65535us;16999us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;17012us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;17022us;17023us;17024us;17025us;17026us;17027us;17028us;17029us;17030us;17031us;17032us;17033us;17034us;17035us;17036us;17037us;17038us;17039us;17040us;17041us;65535us;65535us;65535us;65535us;17045us;65535us;17047us;65535us;65535us;17048us;65535us;17049us;65535us;65535us;17050us;17051us;17052us;65535us;17053us;17054us;17055us;17056us;65535us;65535us;65535us;17058us;65535us;17059us;17060us;17061us;17062us;65535us;65535us;17065us;65535us;17066us;65535us;65535us;65535us;65535us;17068us;17069us;65535us;65535us;65535us;65535us;17072us;17073us;65535us;17074us;17075us;65535us;17077us;65535us;17078us;65535us;17081us;65535us;65535us;65535us;65535us;17082us;65535us;65535us;17083us;65535us;65535us;17084us;65535us;65535us;17085us;65535us;65535us;17086us;65535us;65535us;17087us;65535us;65535us;17088us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;17089us;17091us;17092us;65535us;17093us;65535us;17094us;65535us;65535us;65535us;17096us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;17102us;65535us;65535us;65535us;65535us;17104us;65535us;17105us;65535us;17106us;65535us;65535us;17107us;65535us;65535us;17108us;65535us;17109us;17110us;17111us;65535us;65535us;17112us;17113us;17114us;17115us;65535us;65535us;17116us;17117us;17118us;17119us;17120us;17122us;65535us;65535us;65535us;65535us;17123us;65535us;17124us;65535us;65535us;17125us;17126us;17127us;17128us;17129us;17130us;17131us;17132us;17133us;17134us;17135us;17136us;17137us;17138us;17139us;65535us;65535us;17140us;17141us;65535us;17142us;17143us;65535us;65535us;65535us;17144us;17145us;17146us;17147us;65535us;65535us;17148us;17149us;17150us;17151us;65535us;65535us;65535us;17152us;65535us;17153us;17154us;17155us;65535us;17156us;17157us;17158us;17159us;17160us;65535us;65535us;65535us;65535us;65535us;17161us;17162us;17163us;17164us;65535us;65535us;17165us;65535us;65535us;65535us;65535us;17168us;17169us;17170us;17171us;17172us;17173us;17174us;17175us;17176us;17178us;17180us;65535us;17181us;65535us;17183us;17184us;65535us;65535us;17186us;17187us;65535us;65535us;65535us;65535us;65535us;17188us;17189us;17192us;65535us;65535us;65535us;17194us;65535us;17196us;65535us;17197us;65535us;65535us;65535us;65535us;65535us;17198us;17199us;65535us;65535us;65535us;17200us;65535us;65535us;65535us;65535us;17203us;65535us;65535us;65535us;17204us;65535us;65535us;17205us;65535us;65535us;65535us;17206us;17207us;65535us;65535us;65535us;17211us;17212us;65535us;17214us;17215us;65535us;65535us;17217us;17219us;17221us;65535us;65535us;65535us;17222us;65535us;17223us;17225us;17228us;65535us;17230us;65535us;65535us;17231us;65535us;17232us;65535us;17233us;65535us;17235us;65535us;17236us;65535us;65535us;65535us;65535us;17237us;65535us;17238us;17239us;65535us;65535us;17240us;17241us;17242us;17243us;17244us;65535us;65535us;65535us;17245us;17246us;65535us;65535us;65535us;65535us;17247us;17248us;65535us;17249us;65535us;17251us;65535us;17252us;65535us;17253us;65535us;65535us;17254us;65535us;65535us;65535us;65535us;65535us;17260us;17261us;65535us;65535us;17262us;17263us;65535us;65535us;17265us;17266us;65535us;17267us;65535us;65535us;17269us;17270us;65535us;17271us;65535us;65535us;65535us;65535us;17274us;65535us;65535us;65535us;65535us;17276us;65535us;65535us;65535us;17279us;65535us;65535us;65535us;65535us;17281us;65535us;65535us;17283us;17284us;65535us;17285us;65535us;17287us;65535us;65535us;17288us;17289us;65535us;17290us;65535us;17291us;17292us;65535us;17293us;17294us;65535us;65535us;17296us;17297us;65535us;17298us;65535us;17299us;17300us;65535us;17301us;65535us;17304us;65535us;65535us;65535us;65535us;17305us;65535us;17307us;65535us;17308us;17309us;65535us;65535us;65535us;17310us;17311us;65535us;17312us;65535us;65535us;17313us;65535us;17314us;65535us;17315us;65535us;17316us;65535us;17317us;65535us;17318us;65535us;17319us;65535us;17320us;65535us;17321us;65535us;17322us;65535us;17323us;65535us;17324us;65535us;17325us;65535us;17326us;65535us;17327us;65535us;17328us;65535us;17329us;65535us;17330us;65535us;17331us;65535us;17332us;65535us;17333us;65535us;17334us;65535us;17335us;65535us;17336us;65535us;17337us;65535us;17338us;65535us;17339us;65535us;17340us;65535us;17341us;65535us;17342us;65535us;17343us;65535us;17344us;65535us;17345us;65535us;65535us;65535us;65535us;65535us;65535us;17347us;17348us;65535us;65535us;17351us;65535us;65535us;65535us;17352us;65535us;65535us;17355us;65535us;65535us;17357us;17358us;65535us;65535us;65535us;17359us;17360us;65535us;65535us;65535us;65535us;17361us;17362us;17363us;17364us;17365us;17366us;17367us;65535us;17369us;17370us;65535us;17371us;17372us;65535us;65535us;17374us;65535us;17375us;17376us;65535us;17377us;65535us;65535us;65535us;65535us;17378us;17379us;17380us;65535us;17381us;17382us;17383us;17384us;65535us;65535us;17386us;17388us;17389us;65535us;65535us;17391us;65535us;17392us;65535us;17394us;65535us;65535us;17395us;65535us;65535us;17397us;17398us;65535us;17400us;17401us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;17405us;65535us;17406us;65535us;17407us;17408us;17409us;65535us;17410us;17411us;65535us;65535us;17412us;65535us;17413us;17414us;65535us;65535us;17415us;65535us;65535us;17416us;17417us;17418us;17419us;17420us;17421us;17422us;17423us;17424us;17425us;17426us;17427us;17428us;17429us;17430us;17431us;17432us;17433us;17434us;17435us;17436us;17437us;17438us;17439us;65535us;17441us;65535us;17442us;17443us;65535us;17444us;17445us;17446us;17447us;65535us;17449us;65535us;17450us;17451us;17452us;17453us;17454us;17455us;17456us;17457us;65535us;17459us;65535us;17460us;65535us;65535us;17464us;17465us;17466us;17467us;17468us;17469us;17470us;17471us;17473us;17475us;17477us;17479us;17481us;17483us;17487us;17489us;17491us;17492us;17493us;17494us;17495us;17496us;17497us;17498us;17499us;17500us;17501us;17502us;65535us;17504us;17505us;65535us;65535us;17506us;17507us;65535us;65535us;17508us;17509us;17510us;17511us;17512us;17514us;65535us;65535us;17516us;17517us;17518us;65535us;65535us;17519us;17520us;17521us;65535us;17522us;17523us;17524us;17525us;65535us;17526us;17527us;17528us;65535us;17529us;17530us;17531us;17532us;17533us;17534us;17535us;17536us;17537us;17538us;17539us;17540us;17541us;17542us;|] +let _fsyacc_gotos = [| 0us;65535us;0us;65535us;0us;65535us;0us;65535us;0us;65535us;1us;65535us;4us;5us;7us;65535us;4us;15us;16us;17us;18us;19us;20us;21us;22us;15us;24us;15us;26us;15us;4us;65535us;4us;10us;22us;23us;24us;25us;26us;27us;5us;65535us;4us;16us;22us;16us;24us;16us;26us;16us;28us;29us;4us;65535us;4us;18us;22us;18us;24us;18us;26us;18us;4us;65535us;4us;20us;22us;20us;24us;20us;26us;20us;4us;65535us;16us;22us;18us;24us;20us;26us;34us;35us;4us;65535us;16us;34us;18us;34us;20us;34us;34us;34us;23us;65535us;0us;90us;2us;268us;4us;33us;22us;33us;24us;33us;26us;33us;66us;90us;70us;90us;74us;90us;85us;90us;88us;90us;120us;90us;123us;90us;127us;90us;234us;268us;238us;268us;241us;268us;253us;268us;257us;268us;259us;268us;265us;268us;296us;268us;306us;268us;1us;65535us;39us;40us;1us;65535us;40us;41us;1us;65535us;0us;1us;6us;65535us;31us;280us;69us;70us;93us;94us;237us;238us;251us;280us;270us;280us;4us;65535us;61us;65us;63us;65us;229us;233us;231us;233us;1us;65535us;0us;44us;2us;65535us;61us;62us;63us;64us;2us;65535us;61us;63us;63us;63us;2us;65535us;0us;61us;66us;67us;3us;65535us;0us;72us;66us;72us;70us;71us;6us;65535us;0us;73us;66us;73us;70us;73us;74us;75us;123us;124us;127us;128us;9us;65535us;0us;81us;66us;81us;70us;81us;74us;81us;85us;86us;88us;89us;120us;121us;123us;81us;127us;81us;9us;65535us;0us;84us;66us;84us;70us;84us;74us;84us;85us;84us;88us;84us;120us;84us;123us;84us;127us;84us;9us;65535us;0us;91us;66us;91us;70us;91us;74us;91us;85us;91us;88us;91us;120us;91us;123us;91us;127us;91us;2us;65535us;112us;113us;186us;187us;1us;65535us;95us;97us;2us;65535us;100us;101us;131us;132us;3us;65535us;99us;100us;130us;131us;198us;199us;1us;65535us;134us;135us;2us;65535us;134us;144us;137us;138us;2us;65535us;134us;147us;137us;147us;2us;65535us;134us;151us;137us;151us;3us;65535us;152us;153us;162us;163us;220us;221us;8us;65535us;137us;159us;139us;140us;152us;170us;158us;159us;162us;170us;166us;167us;173us;174us;220us;170us;8us;65535us;137us;171us;139us;171us;152us;171us;158us;171us;162us;171us;166us;171us;173us;171us;220us;171us;11us;65535us;137us;172us;139us;172us;152us;172us;158us;172us;162us;172us;166us;172us;173us;172us;220us;172us;649us;650us;656us;657us;1505us;1506us;3us;65535us;185us;186us;455us;456us;492us;493us;2us;65535us;203us;204us;205us;206us;2us;65535us;177us;179us;178us;179us;2us;65535us;69us;102us;93us;102us;5us;65535us;133us;136us;140us;141us;142us;143us;144us;145us;218us;219us;1us;65535us;2us;3us;1us;65535us;2us;223us;2us;65535us;229us;230us;231us;232us;2us;65535us;229us;231us;231us;231us;2us;65535us;2us;229us;234us;235us;3us;65535us;2us;240us;234us;240us;238us;239us;5us;65535us;2us;248us;234us;248us;238us;248us;241us;242us;306us;307us;9us;65535us;2us;249us;234us;249us;238us;249us;241us;249us;253us;254us;259us;260us;265us;266us;296us;300us;306us;249us;10us;65535us;2us;255us;234us;255us;238us;255us;241us;255us;253us;255us;257us;258us;259us;255us;265us;255us;296us;255us;306us;255us;10us;65535us;2us;257us;234us;257us;238us;257us;241us;257us;253us;257us;257us;257us;259us;257us;265us;257us;296us;257us;306us;257us;15us;65535us;2us;267us;4us;28us;22us;28us;24us;28us;26us;28us;28us;28us;234us;267us;238us;267us;241us;267us;253us;267us;257us;267us;259us;267us;265us;267us;296us;267us;306us;267us;24us;65535us;0us;103us;2us;286us;4us;286us;22us;286us;24us;286us;26us;286us;28us;286us;66us;103us;70us;103us;74us;103us;85us;103us;88us;103us;120us;103us;123us;103us;127us;103us;234us;286us;238us;286us;241us;286us;253us;286us;257us;286us;259us;286us;265us;286us;296us;286us;306us;286us;1us;65535us;95us;96us;1us;65535us;281us;282us;2us;65535us;281us;304us;296us;297us;1us;65535us;361us;362us;81us;65535us;0us;68us;2us;236us;4us;30us;22us;30us;24us;30us;26us;30us;28us;269us;50us;51us;66us;68us;70us;92us;74us;92us;85us;92us;88us;92us;99us;355us;104us;105us;120us;92us;123us;92us;127us;92us;130us;355us;134us;560us;137us;176us;139us;175us;152us;175us;158us;175us;162us;175us;166us;175us;173us;175us;198us;355us;220us;175us;234us;236us;238us;250us;241us;250us;253us;250us;257us;269us;259us;250us;265us;250us;276us;355us;296us;250us;306us;250us;311us;436us;358us;355us;361us;363us;368us;560us;371us;437us;373us;436us;388us;436us;392us;436us;394us;436us;398us;436us;404us;436us;407us;436us;418us;419us;475us;355us;516us;545us;519us;436us;537us;545us;543us;545us;574us;724us;583us;724us;601us;610us;606us;610us;607us;610us;615us;610us;620us;610us;649us;175us;656us;175us;666us;676us;669us;676us;674us;676us;721us;724us;735us;736us;748us;800us;754us;800us;767us;794us;772us;781us;777us;781us;779us;781us;797us;800us;1505us;175us;1604us;546us;1606us;800us;122us;65535us;0us;314us;2us;284us;4us;284us;22us;284us;24us;284us;26us;284us;28us;284us;50us;314us;66us;314us;70us;314us;74us;314us;85us;314us;88us;314us;99us;314us;104us;314us;111us;1677us;120us;314us;123us;314us;127us;314us;130us;314us;134us;314us;137us;314us;139us;314us;149us;1677us;152us;314us;158us;314us;162us;314us;166us;314us;173us;314us;184us;1677us;198us;314us;201us;1677us;220us;314us;234us;284us;238us;284us;241us;284us;253us;284us;257us;284us;259us;284us;265us;284us;276us;314us;296us;284us;306us;284us;311us;314us;315us;316us;358us;314us;361us;314us;368us;314us;371us;314us;373us;314us;385us;1677us;388us;314us;392us;314us;394us;314us;398us;314us;404us;314us;407us;314us;418us;314us;454us;1677us;475us;314us;516us;314us;519us;314us;537us;314us;543us;314us;574us;314us;583us;314us;601us;314us;606us;314us;607us;314us;615us;314us;620us;314us;649us;314us;656us;314us;666us;314us;669us;314us;674us;314us;687us;1677us;721us;314us;735us;314us;748us;314us;754us;314us;767us;314us;772us;314us;777us;314us;779us;314us;797us;314us;874us;874us;875us;874us;878us;874us;920us;1006us;939us;1006us;955us;1006us;958us;1006us;969us;1006us;977us;1006us;1000us;1006us;1006us;1006us;1007us;1006us;1009us;1006us;1010us;1006us;1013us;1006us;1015us;1006us;1016us;1006us;1022us;1006us;1026us;1006us;1133us;1006us;1303us;1006us;1305us;1006us;1311us;1006us;1318us;1006us;1320us;1006us;1505us;314us;1604us;314us;1606us;314us;1649us;1006us;1651us;1006us;1658us;1677us;1662us;1677us;1666us;1677us;1669us;1677us;1672us;1677us;1675us;1677us;122us;65535us;0us;315us;2us;315us;4us;315us;22us;315us;24us;315us;26us;315us;28us;315us;50us;315us;66us;315us;70us;315us;74us;315us;85us;315us;88us;315us;99us;315us;104us;315us;111us;315us;120us;315us;123us;315us;127us;315us;130us;315us;134us;315us;137us;315us;139us;315us;149us;315us;152us;315us;158us;315us;162us;315us;166us;315us;173us;315us;184us;315us;198us;315us;201us;315us;220us;315us;234us;315us;238us;315us;241us;315us;253us;315us;257us;315us;259us;315us;265us;315us;276us;315us;296us;315us;306us;315us;311us;315us;315us;315us;358us;315us;361us;315us;368us;315us;371us;315us;373us;315us;385us;315us;388us;315us;392us;315us;394us;315us;398us;315us;404us;315us;407us;315us;418us;315us;454us;315us;475us;315us;516us;315us;519us;315us;537us;315us;543us;315us;574us;315us;583us;315us;601us;315us;606us;315us;607us;315us;615us;315us;620us;315us;649us;315us;656us;315us;666us;315us;669us;315us;674us;315us;687us;315us;721us;315us;735us;315us;748us;315us;754us;315us;767us;315us;772us;315us;777us;315us;779us;315us;797us;315us;874us;315us;875us;315us;878us;315us;920us;315us;939us;315us;955us;315us;958us;315us;969us;315us;977us;315us;1000us;315us;1006us;315us;1007us;315us;1009us;315us;1010us;315us;1013us;315us;1015us;315us;1016us;315us;1022us;315us;1026us;315us;1133us;315us;1303us;315us;1305us;315us;1311us;315us;1318us;315us;1320us;315us;1505us;315us;1604us;315us;1606us;315us;1649us;315us;1651us;315us;1658us;315us;1662us;315us;1666us;315us;1669us;315us;1672us;315us;1675us;315us;1us;65535us;317us;318us;2us;65535us;317us;327us;328us;329us;2us;65535us;317us;333us;328us;333us;4us;65535us;177us;216us;178us;216us;438us;442us;439us;442us;6us;65535us;99us;133us;130us;133us;198us;133us;276us;361us;358us;361us;475us;361us;2us;65535us;277us;278us;359us;360us;3us;65535us;276us;277us;358us;359us;475us;476us;1us;65535us;368us;369us;2us;65535us;368us;380us;371us;372us;2us;65535us;368us;383us;371us;383us;2us;65535us;368us;387us;371us;387us;3us;65535us;311us;312us;388us;389us;519us;520us;8us;65535us;311us;402us;373us;374us;388us;402us;392us;405us;398us;399us;404us;405us;407us;408us;519us;402us;10us;65535us;311us;403us;371us;395us;373us;403us;388us;403us;392us;403us;394us;395us;398us;403us;404us;403us;407us;403us;519us;403us;1us;65535us;426us;431us;2us;65535us;409us;410us;411us;412us;3us;65535us;409us;415us;411us;415us;416us;417us;3us;65535us;442us;443us;547us;548us;553us;554us;4us;65535us;177us;217us;178us;217us;438us;450us;439us;450us;10us;65535us;311us;406us;371us;406us;373us;406us;388us;406us;392us;406us;394us;406us;398us;406us;404us;406us;407us;406us;519us;406us;3us;65535us;350us;461us;438us;459us;439us;459us;2us;65535us;442us;463us;547us;550us;1us;65535us;489us;490us;52us;65535us;419us;924us;424us;924us;465us;964us;804us;924us;897us;924us;899us;924us;900us;924us;904us;924us;905us;924us;908us;924us;910us;924us;911us;924us;920us;924us;924us;964us;925us;964us;927us;964us;929us;964us;932us;964us;934us;964us;939us;924us;943us;964us;945us;964us;947us;964us;955us;924us;958us;924us;969us;924us;977us;924us;998us;924us;1000us;924us;1006us;924us;1007us;924us;1009us;924us;1010us;924us;1013us;924us;1015us;924us;1016us;924us;1022us;924us;1026us;924us;1076us;924us;1081us;924us;1133us;924us;1164us;924us;1171us;924us;1303us;924us;1305us;924us;1311us;924us;1318us;924us;1320us;924us;1632us;964us;1637us;964us;1649us;924us;1651us;924us;22us;65535us;30us;31us;51us;52us;68us;69us;92us;93us;107us;108us;175us;177us;176us;178us;180us;181us;236us;237us;250us;251us;269us;270us;355us;594us;363us;364us;436us;438us;437us;439us;478us;479us;487us;488us;560us;561us;676us;677us;726us;727us;736us;737us;768us;769us;74us;65535us;30us;512us;51us;512us;68us;512us;92us;512us;107us;512us;175us;512us;176us;512us;180us;512us;236us;512us;250us;512us;269us;512us;355us;512us;363us;512us;419us;507us;424us;507us;436us;512us;437us;512us;465us;507us;478us;512us;487us;512us;560us;512us;676us;512us;726us;512us;736us;512us;768us;512us;804us;507us;897us;507us;899us;507us;900us;507us;904us;507us;905us;507us;908us;507us;910us;507us;911us;507us;920us;507us;924us;507us;925us;507us;927us;507us;929us;507us;932us;507us;934us;507us;939us;507us;943us;507us;945us;507us;947us;507us;955us;507us;958us;507us;969us;507us;977us;507us;998us;507us;1000us;507us;1006us;507us;1007us;507us;1009us;507us;1010us;507us;1013us;507us;1015us;507us;1016us;507us;1022us;507us;1026us;507us;1076us;507us;1081us;507us;1133us;507us;1164us;507us;1171us;507us;1303us;507us;1305us;507us;1311us;507us;1318us;507us;1320us;507us;1632us;507us;1637us;507us;1649us;507us;1651us;507us;1us;65535us;447us;448us;4us;65535us;374us;375us;376us;377us;380us;381us;733us;734us;2us;65535us;438us;458us;439us;458us;2us;65535us;366us;367us;466us;467us;2us;65535us;366us;529us;466us;529us;2us;65535us;523us;524us;526us;527us;3us;65535us;523us;533us;526us;533us;1379us;1602us;2us;65535us;516us;517us;1604us;1609us;4us;65535us;516us;541us;537us;538us;543us;544us;1604us;541us;4us;65535us;516us;542us;537us;542us;543us;542us;1604us;542us;2us;65535us;545us;547us;546us;547us;4us;65535us;134us;146us;137us;146us;368us;382us;371us;382us;9us;65535us;178us;568us;439us;568us;561us;568us;678us;718us;680us;718us;683us;718us;704us;718us;707us;718us;742us;718us;83us;65535us;8us;1841us;111us;1841us;149us;1841us;178us;1841us;184us;1841us;188us;1841us;190us;1841us;201us;1841us;290us;1841us;385us;1841us;439us;1841us;446us;1841us;454us;1841us;481us;1841us;497us;1841us;561us;1841us;569us;1841us;625us;1841us;629us;1841us;639us;1841us;642us;1841us;652us;1841us;663us;1841us;678us;1841us;680us;1841us;683us;1841us;687us;1841us;704us;1841us;707us;1841us;710us;1841us;713us;1841us;729us;1841us;742us;1841us;827us;1841us;871us;1841us;936us;1841us;1003us;1841us;1044us;1841us;1229us;1841us;1232us;1841us;1235us;1841us;1515us;1841us;1548us;1841us;1551us;1841us;1553us;1841us;1617us;1841us;1655us;1841us;1657us;1841us;1658us;1841us;1662us;1841us;1666us;1841us;1669us;1841us;1672us;1841us;1675us;1841us;1677us;1841us;1679us;1841us;1684us;1841us;1688us;1841us;1693us;1841us;1698us;1841us;1701us;1841us;1704us;1841us;1707us;1841us;1712us;1841us;1715us;1841us;1717us;1841us;1720us;1841us;1724us;1841us;1727us;1841us;1729us;1841us;1732us;1841us;1749us;1841us;1755us;1841us;1758us;1841us;1825us;1841us;1829us;1841us;1835us;1841us;1846us;1841us;1852us;1841us;1853us;1841us;1876us;1841us;1878us;1841us;1889us;1841us;84us;65535us;8us;582us;111us;582us;149us;582us;178us;582us;184us;582us;188us;582us;190us;582us;201us;582us;290us;582us;385us;582us;439us;582us;446us;582us;454us;582us;481us;582us;497us;582us;561us;582us;569us;582us;580us;581us;625us;582us;629us;582us;639us;582us;642us;582us;652us;582us;663us;582us;678us;582us;680us;582us;683us;582us;687us;582us;704us;582us;707us;582us;710us;582us;713us;582us;729us;582us;742us;582us;827us;582us;871us;582us;936us;582us;1003us;582us;1044us;582us;1229us;582us;1232us;582us;1235us;582us;1515us;582us;1548us;582us;1551us;582us;1553us;582us;1617us;582us;1655us;582us;1657us;582us;1658us;582us;1662us;582us;1666us;582us;1669us;582us;1672us;582us;1675us;582us;1677us;582us;1679us;582us;1684us;582us;1688us;582us;1693us;582us;1698us;582us;1701us;582us;1704us;582us;1707us;582us;1712us;582us;1715us;582us;1717us;582us;1720us;582us;1724us;582us;1727us;582us;1729us;582us;1732us;582us;1749us;582us;1755us;582us;1758us;582us;1825us;582us;1829us;582us;1835us;582us;1846us;582us;1852us;582us;1853us;582us;1876us;582us;1878us;582us;1889us;582us;4us;65535us;134us;152us;137us;152us;368us;388us;371us;388us;9us;65535us;177us;188us;178us;188us;438us;446us;439us;446us;1598us;1617us;1600us;1617us;1611us;1617us;1613us;1617us;1615us;1617us;1us;65535us;355us;356us;1us;65535us;594us;596us;3us;65535us;601us;602us;615us;604us;620us;605us;5us;65535us;601us;609us;606us;608us;607us;608us;615us;609us;620us;609us;1us;65535us;595us;598us;1us;65535us;620us;621us;4us;65535us;109us;624us;182us;624us;452us;624us;924us;925us;3us;65535us;109us;110us;182us;183us;452us;453us;3us;65535us;356us;357us;604us;616us;621us;622us;3us;65535us;625us;626us;1655us;627us;1657us;628us;3us;65535us;612us;613us;1735us;632us;1737us;633us;4us;65535us;625us;631us;629us;630us;1655us;631us;1657us;631us;1us;65535us;652us;653us;3us;65535us;178us;567us;439us;567us;561us;567us;5us;65535us;178us;666us;439us;666us;561us;666us;668us;669us;673us;674us;3us;65535us;666us;667us;669us;670us;674us;675us;3us;65535us;666us;673us;669us;673us;674us;673us;1us;65535us;677us;678us;3us;65535us;178us;668us;439us;668us;561us;668us;3us;65535us;178us;671us;439us;671us;561us;671us;7us;65535us;678us;719us;680us;719us;683us;719us;704us;719us;707us;719us;710us;711us;742us;719us;7us;65535us;678us;709us;680us;709us;683us;709us;704us;709us;707us;709us;710us;709us;742us;709us;6us;65535us;678us;682us;680us;681us;683us;684us;704us;705us;707us;708us;742us;743us;3us;65535us;574us;575us;583us;584us;721us;722us;3us;65535us;574us;720us;583us;720us;721us;720us;3us;65535us;193us;194us;196us;197us;724us;725us;4us;65535us;31us;279us;237us;279us;251us;279us;270us;279us;6us;65535us;31us;733us;69us;218us;93us;218us;237us;733us;251us;733us;270us;733us;1us;65535us;737us;738us;1us;65535us;738us;739us;120us;65535us;6us;1087us;31us;272us;114us;1087us;116us;1087us;237us;272us;251us;272us;270us;271us;274us;1087us;350us;761us;422us;1087us;427us;1087us;438us;761us;439us;761us;468us;1087us;491us;1087us;751us;1087us;757us;1087us;807us;1087us;811us;1087us;821us;1087us;1028us;1087us;1034us;1087us;1050us;1087us;1052us;1087us;1055us;1087us;1058us;1087us;1077us;1087us;1082us;1087us;1088us;1087us;1091us;1087us;1094us;1087us;1100us;1087us;1104us;1087us;1108us;1087us;1114us;1087us;1116us;1087us;1121us;1087us;1123us;1087us;1125us;1087us;1127us;1087us;1129us;1087us;1131us;1087us;1135us;1087us;1145us;1087us;1152us;1087us;1158us;1087us;1160us;1087us;1165us;1087us;1169us;1087us;1172us;1087us;1176us;1087us;1179us;1087us;1182us;1087us;1184us;1087us;1187us;1087us;1189us;1087us;1238us;1087us;1240us;1087us;1244us;1087us;1246us;1087us;1248us;1087us;1250us;1087us;1252us;1087us;1254us;1087us;1256us;1087us;1258us;1087us;1260us;1087us;1262us;1087us;1264us;1087us;1266us;1087us;1268us;1087us;1270us;1087us;1272us;1087us;1274us;1087us;1276us;1087us;1278us;1087us;1280us;1087us;1282us;1087us;1284us;1087us;1285us;1087us;1286us;1087us;1287us;1087us;1290us;1087us;1300us;1087us;1325us;1087us;1326us;1087us;1330us;1087us;1332us;1087us;1335us;1087us;1336us;1087us;1338us;1087us;1341us;1087us;1343us;1087us;1345us;1087us;1347us;1087us;1429us;1087us;1436us;1087us;1443us;1087us;1450us;1087us;1467us;1087us;1474us;1087us;1475us;1087us;1481us;1087us;1487us;1087us;1488us;1087us;1489us;1087us;1501us;1087us;1507us;1087us;1517us;1087us;1530us;1087us;1532us;1087us;1535us;1087us;1536us;1087us;1562us;1087us;1567us;1087us;1592us;1087us;1634us;1087us;1639us;1087us;2019us;1087us;2023us;1087us;7us;65535us;31us;275us;237us;275us;251us;275us;270us;275us;350us;762us;438us;762us;439us;762us;120us;65535us;6us;1058us;31us;274us;114us;1091us;116us;1091us;237us;274us;251us;274us;270us;273us;274us;1058us;350us;763us;422us;1058us;427us;1058us;438us;763us;439us;763us;468us;1058us;491us;1058us;751us;1058us;757us;1058us;807us;1058us;811us;1058us;821us;1058us;1028us;1058us;1034us;1058us;1050us;1058us;1052us;1058us;1055us;1058us;1058us;1058us;1077us;1058us;1082us;1058us;1088us;1058us;1091us;1058us;1094us;1058us;1100us;1058us;1104us;1058us;1108us;1058us;1114us;1058us;1116us;1091us;1121us;1091us;1123us;1091us;1125us;1091us;1127us;1091us;1129us;1091us;1131us;1091us;1135us;1058us;1145us;1058us;1152us;1058us;1158us;1091us;1160us;1091us;1165us;1058us;1169us;1058us;1172us;1058us;1176us;1058us;1179us;1058us;1182us;1058us;1184us;1058us;1187us;1091us;1189us;1058us;1238us;1091us;1240us;1091us;1244us;1091us;1246us;1091us;1248us;1091us;1250us;1091us;1252us;1091us;1254us;1091us;1256us;1091us;1258us;1091us;1260us;1091us;1262us;1091us;1264us;1091us;1266us;1091us;1268us;1091us;1270us;1091us;1272us;1091us;1274us;1091us;1276us;1091us;1278us;1091us;1280us;1091us;1282us;1091us;1284us;1091us;1285us;1091us;1286us;1091us;1287us;1091us;1290us;1058us;1300us;1058us;1325us;1091us;1326us;1058us;1330us;1091us;1332us;1058us;1335us;1091us;1336us;1058us;1338us;1091us;1341us;1091us;1343us;1091us;1345us;1091us;1347us;1091us;1429us;1058us;1436us;1091us;1443us;1058us;1450us;1058us;1467us;1058us;1474us;1058us;1475us;1058us;1481us;1058us;1487us;1058us;1488us;1058us;1489us;1058us;1501us;1091us;1507us;1058us;1517us;1058us;1530us;1058us;1532us;1091us;1535us;1091us;1536us;1091us;1562us;1091us;1567us;1091us;1592us;1091us;1634us;1058us;1639us;1058us;2019us;1091us;2023us;1091us;119us;65535us;6us;1097us;31us;1097us;114us;1097us;116us;1097us;237us;1097us;251us;1097us;274us;1097us;350us;764us;422us;1097us;427us;1097us;438us;764us;439us;764us;468us;1097us;491us;1097us;751us;1097us;757us;1097us;807us;1097us;811us;1097us;821us;1097us;1028us;1097us;1034us;1097us;1050us;1097us;1052us;1097us;1055us;1097us;1058us;1097us;1077us;1097us;1082us;1097us;1088us;1097us;1091us;1097us;1094us;1097us;1100us;1097us;1104us;1097us;1108us;1097us;1114us;1097us;1116us;1097us;1121us;1097us;1123us;1097us;1125us;1097us;1127us;1097us;1129us;1097us;1131us;1097us;1135us;1097us;1145us;1097us;1152us;1097us;1158us;1097us;1160us;1097us;1165us;1097us;1169us;1097us;1172us;1097us;1176us;1097us;1179us;1097us;1182us;1097us;1184us;1097us;1187us;1097us;1189us;1097us;1238us;1097us;1240us;1097us;1244us;1097us;1246us;1097us;1248us;1097us;1250us;1097us;1252us;1097us;1254us;1097us;1256us;1097us;1258us;1097us;1260us;1097us;1262us;1097us;1264us;1097us;1266us;1097us;1268us;1097us;1270us;1097us;1272us;1097us;1274us;1097us;1276us;1097us;1278us;1097us;1280us;1097us;1282us;1097us;1284us;1097us;1285us;1097us;1286us;1097us;1287us;1097us;1290us;1097us;1300us;1097us;1325us;1097us;1326us;1097us;1330us;1097us;1332us;1097us;1335us;1097us;1336us;1097us;1338us;1097us;1341us;1097us;1343us;1097us;1345us;1097us;1347us;1097us;1429us;1097us;1436us;1097us;1443us;1097us;1450us;1097us;1467us;1097us;1474us;1097us;1475us;1097us;1481us;1097us;1487us;1097us;1488us;1097us;1489us;1097us;1501us;1097us;1507us;1097us;1517us;1097us;1530us;1097us;1532us;1097us;1535us;1097us;1536us;1097us;1562us;1097us;1567us;1097us;1592us;1097us;1634us;1097us;1639us;1097us;2019us;1097us;2023us;1097us;3us;65535us;350us;441us;438us;440us;439us;440us;5us;65535us;755us;756us;758us;759us;1083us;1084us;1173us;1174us;1185us;1186us;120us;65535us;6us;750us;31us;750us;114us;750us;116us;750us;237us;750us;251us;750us;270us;750us;274us;750us;350us;750us;422us;750us;427us;750us;438us;750us;439us;750us;468us;750us;491us;750us;751us;750us;757us;750us;807us;750us;811us;750us;821us;750us;1028us;750us;1034us;750us;1050us;750us;1052us;750us;1055us;750us;1058us;750us;1077us;750us;1082us;750us;1088us;750us;1091us;750us;1094us;750us;1100us;750us;1104us;750us;1108us;750us;1114us;750us;1116us;750us;1121us;750us;1123us;750us;1125us;750us;1127us;750us;1129us;750us;1131us;750us;1135us;750us;1145us;750us;1152us;750us;1158us;750us;1160us;750us;1165us;750us;1169us;750us;1172us;750us;1176us;750us;1179us;750us;1182us;750us;1184us;750us;1187us;750us;1189us;750us;1238us;750us;1240us;750us;1244us;750us;1246us;750us;1248us;750us;1250us;750us;1252us;750us;1254us;750us;1256us;750us;1258us;750us;1260us;750us;1262us;750us;1264us;750us;1266us;750us;1268us;750us;1270us;750us;1272us;750us;1274us;750us;1276us;750us;1278us;750us;1280us;750us;1282us;750us;1284us;750us;1285us;750us;1286us;750us;1287us;750us;1290us;750us;1300us;750us;1325us;750us;1326us;750us;1330us;750us;1332us;750us;1335us;750us;1336us;750us;1338us;750us;1341us;750us;1343us;750us;1345us;750us;1347us;750us;1429us;750us;1436us;750us;1443us;750us;1450us;750us;1467us;750us;1474us;750us;1475us;750us;1481us;750us;1487us;750us;1488us;750us;1489us;750us;1501us;750us;1507us;750us;1517us;750us;1530us;750us;1532us;750us;1535us;750us;1536us;750us;1562us;750us;1567us;750us;1592us;750us;1634us;750us;1639us;750us;2019us;750us;2023us;750us;1us;65535us;772us;773us;1us;65535us;772us;775us;3us;65535us;772us;776us;777us;778us;779us;780us;2us;65535us;781us;782us;794us;785us;1us;65535us;767us;768us;4us;65535us;748us;749us;754us;755us;1604us;1605us;1606us;1607us;2us;65535us;795us;796us;798us;799us;5us;65535us;748us;795us;754us;795us;797us;798us;1604us;795us;1606us;795us;2us;65535us;546us;801us;800us;801us;1us;65535us;807us;808us;2us;65535us;807us;815us;811us;812us;1us;65535us;816us;817us;1us;65535us;817us;818us;1us;65535us;819us;820us;2us;65535us;819us;825us;823us;824us;301us;65535us;6us;862us;8us;1860us;31us;862us;111us;1860us;114us;862us;116us;862us;149us;1860us;178us;1860us;184us;1860us;188us;1860us;190us;1860us;201us;1860us;237us;862us;251us;862us;274us;862us;290us;1860us;331us;862us;335us;862us;340us;862us;385us;1860us;419us;862us;422us;862us;424us;862us;427us;862us;439us;1860us;446us;1860us;454us;1860us;465us;862us;468us;862us;481us;1860us;491us;862us;497us;1860us;522us;1860us;525us;862us;561us;1860us;569us;1860us;570us;1860us;612us;1860us;625us;1860us;629us;1860us;634us;1860us;639us;1860us;642us;1860us;652us;1860us;663us;1860us;678us;1860us;680us;1860us;683us;1860us;687us;1860us;689us;862us;700us;862us;704us;1860us;707us;1860us;710us;1860us;713us;1860us;729us;1860us;742us;1860us;751us;862us;757us;862us;804us;862us;807us;862us;811us;862us;821us;862us;827us;1860us;871us;1860us;897us;862us;899us;862us;900us;862us;904us;862us;905us;862us;908us;862us;910us;862us;911us;862us;920us;862us;924us;862us;925us;862us;927us;862us;929us;862us;932us;862us;934us;862us;936us;1860us;939us;862us;943us;862us;945us;862us;947us;862us;955us;862us;958us;862us;969us;862us;977us;862us;998us;862us;1000us;862us;1003us;1860us;1006us;862us;1007us;862us;1009us;862us;1010us;862us;1013us;862us;1015us;862us;1016us;862us;1022us;862us;1026us;862us;1028us;862us;1034us;862us;1044us;1860us;1050us;862us;1052us;862us;1055us;862us;1058us;862us;1076us;862us;1077us;862us;1081us;862us;1082us;862us;1088us;862us;1091us;862us;1094us;862us;1100us;862us;1104us;862us;1108us;862us;1114us;862us;1116us;862us;1121us;862us;1123us;862us;1125us;862us;1127us;862us;1129us;862us;1131us;862us;1133us;862us;1135us;862us;1145us;862us;1152us;862us;1158us;862us;1160us;862us;1164us;862us;1165us;862us;1169us;862us;1171us;862us;1172us;862us;1176us;862us;1179us;862us;1182us;862us;1184us;862us;1187us;862us;1189us;862us;1229us;1860us;1232us;1860us;1235us;1860us;1238us;862us;1240us;862us;1244us;862us;1246us;862us;1248us;862us;1250us;862us;1252us;862us;1254us;862us;1256us;862us;1258us;862us;1260us;862us;1262us;862us;1264us;862us;1266us;862us;1268us;862us;1270us;862us;1272us;862us;1274us;862us;1276us;862us;1278us;862us;1280us;862us;1282us;862us;1284us;862us;1285us;862us;1286us;862us;1287us;862us;1290us;862us;1300us;862us;1303us;862us;1305us;862us;1311us;862us;1318us;862us;1320us;862us;1325us;862us;1326us;862us;1330us;862us;1332us;862us;1335us;862us;1336us;862us;1338us;862us;1341us;862us;1343us;862us;1345us;862us;1347us;862us;1349us;862us;1350us;862us;1351us;862us;1352us;862us;1354us;862us;1355us;862us;1357us;862us;1358us;862us;1360us;862us;1361us;862us;1363us;862us;1364us;862us;1366us;862us;1367us;862us;1369us;862us;1370us;862us;1372us;1860us;1373us;1860us;1376us;862us;1377us;862us;1384us;862us;1386us;862us;1388us;862us;1389us;862us;1390us;862us;1391us;862us;1395us;862us;1400us;862us;1406us;862us;1407us;862us;1410us;862us;1411us;862us;1429us;862us;1436us;862us;1443us;862us;1450us;862us;1467us;862us;1474us;862us;1475us;862us;1481us;862us;1487us;862us;1488us;862us;1489us;862us;1501us;862us;1507us;862us;1515us;1860us;1517us;862us;1530us;862us;1532us;862us;1535us;862us;1536us;862us;1542us;862us;1548us;1860us;1551us;1860us;1553us;1860us;1555us;1860us;1557us;862us;1562us;862us;1567us;862us;1592us;862us;1617us;1860us;1625us;862us;1632us;862us;1634us;862us;1637us;862us;1639us;862us;1649us;862us;1651us;862us;1655us;1860us;1657us;1860us;1658us;1860us;1662us;1860us;1666us;1860us;1669us;1860us;1672us;1860us;1675us;1860us;1677us;1860us;1679us;1860us;1684us;1860us;1688us;1860us;1693us;1860us;1698us;1860us;1701us;1860us;1704us;1860us;1707us;1860us;1712us;1860us;1715us;1860us;1717us;1860us;1720us;1860us;1724us;1860us;1727us;1860us;1729us;1860us;1732us;1860us;1735us;1860us;1737us;1860us;1749us;1860us;1755us;1860us;1758us;1860us;1825us;1860us;1829us;1860us;1835us;1860us;1842us;1860us;1846us;1860us;1852us;1860us;1853us;1860us;1862us;862us;1876us;1860us;1878us;1860us;1889us;1860us;2019us;862us;2023us;862us;1us;65535us;856us;857us;4us;65535us;860us;861us;1742us;859us;1833us;859us;1904us;859us;3us;65535us;1742us;1743us;1833us;1834us;1904us;1905us;208us;65535us;6us;1456us;31us;1456us;114us;1456us;116us;1456us;237us;1456us;251us;1456us;274us;1456us;331us;1456us;335us;1456us;340us;1456us;419us;965us;422us;1456us;424us;965us;427us;1456us;465us;965us;468us;1456us;491us;1456us;525us;1456us;689us;1456us;700us;1456us;751us;1456us;757us;1456us;804us;965us;807us;1456us;811us;1456us;821us;1456us;897us;965us;899us;965us;900us;965us;904us;965us;905us;965us;908us;965us;910us;965us;911us;965us;920us;965us;924us;965us;925us;965us;927us;965us;929us;965us;932us;965us;934us;965us;939us;965us;943us;965us;945us;965us;947us;965us;955us;965us;958us;965us;969us;965us;977us;965us;998us;965us;1000us;965us;1006us;965us;1007us;965us;1009us;965us;1010us;965us;1013us;965us;1015us;965us;1016us;965us;1022us;965us;1026us;965us;1028us;1456us;1034us;1456us;1050us;1456us;1052us;1456us;1055us;1456us;1058us;1456us;1076us;965us;1077us;1456us;1081us;965us;1082us;1456us;1088us;1456us;1091us;1456us;1094us;1456us;1100us;1456us;1104us;1456us;1108us;1456us;1114us;1456us;1116us;1456us;1121us;1456us;1123us;1456us;1125us;1456us;1127us;1456us;1129us;1456us;1131us;1456us;1133us;965us;1135us;1456us;1145us;1456us;1152us;1456us;1158us;1456us;1160us;1456us;1164us;965us;1165us;1456us;1169us;1456us;1171us;965us;1172us;1456us;1176us;1456us;1179us;1456us;1182us;1456us;1184us;1456us;1187us;1456us;1189us;1456us;1238us;1456us;1240us;1456us;1244us;1456us;1246us;1456us;1248us;1456us;1250us;1456us;1252us;1456us;1254us;1456us;1256us;1456us;1258us;1456us;1260us;1456us;1262us;1456us;1264us;1456us;1266us;1456us;1268us;1456us;1270us;1456us;1272us;1456us;1274us;1456us;1276us;1456us;1278us;1456us;1280us;1456us;1282us;1456us;1284us;1456us;1285us;1456us;1286us;1456us;1287us;1456us;1290us;1456us;1300us;1456us;1303us;965us;1305us;965us;1311us;965us;1318us;965us;1320us;965us;1325us;1456us;1326us;1456us;1330us;1456us;1332us;1456us;1335us;1456us;1336us;1456us;1338us;1456us;1341us;1456us;1343us;1456us;1345us;1456us;1347us;1456us;1349us;1456us;1350us;1456us;1351us;1456us;1352us;1456us;1354us;1456us;1355us;1456us;1357us;1456us;1358us;1456us;1360us;1456us;1361us;1456us;1363us;1456us;1364us;1456us;1366us;1456us;1367us;1456us;1369us;1456us;1370us;1456us;1376us;1456us;1377us;1456us;1384us;1456us;1386us;1456us;1388us;1456us;1389us;1456us;1390us;1456us;1391us;1456us;1395us;1456us;1400us;1456us;1406us;1456us;1407us;1456us;1410us;1456us;1411us;1456us;1429us;1456us;1436us;1456us;1443us;1456us;1450us;1456us;1467us;1456us;1474us;1456us;1475us;1456us;1481us;1456us;1487us;1456us;1488us;1456us;1489us;1456us;1501us;1456us;1507us;1456us;1517us;1456us;1530us;1456us;1532us;1456us;1535us;1456us;1536us;1456us;1542us;1456us;1557us;1456us;1562us;1456us;1567us;1456us;1592us;1456us;1625us;1456us;1632us;965us;1634us;1456us;1637us;965us;1639us;1456us;1649us;965us;1651us;965us;1862us;1456us;2019us;1456us;2023us;1456us;3us;65535us;419us;420us;424us;425us;804us;805us;3us;65535us;874us;869us;875us;870us;878us;870us;2us;65535us;875us;876us;878us;879us;1us;65535us;365us;366us;1us;65535us;365us;877us;14us;65535us;419us;865us;424us;865us;804us;865us;899us;886us;900us;887us;904us;888us;905us;889us;908us;890us;910us;891us;911us;892us;1076us;893us;1081us;894us;1164us;895us;1171us;896us;14us;65535us;419us;901us;424us;901us;804us;901us;899us;901us;900us;901us;904us;901us;905us;901us;908us;901us;910us;901us;911us;901us;1076us;901us;1081us;901us;1164us;901us;1171us;901us;14us;65535us;419us;902us;424us;902us;804us;902us;899us;902us;900us;902us;904us;902us;905us;902us;908us;902us;910us;902us;911us;902us;1076us;902us;1081us;902us;1164us;902us;1171us;902us;3us;65535us;914us;915us;916us;917us;939us;940us;3us;65535us;914us;912us;916us;912us;939us;912us;40us;65535us;419us;903us;424us;903us;804us;903us;897us;898us;899us;903us;900us;903us;904us;903us;905us;903us;908us;903us;910us;903us;911us;903us;920us;1008us;939us;1008us;955us;1008us;958us;1008us;969us;1008us;977us;1008us;998us;999us;1000us;1008us;1006us;1008us;1007us;1008us;1009us;1008us;1010us;1008us;1013us;1008us;1015us;1008us;1016us;1008us;1022us;1008us;1026us;1008us;1076us;903us;1081us;903us;1133us;1008us;1164us;903us;1171us;903us;1303us;1008us;1305us;1008us;1311us;1008us;1318us;1008us;1320us;1008us;1649us;1008us;1651us;1008us;6us;65535us;924us;931us;925us;926us;927us;928us;929us;930us;932us;933us;934us;935us;11us;65535us;924us;942us;925us;942us;927us;942us;929us;942us;932us;942us;934us;942us;943us;944us;945us;946us;947us;948us;1632us;1633us;1637us;1638us;52us;65535us;419us;938us;424us;938us;465us;466us;804us;938us;897us;938us;899us;938us;900us;938us;904us;938us;905us;938us;908us;938us;910us;938us;911us;938us;920us;938us;924us;943us;925us;943us;927us;943us;929us;943us;932us;943us;934us;943us;939us;938us;943us;943us;945us;943us;947us;943us;955us;938us;958us;938us;969us;938us;977us;938us;998us;938us;1000us;938us;1006us;938us;1007us;938us;1009us;938us;1010us;938us;1013us;938us;1015us;938us;1016us;938us;1022us;938us;1026us;938us;1076us;938us;1081us;938us;1133us;938us;1164us;938us;1171us;938us;1303us;938us;1305us;938us;1311us;938us;1318us;938us;1320us;938us;1632us;943us;1637us;943us;1649us;938us;1651us;938us;2us;65535us;939us;970us;969us;970us;24us;65535us;920us;921us;939us;984us;955us;995us;958us;995us;969us;984us;977us;992us;1000us;985us;1006us;986us;1007us;987us;1009us;988us;1010us;989us;1013us;990us;1015us;991us;1016us;993us;1022us;994us;1026us;995us;1133us;996us;1303us;997us;1305us;997us;1311us;997us;1318us;997us;1320us;997us;1649us;997us;1651us;997us;24us;65535us;920us;1001us;939us;1001us;955us;1001us;958us;1001us;969us;1001us;977us;978us;1000us;1001us;1006us;1001us;1007us;1001us;1009us;1001us;1010us;1001us;1013us;1001us;1015us;1001us;1016us;1001us;1022us;1001us;1026us;1001us;1133us;1001us;1303us;1001us;1305us;1001us;1311us;1001us;1318us;1001us;1320us;1001us;1649us;1001us;1651us;1001us;24us;65535us;920us;1002us;939us;1002us;955us;1002us;958us;1002us;969us;1002us;977us;1002us;1000us;1002us;1006us;1002us;1007us;1002us;1009us;1002us;1010us;1002us;1013us;1002us;1015us;1002us;1016us;1002us;1022us;1002us;1026us;1002us;1133us;1002us;1303us;1002us;1305us;1002us;1311us;1002us;1318us;1002us;1320us;1002us;1649us;1002us;1651us;1002us;2us;65535us;950us;951us;1019us;1020us;2us;65535us;950us;1017us;1019us;1017us;3us;65535us;955us;956us;958us;959us;1026us;1027us;27us;65535us;274us;1092us;422us;423us;427us;428us;468us;469us;491us;492us;751us;752us;757us;758us;821us;822us;1058us;1092us;1077us;1078us;1082us;1083us;1091us;1092us;1094us;1095us;1114us;1115us;1135us;1136us;1145us;1146us;1152us;1153us;1165us;1166us;1169us;1170us;1172us;1173us;1176us;1177us;1182us;1183us;1184us;1185us;1290us;1291us;1332us;1333us;1336us;1337us;1634us;1635us;6us;65535us;1125us;1126us;1127us;1128us;1240us;1241us;1562us;1563us;1567us;1568us;1592us;1593us;5us;65535us;1108us;1109us;1189us;1190us;1326us;1327us;1530us;1531us;1639us;1640us;52us;65535us;6us;1047us;274us;1033us;422us;1033us;427us;1033us;468us;1033us;491us;1033us;751us;1033us;757us;1033us;807us;816us;811us;816us;821us;1033us;1028us;1029us;1034us;1035us;1055us;1056us;1058us;1033us;1077us;1033us;1082us;1033us;1088us;1089us;1091us;1033us;1094us;1033us;1100us;1101us;1104us;1105us;1108us;1039us;1114us;1033us;1135us;1033us;1145us;1033us;1152us;1033us;1165us;1033us;1169us;1033us;1172us;1033us;1176us;1033us;1179us;1180us;1182us;1033us;1184us;1033us;1189us;1039us;1290us;1033us;1300us;1301us;1326us;1039us;1332us;1033us;1336us;1033us;1443us;1448us;1450us;1451us;1467us;1468us;1474us;1476us;1475us;1476us;1487us;1509us;1488us;1509us;1489us;1509us;1507us;1508us;1530us;1039us;1634us;1033us;1639us;1039us;1us;65535us;6us;7us;57us;65535us;6us;1043us;274us;1043us;422us;1043us;427us;1043us;468us;1043us;491us;1043us;751us;1043us;757us;1043us;807us;1043us;811us;1043us;821us;1043us;1028us;1043us;1034us;1043us;1050us;1051us;1052us;1053us;1055us;1043us;1058us;1043us;1077us;1043us;1082us;1043us;1088us;1043us;1091us;1043us;1094us;1043us;1100us;1043us;1104us;1043us;1108us;1043us;1114us;1043us;1135us;1043us;1145us;1043us;1152us;1043us;1165us;1043us;1169us;1043us;1172us;1043us;1176us;1043us;1179us;1043us;1182us;1043us;1184us;1043us;1189us;1043us;1290us;1043us;1300us;1043us;1326us;1043us;1332us;1043us;1336us;1043us;1429us;1527us;1443us;1043us;1450us;1043us;1467us;1043us;1474us;1043us;1475us;1043us;1481us;1528us;1487us;1043us;1488us;1043us;1489us;1043us;1507us;1043us;1517us;1529us;1530us;1043us;1634us;1043us;1639us;1043us;193us;65535us;53us;56us;58us;60us;75us;78us;153us;155us;159us;161us;163us;165us;167us;169us;190us;192us;210us;212us;242us;245us;284us;285us;287us;289us;290us;292us;297us;299us;300us;302us;307us;309us;317us;2064us;319us;2064us;367us;370us;375us;378us;389us;2064us;395us;396us;399us;400us;426us;430us;442us;445us;446us;449us;465us;473us;467us;2064us;479us;485us;480us;484us;481us;483us;488us;496us;490us;2064us;497us;499us;522us;2064us;530us;532us;538us;540us;564us;565us;575us;577us;584us;586us;594us;599us;677us;679us;680us;686us;683us;685us;704us;706us;728us;732us;729us;731us;737us;740us;742us;744us;755us;766us;758us;766us;806us;810us;812us;814us;871us;873us;878us;885us;879us;882us;904us;2064us;905us;2064us;908us;2064us;918us;923us;919us;923us;920us;922us;939us;975us;969us;975us;970us;972us;977us;983us;978us;980us;996us;1157us;1003us;1005us;1009us;2064us;1010us;2064us;1013us;2064us;1021us;1024us;1022us;1023us;1029us;1031us;1044us;1046us;1083us;766us;1101us;1103us;1105us;1107us;1108us;1041us;1109us;1111us;1116us;1120us;1117us;1119us;1129us;1297us;1131us;1297us;1133us;2064us;1134us;2064us;1135us;2064us;1136us;2064us;1144us;1151us;1145us;1150us;1146us;1148us;1158us;1162us;1160us;1163us;1173us;766us;1185us;766us;1189us;1041us;1214us;1296us;1218us;1340us;1229us;1231us;1232us;1234us;1235us;1237us;1243us;1438us;1244us;2064us;1246us;2064us;1248us;2064us;1250us;2064us;1252us;2064us;1254us;2064us;1256us;2064us;1258us;2064us;1260us;2064us;1262us;2064us;1264us;2064us;1266us;2064us;1268us;2064us;1270us;2064us;1272us;2064us;1274us;2064us;1276us;2064us;1278us;2064us;1280us;2064us;1282us;2064us;1291us;1293us;1305us;1309us;1306us;1308us;1316us;1324us;1317us;1323us;1318us;1322us;1326us;1041us;1330us;1331us;1332us;1334us;1341us;2064us;1343us;2064us;1345us;2064us;1347us;2064us;1380us;1442us;1390us;1401us;1417us;1442us;1420us;1442us;1429us;1434us;1430us;1432us;1450us;1455us;1451us;1453us;1468us;1470us;1474us;1480us;1475us;1480us;1476us;1478us;1481us;1486us;1482us;1484us;1487us;1500us;1488us;1500us;1489us;1500us;1491us;2058us;1517us;1522us;1518us;1520us;1530us;1041us;1532us;2064us;1562us;1566us;1591us;2064us;1592us;2064us;1625us;1630us;1626us;1628us;1639us;1042us;1640us;1642us;1658us;1660us;1662us;1664us;1666us;1668us;1672us;1674us;1679us;1681us;1684us;1686us;1688us;1690us;1693us;1695us;1698us;1700us;1704us;1706us;1712us;1714us;1717us;1719us;1720us;1722us;1724us;1726us;1729us;1731us;1744us;1858us;1828us;1881us;1847us;1850us;1848us;1850us;1852us;1859us;1853us;1857us;1854us;1856us;1871us;2064us;1876us;1887us;1878us;2064us;1883us;2064us;1924us;2064us;1974us;2064us;4us;65535us;1079us;1080us;1085us;1086us;1168us;1169us;1175us;1176us;116us;65535us;6us;1049us;31us;32us;114us;115us;116us;117us;237us;252us;251us;252us;274us;1049us;422us;1049us;427us;1049us;468us;1049us;491us;1049us;751us;1049us;757us;1049us;807us;1049us;811us;1049us;821us;1049us;1028us;1049us;1034us;1049us;1050us;1049us;1052us;1049us;1055us;1049us;1058us;1049us;1077us;1049us;1082us;1049us;1088us;1049us;1091us;1049us;1094us;1049us;1100us;1049us;1104us;1049us;1108us;1049us;1114us;1049us;1116us;1117us;1121us;1122us;1123us;1124us;1125us;1038us;1127us;1038us;1129us;1214us;1131us;1214us;1135us;1049us;1145us;1049us;1152us;1049us;1158us;1159us;1160us;1161us;1165us;1049us;1169us;1049us;1172us;1049us;1176us;1049us;1179us;1049us;1182us;1049us;1184us;1049us;1187us;1188us;1189us;1049us;1238us;1191us;1240us;1038us;1244us;1192us;1246us;1193us;1248us;1194us;1250us;1195us;1252us;1196us;1254us;1197us;1256us;1198us;1258us;1199us;1260us;1200us;1262us;1201us;1264us;1202us;1266us;1203us;1268us;1204us;1270us;1205us;1272us;1206us;1274us;1207us;1276us;1208us;1278us;1209us;1280us;1210us;1282us;1211us;1284us;1212us;1285us;1213us;1286us;1213us;1287us;1213us;1290us;1049us;1300us;1049us;1325us;1215us;1326us;1049us;1330us;1216us;1332us;1049us;1335us;1217us;1336us;1049us;1338us;1218us;1341us;1219us;1343us;1220us;1345us;1221us;1347us;1223us;1429us;1049us;1436us;1222us;1443us;1049us;1450us;1049us;1467us;1049us;1474us;1049us;1475us;1049us;1481us;1049us;1487us;1049us;1488us;1049us;1489us;1049us;1501us;1224us;1507us;1049us;1517us;1049us;1530us;1049us;1532us;1225us;1535us;1226us;1536us;1227us;1562us;1038us;1567us;1038us;1592us;1038us;1634us;1049us;1639us;1049us;2019us;1228us;2023us;1228us;2us;65535us;1129us;1130us;1131us;1132us;1us;65535us;1425us;1426us;4us;65535us;1101us;1102us;1105us;1106us;1109us;1110us;1112us;1113us;4us;65535us;1303us;1304us;1305us;1306us;1649us;1650us;1651us;1652us;7us;65535us;1303us;1316us;1305us;1316us;1311us;1316us;1318us;1316us;1320us;1316us;1649us;1316us;1651us;1316us;7us;65535us;1303us;1310us;1305us;1310us;1311us;1312us;1318us;1319us;1320us;1321us;1649us;1310us;1651us;1310us;1us;65535us;997us;1315us;1us;65535us;1316us;1317us;2us;65535us;1117us;1118us;1218us;1339us;2us;65535us;1117us;1328us;1218us;1328us;1us;65535us;1328us;1329us;116us;65535us;6us;1242us;31us;1242us;114us;1242us;116us;1242us;237us;1242us;251us;1242us;274us;1242us;422us;1242us;427us;1242us;468us;1242us;491us;1242us;751us;1242us;757us;1242us;807us;1242us;811us;1242us;821us;1242us;1028us;1242us;1034us;1242us;1050us;1242us;1052us;1242us;1055us;1242us;1058us;1242us;1077us;1242us;1082us;1242us;1088us;1242us;1091us;1242us;1094us;1242us;1100us;1242us;1104us;1242us;1108us;1242us;1114us;1242us;1116us;1242us;1121us;1242us;1123us;1242us;1125us;1242us;1127us;1242us;1129us;1242us;1131us;1242us;1135us;1242us;1145us;1242us;1152us;1242us;1158us;1242us;1160us;1242us;1165us;1242us;1169us;1242us;1172us;1242us;1176us;1242us;1179us;1242us;1182us;1242us;1184us;1242us;1187us;1242us;1189us;1242us;1238us;1242us;1240us;1242us;1244us;1242us;1246us;1242us;1248us;1242us;1250us;1242us;1252us;1242us;1254us;1242us;1256us;1242us;1258us;1242us;1260us;1242us;1262us;1242us;1264us;1242us;1266us;1242us;1268us;1242us;1270us;1242us;1272us;1242us;1274us;1242us;1276us;1242us;1278us;1242us;1280us;1242us;1282us;1242us;1284us;1242us;1285us;1242us;1286us;1242us;1287us;1242us;1290us;1242us;1300us;1242us;1325us;1242us;1326us;1242us;1330us;1242us;1332us;1242us;1335us;1242us;1336us;1242us;1338us;1242us;1341us;1242us;1343us;1242us;1345us;1242us;1347us;1242us;1429us;1242us;1436us;1243us;1443us;1242us;1450us;1242us;1467us;1242us;1474us;1242us;1475us;1242us;1481us;1242us;1487us;1242us;1488us;1242us;1489us;1242us;1501us;1242us;1507us;1242us;1517us;1242us;1530us;1242us;1532us;1242us;1535us;1242us;1536us;1242us;1562us;1242us;1567us;1242us;1592us;1242us;1634us;1242us;1639us;1242us;2019us;1242us;2023us;1242us;134us;65535us;6us;1239us;31us;1239us;114us;1239us;116us;1239us;237us;1239us;251us;1239us;274us;1239us;422us;1239us;427us;1239us;468us;1239us;491us;1239us;751us;1239us;757us;1239us;807us;1239us;811us;1239us;821us;1239us;1028us;1239us;1034us;1239us;1050us;1239us;1052us;1239us;1055us;1239us;1058us;1239us;1077us;1239us;1082us;1239us;1088us;1239us;1091us;1239us;1094us;1239us;1100us;1239us;1104us;1239us;1108us;1239us;1114us;1239us;1116us;1239us;1121us;1239us;1123us;1239us;1125us;1239us;1127us;1239us;1129us;1239us;1131us;1239us;1135us;1239us;1145us;1239us;1152us;1239us;1158us;1239us;1160us;1239us;1165us;1239us;1169us;1239us;1172us;1239us;1176us;1239us;1179us;1239us;1182us;1239us;1184us;1239us;1187us;1239us;1189us;1239us;1238us;1239us;1240us;1239us;1244us;1239us;1246us;1239us;1248us;1239us;1250us;1239us;1252us;1239us;1254us;1239us;1256us;1239us;1258us;1239us;1260us;1239us;1262us;1239us;1264us;1239us;1266us;1239us;1268us;1239us;1270us;1239us;1272us;1239us;1274us;1239us;1276us;1239us;1278us;1239us;1280us;1239us;1282us;1239us;1284us;1239us;1285us;1239us;1286us;1239us;1287us;1239us;1290us;1239us;1300us;1239us;1325us;1239us;1326us;1239us;1330us;1239us;1332us;1239us;1335us;1239us;1336us;1239us;1338us;1239us;1341us;1239us;1343us;1239us;1345us;1239us;1347us;1239us;1349us;1353us;1350us;1353us;1351us;1353us;1352us;1353us;1354us;1356us;1355us;1356us;1357us;1359us;1358us;1359us;1360us;1362us;1361us;1362us;1363us;1365us;1364us;1365us;1366us;1368us;1367us;1368us;1369us;1371us;1370us;1371us;1384us;1385us;1386us;1387us;1429us;1239us;1436us;1239us;1443us;1239us;1450us;1239us;1467us;1239us;1474us;1239us;1475us;1239us;1481us;1239us;1487us;1239us;1488us;1239us;1489us;1239us;1501us;1239us;1507us;1239us;1517us;1239us;1530us;1239us;1532us;1239us;1535us;1239us;1536us;1239us;1562us;1239us;1567us;1239us;1592us;1239us;1634us;1239us;1639us;1239us;2019us;1239us;2023us;1239us;136us;65535us;6us;1388us;31us;1388us;114us;1388us;116us;1388us;237us;1388us;251us;1388us;274us;1388us;422us;1388us;427us;1388us;468us;1388us;491us;1388us;751us;1388us;757us;1388us;807us;1388us;811us;1388us;821us;1388us;1028us;1388us;1034us;1388us;1050us;1388us;1052us;1388us;1055us;1388us;1058us;1388us;1077us;1388us;1082us;1388us;1088us;1388us;1091us;1388us;1094us;1388us;1100us;1388us;1104us;1388us;1108us;1388us;1114us;1388us;1116us;1388us;1121us;1388us;1123us;1388us;1125us;1388us;1127us;1388us;1129us;1388us;1131us;1388us;1135us;1388us;1145us;1388us;1152us;1388us;1158us;1388us;1160us;1388us;1165us;1388us;1169us;1388us;1172us;1388us;1176us;1388us;1179us;1388us;1182us;1388us;1184us;1388us;1187us;1388us;1189us;1388us;1238us;1388us;1240us;1388us;1244us;1388us;1246us;1388us;1248us;1388us;1250us;1388us;1252us;1388us;1254us;1388us;1256us;1388us;1258us;1388us;1260us;1388us;1262us;1388us;1264us;1388us;1266us;1388us;1268us;1388us;1270us;1388us;1272us;1388us;1274us;1388us;1276us;1388us;1278us;1388us;1280us;1388us;1282us;1388us;1284us;1388us;1285us;1388us;1286us;1388us;1287us;1388us;1290us;1388us;1300us;1388us;1325us;1388us;1326us;1388us;1330us;1388us;1332us;1388us;1335us;1388us;1336us;1388us;1338us;1388us;1341us;1388us;1343us;1388us;1345us;1388us;1347us;1388us;1349us;1388us;1350us;1388us;1351us;1388us;1352us;1388us;1354us;1388us;1355us;1388us;1357us;1388us;1358us;1388us;1360us;1388us;1361us;1388us;1363us;1388us;1364us;1388us;1366us;1388us;1367us;1388us;1369us;1388us;1370us;1388us;1384us;1388us;1386us;1388us;1400us;1390us;1429us;1388us;1436us;1388us;1443us;1388us;1450us;1388us;1467us;1388us;1474us;1388us;1475us;1388us;1481us;1388us;1487us;1388us;1488us;1388us;1489us;1388us;1501us;1388us;1507us;1388us;1517us;1389us;1530us;1388us;1532us;1388us;1535us;1388us;1536us;1388us;1562us;1388us;1567us;1388us;1592us;1388us;1625us;1391us;1634us;1388us;1639us;1388us;2019us;1388us;2023us;1388us;5us;65535us;1388us;1392us;1389us;1392us;1390us;1392us;1391us;1392us;1542us;1545us;149us;65535us;6us;1394us;31us;1394us;114us;1394us;116us;1394us;237us;1394us;251us;1394us;274us;1394us;422us;1394us;427us;1394us;468us;1394us;491us;1394us;689us;690us;700us;701us;751us;1394us;757us;1394us;807us;1394us;811us;1394us;821us;1394us;1028us;1394us;1034us;1394us;1050us;1394us;1052us;1394us;1055us;1394us;1058us;1394us;1077us;1394us;1082us;1394us;1088us;1394us;1091us;1394us;1094us;1394us;1100us;1394us;1104us;1394us;1108us;1394us;1114us;1394us;1116us;1394us;1121us;1394us;1123us;1394us;1125us;1394us;1127us;1394us;1129us;1394us;1131us;1394us;1135us;1394us;1145us;1394us;1152us;1394us;1158us;1394us;1160us;1394us;1165us;1394us;1169us;1394us;1172us;1394us;1176us;1394us;1179us;1394us;1182us;1394us;1184us;1394us;1187us;1394us;1189us;1394us;1238us;1394us;1240us;1394us;1244us;1394us;1246us;1394us;1248us;1394us;1250us;1394us;1252us;1394us;1254us;1394us;1256us;1394us;1258us;1394us;1260us;1394us;1262us;1394us;1264us;1394us;1266us;1394us;1268us;1394us;1270us;1394us;1272us;1394us;1274us;1394us;1276us;1394us;1278us;1394us;1280us;1394us;1282us;1394us;1284us;1394us;1285us;1394us;1286us;1394us;1287us;1394us;1290us;1394us;1300us;1394us;1325us;1394us;1326us;1394us;1330us;1394us;1332us;1394us;1335us;1394us;1336us;1394us;1338us;1394us;1341us;1394us;1343us;1394us;1345us;1394us;1347us;1394us;1349us;1394us;1350us;1394us;1351us;1394us;1352us;1394us;1354us;1394us;1355us;1394us;1357us;1394us;1358us;1394us;1360us;1394us;1361us;1394us;1363us;1394us;1364us;1394us;1366us;1394us;1367us;1394us;1369us;1394us;1370us;1394us;1384us;1394us;1386us;1394us;1388us;1397us;1389us;1397us;1390us;1397us;1391us;1397us;1395us;1396us;1400us;1393us;1406us;1402us;1407us;1403us;1410us;1404us;1411us;1404us;1429us;1394us;1436us;1394us;1443us;1394us;1450us;1394us;1467us;1394us;1474us;1394us;1475us;1394us;1481us;1394us;1487us;1394us;1488us;1394us;1489us;1394us;1501us;1394us;1507us;1394us;1517us;1394us;1530us;1394us;1532us;1394us;1535us;1394us;1536us;1394us;1542us;1397us;1562us;1394us;1567us;1394us;1592us;1394us;1625us;1394us;1634us;1394us;1639us;1394us;1862us;1405us;2019us;1394us;2023us;1394us;3us;65535us;1380us;1381us;1417us;1418us;1420us;1421us;156us;65535us;6us;1439us;31us;1439us;114us;1439us;116us;1439us;237us;1439us;251us;1439us;274us;1439us;331us;1546us;335us;1546us;340us;1546us;422us;1439us;427us;1439us;468us;1439us;491us;1439us;525us;526us;689us;1439us;700us;1439us;751us;1439us;757us;1439us;807us;1439us;811us;1439us;821us;1439us;1028us;1439us;1034us;1439us;1050us;1439us;1052us;1439us;1055us;1439us;1058us;1439us;1077us;1439us;1082us;1439us;1088us;1439us;1091us;1439us;1094us;1439us;1100us;1439us;1104us;1439us;1108us;1439us;1114us;1439us;1116us;1439us;1121us;1439us;1123us;1439us;1125us;1439us;1127us;1439us;1129us;1439us;1131us;1439us;1135us;1439us;1145us;1439us;1152us;1439us;1158us;1439us;1160us;1439us;1165us;1439us;1169us;1439us;1172us;1439us;1176us;1439us;1179us;1439us;1182us;1439us;1184us;1439us;1187us;1439us;1189us;1439us;1238us;1439us;1240us;1439us;1244us;1439us;1246us;1439us;1248us;1439us;1250us;1439us;1252us;1439us;1254us;1439us;1256us;1439us;1258us;1439us;1260us;1439us;1262us;1439us;1264us;1439us;1266us;1439us;1268us;1439us;1270us;1439us;1272us;1439us;1274us;1439us;1276us;1439us;1278us;1439us;1280us;1439us;1282us;1439us;1284us;1439us;1285us;1439us;1286us;1439us;1287us;1439us;1290us;1439us;1300us;1439us;1325us;1439us;1326us;1439us;1330us;1439us;1332us;1439us;1335us;1439us;1336us;1439us;1338us;1439us;1341us;1439us;1343us;1439us;1345us;1439us;1347us;1439us;1349us;1439us;1350us;1439us;1351us;1439us;1352us;1439us;1354us;1439us;1355us;1439us;1357us;1439us;1358us;1439us;1360us;1439us;1361us;1439us;1363us;1439us;1364us;1439us;1366us;1439us;1367us;1439us;1369us;1439us;1370us;1439us;1376us;1378us;1377us;1379us;1384us;1439us;1386us;1439us;1388us;1439us;1389us;1439us;1390us;1439us;1391us;1439us;1395us;1439us;1400us;1439us;1406us;1439us;1407us;1439us;1410us;1439us;1411us;1439us;1429us;1439us;1436us;1439us;1443us;1439us;1450us;1439us;1467us;1439us;1474us;1439us;1475us;1439us;1481us;1439us;1487us;1439us;1488us;1439us;1489us;1439us;1501us;1439us;1507us;1439us;1517us;1439us;1530us;1439us;1532us;1439us;1535us;1439us;1536us;1439us;1542us;1439us;1557us;1546us;1562us;1439us;1567us;1439us;1592us;1439us;1625us;1439us;1634us;1439us;1639us;1439us;1862us;1439us;2019us;1439us;2023us;1439us;156us;65535us;6us;1466us;31us;1466us;114us;1466us;116us;1466us;237us;1466us;251us;1466us;274us;1466us;331us;1466us;335us;1466us;340us;1466us;422us;1466us;427us;1466us;468us;1466us;491us;1466us;525us;1466us;689us;1466us;700us;1466us;751us;1466us;757us;1466us;807us;1466us;811us;1466us;821us;1466us;1028us;1466us;1034us;1466us;1050us;1466us;1052us;1466us;1055us;1466us;1058us;1466us;1077us;1466us;1082us;1466us;1088us;1466us;1091us;1466us;1094us;1466us;1100us;1466us;1104us;1466us;1108us;1466us;1114us;1466us;1116us;1466us;1121us;1466us;1123us;1466us;1125us;1466us;1127us;1466us;1129us;1466us;1131us;1466us;1135us;1466us;1145us;1466us;1152us;1466us;1158us;1466us;1160us;1466us;1165us;1466us;1169us;1466us;1172us;1466us;1176us;1466us;1179us;1466us;1182us;1466us;1184us;1466us;1187us;1466us;1189us;1466us;1238us;1466us;1240us;1466us;1244us;1466us;1246us;1466us;1248us;1466us;1250us;1466us;1252us;1466us;1254us;1466us;1256us;1466us;1258us;1466us;1260us;1466us;1262us;1466us;1264us;1466us;1266us;1466us;1268us;1466us;1270us;1466us;1272us;1466us;1274us;1466us;1276us;1466us;1278us;1466us;1280us;1466us;1282us;1466us;1284us;1466us;1285us;1466us;1286us;1466us;1287us;1466us;1290us;1466us;1300us;1466us;1325us;1466us;1326us;1466us;1330us;1466us;1332us;1466us;1335us;1466us;1336us;1466us;1338us;1466us;1341us;1466us;1343us;1466us;1345us;1466us;1347us;1466us;1349us;1466us;1350us;1466us;1351us;1466us;1352us;1466us;1354us;1466us;1355us;1466us;1357us;1466us;1358us;1466us;1360us;1466us;1361us;1466us;1363us;1466us;1364us;1466us;1366us;1466us;1367us;1466us;1369us;1466us;1370us;1466us;1376us;1466us;1377us;1466us;1384us;1466us;1386us;1466us;1388us;1466us;1389us;1466us;1390us;1466us;1391us;1466us;1395us;1466us;1400us;1466us;1406us;1466us;1407us;1466us;1410us;1466us;1411us;1466us;1429us;1466us;1436us;1466us;1443us;1466us;1450us;1466us;1467us;1466us;1474us;1466us;1475us;1466us;1481us;1466us;1487us;1466us;1488us;1466us;1489us;1466us;1501us;1466us;1507us;1466us;1517us;1466us;1530us;1466us;1532us;1466us;1535us;1466us;1536us;1466us;1542us;1466us;1557us;1466us;1562us;1466us;1567us;1466us;1592us;1466us;1625us;1466us;1634us;1466us;1639us;1466us;1862us;1466us;2019us;1466us;2023us;1466us;208us;65535us;6us;1464us;31us;1464us;114us;1464us;116us;1464us;237us;1464us;251us;1464us;274us;1464us;331us;1464us;335us;1464us;340us;1464us;419us;949us;422us;1464us;424us;949us;427us;1464us;465us;949us;468us;1464us;491us;1464us;525us;1464us;689us;1464us;700us;1464us;751us;1464us;757us;1464us;804us;949us;807us;1464us;811us;1464us;821us;1464us;897us;949us;899us;949us;900us;949us;904us;949us;905us;949us;908us;949us;910us;949us;911us;949us;920us;949us;924us;949us;925us;949us;927us;949us;929us;949us;932us;949us;934us;949us;939us;949us;943us;949us;945us;949us;947us;949us;955us;949us;958us;949us;969us;949us;977us;949us;998us;949us;1000us;949us;1006us;949us;1007us;949us;1009us;949us;1010us;949us;1013us;949us;1015us;949us;1016us;949us;1022us;949us;1026us;949us;1028us;1464us;1034us;1464us;1050us;1464us;1052us;1464us;1055us;1464us;1058us;1464us;1076us;949us;1077us;1464us;1081us;949us;1082us;1464us;1088us;1464us;1091us;1464us;1094us;1464us;1100us;1464us;1104us;1464us;1108us;1464us;1114us;1464us;1116us;1464us;1121us;1464us;1123us;1464us;1125us;1464us;1127us;1464us;1129us;1464us;1131us;1464us;1133us;949us;1135us;1464us;1145us;1464us;1152us;1464us;1158us;1464us;1160us;1464us;1164us;949us;1165us;1464us;1169us;1464us;1171us;949us;1172us;1464us;1176us;1464us;1179us;1464us;1182us;1464us;1184us;1464us;1187us;1464us;1189us;1464us;1238us;1464us;1240us;1464us;1244us;1464us;1246us;1464us;1248us;1464us;1250us;1464us;1252us;1464us;1254us;1464us;1256us;1464us;1258us;1464us;1260us;1464us;1262us;1464us;1264us;1464us;1266us;1464us;1268us;1464us;1270us;1464us;1272us;1464us;1274us;1464us;1276us;1464us;1278us;1464us;1280us;1464us;1282us;1464us;1284us;1464us;1285us;1464us;1286us;1464us;1287us;1464us;1290us;1464us;1300us;1464us;1303us;949us;1305us;949us;1311us;949us;1318us;949us;1320us;949us;1325us;1464us;1326us;1464us;1330us;1464us;1332us;1464us;1335us;1464us;1336us;1464us;1338us;1464us;1341us;1464us;1343us;1464us;1345us;1464us;1347us;1464us;1349us;1464us;1350us;1464us;1351us;1464us;1352us;1464us;1354us;1464us;1355us;1464us;1357us;1464us;1358us;1464us;1360us;1464us;1361us;1464us;1363us;1464us;1364us;1464us;1366us;1464us;1367us;1464us;1369us;1464us;1370us;1464us;1376us;1464us;1377us;1464us;1384us;1464us;1386us;1464us;1388us;1464us;1389us;1464us;1390us;1464us;1391us;1464us;1395us;1464us;1400us;1464us;1406us;1464us;1407us;1464us;1410us;1464us;1411us;1464us;1429us;1464us;1436us;1464us;1443us;1464us;1450us;1464us;1467us;1464us;1474us;1464us;1475us;1464us;1481us;1464us;1487us;1464us;1488us;1464us;1489us;1464us;1501us;1464us;1507us;1464us;1517us;1464us;1530us;1464us;1532us;1464us;1535us;1464us;1536us;1464us;1542us;1464us;1557us;1464us;1562us;1464us;1567us;1464us;1592us;1464us;1625us;1464us;1632us;949us;1634us;1464us;1637us;949us;1639us;1464us;1649us;949us;1651us;949us;1862us;1464us;2019us;1464us;2023us;1464us;156us;65535us;6us;1465us;31us;1465us;114us;1465us;116us;1465us;237us;1465us;251us;1465us;274us;1465us;331us;1465us;335us;1465us;340us;1465us;422us;1465us;427us;1465us;468us;1465us;491us;1465us;525us;1465us;689us;1465us;700us;1465us;751us;1465us;757us;1465us;807us;1465us;811us;1465us;821us;1465us;1028us;1465us;1034us;1465us;1050us;1465us;1052us;1465us;1055us;1465us;1058us;1465us;1077us;1465us;1082us;1465us;1088us;1465us;1091us;1465us;1094us;1465us;1100us;1465us;1104us;1465us;1108us;1465us;1114us;1465us;1116us;1465us;1121us;1465us;1123us;1465us;1125us;1465us;1127us;1465us;1129us;1465us;1131us;1465us;1135us;1465us;1145us;1465us;1152us;1465us;1158us;1465us;1160us;1465us;1165us;1465us;1169us;1465us;1172us;1465us;1176us;1465us;1179us;1465us;1182us;1465us;1184us;1465us;1187us;1465us;1189us;1465us;1238us;1465us;1240us;1465us;1244us;1465us;1246us;1465us;1248us;1465us;1250us;1465us;1252us;1465us;1254us;1465us;1256us;1465us;1258us;1465us;1260us;1465us;1262us;1465us;1264us;1465us;1266us;1465us;1268us;1465us;1270us;1465us;1272us;1465us;1274us;1465us;1276us;1465us;1278us;1465us;1280us;1465us;1282us;1465us;1284us;1465us;1285us;1465us;1286us;1465us;1287us;1465us;1290us;1465us;1300us;1465us;1325us;1465us;1326us;1465us;1330us;1465us;1332us;1465us;1335us;1465us;1336us;1465us;1338us;1465us;1341us;1465us;1343us;1465us;1345us;1465us;1347us;1465us;1349us;1465us;1350us;1465us;1351us;1465us;1352us;1465us;1354us;1465us;1355us;1465us;1357us;1465us;1358us;1465us;1360us;1465us;1361us;1465us;1363us;1465us;1364us;1465us;1366us;1465us;1367us;1465us;1369us;1465us;1370us;1465us;1376us;1465us;1377us;1465us;1384us;1465us;1386us;1465us;1388us;1465us;1389us;1465us;1390us;1465us;1391us;1465us;1395us;1465us;1400us;1465us;1406us;1465us;1407us;1465us;1410us;1465us;1411us;1465us;1429us;1465us;1436us;1465us;1443us;1465us;1450us;1465us;1467us;1465us;1474us;1465us;1475us;1465us;1481us;1465us;1487us;1465us;1488us;1465us;1489us;1465us;1501us;1465us;1507us;1465us;1517us;1465us;1530us;1465us;1532us;1465us;1535us;1465us;1536us;1465us;1542us;1465us;1557us;1465us;1562us;1465us;1567us;1465us;1592us;1465us;1625us;1465us;1634us;1465us;1639us;1465us;1862us;1465us;2019us;1465us;2023us;1465us;156us;65535us;6us;1457us;31us;1457us;114us;1457us;116us;1457us;237us;1457us;251us;1457us;274us;1457us;331us;1457us;335us;1457us;340us;1457us;422us;1457us;427us;1457us;468us;1457us;491us;1457us;525us;1457us;689us;1457us;700us;1457us;751us;1457us;757us;1457us;807us;1457us;811us;1457us;821us;1457us;1028us;1457us;1034us;1457us;1050us;1457us;1052us;1457us;1055us;1457us;1058us;1457us;1077us;1457us;1082us;1457us;1088us;1457us;1091us;1457us;1094us;1457us;1100us;1457us;1104us;1457us;1108us;1457us;1114us;1457us;1116us;1457us;1121us;1457us;1123us;1457us;1125us;1457us;1127us;1457us;1129us;1457us;1131us;1457us;1135us;1457us;1145us;1457us;1152us;1457us;1158us;1457us;1160us;1457us;1165us;1457us;1169us;1457us;1172us;1457us;1176us;1457us;1179us;1457us;1182us;1457us;1184us;1457us;1187us;1457us;1189us;1457us;1238us;1457us;1240us;1457us;1244us;1457us;1246us;1457us;1248us;1457us;1250us;1457us;1252us;1457us;1254us;1457us;1256us;1457us;1258us;1457us;1260us;1457us;1262us;1457us;1264us;1457us;1266us;1457us;1268us;1457us;1270us;1457us;1272us;1457us;1274us;1457us;1276us;1457us;1278us;1457us;1280us;1457us;1282us;1457us;1284us;1457us;1285us;1457us;1286us;1457us;1287us;1457us;1290us;1457us;1300us;1457us;1325us;1457us;1326us;1457us;1330us;1457us;1332us;1457us;1335us;1457us;1336us;1457us;1338us;1457us;1341us;1457us;1343us;1457us;1345us;1457us;1347us;1457us;1349us;1457us;1350us;1457us;1351us;1457us;1352us;1457us;1354us;1457us;1355us;1457us;1357us;1457us;1358us;1457us;1360us;1457us;1361us;1457us;1363us;1457us;1364us;1457us;1366us;1457us;1367us;1457us;1369us;1457us;1370us;1457us;1376us;1457us;1377us;1457us;1384us;1457us;1386us;1457us;1388us;1457us;1389us;1457us;1390us;1457us;1391us;1457us;1395us;1457us;1400us;1457us;1406us;1457us;1407us;1457us;1410us;1457us;1411us;1457us;1429us;1457us;1436us;1457us;1443us;1457us;1450us;1457us;1467us;1457us;1474us;1457us;1475us;1457us;1481us;1457us;1487us;1457us;1488us;1457us;1489us;1457us;1501us;1457us;1507us;1457us;1517us;1457us;1530us;1457us;1532us;1457us;1535us;1457us;1536us;1457us;1542us;1457us;1557us;1457us;1562us;1457us;1567us;1457us;1592us;1457us;1625us;1457us;1634us;1457us;1639us;1457us;1862us;1457us;2019us;1457us;2023us;1457us;3us;65535us;1487us;1491us;1488us;1491us;1489us;1491us;3us;65535us;1487us;1503us;1488us;1503us;1489us;1503us;1us;65535us;1488us;1513us;156us;65535us;6us;1458us;31us;1458us;114us;1458us;116us;1458us;237us;1458us;251us;1458us;274us;1458us;331us;1458us;335us;1458us;340us;1458us;422us;1458us;427us;1458us;468us;1458us;491us;1458us;525us;1458us;689us;1458us;700us;1458us;751us;1458us;757us;1458us;807us;1458us;811us;1458us;821us;1458us;1028us;1458us;1034us;1458us;1050us;1458us;1052us;1458us;1055us;1458us;1058us;1458us;1077us;1458us;1082us;1458us;1088us;1458us;1091us;1458us;1094us;1458us;1100us;1458us;1104us;1458us;1108us;1458us;1114us;1458us;1116us;1458us;1121us;1458us;1123us;1458us;1125us;1458us;1127us;1458us;1129us;1458us;1131us;1458us;1135us;1458us;1145us;1458us;1152us;1458us;1158us;1458us;1160us;1458us;1165us;1458us;1169us;1458us;1172us;1458us;1176us;1458us;1179us;1458us;1182us;1458us;1184us;1458us;1187us;1458us;1189us;1458us;1238us;1458us;1240us;1458us;1244us;1458us;1246us;1458us;1248us;1458us;1250us;1458us;1252us;1458us;1254us;1458us;1256us;1458us;1258us;1458us;1260us;1458us;1262us;1458us;1264us;1458us;1266us;1458us;1268us;1458us;1270us;1458us;1272us;1458us;1274us;1458us;1276us;1458us;1278us;1458us;1280us;1458us;1282us;1458us;1284us;1458us;1285us;1458us;1286us;1458us;1287us;1458us;1290us;1458us;1300us;1458us;1325us;1458us;1326us;1458us;1330us;1458us;1332us;1458us;1335us;1458us;1336us;1458us;1338us;1458us;1341us;1458us;1343us;1458us;1345us;1458us;1347us;1458us;1349us;1458us;1350us;1458us;1351us;1458us;1352us;1458us;1354us;1458us;1355us;1458us;1357us;1458us;1358us;1458us;1360us;1458us;1361us;1458us;1363us;1458us;1364us;1458us;1366us;1458us;1367us;1458us;1369us;1458us;1370us;1458us;1376us;1458us;1377us;1458us;1384us;1458us;1386us;1458us;1388us;1458us;1389us;1458us;1390us;1458us;1391us;1458us;1395us;1458us;1400us;1458us;1406us;1458us;1407us;1458us;1410us;1458us;1411us;1458us;1429us;1458us;1436us;1458us;1443us;1458us;1450us;1458us;1467us;1458us;1474us;1458us;1475us;1458us;1481us;1458us;1487us;1458us;1488us;1458us;1489us;1458us;1501us;1458us;1507us;1458us;1517us;1458us;1530us;1458us;1532us;1458us;1535us;1458us;1536us;1458us;1542us;1458us;1557us;1458us;1562us;1458us;1567us;1458us;1592us;1458us;1625us;1458us;1634us;1458us;1639us;1458us;1862us;1458us;2019us;1458us;2023us;1458us;1us;65535us;1517us;1518us;1us;65535us;1429us;1430us;1us;65535us;1481us;1482us;1us;65535us;1517us;1526us;1us;65535us;1142us;1143us;1us;65535us;1133us;1134us;1us;65535us;1133us;1144us;1us;65535us;1226us;1536us;3us;65535us;1487us;1510us;1488us;1510us;1489us;1510us;1us;65535us;1541us;1542us;4us;65535us;331us;332us;335us;336us;340us;341us;1557us;1558us;1us;65535us;1540us;1541us;1us;65535us;1542us;1543us;1us;65535us;1517us;1524us;2us;65535us;1517us;1561us;1625us;1626us;6us;65535us;1559us;1560us;1564us;1565us;1569us;1570us;1573us;1574us;1575us;1576us;1579us;1580us;6us;65535us;1559us;1583us;1564us;1583us;1569us;1583us;1573us;1583us;1575us;1582us;1579us;1583us;3us;65535us;1571us;1591us;1575us;1591us;1583us;1591us;5us;65535us;1558us;1559us;1563us;1564us;1568us;1569us;1572us;1573us;1578us;1579us;3us;65535us;1571us;1572us;1575us;1578us;1583us;1590us;1us;65535us;1517us;1525us;1us;65535us;1517us;1596us;1us;65535us;1618us;1619us;2us;65535us;1596us;1597us;1618us;1603us;1us;65535us;1600us;1601us;4us;65535us;1598us;1599us;1611us;1612us;1613us;1614us;1615us;1616us;5us;65535us;1598us;1613us;1600us;1611us;1611us;1613us;1613us;1613us;1615us;1613us;156us;65535us;6us;1459us;31us;1459us;114us;1459us;116us;1459us;237us;1459us;251us;1459us;274us;1459us;331us;1459us;335us;1459us;340us;1459us;422us;1459us;427us;1459us;468us;1459us;491us;1459us;525us;1459us;689us;1459us;700us;1459us;751us;1459us;757us;1459us;807us;1459us;811us;1459us;821us;1459us;1028us;1459us;1034us;1459us;1050us;1459us;1052us;1459us;1055us;1459us;1058us;1459us;1077us;1459us;1082us;1459us;1088us;1459us;1091us;1459us;1094us;1459us;1100us;1459us;1104us;1459us;1108us;1459us;1114us;1459us;1116us;1459us;1121us;1459us;1123us;1459us;1125us;1459us;1127us;1459us;1129us;1459us;1131us;1459us;1135us;1459us;1145us;1459us;1152us;1459us;1158us;1459us;1160us;1459us;1165us;1459us;1169us;1459us;1172us;1459us;1176us;1459us;1179us;1459us;1182us;1459us;1184us;1459us;1187us;1459us;1189us;1459us;1238us;1459us;1240us;1459us;1244us;1459us;1246us;1459us;1248us;1459us;1250us;1459us;1252us;1459us;1254us;1459us;1256us;1459us;1258us;1459us;1260us;1459us;1262us;1459us;1264us;1459us;1266us;1459us;1268us;1459us;1270us;1459us;1272us;1459us;1274us;1459us;1276us;1459us;1278us;1459us;1280us;1459us;1282us;1459us;1284us;1459us;1285us;1459us;1286us;1459us;1287us;1459us;1290us;1459us;1300us;1459us;1325us;1459us;1326us;1459us;1330us;1459us;1332us;1459us;1335us;1459us;1336us;1459us;1338us;1459us;1341us;1459us;1343us;1459us;1345us;1459us;1347us;1459us;1349us;1459us;1350us;1459us;1351us;1459us;1352us;1459us;1354us;1459us;1355us;1459us;1357us;1459us;1358us;1459us;1360us;1459us;1361us;1459us;1363us;1459us;1364us;1459us;1366us;1459us;1367us;1459us;1369us;1459us;1370us;1459us;1376us;1459us;1377us;1459us;1384us;1459us;1386us;1459us;1388us;1459us;1389us;1459us;1390us;1459us;1391us;1459us;1395us;1459us;1400us;1459us;1406us;1459us;1407us;1459us;1410us;1459us;1411us;1459us;1429us;1459us;1436us;1459us;1443us;1459us;1450us;1459us;1467us;1459us;1474us;1459us;1475us;1459us;1481us;1459us;1487us;1459us;1488us;1459us;1489us;1459us;1501us;1459us;1507us;1459us;1517us;1459us;1530us;1459us;1532us;1459us;1535us;1459us;1536us;1459us;1542us;1459us;1557us;1459us;1562us;1459us;1567us;1459us;1592us;1459us;1625us;1459us;1634us;1459us;1639us;1459us;1862us;1459us;2019us;1459us;2023us;1459us;158us;65535us;6us;1624us;31us;1624us;114us;1624us;116us;1624us;237us;1624us;251us;1624us;274us;1624us;331us;1624us;335us;1624us;340us;1624us;422us;1624us;427us;1624us;468us;1624us;491us;1624us;525us;1624us;689us;1624us;700us;1624us;751us;1624us;757us;1624us;807us;1624us;811us;1624us;821us;1624us;1028us;1624us;1034us;1624us;1050us;1624us;1052us;1624us;1055us;1624us;1058us;1624us;1077us;1624us;1082us;1624us;1088us;1624us;1091us;1624us;1094us;1624us;1100us;1624us;1104us;1624us;1108us;1624us;1114us;1624us;1116us;1624us;1121us;1624us;1123us;1624us;1125us;1624us;1127us;1624us;1129us;1624us;1131us;1624us;1135us;1624us;1145us;1624us;1152us;1624us;1158us;1624us;1160us;1624us;1165us;1624us;1169us;1624us;1172us;1624us;1176us;1624us;1179us;1624us;1182us;1624us;1184us;1624us;1187us;1624us;1189us;1624us;1238us;1624us;1240us;1624us;1244us;1624us;1246us;1624us;1248us;1624us;1250us;1624us;1252us;1624us;1254us;1624us;1256us;1624us;1258us;1624us;1260us;1624us;1262us;1624us;1264us;1624us;1266us;1624us;1268us;1624us;1270us;1624us;1272us;1624us;1274us;1624us;1276us;1624us;1278us;1624us;1280us;1624us;1282us;1624us;1284us;1624us;1285us;1624us;1286us;1624us;1287us;1624us;1290us;1624us;1300us;1624us;1325us;1624us;1326us;1624us;1330us;1624us;1332us;1624us;1335us;1624us;1336us;1624us;1338us;1624us;1341us;1624us;1343us;1624us;1345us;1624us;1347us;1624us;1349us;1624us;1350us;1624us;1351us;1624us;1352us;1624us;1354us;1624us;1355us;1624us;1357us;1624us;1358us;1624us;1360us;1624us;1361us;1624us;1363us;1624us;1364us;1624us;1366us;1624us;1367us;1624us;1369us;1624us;1370us;1624us;1376us;1624us;1377us;1624us;1384us;1624us;1386us;1624us;1388us;1624us;1389us;1624us;1390us;1624us;1391us;1624us;1395us;1624us;1400us;1624us;1406us;1624us;1407us;1624us;1410us;1624us;1411us;1624us;1429us;1624us;1435us;1623us;1436us;1624us;1443us;1624us;1450us;1624us;1467us;1624us;1474us;1624us;1475us;1624us;1481us;1624us;1487us;1624us;1488us;1624us;1489us;1624us;1501us;1624us;1507us;1624us;1517us;1624us;1530us;1624us;1532us;1624us;1535us;1624us;1536us;1624us;1542us;1624us;1557us;1624us;1562us;1624us;1567us;1624us;1592us;1624us;1622us;1623us;1625us;1624us;1634us;1624us;1639us;1624us;1862us;1624us;2019us;1624us;2023us;1624us;116us;65535us;6us;1099us;31us;1099us;114us;1099us;116us;1099us;237us;1099us;251us;1099us;274us;1099us;422us;1099us;427us;1099us;468us;1099us;491us;1099us;751us;1099us;757us;1099us;807us;1099us;811us;1099us;821us;1099us;1028us;1099us;1034us;1099us;1050us;1099us;1052us;1099us;1055us;1099us;1058us;1099us;1077us;1099us;1082us;1099us;1088us;1099us;1091us;1099us;1094us;1099us;1100us;1099us;1104us;1099us;1108us;1099us;1114us;1099us;1116us;1099us;1121us;1099us;1123us;1099us;1125us;1099us;1127us;1099us;1129us;1099us;1131us;1099us;1135us;1099us;1145us;1099us;1152us;1099us;1158us;1099us;1160us;1099us;1165us;1099us;1169us;1099us;1172us;1099us;1176us;1099us;1179us;1099us;1182us;1099us;1184us;1099us;1187us;1099us;1189us;1099us;1238us;1099us;1240us;1099us;1244us;1099us;1246us;1099us;1248us;1099us;1250us;1099us;1252us;1099us;1254us;1099us;1256us;1099us;1258us;1099us;1260us;1099us;1262us;1099us;1264us;1099us;1266us;1099us;1268us;1099us;1270us;1099us;1272us;1099us;1274us;1099us;1276us;1099us;1278us;1099us;1280us;1099us;1282us;1099us;1284us;1099us;1285us;1099us;1286us;1099us;1287us;1099us;1290us;1099us;1300us;1099us;1325us;1099us;1326us;1099us;1330us;1099us;1332us;1099us;1335us;1099us;1336us;1099us;1338us;1099us;1341us;1099us;1343us;1099us;1345us;1099us;1347us;1099us;1429us;1099us;1436us;1099us;1443us;1099us;1450us;1099us;1467us;1099us;1474us;1099us;1475us;1099us;1481us;1099us;1487us;1099us;1488us;1099us;1489us;1099us;1501us;1099us;1507us;1099us;1517us;1099us;1530us;1099us;1532us;1099us;1535us;1099us;1536us;1099us;1562us;1099us;1567us;1099us;1592us;1099us;1634us;1099us;1639us;1099us;2019us;1099us;2023us;1099us;116us;65535us;6us;1098us;31us;1098us;114us;1098us;116us;1098us;237us;1098us;251us;1098us;274us;1098us;422us;1098us;427us;1098us;468us;1098us;491us;1098us;751us;1098us;757us;1098us;807us;1098us;811us;1098us;821us;1098us;1028us;1098us;1034us;1098us;1050us;1098us;1052us;1098us;1055us;1098us;1058us;1098us;1077us;1098us;1082us;1098us;1088us;1098us;1091us;1098us;1094us;1098us;1100us;1098us;1104us;1098us;1108us;1098us;1114us;1098us;1116us;1098us;1121us;1098us;1123us;1098us;1125us;1098us;1127us;1098us;1129us;1098us;1131us;1098us;1135us;1098us;1145us;1098us;1152us;1098us;1158us;1098us;1160us;1098us;1165us;1098us;1169us;1098us;1172us;1098us;1176us;1098us;1179us;1098us;1182us;1098us;1184us;1098us;1187us;1098us;1189us;1098us;1238us;1098us;1240us;1098us;1244us;1098us;1246us;1098us;1248us;1098us;1250us;1098us;1252us;1098us;1254us;1098us;1256us;1098us;1258us;1098us;1260us;1098us;1262us;1098us;1264us;1098us;1266us;1098us;1268us;1098us;1270us;1098us;1272us;1098us;1274us;1098us;1276us;1098us;1278us;1098us;1280us;1098us;1282us;1098us;1284us;1098us;1285us;1098us;1286us;1098us;1287us;1098us;1290us;1098us;1300us;1098us;1325us;1098us;1326us;1098us;1330us;1098us;1332us;1098us;1335us;1098us;1336us;1098us;1338us;1098us;1341us;1098us;1343us;1098us;1345us;1098us;1347us;1098us;1429us;1098us;1436us;1098us;1443us;1098us;1450us;1098us;1467us;1098us;1474us;1098us;1475us;1098us;1481us;1098us;1487us;1098us;1488us;1098us;1489us;1098us;1501us;1098us;1507us;1098us;1517us;1098us;1530us;1098us;1532us;1098us;1535us;1098us;1536us;1098us;1562us;1098us;1567us;1098us;1592us;1098us;1634us;1098us;1639us;1098us;2019us;1098us;2023us;1098us;3us;65535us;871us;872us;1003us;1004us;1044us;1045us;5us;65535us;111us;112us;184us;185us;201us;202us;454us;455us;1658us;1659us;3us;65535us;420us;421us;425us;426us;805us;806us;9us;65535us;111us;1656us;149us;150us;184us;1656us;201us;1656us;385us;386us;454us;1656us;687us;688us;1658us;1656us;1662us;1663us;9us;65535us;111us;1661us;149us;1661us;184us;1661us;201us;1661us;385us;1661us;454us;1661us;687us;1661us;1658us;1661us;1662us;1661us;4us;65535us;1666us;1667us;1669us;1670us;1672us;1673us;1675us;1676us;13us;65535us;111us;1665us;149us;1665us;184us;1665us;201us;1665us;385us;1665us;454us;1665us;687us;1665us;1658us;1665us;1662us;1665us;1666us;1671us;1669us;1671us;1672us;1671us;1675us;1671us;10us;65535us;678us;717us;680us;717us;683us;717us;704us;717us;707us;717us;710us;717us;713us;716us;742us;717us;1698us;1699us;1701us;1702us;33us;65535us;8us;1709us;178us;566us;439us;566us;481us;482us;497us;498us;561us;566us;569us;1848us;639us;640us;642us;643us;652us;1848us;729us;730us;827us;828us;871us;1654us;1003us;1654us;1044us;1654us;1229us;1230us;1232us;1233us;1235us;1236us;1548us;1549us;1551us;1552us;1553us;1848us;1704us;1705us;1707us;1708us;1749us;1848us;1755us;1756us;1758us;1759us;1825us;1888us;1829us;1888us;1835us;1848us;1846us;1847us;1876us;1888us;1878us;1888us;1889us;1890us;1us;65535us;8us;9us;33us;65535us;8us;1703us;178us;1703us;439us;1703us;481us;1703us;497us;1703us;561us;1703us;569us;1703us;639us;1703us;642us;1703us;652us;1703us;729us;1703us;827us;1703us;871us;1703us;1003us;1703us;1044us;1703us;1229us;1703us;1232us;1703us;1235us;1703us;1548us;1703us;1551us;1703us;1553us;1703us;1704us;1703us;1707us;1703us;1749us;1703us;1755us;1703us;1758us;1703us;1825us;1703us;1829us;1703us;1835us;1703us;1846us;1703us;1876us;1703us;1878us;1703us;1889us;1703us;9us;65535us;1712us;1713us;1715us;1716us;1717us;1718us;1720us;1721us;1724us;1725us;1727us;1728us;1729us;1730us;1732us;1733us;1853us;1854us;82us;65535us;8us;1754us;111us;1754us;149us;1754us;178us;1754us;184us;1754us;188us;1754us;190us;1754us;201us;1754us;290us;1754us;385us;1754us;439us;1754us;446us;1754us;454us;1754us;481us;1754us;497us;1754us;561us;1754us;569us;1754us;625us;1754us;629us;1754us;639us;1754us;642us;1754us;652us;1754us;663us;1754us;678us;1754us;680us;1754us;683us;1754us;687us;1754us;704us;1754us;707us;1754us;710us;1754us;713us;1754us;729us;1754us;742us;1754us;827us;1754us;871us;1754us;1003us;1754us;1044us;1754us;1229us;1754us;1232us;1754us;1235us;1754us;1515us;1754us;1548us;1754us;1551us;1754us;1553us;1754us;1617us;1754us;1655us;1754us;1657us;1754us;1658us;1754us;1662us;1754us;1666us;1754us;1669us;1754us;1672us;1754us;1675us;1754us;1677us;1754us;1679us;1754us;1684us;1754us;1688us;1754us;1693us;1754us;1698us;1754us;1701us;1754us;1704us;1754us;1707us;1754us;1712us;1754us;1715us;1754us;1717us;1754us;1720us;1754us;1724us;1754us;1727us;1754us;1729us;1754us;1732us;1754us;1749us;1754us;1755us;1754us;1758us;1754us;1825us;1754us;1829us;1754us;1835us;1754us;1846us;1754us;1852us;1754us;1853us;1754us;1876us;1754us;1878us;1754us;1889us;1754us;117us;65535us;8us;1741us;111us;1741us;149us;1741us;178us;1741us;184us;1741us;188us;1741us;189us;1740us;190us;1741us;191us;1740us;201us;1741us;290us;1741us;291us;1740us;385us;1741us;439us;1741us;446us;1741us;447us;1740us;454us;1741us;481us;1741us;497us;1741us;522us;1741us;561us;1741us;569us;1741us;570us;1741us;612us;1741us;625us;1741us;629us;1741us;634us;1741us;639us;1741us;642us;1741us;652us;1741us;662us;1740us;663us;1741us;664us;1740us;665us;1740us;678us;1741us;680us;1741us;683us;1741us;687us;1741us;704us;1741us;707us;1741us;710us;1741us;713us;1741us;714us;1740us;715us;1740us;729us;1741us;742us;1741us;827us;1741us;871us;1741us;936us;1741us;1003us;1741us;1044us;1741us;1229us;1741us;1232us;1741us;1235us;1741us;1372us;1741us;1373us;1741us;1515us;1741us;1516us;1740us;1548us;1741us;1551us;1741us;1553us;1741us;1555us;1741us;1617us;1741us;1618us;1740us;1655us;1741us;1657us;1741us;1658us;1741us;1662us;1741us;1666us;1741us;1669us;1741us;1672us;1741us;1675us;1741us;1677us;1741us;1678us;1740us;1679us;1741us;1680us;1740us;1684us;1741us;1685us;1740us;1687us;1740us;1688us;1741us;1689us;1740us;1693us;1741us;1694us;1740us;1696us;1740us;1697us;1740us;1698us;1741us;1701us;1741us;1704us;1741us;1707us;1741us;1711us;1740us;1712us;1741us;1715us;1741us;1717us;1741us;1720us;1741us;1723us;1740us;1724us;1741us;1727us;1741us;1729us;1741us;1732us;1741us;1735us;1741us;1737us;1741us;1744us;1740us;1749us;1741us;1751us;1740us;1755us;1741us;1758us;1741us;1825us;1741us;1829us;1741us;1835us;1741us;1837us;1740us;1842us;1741us;1846us;1741us;1852us;1741us;1853us;1741us;1876us;1741us;1878us;1741us;1889us;1741us;117us;65535us;8us;1844us;111us;1844us;149us;1844us;178us;1844us;184us;1844us;188us;1844us;189us;1748us;190us;1844us;191us;1748us;201us;1844us;290us;1844us;291us;1748us;385us;1844us;439us;1844us;446us;1844us;447us;1748us;454us;1844us;481us;1844us;497us;1844us;522us;1844us;561us;1844us;569us;1844us;570us;1844us;612us;1844us;625us;1844us;629us;1844us;634us;1844us;639us;1844us;642us;1844us;652us;1844us;662us;1748us;663us;1844us;664us;1748us;665us;1748us;678us;1844us;680us;1844us;683us;1844us;687us;1844us;704us;1844us;707us;1844us;710us;1844us;713us;1844us;714us;1748us;715us;1748us;729us;1844us;742us;1844us;827us;1844us;871us;1844us;936us;1844us;1003us;1844us;1044us;1844us;1229us;1844us;1232us;1844us;1235us;1844us;1372us;1844us;1373us;1844us;1515us;1844us;1516us;1748us;1548us;1844us;1551us;1844us;1553us;1844us;1555us;1844us;1617us;1844us;1618us;1748us;1655us;1844us;1657us;1844us;1658us;1844us;1662us;1844us;1666us;1844us;1669us;1844us;1672us;1844us;1675us;1844us;1677us;1844us;1678us;1748us;1679us;1844us;1680us;1748us;1684us;1844us;1685us;1748us;1687us;1748us;1688us;1844us;1689us;1748us;1693us;1844us;1694us;1748us;1696us;1748us;1697us;1748us;1698us;1844us;1701us;1844us;1704us;1844us;1707us;1844us;1711us;1748us;1712us;1844us;1715us;1844us;1717us;1844us;1720us;1844us;1723us;1748us;1724us;1844us;1727us;1844us;1729us;1844us;1732us;1844us;1735us;1844us;1737us;1844us;1744us;1748us;1749us;1844us;1751us;1752us;1755us;1844us;1758us;1844us;1825us;1844us;1829us;1844us;1835us;1844us;1837us;1838us;1842us;1844us;1846us;1844us;1852us;1844us;1853us;1844us;1876us;1844us;1878us;1844us;1889us;1844us;82us;65535us;8us;1711us;111us;1687us;149us;1687us;178us;1711us;184us;1687us;188us;189us;190us;191us;201us;1687us;290us;291us;385us;1687us;439us;1711us;446us;447us;454us;1687us;481us;1711us;497us;1711us;561us;1711us;569us;1711us;625us;662us;629us;662us;639us;1711us;642us;1711us;652us;665us;663us;664us;678us;715us;680us;715us;683us;715us;687us;1687us;704us;715us;707us;715us;710us;715us;713us;714us;729us;1711us;742us;715us;827us;1711us;871us;1711us;1003us;1711us;1044us;1711us;1229us;1711us;1232us;1711us;1235us;1711us;1515us;1516us;1548us;1711us;1551us;1711us;1553us;1711us;1617us;1618us;1655us;662us;1657us;662us;1658us;1687us;1662us;1687us;1666us;1687us;1669us;1687us;1672us;1687us;1675us;1687us;1677us;1678us;1679us;1680us;1684us;1685us;1688us;1689us;1693us;1694us;1698us;1696us;1701us;1697us;1704us;1711us;1707us;1711us;1712us;1723us;1715us;1723us;1717us;1723us;1720us;1723us;1724us;1723us;1727us;1723us;1729us;1723us;1732us;1723us;1749us;1711us;1755us;1711us;1758us;1711us;1825us;1711us;1829us;1711us;1835us;1711us;1846us;1711us;1852us;1744us;1853us;1723us;1876us;1711us;1878us;1711us;1889us;1711us;23us;65535us;189us;1745us;191us;1745us;291us;1745us;447us;1745us;662us;1745us;664us;1745us;665us;1745us;714us;1745us;715us;1745us;1516us;1745us;1618us;1745us;1678us;1745us;1680us;1745us;1685us;1745us;1687us;1745us;1689us;1745us;1694us;1745us;1696us;1745us;1697us;1745us;1711us;1745us;1723us;1745us;1744us;1745us;1746us;1747us;5us;65535us;569us;1750us;652us;1750us;1553us;1750us;1749us;1750us;1835us;1836us;2us;65535us;1826us;1827us;1879us;1828us;82us;65535us;8us;1753us;111us;1753us;149us;1753us;178us;1753us;184us;1753us;188us;1753us;190us;1753us;201us;1753us;290us;1753us;385us;1753us;439us;1753us;446us;1753us;454us;1753us;481us;1753us;497us;1753us;561us;1753us;569us;1753us;625us;1753us;629us;1753us;639us;1753us;642us;1753us;652us;1753us;663us;1753us;678us;1753us;680us;1753us;683us;1753us;687us;1753us;704us;1753us;707us;1753us;710us;1753us;713us;1753us;729us;1753us;742us;1753us;827us;1753us;871us;1753us;1003us;1753us;1044us;1753us;1229us;1753us;1232us;1753us;1235us;1753us;1515us;1753us;1548us;1753us;1551us;1753us;1553us;1753us;1617us;1753us;1655us;1753us;1657us;1753us;1658us;1753us;1662us;1753us;1666us;1753us;1669us;1753us;1672us;1753us;1675us;1753us;1677us;1753us;1679us;1753us;1684us;1753us;1688us;1753us;1693us;1753us;1698us;1753us;1701us;1753us;1704us;1753us;1707us;1753us;1712us;1753us;1715us;1753us;1717us;1753us;1720us;1753us;1724us;1753us;1727us;1753us;1729us;1753us;1732us;1753us;1749us;1753us;1755us;1753us;1758us;1753us;1825us;1753us;1829us;1753us;1835us;1753us;1846us;1753us;1852us;1753us;1853us;1753us;1876us;1753us;1878us;1753us;1889us;1753us;4us;65535us;522us;523us;1372us;1374us;1373us;1375us;1555us;1556us;83us;65535us;8us;1832us;111us;1832us;149us;1832us;178us;1832us;184us;1832us;188us;1832us;190us;1832us;201us;1832us;290us;1832us;385us;1832us;439us;1832us;446us;1832us;454us;1832us;481us;1832us;497us;1832us;561us;1832us;569us;1832us;625us;1832us;629us;1832us;639us;1832us;642us;1832us;652us;1832us;663us;1832us;678us;1832us;680us;1832us;683us;1832us;687us;1832us;704us;1832us;707us;1832us;710us;1832us;713us;1832us;729us;1832us;742us;1832us;827us;1832us;871us;1832us;936us;937us;1003us;1832us;1044us;1832us;1229us;1832us;1232us;1832us;1235us;1832us;1515us;1832us;1548us;1832us;1551us;1832us;1553us;1832us;1617us;1832us;1655us;1832us;1657us;1832us;1658us;1832us;1662us;1832us;1666us;1832us;1669us;1832us;1672us;1832us;1675us;1832us;1677us;1832us;1679us;1832us;1684us;1832us;1688us;1832us;1693us;1832us;1698us;1832us;1701us;1832us;1704us;1832us;1707us;1832us;1712us;1832us;1715us;1832us;1717us;1832us;1720us;1832us;1724us;1832us;1727us;1832us;1729us;1832us;1732us;1832us;1749us;1832us;1755us;1832us;1758us;1832us;1825us;1832us;1829us;1832us;1835us;1832us;1846us;1832us;1852us;1832us;1853us;1832us;1876us;1832us;1878us;1832us;1889us;1832us;93us;65535us;8us;1736us;111us;1736us;149us;1736us;178us;1736us;184us;1736us;188us;1736us;190us;1736us;201us;1736us;290us;1736us;385us;1736us;439us;1736us;446us;1736us;454us;1736us;481us;1736us;497us;1736us;522us;1839us;561us;1736us;569us;1736us;570us;1843us;612us;636us;625us;1736us;629us;1736us;634us;635us;639us;1736us;642us;1736us;652us;1736us;663us;1736us;678us;1736us;680us;1736us;683us;1736us;687us;1736us;704us;1736us;707us;1736us;710us;1736us;713us;1736us;729us;1736us;742us;1736us;827us;1736us;871us;1736us;936us;1840us;1003us;1736us;1044us;1736us;1229us;1736us;1232us;1736us;1235us;1736us;1372us;1839us;1373us;1839us;1515us;1736us;1548us;1736us;1551us;1736us;1553us;1736us;1555us;1839us;1617us;1736us;1655us;1736us;1657us;1736us;1658us;1736us;1662us;1736us;1666us;1736us;1669us;1736us;1672us;1736us;1675us;1736us;1677us;1736us;1679us;1736us;1684us;1736us;1688us;1736us;1693us;1736us;1698us;1736us;1701us;1736us;1704us;1736us;1707us;1736us;1712us;1736us;1715us;1736us;1717us;1736us;1720us;1736us;1724us;1736us;1727us;1736us;1729us;1736us;1732us;1736us;1735us;636us;1737us;636us;1749us;1736us;1755us;1736us;1758us;1736us;1825us;1736us;1829us;1736us;1835us;1736us;1842us;1843us;1846us;1736us;1852us;1736us;1853us;1736us;1876us;1736us;1878us;1736us;1889us;1736us;4us;65535us;646us;661us;659us;660us;1741us;1867us;1869us;1870us;6us;65535us;646us;1873us;659us;1873us;1408us;1409us;1741us;1873us;1869us;1873us;1874us;1875us;9us;65535us;569us;1824us;652us;1824us;1553us;1824us;1749us;1824us;1825us;1826us;1829us;1830us;1835us;1824us;1876us;1883us;1878us;1891us;2us;65535us;1876us;1877us;1878us;1879us;3us;65535us;1829us;1831us;1876us;1892us;1878us;1892us;1us;65535us;863us;864us;6us;65535us;1893us;1903us;1900us;1903us;1907us;1903us;1913us;1903us;1914us;1903us;1915us;1903us;6us;65535us;1893us;1907us;1900us;1907us;1907us;1907us;1913us;1907us;1914us;1907us;1915us;1907us;6us;65535us;1893us;1909us;1900us;1909us;1907us;1908us;1913us;1909us;1914us;1909us;1915us;1909us;5us;65535us;1893us;1894us;1900us;1901us;1913us;1910us;1914us;1911us;1915us;1912us;131us;65535us;8us;1734us;111us;1734us;149us;1734us;178us;1734us;184us;1734us;188us;1734us;189us;1739us;190us;1734us;191us;1739us;201us;1734us;290us;1734us;291us;1739us;385us;1734us;439us;1734us;446us;1734us;447us;1739us;454us;1734us;481us;1734us;497us;1734us;522us;1739us;561us;1734us;569us;1734us;570us;1739us;594us;600us;610us;611us;612us;1739us;625us;641us;629us;641us;634us;1739us;637us;638us;639us;1734us;642us;1734us;652us;1734us;662us;1739us;663us;1734us;664us;1739us;665us;1739us;678us;1734us;680us;1734us;683us;1734us;687us;1734us;704us;1734us;707us;1734us;710us;1734us;713us;1734us;714us;1739us;715us;1739us;729us;1734us;742us;1734us;819us;826us;823us;826us;827us;1734us;871us;1734us;936us;1739us;1003us;1734us;1044us;1734us;1229us;1734us;1232us;1734us;1235us;1734us;1372us;1739us;1373us;1739us;1487us;1511us;1488us;1512us;1489us;1511us;1515us;1734us;1516us;1739us;1548us;1734us;1551us;1734us;1553us;1734us;1555us;1739us;1617us;1734us;1618us;1739us;1655us;641us;1657us;641us;1658us;1734us;1662us;1734us;1666us;1734us;1669us;1734us;1672us;1734us;1675us;1734us;1677us;1734us;1678us;1739us;1679us;1734us;1680us;1739us;1684us;1734us;1685us;1739us;1687us;1739us;1688us;1734us;1689us;1739us;1693us;1734us;1694us;1739us;1696us;1739us;1697us;1739us;1698us;1734us;1701us;1734us;1704us;1734us;1707us;1734us;1711us;1739us;1712us;1734us;1715us;1734us;1717us;1734us;1720us;1734us;1723us;1739us;1724us;1734us;1727us;1734us;1729us;1734us;1732us;1734us;1735us;1739us;1737us;1739us;1744us;1739us;1749us;1734us;1751us;1739us;1755us;1734us;1758us;1734us;1825us;1734us;1829us;1734us;1835us;1734us;1837us;1739us;1842us;1739us;1846us;1734us;1852us;1734us;1853us;1734us;1876us;1734us;1878us;1734us;1889us;1734us;1893us;1899us;1900us;1899us;1907us;1899us;1913us;1899us;1914us;1899us;1915us;1899us;386us;65535us;6us;1978us;8us;1923us;31us;1978us;53us;1923us;58us;1923us;95us;1923us;108us;1970us;111us;1923us;114us;1978us;116us;1978us;120us;1923us;149us;1923us;178us;698us;181us;1970us;184us;1923us;188us;1923us;189us;1923us;190us;1923us;191us;1923us;201us;1923us;203us;1970us;205us;1970us;210us;1970us;237us;1978us;251us;1978us;274us;1978us;281us;1923us;287us;1923us;290us;1923us;291us;1923us;317us;346us;328us;346us;333us;1923us;337us;1923us;385us;1923us;419us;1972us;422us;1978us;424us;1972us;427us;1978us;439us;698us;446us;1923us;447us;1923us;451us;1970us;454us;1923us;465us;1972us;468us;1978us;479us;480us;481us;1923us;488us;489us;491us;1978us;497us;1923us;501us;1972us;504us;1972us;507us;1972us;509us;1972us;522us;1923us;530us;531us;534us;535us;561us;698us;569us;1923us;570us;1923us;594us;1923us;596us;1923us;612us;1923us;625us;1923us;629us;1923us;634us;1923us;639us;1923us;642us;1923us;652us;1923us;662us;1923us;663us;1923us;664us;1923us;665us;1923us;677us;1970us;678us;712us;680us;712us;683us;712us;687us;1923us;689us;1978us;700us;1978us;704us;712us;707us;712us;710us;712us;713us;1923us;714us;1923us;715us;1923us;727us;728us;729us;1923us;737us;741us;742us;712us;745us;1923us;751us;1978us;757us;1978us;769us;770us;781us;1923us;782us;783us;794us;1923us;804us;1972us;807us;1978us;811us;1978us;821us;1978us;827us;1923us;867us;868us;871us;1923us;874us;866us;875us;866us;878us;866us;897us;1972us;899us;1972us;900us;1972us;904us;1972us;905us;1972us;908us;1972us;910us;1972us;911us;1972us;914us;918us;916us;918us;920us;1972us;924us;1972us;925us;1972us;927us;1972us;929us;1972us;932us;1972us;934us;1972us;936us;1923us;939us;919us;943us;1972us;945us;1972us;947us;1972us;950us;1923us;955us;1972us;958us;1972us;961us;963us;962us;963us;969us;1972us;977us;1972us;998us;1972us;1000us;1972us;1003us;1923us;1006us;1972us;1007us;1972us;1009us;1972us;1010us;1972us;1013us;1972us;1015us;1972us;1016us;1972us;1019us;1923us;1022us;1972us;1026us;1972us;1028us;1978us;1034us;1978us;1044us;1923us;1050us;1978us;1052us;1978us;1055us;1978us;1058us;1978us;1076us;1972us;1077us;1978us;1081us;1972us;1082us;1978us;1088us;1978us;1091us;1978us;1094us;1978us;1100us;1978us;1104us;1978us;1108us;1978us;1114us;1978us;1116us;1978us;1121us;1978us;1123us;1978us;1125us;1978us;1127us;1978us;1129us;1978us;1131us;1978us;1133us;1972us;1135us;1978us;1145us;1978us;1152us;1978us;1158us;1978us;1160us;1978us;1164us;1972us;1165us;1978us;1169us;1978us;1171us;1972us;1172us;1978us;1176us;1978us;1179us;1978us;1182us;1978us;1184us;1978us;1187us;1978us;1189us;1978us;1229us;1923us;1232us;1923us;1235us;1923us;1238us;1978us;1240us;1978us;1244us;1978us;1246us;1978us;1248us;1978us;1250us;1978us;1252us;1978us;1254us;1978us;1256us;1978us;1258us;1978us;1260us;1978us;1262us;1978us;1264us;1978us;1266us;1978us;1268us;1978us;1270us;1978us;1272us;1978us;1274us;1978us;1276us;1978us;1278us;1978us;1280us;1978us;1282us;1978us;1284us;1978us;1285us;1978us;1286us;1978us;1287us;1978us;1290us;1978us;1300us;1978us;1303us;1972us;1305us;1972us;1311us;1972us;1318us;1972us;1320us;1972us;1325us;1978us;1326us;1978us;1330us;1978us;1332us;1978us;1335us;1978us;1336us;1978us;1338us;1978us;1341us;1978us;1343us;1978us;1345us;1978us;1347us;1978us;1349us;1978us;1350us;1920us;1351us;1920us;1352us;1978us;1354us;1978us;1355us;1978us;1357us;1978us;1358us;1978us;1360us;1978us;1361us;1978us;1363us;1978us;1364us;1978us;1366us;1978us;1367us;1978us;1369us;1978us;1370us;1978us;1372us;1923us;1373us;1923us;1380us;1970us;1384us;1978us;1386us;1978us;1388us;1978us;1389us;1978us;1390us;1978us;1391us;1978us;1395us;1978us;1400us;1978us;1406us;1978us;1407us;1978us;1410us;1978us;1411us;1978us;1412us;1414us;1413us;1415us;1417us;1970us;1420us;1970us;1422us;1970us;1423us;1970us;1429us;1978us;1436us;1978us;1443us;1978us;1450us;1978us;1467us;1978us;1474us;1978us;1475us;1978us;1481us;1978us;1487us;1978us;1488us;1978us;1489us;1978us;1501us;1978us;1507us;1978us;1515us;1923us;1516us;1923us;1517us;1978us;1530us;1978us;1532us;1978us;1535us;1978us;1536us;1978us;1542us;1978us;1548us;1923us;1551us;1923us;1553us;1923us;1555us;1923us;1562us;1978us;1567us;1978us;1571us;1923us;1575us;1923us;1583us;1923us;1592us;1978us;1617us;1923us;1618us;1923us;1625us;1978us;1632us;1972us;1634us;1978us;1637us;1972us;1639us;1978us;1649us;1972us;1651us;1972us;1655us;1923us;1657us;1923us;1658us;1923us;1662us;1923us;1666us;1923us;1669us;1923us;1672us;1923us;1675us;1923us;1677us;1923us;1678us;1923us;1679us;1923us;1680us;1923us;1682us;1683us;1684us;1923us;1685us;1923us;1687us;1923us;1688us;1923us;1689us;1923us;1691us;1692us;1693us;1923us;1694us;1923us;1696us;1923us;1697us;1923us;1698us;1923us;1701us;1923us;1704us;1923us;1707us;1923us;1711us;1923us;1712us;1923us;1715us;1923us;1717us;1923us;1720us;1923us;1723us;1923us;1724us;1923us;1727us;1923us;1729us;1923us;1732us;1923us;1735us;1923us;1737us;1923us;1744us;1923us;1749us;1923us;1751us;1923us;1755us;1923us;1758us;1923us;1825us;1923us;1829us;1923us;1835us;1923us;1837us;1923us;1842us;1923us;1846us;1923us;1852us;1923us;1853us;1923us;1862us;1978us;1868us;1923us;1876us;1923us;1878us;1923us;1889us;1923us;1893us;1923us;1900us;1923us;1907us;1923us;1913us;1923us;1914us;1923us;1915us;1923us;1916us;1917us;1918us;1919us;1924us;1925us;1974us;1972us;2016us;2017us;2019us;1978us;2023us;1978us;144us;65535us;8us;1738us;53us;54us;58us;59us;95us;295us;111us;1738us;120us;293us;149us;1738us;178us;562us;184us;1738us;188us;1738us;189us;1738us;190us;1738us;191us;1738us;201us;1738us;281us;305us;287us;288us;290us;1738us;291us;1738us;317us;330us;328us;330us;333us;334us;337us;338us;385us;1738us;439us;562us;446us;1738us;447us;1738us;454us;1738us;481us;1738us;497us;1738us;522us;1738us;561us;562us;569us;1738us;570us;1738us;594us;595us;596us;597us;612us;1738us;625us;1738us;629us;1738us;634us;1738us;639us;1738us;642us;1738us;652us;1738us;662us;1738us;663us;1738us;664us;1738us;665us;1738us;678us;1738us;680us;1738us;683us;1738us;687us;1738us;704us;1738us;707us;1738us;710us;1738us;713us;1738us;714us;1738us;715us;1738us;729us;1738us;742us;1738us;745us;746us;781us;784us;794us;784us;827us;1738us;871us;1738us;936us;1738us;950us;1021us;1003us;1738us;1019us;1021us;1044us;1738us;1229us;1738us;1232us;1738us;1235us;1738us;1372us;1738us;1373us;1738us;1515us;1738us;1516us;1738us;1548us;1738us;1551us;1738us;1553us;1738us;1555us;1738us;1571us;1588us;1575us;1588us;1583us;1588us;1617us;1738us;1618us;1738us;1655us;1738us;1657us;1738us;1658us;1738us;1662us;1738us;1666us;1738us;1669us;1738us;1672us;1738us;1675us;1738us;1677us;1738us;1678us;1738us;1679us;1738us;1680us;1738us;1684us;1738us;1685us;1738us;1687us;1738us;1688us;1738us;1689us;1738us;1693us;1738us;1694us;1738us;1696us;1738us;1697us;1738us;1698us;1738us;1701us;1738us;1704us;1738us;1707us;1738us;1711us;1738us;1712us;1738us;1715us;1738us;1717us;1738us;1720us;1738us;1723us;1738us;1724us;1738us;1727us;1738us;1729us;1738us;1732us;1738us;1735us;1738us;1737us;1738us;1744us;1738us;1749us;1738us;1751us;1738us;1755us;1738us;1758us;1738us;1825us;1738us;1829us;1738us;1835us;1738us;1837us;1738us;1842us;1738us;1846us;1738us;1852us;1738us;1853us;1738us;1868us;1869us;1876us;1738us;1878us;1738us;1889us;1738us;1893us;1898us;1900us;1898us;1907us;1898us;1913us;1898us;1914us;1898us;1915us;1898us;218us;65535us;6us;1979us;31us;1979us;108us;1971us;114us;1979us;116us;1979us;181us;1971us;203us;1971us;205us;1971us;210us;1971us;237us;1979us;251us;1979us;274us;1979us;419us;1973us;422us;1979us;424us;1973us;427us;1979us;451us;1971us;465us;1973us;468us;1979us;491us;1979us;501us;1973us;504us;1973us;507us;1973us;509us;1973us;677us;1971us;689us;1979us;700us;1979us;751us;1979us;757us;1979us;804us;1973us;807us;1979us;811us;1979us;821us;1979us;897us;1973us;899us;1973us;900us;1973us;904us;1973us;905us;1973us;908us;1973us;910us;1973us;911us;1973us;920us;1973us;924us;1973us;925us;1973us;927us;1973us;929us;1973us;932us;1973us;934us;1973us;939us;1973us;943us;1973us;945us;1973us;947us;1973us;955us;1973us;958us;1973us;969us;1973us;977us;1973us;998us;1973us;1000us;1973us;1006us;1973us;1007us;1973us;1009us;1973us;1010us;1973us;1013us;1973us;1015us;1973us;1016us;1973us;1022us;1973us;1026us;1973us;1028us;1979us;1034us;1979us;1050us;1979us;1052us;1979us;1055us;1979us;1058us;1979us;1076us;1973us;1077us;1979us;1081us;1973us;1082us;1979us;1088us;1979us;1091us;1979us;1094us;1979us;1100us;1979us;1104us;1979us;1108us;1979us;1114us;1979us;1116us;1979us;1121us;1979us;1123us;1979us;1125us;1979us;1127us;1979us;1129us;1979us;1131us;1979us;1133us;1973us;1135us;1979us;1145us;1979us;1152us;1979us;1158us;1979us;1160us;1979us;1164us;1973us;1165us;1979us;1169us;1979us;1171us;1973us;1172us;1979us;1176us;1979us;1179us;1979us;1182us;1979us;1184us;1979us;1187us;1979us;1189us;1979us;1238us;1979us;1240us;1979us;1244us;1979us;1246us;1979us;1248us;1979us;1250us;1979us;1252us;1979us;1254us;1979us;1256us;1979us;1258us;1979us;1260us;1979us;1262us;1979us;1264us;1979us;1266us;1979us;1268us;1979us;1270us;1979us;1272us;1979us;1274us;1979us;1276us;1979us;1278us;1979us;1280us;1979us;1282us;1979us;1284us;1979us;1285us;1979us;1286us;1979us;1287us;1979us;1290us;1979us;1300us;1979us;1303us;1973us;1305us;1973us;1311us;1973us;1318us;1973us;1320us;1973us;1325us;1979us;1326us;1979us;1330us;1979us;1332us;1979us;1335us;1979us;1336us;1979us;1338us;1979us;1341us;1979us;1343us;1979us;1345us;1979us;1347us;1979us;1349us;1979us;1350us;1979us;1351us;1979us;1352us;1979us;1354us;1979us;1355us;1979us;1357us;1979us;1358us;1979us;1360us;1979us;1361us;1979us;1363us;1979us;1364us;1979us;1366us;1979us;1367us;1979us;1369us;1979us;1370us;1979us;1380us;1971us;1384us;1979us;1386us;1979us;1388us;1979us;1389us;1979us;1390us;1979us;1391us;1979us;1395us;1979us;1400us;1979us;1406us;1979us;1407us;1979us;1410us;1979us;1411us;1979us;1417us;1971us;1420us;1971us;1422us;1971us;1423us;1971us;1429us;1979us;1436us;1979us;1443us;1979us;1450us;1979us;1467us;1979us;1474us;1979us;1475us;1979us;1481us;1979us;1487us;1979us;1488us;1979us;1489us;1979us;1501us;1979us;1507us;1979us;1517us;1979us;1530us;1979us;1532us;1979us;1535us;1979us;1536us;1979us;1542us;1979us;1562us;1979us;1567us;1979us;1592us;1979us;1625us;1979us;1632us;1973us;1634us;1979us;1637us;1973us;1639us;1979us;1649us;1973us;1651us;1973us;1862us;1979us;1974us;1973us;2019us;1979us;2023us;1979us;7us;65535us;692us;1928us;939us;1928us;969us;1928us;1443us;1928us;1488us;1928us;1489us;1928us;1927us;1928us;2us;65535us;1934us;1969us;1967us;1968us;7us;65535us;692us;1933us;939us;1933us;969us;1933us;1443us;1933us;1488us;1933us;1489us;1933us;1927us;1933us;12us;65535us;108us;1977us;181us;1977us;203us;1977us;205us;1977us;210us;1977us;451us;1977us;677us;1977us;1380us;1440us;1417us;1440us;1420us;1440us;1422us;1977us;1423us;1977us;57us;65535us;419us;506us;424us;506us;465us;506us;501us;502us;504us;505us;507us;511us;509us;510us;804us;506us;897us;506us;899us;506us;900us;506us;904us;506us;905us;506us;908us;506us;910us;506us;911us;506us;920us;506us;924us;506us;925us;506us;927us;506us;929us;506us;932us;506us;934us;506us;939us;506us;943us;506us;945us;506us;947us;506us;955us;506us;958us;506us;969us;506us;977us;506us;998us;506us;1000us;506us;1006us;506us;1007us;506us;1009us;506us;1010us;506us;1013us;506us;1015us;506us;1016us;506us;1022us;506us;1026us;506us;1076us;506us;1081us;506us;1133us;506us;1164us;506us;1171us;506us;1303us;506us;1305us;506us;1311us;506us;1318us;506us;1320us;506us;1632us;506us;1637us;506us;1649us;506us;1651us;506us;1974us;1975us;9us;65535us;108us;109us;181us;182us;203us;209us;205us;209us;210us;211us;451us;452us;677us;691us;1422us;1424us;1423us;1424us;149us;65535us;6us;1428us;31us;1428us;114us;1428us;116us;1428us;237us;1428us;251us;1428us;274us;1428us;422us;1428us;427us;1428us;468us;1428us;491us;1428us;689us;1428us;700us;1428us;751us;1428us;757us;1428us;807us;1428us;811us;1428us;821us;1428us;1028us;1428us;1034us;1428us;1050us;1428us;1052us;1428us;1055us;1428us;1058us;1428us;1077us;1428us;1082us;1428us;1088us;1428us;1091us;1428us;1094us;1428us;1100us;1428us;1104us;1428us;1108us;1428us;1114us;1428us;1116us;1428us;1121us;1428us;1123us;1428us;1125us;1428us;1127us;1428us;1129us;1428us;1131us;1428us;1135us;1428us;1145us;1428us;1152us;1428us;1158us;1428us;1160us;1428us;1165us;1428us;1169us;1428us;1172us;1428us;1176us;1428us;1179us;1428us;1182us;1428us;1184us;1428us;1187us;1428us;1189us;1428us;1238us;1428us;1240us;1428us;1244us;1428us;1246us;1428us;1248us;1428us;1250us;1428us;1252us;1428us;1254us;1428us;1256us;1428us;1258us;1428us;1260us;1428us;1262us;1428us;1264us;1428us;1266us;1428us;1268us;1428us;1270us;1428us;1272us;1428us;1274us;1428us;1276us;1428us;1278us;1428us;1280us;1428us;1282us;1428us;1284us;1428us;1285us;1428us;1286us;1428us;1287us;1428us;1290us;1428us;1300us;1428us;1325us;1428us;1326us;1428us;1330us;1428us;1332us;1428us;1335us;1428us;1336us;1428us;1338us;1428us;1341us;1428us;1343us;1428us;1345us;1428us;1347us;1428us;1349us;1428us;1350us;1428us;1351us;1428us;1352us;1428us;1354us;1428us;1355us;1428us;1357us;1428us;1358us;1428us;1360us;1428us;1361us;1428us;1363us;1428us;1364us;1428us;1366us;1428us;1367us;1428us;1369us;1428us;1370us;1428us;1384us;1428us;1386us;1428us;1388us;1428us;1389us;1428us;1390us;1428us;1391us;1428us;1395us;1428us;1400us;1428us;1406us;1428us;1407us;1428us;1410us;1428us;1411us;1428us;1429us;1428us;1436us;1428us;1443us;1428us;1450us;1428us;1467us;1428us;1474us;1428us;1475us;1428us;1481us;1428us;1487us;1428us;1488us;1428us;1489us;1428us;1501us;1428us;1507us;1428us;1517us;1428us;1530us;1428us;1532us;1428us;1535us;1428us;1536us;1428us;1542us;1428us;1562us;1428us;1567us;1428us;1592us;1428us;1625us;1428us;1634us;1428us;1639us;1428us;1862us;1428us;2019us;1428us;2023us;1428us;16us;65535us;48us;1983us;79us;1983us;82us;1983us;83us;1983us;84us;1985us;87us;1983us;227us;1983us;246us;1983us;252us;1983us;257us;1983us;261us;1983us;262us;1983us;263us;1983us;264us;1983us;1983us;1983us;1985us;1985us;14us;65535us;48us;88us;79us;88us;82us;88us;83us;88us;87us;88us;227us;265us;246us;265us;252us;253us;257us;259us;261us;265us;262us;265us;263us;265us;264us;265us;1983us;1984us;2us;65535us;84us;85us;1985us;1986us;10us;65535us;172us;2000us;318us;328us;406us;2000us;542us;2000us;720us;721us;912us;914us;914us;916us;995us;1026us;1017us;1019us;1049us;1050us;4us;65535us;221us;222us;312us;313us;517us;518us;520us;521us;2us;65535us;1609us;1610us;1619us;1620us;10us;65535us;118us;119us;443us;444us;456us;457us;459us;460us;461us;462us;463us;464us;469us;470us;548us;549us;550us;551us;554us;555us;2us;65535us;65us;66us;233us;234us;0us;65535us;18us;65535us;76us;77us;138us;139us;243us;244us;320us;321us;323us;324us;372us;373us;473us;474us;671us;703us;698us;699us;701us;702us;1084us;1085us;1134us;1142us;1167us;1168us;1174us;1175us;1181us;1182us;1596us;1600us;1597us;1598us;1620us;1621us;8us;65535us;172us;173us;318us;319us;406us;407us;542us;543us;720us;723us;912us;913us;995us;1025us;1017us;1018us;4us;65535us;52us;53us;57us;58us;747us;748us;753us;754us;0us;65535us;11us;65535us;105us;106us;179us;180us;409us;418us;411us;418us;416us;418us;442us;424us;450us;451us;546us;803us;547us;424us;553us;424us;800us;803us;7us;65535us;106us;107us;193us;726us;196us;726us;477us;478us;486us;487us;724us;726us;803us;804us;4us;65535us;1062us;1152us;1134us;1135us;1144us;1145us;1214us;1290us;9us;65535us;1060us;1139us;1061us;1149us;1063us;1156us;1064us;1298us;1136us;1137us;1146us;1147us;1153us;1154us;1291us;1292us;1294us;1295us;2us;65535us;281us;306us;296us;306us;2us;65535us;95us;127us;120us;123us;2us;65535us;70us;95us;94us;95us;303us;65535us;6us;845us;8us;845us;31us;845us;40us;42us;111us;845us;114us;845us;116us;845us;149us;845us;178us;845us;184us;845us;188us;845us;190us;845us;201us;845us;237us;845us;251us;845us;274us;845us;290us;845us;331us;845us;335us;845us;340us;845us;385us;845us;419us;845us;422us;845us;424us;845us;427us;845us;439us;845us;446us;845us;454us;845us;465us;845us;468us;845us;481us;845us;491us;845us;497us;845us;522us;845us;525us;845us;561us;845us;569us;845us;570us;571us;612us;845us;625us;845us;629us;845us;634us;845us;639us;845us;642us;845us;652us;845us;663us;845us;678us;845us;680us;845us;683us;845us;687us;845us;689us;845us;700us;845us;704us;845us;707us;845us;710us;845us;713us;845us;729us;845us;742us;845us;751us;845us;757us;845us;804us;845us;807us;845us;811us;845us;821us;845us;827us;845us;871us;845us;897us;845us;899us;845us;900us;845us;904us;845us;905us;845us;908us;845us;910us;845us;911us;845us;920us;845us;924us;845us;925us;845us;927us;845us;929us;845us;932us;845us;934us;845us;936us;845us;939us;845us;943us;845us;945us;845us;947us;845us;955us;845us;958us;845us;969us;845us;977us;845us;998us;845us;1000us;845us;1003us;845us;1006us;845us;1007us;845us;1009us;845us;1010us;845us;1013us;845us;1015us;845us;1016us;845us;1022us;845us;1026us;845us;1028us;845us;1034us;845us;1044us;845us;1050us;845us;1052us;845us;1055us;845us;1058us;845us;1076us;845us;1077us;845us;1081us;845us;1082us;845us;1088us;845us;1091us;845us;1094us;845us;1100us;845us;1104us;845us;1108us;845us;1114us;845us;1116us;845us;1121us;845us;1123us;845us;1125us;845us;1127us;845us;1129us;845us;1131us;845us;1133us;845us;1135us;845us;1145us;845us;1152us;845us;1158us;845us;1160us;845us;1164us;845us;1165us;845us;1169us;845us;1171us;845us;1172us;845us;1176us;845us;1179us;845us;1182us;845us;1184us;845us;1187us;845us;1189us;845us;1229us;845us;1232us;845us;1235us;845us;1238us;845us;1240us;845us;1244us;845us;1246us;845us;1248us;845us;1250us;845us;1252us;845us;1254us;845us;1256us;845us;1258us;845us;1260us;845us;1262us;845us;1264us;845us;1266us;845us;1268us;845us;1270us;845us;1272us;845us;1274us;845us;1276us;845us;1278us;845us;1280us;845us;1282us;845us;1284us;845us;1285us;845us;1286us;845us;1287us;845us;1290us;845us;1300us;845us;1303us;845us;1305us;845us;1311us;845us;1318us;845us;1320us;845us;1325us;845us;1326us;845us;1330us;845us;1332us;845us;1335us;845us;1336us;845us;1338us;845us;1341us;845us;1343us;845us;1345us;845us;1347us;845us;1349us;845us;1350us;845us;1351us;845us;1352us;845us;1354us;845us;1355us;845us;1357us;845us;1358us;845us;1360us;845us;1361us;845us;1363us;845us;1364us;845us;1366us;845us;1367us;845us;1369us;845us;1370us;845us;1372us;845us;1373us;845us;1376us;845us;1377us;845us;1384us;845us;1386us;845us;1388us;845us;1389us;845us;1390us;845us;1391us;845us;1395us;845us;1400us;845us;1406us;845us;1407us;845us;1410us;845us;1411us;845us;1429us;845us;1436us;845us;1443us;845us;1450us;845us;1467us;845us;1474us;845us;1475us;845us;1481us;845us;1487us;845us;1488us;845us;1489us;845us;1501us;845us;1507us;845us;1515us;845us;1517us;845us;1530us;845us;1532us;845us;1535us;845us;1536us;845us;1539us;1540us;1542us;845us;1548us;845us;1551us;845us;1553us;845us;1555us;845us;1557us;845us;1562us;845us;1567us;845us;1592us;845us;1617us;845us;1625us;845us;1632us;845us;1634us;845us;1637us;845us;1639us;845us;1649us;845us;1651us;845us;1655us;845us;1657us;845us;1658us;845us;1662us;845us;1666us;845us;1669us;845us;1672us;845us;1675us;845us;1677us;845us;1679us;845us;1684us;845us;1688us;845us;1693us;845us;1698us;845us;1701us;845us;1704us;845us;1707us;845us;1712us;845us;1715us;845us;1717us;845us;1720us;845us;1724us;845us;1727us;845us;1729us;845us;1732us;845us;1735us;845us;1737us;845us;1749us;845us;1755us;845us;1758us;845us;1825us;845us;1829us;845us;1835us;845us;1842us;845us;1846us;845us;1852us;845us;1853us;845us;1862us;845us;1876us;845us;1878us;845us;1889us;845us;2019us;845us;2023us;845us;302us;65535us;6us;846us;8us;846us;31us;846us;40us;43us;111us;846us;114us;846us;116us;846us;149us;846us;178us;846us;184us;846us;188us;846us;190us;846us;201us;846us;237us;846us;251us;846us;274us;846us;290us;846us;331us;846us;335us;846us;340us;846us;385us;846us;419us;846us;422us;846us;424us;846us;427us;846us;439us;846us;446us;846us;454us;846us;465us;846us;468us;846us;481us;846us;491us;846us;497us;846us;522us;846us;525us;846us;561us;846us;569us;846us;570us;846us;612us;846us;625us;846us;629us;846us;634us;846us;639us;846us;642us;846us;652us;846us;663us;846us;678us;846us;680us;846us;683us;846us;687us;846us;689us;846us;700us;846us;704us;846us;707us;846us;710us;846us;713us;846us;729us;846us;742us;846us;751us;846us;757us;846us;804us;846us;807us;846us;811us;846us;821us;846us;827us;846us;871us;846us;897us;846us;899us;846us;900us;846us;904us;846us;905us;846us;908us;846us;910us;846us;911us;846us;920us;846us;924us;846us;925us;846us;927us;846us;929us;846us;932us;846us;934us;846us;936us;846us;939us;846us;943us;846us;945us;846us;947us;846us;955us;846us;958us;846us;969us;846us;977us;846us;998us;846us;1000us;846us;1003us;846us;1006us;846us;1007us;846us;1009us;846us;1010us;846us;1013us;846us;1015us;846us;1016us;846us;1022us;846us;1026us;846us;1028us;846us;1034us;846us;1044us;846us;1050us;846us;1052us;846us;1055us;846us;1058us;846us;1076us;846us;1077us;846us;1081us;846us;1082us;846us;1088us;846us;1091us;846us;1094us;846us;1100us;846us;1104us;846us;1108us;846us;1114us;846us;1116us;846us;1121us;846us;1123us;846us;1125us;846us;1127us;846us;1129us;846us;1131us;846us;1133us;846us;1135us;846us;1145us;846us;1152us;846us;1158us;846us;1160us;846us;1164us;846us;1165us;846us;1169us;846us;1171us;846us;1172us;846us;1176us;846us;1179us;846us;1182us;846us;1184us;846us;1187us;846us;1189us;846us;1229us;846us;1232us;846us;1235us;846us;1238us;846us;1240us;846us;1244us;846us;1246us;846us;1248us;846us;1250us;846us;1252us;846us;1254us;846us;1256us;846us;1258us;846us;1260us;846us;1262us;846us;1264us;846us;1266us;846us;1268us;846us;1270us;846us;1272us;846us;1274us;846us;1276us;846us;1278us;846us;1280us;846us;1282us;846us;1284us;846us;1285us;846us;1286us;846us;1287us;846us;1290us;846us;1300us;846us;1303us;846us;1305us;846us;1311us;846us;1318us;846us;1320us;846us;1325us;846us;1326us;846us;1330us;846us;1332us;846us;1335us;846us;1336us;846us;1338us;846us;1341us;846us;1343us;846us;1345us;846us;1347us;846us;1349us;846us;1350us;846us;1351us;846us;1352us;846us;1354us;846us;1355us;846us;1357us;846us;1358us;846us;1360us;846us;1361us;846us;1363us;846us;1364us;846us;1366us;846us;1367us;846us;1369us;846us;1370us;846us;1372us;846us;1373us;846us;1376us;846us;1377us;846us;1384us;846us;1386us;846us;1388us;846us;1389us;846us;1390us;846us;1391us;846us;1395us;846us;1400us;846us;1406us;846us;1407us;846us;1410us;846us;1411us;846us;1429us;846us;1436us;846us;1443us;846us;1450us;846us;1467us;846us;1474us;846us;1475us;846us;1481us;846us;1487us;846us;1488us;846us;1489us;846us;1501us;846us;1507us;846us;1515us;846us;1517us;846us;1530us;846us;1532us;846us;1535us;846us;1536us;846us;1542us;846us;1548us;846us;1551us;846us;1553us;846us;1555us;846us;1557us;846us;1562us;846us;1567us;846us;1592us;846us;1617us;846us;1625us;846us;1632us;846us;1634us;846us;1637us;846us;1639us;846us;1649us;846us;1651us;846us;1655us;846us;1657us;846us;1658us;846us;1662us;846us;1666us;846us;1669us;846us;1672us;846us;1675us;846us;1677us;846us;1679us;846us;1684us;846us;1688us;846us;1693us;846us;1698us;846us;1701us;846us;1704us;846us;1707us;846us;1712us;846us;1715us;846us;1717us;846us;1720us;846us;1724us;846us;1727us;846us;1729us;846us;1732us;846us;1735us;846us;1737us;846us;1749us;846us;1755us;846us;1758us;846us;1825us;846us;1829us;846us;1835us;846us;1842us;846us;1846us;846us;1852us;846us;1853us;846us;1862us;846us;1876us;846us;1878us;846us;1889us;846us;2019us;846us;2023us;846us;2us;65535us;2019us;2020us;2023us;2024us;4us;65535us;2019us;2022us;2020us;2021us;2023us;2027us;2024us;2025us;156us;65535us;6us;1460us;31us;1460us;114us;1460us;116us;1460us;237us;1460us;251us;1460us;274us;1460us;331us;1460us;335us;1460us;340us;1460us;422us;1460us;427us;1460us;468us;1460us;491us;1460us;525us;1460us;689us;1460us;700us;1460us;751us;1460us;757us;1460us;807us;1460us;811us;1460us;821us;1460us;1028us;1460us;1034us;1460us;1050us;1460us;1052us;1460us;1055us;1460us;1058us;1460us;1077us;1460us;1082us;1460us;1088us;1460us;1091us;1460us;1094us;1460us;1100us;1460us;1104us;1460us;1108us;1460us;1114us;1460us;1116us;1460us;1121us;1460us;1123us;1460us;1125us;1460us;1127us;1460us;1129us;1460us;1131us;1460us;1135us;1460us;1145us;1460us;1152us;1460us;1158us;1460us;1160us;1460us;1165us;1460us;1169us;1460us;1172us;1460us;1176us;1460us;1179us;1460us;1182us;1460us;1184us;1460us;1187us;1460us;1189us;1460us;1238us;1460us;1240us;1460us;1244us;1460us;1246us;1460us;1248us;1460us;1250us;1460us;1252us;1460us;1254us;1460us;1256us;1460us;1258us;1460us;1260us;1460us;1262us;1460us;1264us;1460us;1266us;1460us;1268us;1460us;1270us;1460us;1272us;1460us;1274us;1460us;1276us;1460us;1278us;1460us;1280us;1460us;1282us;1460us;1284us;1460us;1285us;1460us;1286us;1460us;1287us;1460us;1290us;1460us;1300us;1460us;1325us;1460us;1326us;1460us;1330us;1460us;1332us;1460us;1335us;1460us;1336us;1460us;1338us;1460us;1341us;1460us;1343us;1460us;1345us;1460us;1347us;1460us;1349us;1460us;1350us;1460us;1351us;1460us;1352us;1460us;1354us;1460us;1355us;1460us;1357us;1460us;1358us;1460us;1360us;1460us;1361us;1460us;1363us;1460us;1364us;1460us;1366us;1460us;1367us;1460us;1369us;1460us;1370us;1460us;1376us;1460us;1377us;1460us;1384us;1460us;1386us;1460us;1388us;1460us;1389us;1460us;1390us;1460us;1391us;1460us;1395us;1460us;1400us;1460us;1406us;1460us;1407us;1460us;1410us;1460us;1411us;1460us;1429us;1460us;1436us;1460us;1443us;1460us;1450us;1460us;1467us;1460us;1474us;1460us;1475us;1460us;1481us;1460us;1487us;1460us;1488us;1460us;1489us;1460us;1501us;1460us;1507us;1460us;1517us;1460us;1530us;1460us;1532us;1460us;1535us;1460us;1536us;1460us;1542us;1460us;1557us;1460us;1562us;1460us;1567us;1460us;1592us;1460us;1625us;1460us;1634us;1460us;1639us;1460us;1862us;1460us;2019us;1460us;2023us;1460us;11us;65535us;330us;331us;334us;335us;339us;340us;364us;365us;523us;525us;770us;771us;782us;786us;785us;786us;1374us;1376us;1375us;1377us;1556us;1557us;5us;65535us;109us;619us;182us;619us;452us;619us;595us;614us;924us;619us;14us;65535us;31us;276us;69us;99us;93us;99us;195us;198us;237us;276us;251us;276us;270us;276us;287us;290us;317us;344us;328us;344us;350us;475us;1540us;1547us;2031us;2033us;2032us;2033us;10us;65535us;31us;50us;69us;50us;93us;50us;237us;50us;251us;50us;270us;50us;317us;342us;328us;342us;2036us;2038us;2037us;2038us;8us;65535us;575us;576us;578us;579us;951us;952us;953us;954us;1073us;1521us;1517us;1523us;1518us;1519us;2041us;2042us;5us;65535us;584us;585us;587us;588us;1074us;1629us;1625us;1631us;1626us;1627us;44us;65535us;572us;573us;602us;603us;650us;651us;653us;654us;657us;658us;693us;694us;696us;697us;773us;774us;857us;858us;878us;881us;879us;880us;883us;884us;940us;941us;970us;971us;973us;974us;978us;979us;981us;982us;1071us;1494us;1072us;1495us;1224us;1502us;1243us;1437us;1301us;1302us;1444us;1445us;1448us;1449us;1487us;1490us;1488us;1490us;1489us;1490us;1491us;1492us;1506us;1507us;1513us;1514us;1549us;1550us;1553us;1554us;1750us;1751us;1836us;1837us;1847us;1849us;1848us;1849us;1854us;1855us;1865us;1866us;1901us;1902us;1928us;1929us;1930us;1931us;1934us;1935us;1937us;1938us;2046us;2047us;28us;65535us;75us;76us;79us;80us;117us;118us;121us;122us;125us;126us;141us;142us;159us;160us;167us;168us;213us;214us;242us;243us;246us;247us;263us;303us;293us;294us;297us;298us;300us;301us;338us;339us;371us;379us;375us;376us;395us;397us;399us;401us;538us;539us;812us;813us;1028us;1032us;1029us;1030us;1034us;1037us;1035us;1036us;1056us;1057us;2050us;2051us;1us;65535us;1491us;1493us;49us;65535us;317us;326us;319us;325us;389us;391us;467us;471us;490us;494us;522us;528us;904us;906us;905us;907us;908us;909us;996us;1534us;1009us;1011us;1010us;1012us;1013us;1014us;1133us;1155us;1134us;1141us;1135us;1140us;1136us;1138us;1244us;1245us;1246us;1247us;1248us;1249us;1250us;1251us;1252us;1253us;1254us;1255us;1256us;1257us;1258us;1259us;1260us;1261us;1262us;1263us;1264us;1265us;1266us;1267us;1268us;1269us;1270us;1271us;1272us;1273us;1274us;1275us;1276us;1277us;1278us;1279us;1280us;1281us;1282us;1283us;1341us;1342us;1343us;1344us;1345us;1346us;1347us;1348us;1532us;1533us;1591us;1595us;1592us;1594us;1871us;1872us;1878us;1882us;1883us;1885us;1924us;1926us;1974us;1976us;|] +let _fsyacc_sparseGotoTableRowOffsets = [|0us;1us;2us;3us;4us;5us;7us;15us;20us;26us;31us;36us;41us;46us;70us;72us;74us;76us;83us;88us;90us;93us;96us;99us;103us;110us;120us;130us;140us;143us;145us;148us;152us;154us;157us;160us;163us;167us;176us;185us;197us;201us;204us;207us;210us;216us;218us;220us;223us;226us;229us;233us;239us;249us;260us;271us;287us;312us;314us;316us;319us;321us;403us;526us;649us;651us;654us;657us;662us;669us;672us;676us;678us;681us;684us;687us;691us;700us;711us;713us;716us;720us;724us;729us;740us;744us;747us;749us;802us;825us;900us;902us;907us;910us;913us;916us;919us;923us;926us;931us;936us;939us;944us;954us;1038us;1123us;1128us;1138us;1140us;1142us;1146us;1152us;1154us;1156us;1161us;1165us;1169us;1173us;1177us;1182us;1184us;1188us;1194us;1198us;1202us;1204us;1208us;1212us;1220us;1228us;1235us;1239us;1243us;1247us;1252us;1259us;1261us;1263us;1384us;1392us;1513us;1633us;1637us;1643us;1764us;1766us;1768us;1772us;1775us;1777us;1782us;1785us;1791us;1794us;1796us;1799us;1801us;1803us;1805us;1808us;2110us;2112us;2117us;2121us;2330us;2334us;2338us;2341us;2343us;2345us;2360us;2375us;2390us;2394us;2398us;2439us;2446us;2458us;2511us;2514us;2539us;2564us;2589us;2592us;2595us;2599us;2627us;2634us;2640us;2693us;2695us;2753us;2947us;2952us;3069us;3072us;3074us;3079us;3084us;3092us;3100us;3102us;3104us;3107us;3110us;3112us;3229us;3364us;3501us;3507us;3657us;3661us;3818us;3975us;4184us;4341us;4498us;4502us;4506us;4508us;4665us;4667us;4669us;4671us;4673us;4675us;4677us;4679us;4681us;4685us;4687us;4692us;4694us;4696us;4698us;4701us;4708us;4715us;4719us;4725us;4729us;4731us;4733us;4735us;4738us;4740us;4745us;4751us;4908us;5067us;5184us;5301us;5305us;5311us;5315us;5325us;5335us;5340us;5354us;5365us;5399us;5401us;5435us;5445us;5528us;5646us;5764us;5847us;5871us;5877us;5880us;5963us;5968us;6052us;6146us;6151us;6158us;6168us;6171us;6175us;6177us;6184us;6191us;6198us;6204us;6336us;6723us;6868us;7087us;7095us;7098us;7106us;7119us;7177us;7187us;7337us;7354us;7369us;7372us;7383us;7388us;7391us;7402us;7405us;7406us;7425us;7434us;7439us;7440us;7452us;7460us;7465us;7475us;7478us;7481us;7484us;7788us;8091us;8094us;8099us;8256us;8268us;8274us;8289us;8300us;8309us;8315us;8360us;8389us;8391us;|] +let _fsyacc_stateToProdIdxsTableElements = [| 1us;0us;1us;0us;1us;1us;1us;1us;1us;2us;1us;2us;1us;3us;1us;3us;1us;4us;1us;4us;1us;5us;1us;6us;1us;7us;1us;8us;1us;9us;1us;10us;2us;11us;14us;1us;11us;2us;12us;15us;1us;12us;2us;13us;16us;1us;13us;1us;14us;1us;14us;1us;15us;1us;15us;1us;16us;1us;16us;2us;17us;18us;1us;18us;8us;19us;142us;143us;144us;145us;146us;147us;148us;8us;19us;142us;143us;144us;145us;146us;147us;148us;54us;19us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;1us;20us;2us;21us;22us;1us;22us;1us;23us;1us;24us;1us;25us;1us;25us;2us;25us;27us;1us;27us;1us;28us;1us;29us;2us;30us;31us;1us;30us;1us;31us;1us;31us;3us;32us;50us;53us;1us;32us;3us;33us;34us;35us;3us;33us;34us;35us;3us;33us;34us;35us;3us;33us;34us;35us;3us;33us;1086us;1087us;1us;34us;1us;35us;2us;36us;37us;2us;36us;37us;3us;36us;1086us;1087us;1us;37us;2us;38us;39us;1us;39us;2us;40us;41us;1us;40us;1us;42us;1us;42us;1us;42us;7us;43us;57us;58us;59us;60us;61us;63us;7us;43us;57us;58us;59us;60us;61us;63us;4us;43us;57us;58us;59us;1us;43us;1us;44us;1us;45us;3us;46us;47us;48us;2us;46us;47us;1us;46us;1us;46us;1us;47us;3us;48us;50us;53us;1us;48us;1us;49us;2us;50us;53us;3us;50us;53us;59us;2us;52us;54us;2us;52us;54us;1us;52us;1us;53us;1us;53us;1us;53us;1us;55us;1us;56us;6us;57us;58us;59us;60us;61us;63us;6us;57us;58us;59us;60us;61us;63us;3us;57us;58us;59us;2us;57us;58us;1us;57us;1us;58us;1us;59us;1us;60us;1us;60us;1us;60us;1us;61us;1us;62us;1us;63us;1us;63us;1us;63us;1us;63us;1us;63us;1us;63us;1us;63us;1us;63us;1us;63us;1us;63us;2us;65us;66us;54us;65us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;1us;66us;54us;66us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;1us;66us;1us;66us;3us;67us;68us;155us;1us;67us;1us;67us;1us;68us;1us;68us;1us;68us;1us;68us;1us;69us;1us;69us;1us;69us;1us;70us;1us;70us;1us;70us;2us;72us;73us;1us;72us;1us;72us;1us;73us;3us;74us;83us;84us;1us;74us;1us;74us;1us;74us;1us;74us;1us;74us;1us;74us;1us;75us;1us;75us;1us;76us;1us;77us;1us;78us;1us;78us;1us;78us;1us;79us;3us;80us;81us;82us;2us;80us;81us;1us;80us;1us;81us;1us;82us;1us;82us;2us;83us;84us;2us;83us;84us;1us;83us;1us;84us;2us;85us;86us;2us;85us;86us;1us;85us;1us;86us;2us;87us;88us;2us;87us;88us;1us;87us;1us;88us;1us;89us;1us;90us;1us;92us;1us;92us;1us;92us;8us;93us;94us;95us;96us;97us;98us;99us;100us;13us;93us;94us;95us;96us;97us;98us;99us;100us;296us;297us;298us;299us;300us;8us;93us;94us;95us;96us;97us;98us;99us;100us;13us;93us;94us;95us;96us;97us;98us;99us;100us;296us;297us;298us;299us;300us;1us;93us;1us;93us;1us;93us;1us;93us;1us;93us;1us;93us;1us;93us;1us;93us;1us;93us;1us;94us;4us;94us;982us;983us;984us;2us;95us;96us;4us;95us;982us;983us;984us;1us;96us;1us;97us;1us;97us;6us;98us;99us;185us;186us;229us;230us;1us;98us;1us;98us;1us;99us;1us;99us;1us;100us;1us;100us;1us;100us;1us;102us;1us;102us;2us;103us;104us;2us;103us;104us;1us;103us;1us;104us;3us;105us;106us;107us;2us;106us;107us;1us;106us;1us;107us;1us;108us;1us;108us;1us;108us;1us;109us;1us;110us;1us;111us;1us;111us;1us;112us;1us;112us;1us;112us;2us;114us;115us;1us;114us;1us;115us;1us;115us;2us;116us;139us;1us;116us;2us;117us;118us;1us;118us;2us;119us;120us;1us;119us;1us;121us;1us;121us;1us;121us;12us;122us;130us;131us;132us;134us;142us;143us;144us;145us;146us;147us;148us;11us;122us;130us;131us;132us;142us;143us;144us;145us;146us;147us;148us;3us;122us;147us;148us;1us;122us;1us;123us;3us;124us;125us;126us;2us;124us;125us;1us;124us;1us;124us;1us;125us;2us;126us;139us;1us;126us;1us;127us;1us;128us;11us;130us;131us;132us;134us;142us;143us;144us;145us;146us;147us;148us;10us;130us;131us;132us;142us;143us;144us;145us;146us;147us;148us;56us;130us;131us;132us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;2us;130us;131us;1us;130us;1us;133us;1us;134us;4us;135us;136us;137us;138us;1us;135us;2us;136us;138us;1us;136us;1us;139us;2us;139us;148us;2us;139us;161us;2us;139us;166us;1us;139us;1us;139us;1us;140us;1us;141us;7us;142us;143us;144us;145us;146us;147us;148us;7us;142us;143us;144us;145us;146us;147us;148us;1us;142us;3us;142us;593us;594us;1us;143us;5us;143us;595us;596us;597us;598us;1us;144us;1us;145us;1us;145us;1us;145us;1us;146us;2us;147us;148us;1us;147us;1us;147us;1us;148us;2us;149us;168us;1us;149us;1us;150us;4us;151us;152us;153us;154us;3us;151us;1086us;1087us;1us;152us;2us;153us;154us;4us;153us;982us;983us;984us;1us;154us;3us;155us;1086us;1087us;1us;155us;3us;156us;1086us;1087us;5us;157us;158us;159us;160us;161us;2us;157us;158us;1us;157us;1us;158us;2us;159us;160us;1us;159us;1us;160us;1us;161us;1us;162us;3us;163us;1086us;1087us;3us;164us;165us;166us;2us;164us;165us;1us;164us;1us;165us;1us;166us;1us;167us;1us;167us;1us;167us;1us;168us;2us;170us;171us;1us;171us;4us;172us;173us;174us;175us;3us;172us;174us;177us;2us;172us;174us;1us;172us;1us;172us;2us;173us;588us;1us;173us;1us;173us;1us;174us;1us;175us;1us;176us;2us;177us;1157us;1us;177us;3us;178us;1086us;1087us;1us;178us;1us;178us;2us;179us;180us;3us;179us;1086us;1087us;1us;179us;1us;179us;1us;180us;3us;180us;1086us;1087us;1us;180us;1us;180us;1us;180us;1us;181us;1us;181us;1us;182us;1us;182us;2us;183us;1085us;1us;183us;1us;184us;1us;184us;7us;185us;186us;229us;230us;232us;240us;246us;1us;185us;1us;187us;1us;188us;1us;189us;1us;190us;1us;190us;1us;190us;1us;191us;1us;191us;1us;191us;4us;193us;194us;195us;196us;1us;194us;2us;195us;196us;2us;195us;196us;2us;195us;196us;2us;195us;196us;2us;195us;196us;1us;195us;1us;195us;1us;196us;5us;197us;198us;199us;208us;209us;2us;197us;198us;2us;197us;198us;2us;197us;198us;2us;197us;198us;1us;197us;1us;197us;1us;198us;1us;199us;1us;200us;1us;200us;1us;201us;1us;202us;1us;203us;1us;203us;1us;203us;1us;204us;3us;205us;206us;207us;2us;205us;206us;1us;205us;1us;206us;2us;207us;214us;1us;207us;2us;208us;209us;2us;208us;209us;1us;208us;1us;209us;2us;210us;211us;2us;210us;211us;1us;210us;1us;211us;1us;212us;1us;213us;1us;214us;1us;214us;1us;216us;1us;216us;1us;216us;1us;217us;1us;217us;2us;218us;219us;2us;218us;219us;1us;218us;1us;219us;2us;220us;221us;1us;221us;1us;221us;1us;222us;1us;222us;1us;222us;1us;222us;1us;222us;1us;222us;4us;223us;224us;225us;226us;4us;223us;224us;225us;226us;4us;223us;224us;225us;226us;1us;223us;1us;223us;1us;224us;1us;225us;1us;226us;2us;227us;228us;1us;228us;2us;229us;230us;1us;230us;16us;231us;232us;233us;234us;235us;236us;237us;238us;239us;240us;241us;242us;243us;244us;245us;246us;21us;231us;232us;233us;234us;235us;236us;237us;238us;239us;240us;241us;242us;243us;244us;245us;246us;296us;297us;298us;299us;300us;16us;231us;232us;233us;234us;235us;236us;237us;238us;239us;240us;241us;242us;243us;244us;245us;246us;21us;231us;232us;233us;234us;235us;236us;237us;238us;239us;240us;241us;242us;243us;244us;245us;246us;296us;297us;298us;299us;300us;1us;231us;1us;232us;3us;233us;234us;241us;1us;233us;1us;233us;1us;234us;2us;235us;236us;4us;235us;982us;983us;984us;1us;235us;1us;236us;1us;237us;1us;237us;1us;237us;1us;237us;1us;237us;1us;237us;1us;237us;1us;237us;1us;238us;1us;239us;1us;239us;1us;240us;1us;240us;1us;241us;1us;241us;4us;242us;243us;244us;245us;3us;242us;243us;244us;3us;242us;243us;244us;1us;242us;1us;242us;1us;242us;1us;243us;1us;244us;1us;245us;1us;245us;1us;246us;1us;246us;4us;247us;248us;249us;250us;4us;247us;248us;249us;250us;4us;247us;248us;249us;250us;3us;247us;248us;249us;2us;247us;248us;1us;247us;1us;248us;1us;249us;1us;250us;4us;251us;252us;253us;254us;4us;251us;252us;253us;254us;4us;251us;252us;253us;254us;3us;251us;252us;253us;3us;251us;252us;253us;1us;251us;1us;251us;1us;251us;1us;252us;1us;253us;1us;254us;2us;256us;257us;1us;256us;1us;257us;2us;258us;526us;1us;258us;1us;258us;1us;259us;1us;259us;1us;259us;1us;260us;2us;261us;262us;1us;261us;1us;261us;1us;261us;1us;262us;1us;264us;1us;265us;1us;266us;1us;267us;2us;268us;269us;1us;268us;1us;268us;1us;271us;1us;271us;1us;271us;3us;273us;274us;275us;2us;273us;274us;1us;273us;1us;274us;1us;274us;1us;274us;1us;275us;1us;276us;2us;278us;279us;1us;278us;1us;279us;1us;280us;2us;282us;283us;1us;282us;1us;283us;2us;284us;285us;2us;284us;285us;1us;284us;1us;285us;1us;286us;2us;287us;288us;2us;287us;288us;1us;287us;4us;289us;290us;291us;292us;5us;289us;290us;291us;292us;427us;3us;289us;290us;291us;1us;289us;1us;289us;1us;290us;1us;290us;1us;291us;1us;292us;1us;292us;1us;292us;1us;293us;1us;293us;1us;294us;1us;295us;5us;296us;297us;298us;299us;300us;5us;296us;297us;298us;299us;300us;4us;296us;978us;1086us;1087us;1us;296us;1us;296us;1us;296us;1us;297us;1us;298us;1us;299us;5us;300us;985us;1035us;1036us;1047us;2us;300us;1032us;2us;300us;458us;1us;300us;1us;300us;3us;301us;302us;303us;2us;301us;302us;1us;301us;1us;302us;1us;303us;1us;303us;6us;304us;1037us;1038us;1039us;1040us;1041us;1us;304us;1us;305us;3us;306us;307us;308us;2us;306us;307us;1us;306us;1us;307us;1us;308us;1us;308us;1us;309us;1us;310us;1us;311us;1us;312us;1us;313us;4us;314us;315us;316us;317us;4us;314us;316us;1086us;1087us;1us;315us;3us;315us;1086us;1087us;1us;316us;1us;317us;1us;318us;1us;319us;2us;319us;320us;1us;319us;2us;320us;324us;3us;320us;325us;326us;1us;320us;2us;320us;325us;1us;320us;1us;321us;2us;322us;323us;2us;322us;323us;1us;323us;2us;323us;335us;1us;324us;1us;324us;1us;324us;1us;324us;1us;325us;1us;328us;1us;328us;1us;328us;1us;328us;1us;328us;1us;329us;1us;332us;2us;332us;333us;2us;333us;925us;2us;333us;927us;1us;333us;1us;333us;1us;334us;2us;335us;976us;2us;335us;977us;1us;335us;3us;335us;1049us;1050us;3us;336us;1049us;1050us;1us;337us;1us;337us;1us;337us;1us;337us;11us;338us;339us;340us;341us;342us;344us;345us;346us;976us;979us;988us;2us;338us;988us;2us;338us;988us;7us;339us;340us;341us;342us;344us;345us;346us;1us;339us;3us;340us;345us;346us;1us;340us;1us;341us;1us;342us;1us;342us;1us;342us;5us;343us;985us;1035us;1036us;1047us;2us;343us;348us;1us;343us;1us;343us;1us;343us;1us;343us;1us;343us;1us;344us;1us;344us;1us;345us;4us;347us;982us;983us;984us;1us;348us;4us;348us;982us;983us;984us;9us;349us;961us;962us;966us;967us;968us;982us;983us;984us;1us;350us;1us;350us;1us;351us;1us;351us;1us;351us;2us;352us;370us;1us;353us;2us;354us;355us;1us;354us;1us;354us;9us;356us;357us;358us;359us;360us;361us;362us;363us;364us;9us;356us;357us;358us;359us;360us;361us;362us;363us;364us;6us;356us;358us;359us;362us;363us;364us;1us;357us;2us;358us;362us;1us;358us;1us;359us;2us;360us;361us;1us;360us;1us;361us;1us;362us;1us;363us;1us;363us;1us;364us;6us;364us;766us;767us;768us;772us;775us;1us;365us;6us;366us;367us;1088us;1089us;1091us;1092us;1us;366us;1us;366us;1us;367us;1us;367us;1us;367us;6us;368us;369us;371us;372us;374us;1085us;1us;368us;2us;369us;374us;7us;369us;374us;766us;767us;768us;772us;775us;2us;369us;374us;1us;370us;2us;371us;372us;1us;371us;1us;372us;1us;373us;1us;373us;2us;375us;376us;1us;375us;1us;375us;3us;377us;379us;1085us;2us;377us;379us;8us;377us;952us;953us;954us;955us;982us;983us;984us;8us;378us;952us;953us;954us;955us;982us;983us;984us;1us;379us;1us;380us;1us;381us;1us;382us;2us;383us;384us;2us;383us;1157us;1us;383us;1us;384us;1us;385us;1us;385us;3us;386us;387us;388us;3us;386us;387us;388us;3us;386us;387us;388us;2us;386us;387us;1us;386us;1us;387us;1us;388us;1us;389us;1us;389us;2us;390us;391us;2us;390us;391us;2us;390us;391us;1us;390us;1us;390us;1us;391us;3us;392us;393us;394us;2us;393us;394us;1us;393us;1us;394us;1us;396us;3us;396us;1086us;1087us;1us;397us;1us;397us;1us;397us;1us;398us;1us;399us;1us;399us;1us;400us;1us;400us;1us;400us;1us;400us;2us;401us;402us;1us;401us;1us;401us;1us;402us;1us;403us;1us;404us;1us;405us;1us;406us;1us;407us;1us;408us;1us;409us;1us;409us;1us;409us;1us;409us;1us;409us;1us;409us;1us;409us;1us;409us;2us;410us;413us;2us;411us;414us;1us;413us;1us;413us;1us;414us;1us;414us;2us;415us;416us;5us;415us;416us;418us;419us;420us;1us;416us;3us;417us;1086us;1087us;4us;418us;419us;420us;422us;1us;418us;1us;418us;1us;418us;1us;419us;1us;420us;1us;421us;2us;421us;423us;1us;421us;2us;422us;423us;1us;424us;1us;424us;1us;425us;1us;425us;1us;425us;1us;427us;1us;427us;1us;428us;3us;429us;430us;431us;3us;429us;430us;431us;3us;429us;430us;431us;3us;429us;430us;431us;2us;429us;430us;1us;429us;1us;430us;1us;431us;2us;432us;433us;2us;432us;433us;1us;432us;1us;433us;1us;434us;1us;435us;2us;435us;436us;1us;436us;1us;438us;2us;438us;439us;1us;438us;1us;438us;1us;439us;1us;439us;1us;440us;2us;441us;442us;1us;441us;1us;441us;1us;442us;1us;443us;1us;444us;1us;445us;1us;446us;1us;447us;1us;448us;1us;449us;1us;450us;1us;451us;1us;452us;1us;453us;1us;454us;1us;455us;1us;456us;1us;457us;1us;458us;1us;459us;1us;460us;2us;461us;463us;1us;461us;1us;461us;2us;462us;464us;2us;462us;464us;1us;462us;1us;462us;1us;465us;1us;466us;1us;466us;1us;466us;1us;467us;1us;468us;1us;468us;2us;469us;470us;1us;470us;1us;470us;7us;471us;486us;487us;488us;493us;495us;499us;1us;472us;1us;473us;1us;473us;3us;474us;475us;476us;4us;474us;475us;477us;478us;2us;474us;475us;1us;474us;1us;475us;1us;476us;1us;478us;1us;478us;1us;479us;5us;481us;482us;483us;484us;485us;2us;481us;483us;1us;481us;1us;482us;1us;483us;2us;484us;588us;1us;484us;1us;485us;7us;486us;487us;487us;488us;493us;495us;499us;7us;486us;487us;488us;488us;493us;495us;499us;7us;486us;487us;488us;492us;493us;495us;499us;7us;486us;487us;488us;493us;493us;495us;499us;7us;486us;487us;488us;493us;495us;496us;499us;7us;486us;487us;488us;493us;495us;498us;499us;7us;486us;487us;488us;493us;495us;499us;499us;7us;486us;487us;488us;493us;495us;499us;590us;7us;486us;487us;488us;493us;495us;499us;591us;7us;486us;487us;488us;493us;495us;499us;641us;8us;486us;487us;488us;493us;495us;499us;642us;643us;1us;486us;1us;486us;1us;487us;1us;488us;3us;489us;492us;494us;2us;490us;498us;1us;491us;2us;492us;494us;2us;493us;495us;1us;494us;1us;495us;2us;496us;497us;1us;497us;1us;498us;1us;499us;3us;500us;501us;502us;1us;500us;3us;501us;502us;1157us;1us;501us;1us;502us;1us;502us;3us;503us;504us;505us;6us;503us;504us;505us;1124us;1126us;1127us;2us;503us;504us;9us;503us;543us;544us;547us;548us;550us;553us;555us;559us;1us;504us;1us;505us;8us;506us;507us;508us;509us;510us;511us;512us;528us;4us;506us;507us;508us;509us;1us;507us;1us;508us;1us;508us;1us;509us;1us;509us;1us;510us;1us;511us;1us;511us;1us;512us;1us;512us;1us;513us;1us;513us;1us;514us;9us;515us;533us;534us;535us;536us;1088us;1089us;1091us;1092us;1us;515us;1us;515us;1us;516us;4us;517us;518us;519us;520us;1us;517us;1us;518us;1us;518us;1us;519us;1us;519us;1us;521us;2us;522us;523us;1us;522us;1us;522us;1us;523us;1us;523us;1us;524us;1us;524us;1us;524us;1us;525us;1us;525us;1us;525us;1us;527us;2us;527us;1109us;1us;527us;1us;528us;1us;529us;1us;530us;1us;531us;1us;532us;8us;533us;534us;535us;536us;1088us;1089us;1091us;1092us;2us;533us;534us;1us;533us;1us;534us;3us;535us;588us;1089us;2us;535us;1089us;1us;536us;4us;537us;538us;539us;540us;4us;537us;538us;539us;540us;5us;537us;538us;545us;552us;554us;1us;537us;1us;538us;2us;539us;588us;1us;539us;1us;540us;9us;541us;543us;544us;547us;548us;550us;553us;555us;559us;9us;543us;544us;544us;547us;548us;550us;553us;555us;559us;9us;543us;544us;547us;548us;549us;550us;553us;555us;559us;9us;543us;544us;547us;548us;550us;550us;553us;555us;559us;9us;543us;544us;547us;548us;550us;552us;553us;555us;559us;9us;543us;544us;547us;548us;550us;553us;553us;555us;559us;9us;543us;544us;547us;548us;550us;553us;555us;556us;559us;9us;543us;544us;547us;548us;550us;553us;555us;558us;559us;8us;543us;544us;547us;548us;550us;553us;555us;559us;9us;543us;544us;547us;548us;550us;553us;555us;559us;559us;9us;543us;544us;547us;548us;550us;553us;555us;559us;562us;10us;543us;544us;547us;548us;550us;553us;555us;559us;566us;567us;14us;543us;544us;547us;548us;550us;553us;555us;559us;635us;636us;849us;850us;851us;852us;9us;543us;544us;547us;548us;550us;553us;555us;559us;718us;1us;543us;1us;543us;1us;544us;3us;545us;552us;554us;2us;546us;558us;2us;547us;548us;1us;547us;1us;548us;1us;549us;1us;550us;1us;551us;2us;552us;554us;2us;553us;555us;1us;554us;1us;555us;2us;556us;557us;1us;557us;1us;558us;1us;559us;2us;560us;561us;1us;560us;2us;561us;1157us;1us;561us;5us;562us;563us;564us;1086us;1087us;2us;562us;563us;1us;563us;1us;564us;1us;566us;2us;567us;1157us;1us;567us;3us;568us;569us;570us;2us;568us;569us;1us;568us;1us;569us;1us;570us;1us;571us;2us;572us;573us;1us;572us;1us;572us;1us;573us;54us;574us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;2us;575us;576us;1us;575us;1us;577us;2us;577us;919us;3us;578us;579us;580us;2us;578us;579us;1us;578us;1us;579us;1us;581us;1us;581us;58us;582us;583us;584us;585us;586us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;2us;582us;583us;1us;582us;1us;585us;1us;585us;1us;586us;1us;586us;1us;586us;1us;586us;5us;587us;595us;596us;597us;598us;1us;588us;2us;588us;624us;2us;588us;630us;2us;588us;633us;2us;588us;635us;2us;588us;707us;2us;588us;717us;2us;588us;721us;2us;588us;780us;2us;588us;793us;2us;588us;812us;2us;588us;816us;2us;588us;821us;3us;588us;821us;1089us;2us;588us;837us;2us;588us;911us;1us;589us;1us;590us;1us;590us;1us;590us;1us;590us;1us;590us;1us;591us;1us;591us;1us;591us;1us;591us;1us;591us;1us;591us;2us;593us;594us;2us;593us;594us;1us;593us;1us;594us;4us;595us;596us;597us;598us;1us;595us;1us;596us;2us;597us;598us;1us;597us;1us;598us;1us;599us;1us;600us;1us;601us;2us;602us;603us;2us;602us;603us;1us;602us;1us;603us;2us;604us;605us;2us;604us;605us;1us;604us;1us;605us;5us;606us;607us;608us;609us;610us;3us;606us;607us;610us;1us;606us;1us;607us;2us;608us;609us;1us;609us;1us;610us;1us;610us;3us;611us;612us;613us;55us;611us;612us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;1us;611us;1us;612us;1us;613us;1us;614us;54us;614us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;2us;615us;616us;54us;615us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;1us;617us;1us;617us;2us;618us;619us;1us;618us;1us;620us;1us;620us;1us;621us;1us;621us;15us;622us;623us;624us;625us;626us;627us;628us;629us;630us;631us;632us;633us;634us;635us;636us;6us;622us;623us;624us;625us;626us;627us;4us;622us;623us;624us;625us;2us;622us;623us;1us;622us;1us;623us;1us;624us;1us;625us;1us;626us;1us;627us;1us;627us;5us;628us;629us;630us;631us;632us;4us;628us;629us;630us;631us;2us;628us;629us;1us;628us;1us;629us;1us;630us;1us;631us;1us;632us;1us;633us;1us;633us;1us;633us;1us;634us;1us;635us;2us;636us;1218us;2us;637us;639us;54us;637us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;2us;638us;640us;54us;638us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;1us;639us;1us;640us;1us;641us;1us;641us;1us;641us;1us;641us;1us;641us;1us;641us;1us;641us;2us;642us;643us;2us;642us;643us;2us;642us;643us;2us;642us;643us;2us;642us;643us;1us;642us;1us;642us;1us;643us;1us;644us;1us;644us;1us;644us;1us;644us;1us;644us;1us;645us;1us;645us;1us;645us;1us;646us;54us;646us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;1us;647us;1us;647us;54us;648us;649us;650us;651us;652us;653us;654us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;695us;696us;697us;698us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;697us;698us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;699us;742us;743us;744us;745us;57us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;702us;703us;704us;705us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;725us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;729us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;734us;742us;743us;744us;745us;55us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;736us;737us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;738us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;740us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;743us;744us;745us;53us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;745us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;827us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;849us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;852us;54us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;852us;55us;648us;649us;650us;651us;652us;653us;654us;657us;658us;659us;660us;661us;662us;663us;664us;665us;666us;667us;668us;669us;670us;671us;672us;673us;674us;675us;676us;677us;678us;679us;680us;681us;682us;683us;684us;685us;686us;687us;688us;689us;690us;691us;692us;693us;694us;695us;696us;697us;698us;742us;743us;744us;745us;1179us;1180us;2us;648us;649us;1us;648us;1us;649us;2us;650us;651us;1us;650us;1us;651us;2us;652us;653us;1us;652us;1us;653us;1us;654us;2us;655us;701us;1us;655us;1us;655us;5us;656us;738us;739us;740us;741us;7us;656us;738us;739us;740us;741us;782us;783us;2us;657us;658us;1us;658us;2us;659us;660us;1us;660us;2us;661us;662us;1us;662us;2us;663us;664us;1us;664us;2us;665us;666us;1us;666us;2us;667us;668us;1us;668us;2us;669us;670us;1us;670us;2us;671us;672us;1us;672us;2us;673us;674us;1us;674us;2us;675us;676us;1us;676us;2us;677us;678us;1us;678us;2us;679us;680us;1us;680us;2us;681us;682us;1us;682us;2us;683us;684us;1us;684us;2us;685us;686us;1us;686us;2us;687us;688us;1us;688us;2us;689us;690us;1us;690us;2us;691us;692us;1us;692us;2us;693us;694us;1us;694us;2us;695us;696us;1us;696us;2us;697us;698us;1us;699us;3us;699us;1116us;1117us;2us;699us;1117us;1us;700us;2us;700us;1104us;3us;702us;703us;704us;2us;702us;703us;1us;702us;1us;703us;1us;704us;1us;704us;1us;705us;1us;706us;1us;707us;1us;708us;1us;709us;1us;709us;1us;709us;1us;710us;1us;710us;3us;711us;712us;713us;2us;711us;712us;1us;711us;1us;712us;1us;713us;1us;714us;2us;715us;716us;1us;715us;1us;716us;1us;717us;1us;718us;6us;719us;720us;721us;722us;723us;724us;4us;719us;720us;722us;723us;2us;720us;722us;1us;720us;1us;721us;1us;721us;1us;722us;1us;723us;1us;724us;1us;725us;1us;727us;1us;727us;1us;728us;1us;728us;2us;729us;730us;1us;730us;2us;731us;732us;1us;731us;1us;732us;1us;734us;1us;735us;1us;735us;2us;736us;737us;1us;736us;1us;737us;4us;738us;739us;740us;741us;1us;739us;2us;740us;741us;1us;741us;4us;742us;743us;744us;745us;1us;742us;2us;744us;745us;1us;744us;1us;746us;2us;746us;1082us;3us;746us;1082us;1096us;2us;746us;1096us;1us;746us;1us;747us;2us;747us;1103us;1us;747us;1us;748us;2us;748us;1099us;1us;748us;1us;749us;2us;749us;1102us;1us;749us;1us;750us;2us;750us;1115us;1us;750us;1us;751us;2us;751us;1110us;1us;751us;1us;752us;2us;752us;1111us;1us;752us;4us;753us;754us;755us;756us;8us;753us;754us;755us;756us;893us;894us;895us;896us;3us;753us;754us;755us;7us;753us;754us;755us;893us;894us;895us;896us;3us;753us;754us;755us;5us;753us;754us;755us;894us;895us;2us;753us;754us;4us;753us;754us;894us;895us;1us;753us;1us;753us;1us;755us;1us;756us;1us;757us;1us;757us;1us;758us;1us;758us;2us;759us;760us;8us;759us;760us;867us;868us;869us;873us;874us;875us;2us;760us;765us;7us;760us;867us;868us;869us;873us;874us;875us;1us;760us;7us;761us;764us;766us;767us;768us;772us;775us;6us;761us;766us;767us;768us;772us;775us;1us;762us;6us;762us;766us;767us;768us;772us;775us;6us;763us;766us;767us;768us;772us;775us;2us;764us;765us;5us;764us;765us;870us;871us;872us;2us;764us;765us;1us;765us;6us;766us;766us;767us;768us;772us;775us;6us;766us;767us;767us;768us;772us;775us;6us;766us;767us;768us;769us;772us;775us;6us;766us;767us;768us;772us;775us;1044us;1us;766us;1us;767us;1us;768us;1us;768us;1us;769us;2us;769us;1093us;1us;770us;2us;770us;1081us;1us;770us;2us;770us;1081us;1us;771us;1us;772us;1us;772us;1us;773us;1us;773us;1us;773us;1us;774us;2us;774us;1109us;1us;774us;1us;775us;1us;775us;1us;776us;1us;777us;4us;778us;779us;780us;781us;2us;778us;779us;1us;778us;1us;779us;1us;780us;1us;781us;3us;782us;783us;907us;2us;782us;783us;1us;782us;1us;783us;1us;784us;1us;785us;1us;786us;1us;788us;6us;789us;790us;1088us;1089us;1091us;1092us;1us;789us;1us;789us;1us;789us;1us;789us;1us;790us;1us;790us;4us;791us;792us;793us;794us;2us;791us;792us;1us;791us;1us;792us;1us;793us;1us;794us;1us;795us;1us;796us;1us;797us;1us;798us;1us;799us;1us;800us;1us;801us;1us;802us;1us;803us;1us;804us;1us;805us;4us;806us;807us;808us;809us;2us;806us;807us;1us;806us;1us;807us;1us;808us;1us;808us;1us;809us;4us;810us;811us;812us;813us;5us;810us;811us;812us;813us;1118us;2us;810us;811us;1us;810us;1us;811us;1us;812us;1us;813us;4us;814us;815us;816us;817us;2us;814us;815us;1us;814us;1us;815us;1us;816us;1us;817us;10us;818us;819us;820us;821us;822us;823us;824us;825us;826us;827us;15us;818us;819us;820us;821us;822us;823us;824us;825us;826us;827us;832us;1088us;1089us;1091us;1092us;14us;818us;819us;820us;821us;822us;823us;824us;825us;826us;827us;1088us;1089us;1091us;1092us;1us;818us;2us;819us;820us;1us;819us;1us;820us;1us;821us;2us;821us;1089us;1us;822us;1us;823us;1us;824us;1us;825us;1us;826us;1us;827us;1us;827us;1us;828us;1us;828us;1us;828us;1us;828us;1us;828us;1us;828us;1us;829us;1us;830us;1us;831us;2us;831us;834us;2us;832us;833us;1us;832us;1us;833us;4us;833us;982us;983us;984us;5us;835us;836us;837us;838us;839us;2us;835us;836us;1us;835us;1us;836us;1us;837us;1us;838us;1us;839us;1us;840us;1us;841us;1us;842us;1us;843us;1us;845us;1us;847us;1us;848us;1us;848us;2us;849us;850us;1us;850us;1us;851us;1us;852us;1us;852us;1us;853us;1us;854us;1us;855us;1us;855us;1us;855us;2us;855us;856us;1us;855us;1us;855us;1us;856us;1us;859us;1us;861us;1us;861us;1us;861us;1us;861us;2us;863us;864us;1us;863us;5us;864us;985us;1035us;1036us;1047us;1us;864us;1us;865us;1us;865us;1us;865us;1us;865us;2us;865us;884us;1us;865us;1us;866us;2us;867us;868us;1us;867us;2us;867us;884us;1us;867us;1us;868us;2us;871us;872us;1us;872us;2us;872us;884us;1us;872us;1us;873us;1us;873us;2us;873us;884us;1us;873us;2us;874us;875us;1us;874us;1us;874us;1us;875us;2us;875us;884us;1us;875us;1us;875us;1us;876us;2us;876us;884us;2us;878us;881us;2us;879us;880us;1us;880us;1us;881us;3us;882us;1086us;1087us;1us;883us;1us;884us;5us;886us;887us;888us;889us;890us;3us;886us;887us;888us;1us;886us;1us;888us;1us;890us;2us;891us;892us;1us;891us;1us;891us;1us;891us;1us;892us;1us;892us;1us;894us;1us;897us;2us;899us;901us;1us;899us;1us;900us;1us;900us;1us;900us;1us;901us;1us;901us;1us;902us;1us;902us;1us;904us;1us;904us;1us;905us;1us;905us;1us;906us;4us;906us;982us;983us;984us;1us;906us;1us;906us;1us;906us;1us;907us;1us;907us;1us;908us;5us;909us;910us;911us;912us;913us;2us;909us;910us;1us;909us;1us;910us;1us;911us;1us;912us;1us;913us;2us;914us;915us;2us;914us;915us;2us;914us;915us;1us;914us;1us;915us;6us;916us;917us;918us;919us;920us;921us;5us;916us;917us;918us;919us;920us;4us;916us;917us;918us;919us;2us;916us;917us;1us;916us;1us;917us;1us;918us;1us;918us;1us;920us;1us;920us;1us;921us;1us;921us;1us;922us;1us;922us;1us;923us;1us;923us;1us;923us;2us;924us;925us;1us;925us;2us;926us;927us;1us;927us;2us;929us;930us;1us;929us;1us;930us;3us;931us;932us;933us;2us;931us;932us;1us;931us;1us;932us;3us;934us;935us;937us;2us;934us;935us;1us;934us;1us;935us;1us;936us;1us;936us;3us;938us;939us;941us;2us;938us;939us;1us;938us;1us;939us;1us;940us;1us;940us;5us;942us;943us;944us;945us;946us;6us;942us;943us;946us;982us;983us;984us;2us;942us;943us;4us;942us;982us;983us;984us;1us;943us;2us;944us;945us;2us;944us;945us;2us;944us;945us;4us;944us;982us;983us;984us;1us;945us;6us;947us;948us;951us;982us;983us;984us;2us;947us;948us;4us;947us;982us;983us;984us;1us;948us;2us;949us;950us;2us;949us;950us;2us;949us;950us;4us;949us;982us;983us;984us;1us;950us;8us;952us;953us;954us;955us;955us;982us;983us;984us;7us;952us;953us;954us;955us;982us;983us;984us;4us;952us;953us;954us;955us;1us;952us;1us;953us;1us;954us;1us;954us;4us;956us;957us;958us;959us;3us;956us;957us;958us;1us;956us;1us;957us;1us;958us;1us;958us;1us;960us;1us;960us;8us;961us;962us;966us;967us;968us;982us;983us;984us;2us;961us;962us;1us;961us;1us;962us;1us;963us;1us;963us;2us;964us;965us;1us;964us;1us;965us;2us;966us;967us;1us;966us;1us;967us;8us;969us;970us;972us;973us;975us;982us;983us;984us;2us;969us;970us;1us;969us;1us;970us;1us;971us;1us;971us;2us;972us;973us;1us;972us;1us;973us;1us;974us;1us;974us;3us;976us;979us;988us;1us;976us;4us;977us;1030us;1049us;1050us;1us;977us;3us;978us;1086us;1087us;1us;979us;2us;980us;981us;4us;980us;981us;1048us;1051us;1us;980us;1us;980us;7us;982us;983us;984us;1037us;1038us;1039us;1040us;1us;982us;1us;983us;1us;983us;1us;984us;4us;985us;1035us;1036us;1047us;1us;985us;1us;985us;1us;985us;1us;986us;1us;987us;1us;988us;1us;988us;2us;989us;1034us;1us;989us;1us;989us;32us;990us;991us;992us;993us;994us;995us;996us;997us;998us;999us;1000us;1001us;1002us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;990us;31us;991us;992us;993us;994us;995us;996us;997us;998us;999us;1000us;1001us;1002us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;991us;30us;992us;993us;994us;995us;996us;997us;998us;999us;1000us;1001us;1002us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;992us;29us;993us;994us;995us;996us;997us;998us;999us;1000us;1001us;1002us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;993us;28us;994us;995us;996us;997us;998us;999us;1000us;1001us;1002us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;994us;27us;995us;996us;997us;998us;999us;1000us;1001us;1002us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;995us;26us;996us;997us;998us;999us;1000us;1001us;1002us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;996us;25us;997us;998us;999us;1000us;1001us;1002us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;997us;24us;998us;999us;1000us;1001us;1002us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;998us;23us;999us;1000us;1001us;1002us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;999us;22us;1000us;1001us;1002us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1000us;21us;1001us;1002us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1001us;20us;1002us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1002us;19us;1003us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1003us;18us;1004us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1004us;17us;1005us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1005us;16us;1006us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1006us;15us;1007us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1007us;14us;1008us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1008us;13us;1009us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1009us;12us;1010us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1010us;11us;1011us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1011us;10us;1012us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1012us;9us;1013us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1013us;8us;1014us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1014us;7us;1015us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1015us;6us;1016us;1017us;1018us;1019us;1020us;1021us;1us;1016us;5us;1017us;1018us;1019us;1020us;1021us;1us;1017us;4us;1018us;1019us;1020us;1021us;1us;1018us;3us;1019us;1020us;1021us;1us;1019us;2us;1020us;1021us;1us;1020us;1us;1021us;1us;1021us;1us;1022us;1us;1022us;1us;1022us;3us;1022us;1023us;1024us;4us;1023us;1024us;1054us;1055us;2us;1023us;1024us;1us;1023us;1us;1024us;2us;1026us;1027us;1us;1027us;1us;1027us;4us;1028us;1035us;1036us;1047us;1us;1028us;1us;1028us;1us;1028us;3us;1029us;1049us;1050us;3us;1030us;1049us;1050us;1us;1031us;1us;1032us;3us;1032us;1049us;1050us;1us;1033us;1us;1034us;3us;1035us;1036us;1047us;2us;1035us;1036us;5us;1035us;1036us;1061us;1062us;1063us;1us;1035us;1us;1036us;5us;1037us;1038us;1039us;1040us;1041us;5us;1037us;1038us;1039us;1040us;1041us;3us;1037us;1038us;1039us;2us;1037us;1038us;1us;1037us;1us;1038us;1us;1039us;1us;1040us;1us;1041us;1us;1042us;1us;1043us;1us;1044us;1us;1045us;1us;1046us;1us;1047us;1us;1047us;1us;1048us;2us;1049us;1050us;4us;1049us;1050us;1086us;1087us;1us;1050us;1us;1051us;1us;1051us;1us;1052us;1us;1053us;1us;1053us;7us;1054us;1055us;1056us;1057us;1058us;1059us;1060us;3us;1054us;1055us;1056us;3us;1054us;1055us;1056us;2us;1054us;1055us;1us;1054us;1us;1055us;1us;1056us;3us;1057us;1058us;1064us;1us;1057us;1us;1058us;1us;1059us;1us;1060us;3us;1061us;1062us;1063us;2us;1062us;1063us;1us;1062us;1us;1064us;1us;1065us;2us;1067us;1068us;3us;1067us;1078us;1079us;1us;1067us;1us;1068us;1us;1068us;3us;1069us;1086us;1087us;1us;1070us;1us;1071us;3us;1071us;1078us;1079us;1us;1071us;2us;1072us;1073us;1us;1073us;1us;1073us;1us;1074us;2us;1075us;1076us;1us;1076us;1us;1077us;3us;1078us;1078us;1079us;3us;1078us;1079us;1079us;3us;1078us;1079us;1080us;1us;1078us;1us;1079us;1us;1080us;1us;1081us;1us;1081us;1us;1082us;1us;1082us;2us;1082us;1129us;1us;1083us;1us;1084us;1us;1085us;2us;1086us;1087us;1us;1086us;1us;1087us;4us;1088us;1089us;1091us;1092us;1us;1088us;1us;1088us;1us;1089us;1us;1089us;1us;1090us;3us;1091us;1092us;1121us;3us;1091us;1092us;1121us;1us;1091us;1us;1092us;1us;1092us;1us;1092us;1us;1093us;1us;1094us;1us;1095us;1us;1096us;1us;1097us;1us;1098us;1us;1099us;1us;1100us;1us;1101us;1us;1102us;1us;1103us;1us;1104us;1us;1105us;1us;1106us;1us;1107us;1us;1108us;1us;1109us;1us;1110us;1us;1111us;1us;1112us;1us;1113us;1us;1114us;1us;1115us;2us;1116us;1117us;1us;1117us;1us;1118us;1us;1118us;1us;1119us;1us;1120us;1us;1120us;1us;1121us;1us;1122us;1us;1123us;3us;1124us;1126us;1127us;1us;1125us;2us;1126us;1127us;1us;1126us;1us;1127us;1us;1128us;1us;1129us;1us;1130us;1us;1131us;1us;1132us;1us;1133us;2us;1134us;1135us;1us;1135us;1us;1136us;1us;1136us;2us;1138us;1140us;2us;1139us;1141us;1us;1140us;1us;1141us;1us;1142us;1us;1143us;1us;1144us;1us;1145us;1us;1146us;1us;1147us;1us;1149us;1us;1151us;1us;1155us;1us;1157us;1us;1159us;1us;1163us;1us;1165us;1us;1167us;1us;1168us;1us;1169us;1us;1170us;1us;1171us;1us;1172us;1us;1173us;1us;1174us;1us;1175us;1us;1176us;1us;1177us;1us;1178us;1us;1180us;1us;1180us;1us;1181us;2us;1182us;1183us;1us;1182us;1us;1182us;1us;1183us;2us;1184us;1186us;1us;1184us;1us;1184us;1us;1185us;1us;1186us;1us;1187us;1us;1188us;1us;1190us;1us;1192us;2us;1192us;1213us;1us;1192us;1us;1193us;1us;1194us;1us;1195us;2us;1195us;1214us;1us;1195us;1us;1196us;1us;1197us;1us;1198us;1us;1198us;1us;1199us;1us;1200us;1us;1201us;1us;1202us;1us;1202us;1us;1203us;1us;1204us;1us;1205us;1us;1205us;1us;1206us;1us;1207us;1us;1208us;1us;1209us;1us;1210us;1us;1211us;1us;1212us;1us;1213us;1us;1214us;1us;1215us;1us;1216us;1us;1217us;1us;1218us;|] +let _fsyacc_stateToProdIdxsTableRowOffsets = [|0us;2us;4us;6us;8us;10us;12us;14us;16us;18us;20us;22us;24us;26us;28us;30us;32us;35us;37us;40us;42us;45us;47us;49us;51us;53us;55us;57us;59us;62us;64us;73us;82us;137us;139us;142us;144us;146us;148us;150us;152us;155us;157us;159us;161us;164us;166us;168us;170us;174us;176us;180us;184us;188us;192us;196us;198us;200us;203us;206us;210us;212us;215us;217us;220us;222us;224us;226us;228us;236us;244us;249us;251us;253us;255us;259us;262us;264us;266us;268us;272us;274us;276us;279us;283us;286us;289us;291us;293us;295us;297us;299us;301us;308us;315us;319us;322us;324us;326us;328us;330us;332us;334us;336us;338us;340us;342us;344us;346us;348us;350us;352us;354us;356us;358us;361us;416us;418us;473us;475us;477us;481us;483us;485us;487us;489us;491us;493us;495us;497us;499us;501us;503us;505us;508us;510us;512us;514us;518us;520us;522us;524us;526us;528us;530us;532us;534us;536us;538us;540us;542us;544us;546us;550us;553us;555us;557us;559us;561us;564us;567us;569us;571us;574us;577us;579us;581us;584us;587us;589us;591us;593us;595us;597us;599us;601us;610us;624us;633us;647us;649us;651us;653us;655us;657us;659us;661us;663us;665us;667us;672us;675us;680us;682us;684us;686us;693us;695us;697us;699us;701us;703us;705us;707us;709us;711us;714us;717us;719us;721us;725us;728us;730us;732us;734us;736us;738us;740us;742us;744us;746us;748us;750us;752us;755us;757us;759us;761us;764us;766us;769us;771us;774us;776us;778us;780us;782us;795us;807us;811us;813us;815us;819us;822us;824us;826us;828us;831us;833us;835us;837us;849us;860us;917us;920us;922us;924us;926us;931us;933us;936us;938us;940us;943us;946us;949us;951us;953us;955us;957us;965us;973us;975us;979us;981us;987us;989us;991us;993us;995us;997us;1000us;1002us;1004us;1006us;1009us;1011us;1013us;1018us;1022us;1024us;1027us;1032us;1034us;1038us;1040us;1044us;1050us;1053us;1055us;1057us;1060us;1062us;1064us;1066us;1068us;1072us;1076us;1079us;1081us;1083us;1085us;1087us;1089us;1091us;1093us;1096us;1098us;1103us;1107us;1110us;1112us;1114us;1117us;1119us;1121us;1123us;1125us;1127us;1130us;1132us;1136us;1138us;1140us;1143us;1147us;1149us;1151us;1153us;1157us;1159us;1161us;1163us;1165us;1167us;1169us;1171us;1174us;1176us;1178us;1180us;1188us;1190us;1192us;1194us;1196us;1198us;1200us;1202us;1204us;1206us;1208us;1213us;1215us;1218us;1221us;1224us;1227us;1230us;1232us;1234us;1236us;1242us;1245us;1248us;1251us;1254us;1256us;1258us;1260us;1262us;1264us;1266us;1268us;1270us;1272us;1274us;1276us;1278us;1282us;1285us;1287us;1289us;1292us;1294us;1297us;1300us;1302us;1304us;1307us;1310us;1312us;1314us;1316us;1318us;1320us;1322us;1324us;1326us;1328us;1330us;1332us;1335us;1338us;1340us;1342us;1345us;1347us;1349us;1351us;1353us;1355us;1357us;1359us;1361us;1366us;1371us;1376us;1378us;1380us;1382us;1384us;1386us;1389us;1391us;1394us;1396us;1413us;1435us;1452us;1474us;1476us;1478us;1482us;1484us;1486us;1488us;1491us;1496us;1498us;1500us;1502us;1504us;1506us;1508us;1510us;1512us;1514us;1516us;1518us;1520us;1522us;1524us;1526us;1528us;1530us;1535us;1539us;1543us;1545us;1547us;1549us;1551us;1553us;1555us;1557us;1559us;1561us;1566us;1571us;1576us;1580us;1583us;1585us;1587us;1589us;1591us;1596us;1601us;1606us;1610us;1614us;1616us;1618us;1620us;1622us;1624us;1626us;1629us;1631us;1633us;1636us;1638us;1640us;1642us;1644us;1646us;1648us;1651us;1653us;1655us;1657us;1659us;1661us;1663us;1665us;1667us;1670us;1672us;1674us;1676us;1678us;1680us;1684us;1687us;1689us;1691us;1693us;1695us;1697us;1699us;1702us;1704us;1706us;1708us;1711us;1713us;1715us;1718us;1721us;1723us;1725us;1727us;1730us;1733us;1735us;1740us;1746us;1750us;1752us;1754us;1756us;1758us;1760us;1762us;1764us;1766us;1768us;1770us;1772us;1774us;1780us;1786us;1791us;1793us;1795us;1797us;1799us;1801us;1803us;1809us;1812us;1815us;1817us;1819us;1823us;1826us;1828us;1830us;1832us;1834us;1841us;1843us;1845us;1849us;1852us;1854us;1856us;1858us;1860us;1862us;1864us;1866us;1868us;1870us;1875us;1880us;1882us;1886us;1888us;1890us;1892us;1894us;1897us;1899us;1902us;1906us;1908us;1911us;1913us;1915us;1918us;1921us;1923us;1926us;1928us;1930us;1932us;1934us;1936us;1938us;1940us;1942us;1944us;1946us;1948us;1950us;1953us;1956us;1959us;1961us;1963us;1965us;1968us;1971us;1973us;1977us;1981us;1983us;1985us;1987us;1989us;2001us;2004us;2007us;2015us;2017us;2021us;2023us;2025us;2027us;2029us;2031us;2037us;2040us;2042us;2044us;2046us;2048us;2050us;2052us;2054us;2056us;2061us;2063us;2068us;2078us;2080us;2082us;2084us;2086us;2088us;2091us;2093us;2096us;2098us;2100us;2110us;2120us;2127us;2129us;2132us;2134us;2136us;2139us;2141us;2143us;2145us;2147us;2149us;2151us;2158us;2160us;2167us;2169us;2171us;2173us;2175us;2177us;2184us;2186us;2189us;2197us;2200us;2202us;2205us;2207us;2209us;2211us;2213us;2216us;2218us;2220us;2224us;2227us;2236us;2245us;2247us;2249us;2251us;2253us;2256us;2259us;2261us;2263us;2265us;2267us;2271us;2275us;2279us;2282us;2284us;2286us;2288us;2290us;2292us;2295us;2298us;2301us;2303us;2305us;2307us;2311us;2314us;2316us;2318us;2320us;2324us;2326us;2328us;2330us;2332us;2334us;2336us;2338us;2340us;2342us;2344us;2347us;2349us;2351us;2353us;2355us;2357us;2359us;2361us;2363us;2365us;2367us;2369us;2371us;2373us;2375us;2377us;2379us;2381us;2384us;2387us;2389us;2391us;2393us;2395us;2398us;2404us;2406us;2410us;2415us;2417us;2419us;2421us;2423us;2425us;2427us;2430us;2432us;2435us;2437us;2439us;2441us;2443us;2445us;2447us;2449us;2451us;2455us;2459us;2463us;2467us;2470us;2472us;2474us;2476us;2479us;2482us;2484us;2486us;2488us;2490us;2493us;2495us;2497us;2500us;2502us;2504us;2506us;2508us;2510us;2513us;2515us;2517us;2519us;2521us;2523us;2525us;2527us;2529us;2531us;2533us;2535us;2537us;2539us;2541us;2543us;2545us;2547us;2549us;2551us;2553us;2555us;2558us;2560us;2562us;2565us;2568us;2570us;2572us;2574us;2576us;2578us;2580us;2582us;2584us;2586us;2589us;2591us;2593us;2601us;2603us;2605us;2607us;2611us;2616us;2619us;2621us;2623us;2625us;2627us;2629us;2631us;2637us;2640us;2642us;2644us;2646us;2649us;2651us;2653us;2661us;2669us;2677us;2685us;2693us;2701us;2709us;2717us;2725us;2733us;2742us;2744us;2746us;2748us;2750us;2754us;2757us;2759us;2762us;2765us;2767us;2769us;2772us;2774us;2776us;2778us;2782us;2784us;2788us;2790us;2792us;2794us;2798us;2805us;2808us;2818us;2820us;2822us;2831us;2836us;2838us;2840us;2842us;2844us;2846us;2848us;2850us;2852us;2854us;2856us;2858us;2860us;2862us;2872us;2874us;2876us;2878us;2883us;2885us;2887us;2889us;2891us;2893us;2895us;2898us;2900us;2902us;2904us;2906us;2908us;2910us;2912us;2914us;2916us;2918us;2920us;2923us;2925us;2927us;2929us;2931us;2933us;2935us;2944us;2947us;2949us;2951us;2955us;2958us;2960us;2965us;2970us;2976us;2978us;2980us;2983us;2985us;2987us;2997us;3007us;3017us;3027us;3037us;3047us;3057us;3067us;3076us;3086us;3096us;3107us;3122us;3132us;3134us;3136us;3138us;3142us;3145us;3148us;3150us;3152us;3154us;3156us;3158us;3161us;3164us;3166us;3168us;3171us;3173us;3175us;3177us;3180us;3182us;3185us;3187us;3193us;3196us;3198us;3200us;3202us;3205us;3207us;3211us;3214us;3216us;3218us;3220us;3222us;3225us;3227us;3229us;3231us;3286us;3289us;3291us;3293us;3296us;3300us;3303us;3305us;3307us;3309us;3311us;3370us;3373us;3375us;3377us;3379us;3381us;3383us;3385us;3387us;3393us;3395us;3398us;3401us;3404us;3407us;3410us;3413us;3416us;3419us;3422us;3425us;3428us;3431us;3435us;3438us;3441us;3443us;3445us;3447us;3449us;3451us;3453us;3455us;3457us;3459us;3461us;3463us;3465us;3468us;3471us;3473us;3475us;3480us;3482us;3484us;3487us;3489us;3491us;3493us;3495us;3497us;3500us;3503us;3505us;3507us;3510us;3513us;3515us;3517us;3523us;3527us;3529us;3531us;3534us;3536us;3538us;3540us;3544us;3600us;3602us;3604us;3606us;3608us;3663us;3666us;3721us;3723us;3725us;3728us;3730us;3732us;3734us;3736us;3738us;3754us;3761us;3766us;3769us;3771us;3773us;3775us;3777us;3779us;3781us;3783us;3789us;3794us;3797us;3799us;3801us;3803us;3805us;3807us;3809us;3811us;3813us;3815us;3817us;3820us;3823us;3878us;3881us;3936us;3938us;3940us;3942us;3944us;3946us;3948us;3950us;3952us;3954us;3957us;3960us;3963us;3966us;3969us;3971us;3973us;3975us;3977us;3979us;3981us;3983us;3985us;3987us;3989us;3991us;3993us;4048us;4050us;4052us;4107us;4162us;4217us;4272us;4327us;4382us;4437us;4492us;4547us;4602us;4657us;4712us;4767us;4822us;4877us;4932us;4987us;5042us;5097us;5152us;5207us;5262us;5317us;5375us;5430us;5485us;5540us;5596us;5651us;5706us;5761us;5815us;5870us;5925us;5980us;6035us;6090us;6146us;6149us;6151us;6153us;6156us;6158us;6160us;6163us;6165us;6167us;6169us;6172us;6174us;6176us;6182us;6190us;6193us;6195us;6198us;6200us;6203us;6205us;6208us;6210us;6213us;6215us;6218us;6220us;6223us;6225us;6228us;6230us;6233us;6235us;6238us;6240us;6243us;6245us;6248us;6250us;6253us;6255us;6258us;6260us;6263us;6265us;6268us;6270us;6273us;6275us;6278us;6280us;6283us;6285us;6288us;6290us;6293us;6295us;6299us;6302us;6304us;6307us;6311us;6314us;6316us;6318us;6320us;6322us;6324us;6326us;6328us;6330us;6332us;6334us;6336us;6338us;6340us;6344us;6347us;6349us;6351us;6353us;6355us;6358us;6360us;6362us;6364us;6366us;6373us;6378us;6381us;6383us;6385us;6387us;6389us;6391us;6393us;6395us;6397us;6399us;6401us;6403us;6406us;6408us;6411us;6413us;6415us;6417us;6419us;6421us;6424us;6426us;6428us;6433us;6435us;6438us;6440us;6445us;6447us;6450us;6452us;6454us;6457us;6461us;6464us;6466us;6468us;6471us;6473us;6475us;6478us;6480us;6482us;6485us;6487us;6489us;6492us;6494us;6496us;6499us;6501us;6503us;6506us;6508us;6513us;6522us;6526us;6534us;6538us;6544us;6547us;6552us;6554us;6556us;6558us;6560us;6562us;6564us;6566us;6568us;6571us;6580us;6583us;6591us;6593us;6601us;6608us;6610us;6617us;6624us;6627us;6633us;6636us;6638us;6645us;6652us;6659us;6666us;6668us;6670us;6672us;6674us;6676us;6679us;6681us;6684us;6686us;6689us;6691us;6693us;6695us;6697us;6699us;6701us;6703us;6706us;6708us;6710us;6712us;6714us;6716us;6721us;6724us;6726us;6728us;6730us;6732us;6736us;6739us;6741us;6743us;6745us;6747us;6749us;6751us;6758us;6760us;6762us;6764us;6766us;6768us;6770us;6775us;6778us;6780us;6782us;6784us;6786us;6788us;6790us;6792us;6794us;6796us;6798us;6800us;6802us;6804us;6806us;6808us;6813us;6816us;6818us;6820us;6822us;6824us;6826us;6831us;6837us;6840us;6842us;6844us;6846us;6848us;6853us;6856us;6858us;6860us;6862us;6864us;6875us;6891us;6906us;6908us;6911us;6913us;6915us;6917us;6920us;6922us;6924us;6926us;6928us;6930us;6932us;6934us;6936us;6938us;6940us;6942us;6944us;6946us;6948us;6950us;6952us;6955us;6958us;6960us;6962us;6967us;6973us;6976us;6978us;6980us;6982us;6984us;6986us;6988us;6990us;6992us;6994us;6996us;6998us;7000us;7002us;7005us;7007us;7009us;7011us;7013us;7015us;7017us;7019us;7021us;7023us;7026us;7028us;7030us;7032us;7034us;7036us;7038us;7040us;7042us;7045us;7047us;7053us;7055us;7057us;7059us;7061us;7063us;7066us;7068us;7070us;7073us;7075us;7078us;7080us;7082us;7085us;7087us;7090us;7092us;7094us;7096us;7099us;7101us;7104us;7106us;7108us;7110us;7113us;7115us;7117us;7119us;7122us;7125us;7128us;7130us;7132us;7136us;7138us;7140us;7146us;7150us;7152us;7154us;7156us;7159us;7161us;7163us;7165us;7167us;7169us;7171us;7173us;7176us;7178us;7180us;7182us;7184us;7186us;7188us;7190us;7192us;7194us;7196us;7198us;7200us;7202us;7207us;7209us;7211us;7213us;7215us;7217us;7219us;7225us;7228us;7230us;7232us;7234us;7236us;7238us;7241us;7244us;7247us;7249us;7251us;7258us;7264us;7269us;7272us;7274us;7276us;7278us;7280us;7282us;7284us;7286us;7288us;7290us;7292us;7294us;7296us;7298us;7301us;7303us;7306us;7308us;7311us;7313us;7315us;7319us;7322us;7324us;7326us;7330us;7333us;7335us;7337us;7339us;7341us;7345us;7348us;7350us;7352us;7354us;7356us;7362us;7369us;7372us;7377us;7379us;7382us;7385us;7388us;7393us;7395us;7402us;7405us;7410us;7412us;7415us;7418us;7421us;7426us;7428us;7437us;7445us;7450us;7452us;7454us;7456us;7458us;7463us;7467us;7469us;7471us;7473us;7475us;7477us;7479us;7488us;7491us;7493us;7495us;7497us;7499us;7502us;7504us;7506us;7509us;7511us;7513us;7522us;7525us;7527us;7529us;7531us;7533us;7536us;7538us;7540us;7542us;7544us;7548us;7550us;7555us;7557us;7561us;7563us;7566us;7571us;7573us;7575us;7583us;7585us;7587us;7589us;7591us;7596us;7598us;7600us;7602us;7604us;7606us;7608us;7610us;7613us;7615us;7617us;7650us;7652us;7684us;7686us;7717us;7719us;7749us;7751us;7780us;7782us;7810us;7812us;7839us;7841us;7867us;7869us;7894us;7896us;7920us;7922us;7945us;7947us;7969us;7971us;7992us;7994us;8014us;8016us;8035us;8037us;8055us;8057us;8074us;8076us;8092us;8094us;8109us;8111us;8125us;8127us;8140us;8142us;8154us;8156us;8167us;8169us;8179us;8181us;8190us;8192us;8200us;8202us;8209us;8211us;8217us;8219us;8224us;8226us;8230us;8232us;8235us;8237us;8239us;8241us;8243us;8245us;8247us;8251us;8256us;8259us;8261us;8263us;8266us;8268us;8270us;8275us;8277us;8279us;8281us;8285us;8289us;8291us;8293us;8297us;8299us;8301us;8305us;8308us;8314us;8316us;8318us;8324us;8330us;8334us;8337us;8339us;8341us;8343us;8345us;8347us;8349us;8351us;8353us;8355us;8357us;8359us;8361us;8363us;8366us;8371us;8373us;8375us;8377us;8379us;8381us;8383us;8391us;8395us;8399us;8402us;8404us;8406us;8408us;8412us;8414us;8416us;8418us;8420us;8424us;8427us;8429us;8431us;8433us;8436us;8440us;8442us;8444us;8446us;8450us;8452us;8454us;8458us;8460us;8463us;8465us;8467us;8469us;8472us;8474us;8476us;8480us;8484us;8488us;8490us;8492us;8494us;8496us;8498us;8500us;8502us;8505us;8507us;8509us;8511us;8514us;8516us;8518us;8523us;8525us;8527us;8529us;8531us;8533us;8537us;8541us;8543us;8545us;8547us;8549us;8551us;8553us;8555us;8557us;8559us;8561us;8563us;8565us;8567us;8569us;8571us;8573us;8575us;8577us;8579us;8581us;8583us;8585us;8587us;8589us;8591us;8593us;8595us;8598us;8600us;8602us;8604us;8606us;8608us;8610us;8612us;8614us;8616us;8620us;8622us;8625us;8627us;8629us;8631us;8633us;8635us;8637us;8639us;8641us;8644us;8646us;8648us;8650us;8653us;8656us;8658us;8660us;8662us;8664us;8666us;8668us;8670us;8672us;8674us;8676us;8678us;8680us;8682us;8684us;8686us;8688us;8690us;8692us;8694us;8696us;8698us;8700us;8702us;8704us;8706us;8708us;8710us;8712us;8714us;8716us;8719us;8721us;8723us;8725us;8728us;8730us;8732us;8734us;8736us;8738us;8740us;8742us;8744us;8747us;8749us;8751us;8753us;8755us;8758us;8760us;8762us;8764us;8766us;8768us;8770us;8772us;8774us;8776us;8778us;8780us;8782us;8784us;8786us;8788us;8790us;8792us;8794us;8796us;8798us;8800us;8802us;8804us;8806us;8808us;8810us;|] +let _fsyacc_action_rows = 2065 +let _fsyacc_actionTableElements = [|16us;16435us;22us;74us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;43us;16553us;44us;16553us;45us;16553us;73us;317us;88us;38us;101us;287us;108us;16553us;109us;16553us;121us;16553us;150us;16553us;203us;48us;0us;49152us;95us;16513us;13us;16553us;22us;241us;24us;16553us;25us;16553us;29us;16553us;30us;16553us;32us;16553us;33us;16553us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;41us;16553us;43us;16553us;44us;16553us;45us;16553us;46us;16553us;56us;16553us;62us;16553us;66us;16553us;70us;16553us;71us;16553us;72us;16553us;73us;317us;74us;16553us;85us;16553us;86us;16553us;88us;38us;89us;16553us;90us;16553us;91us;16553us;92us;16553us;96us;16553us;98us;16553us;100us;16553us;101us;287us;106us;16553us;107us;16553us;108us;16553us;114us;16553us;115us;16553us;116us;16553us;117us;16553us;119us;16553us;121us;16553us;122us;16553us;123us;16553us;124us;16553us;125us;16553us;126us;16553us;130us;16553us;133us;16553us;134us;16553us;136us;16553us;137us;16553us;143us;16553us;146us;16553us;147us;16553us;148us;16553us;149us;16553us;150us;16553us;154us;16553us;155us;16553us;158us;16553us;159us;16553us;162us;16553us;163us;16553us;164us;16553us;166us;16553us;167us;16553us;168us;16553us;169us;16553us;170us;16553us;171us;16553us;172us;16553us;173us;16553us;174us;16553us;175us;16553us;176us;16553us;177us;16553us;178us;16553us;180us;16553us;181us;16553us;183us;16553us;184us;16553us;187us;16553us;189us;16553us;193us;16553us;194us;16553us;195us;16553us;199us;16553us;200us;16553us;201us;16553us;202us;16553us;203us;227us;0us;49152us;7us;16553us;10us;14us;21us;12us;67us;13us;73us;317us;83us;11us;88us;38us;101us;287us;0us;49152us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;49152us;33us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;49152us;0us;16389us;0us;16390us;0us;16391us;0us;16392us;0us;16393us;0us;16394us;4us;32768us;10us;14us;21us;37us;67us;13us;83us;36us;0us;16395us;4us;32768us;10us;14us;21us;37us;67us;13us;83us;36us;0us;16396us;4us;32768us;10us;14us;21us;37us;67us;13us;83us;36us;0us;16397us;5us;16553us;10us;14us;67us;13us;73us;317us;88us;38us;101us;287us;0us;16398us;5us;16553us;10us;14us;67us;13us;73us;317us;88us;38us;101us;287us;0us;16399us;5us;16553us;10us;14us;67us;13us;73us;317us;88us;38us;101us;287us;0us;16400us;16us;16401us;33us;16553us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;41us;16553us;43us;16553us;44us;16553us;45us;16553us;73us;317us;101us;287us;108us;16553us;121us;16553us;137us;16553us;150us;16553us;162us;16553us;0us;16402us;3us;16647us;43us;514us;44us;513us;45us;515us;87us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2031us;38us;2034us;39us;2036us;40us;2039us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;108us;2035us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;121us;735us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;137us;751us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;150us;2040us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;26us;16403us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;0us;16404us;2us;16405us;21us;37us;83us;36us;0us;16406us;0us;16407us;0us;16408us;1us;32768us;193us;39us;0us;16410us;2us;16409us;194us;2015us;201us;2014us;0us;16411us;0us;16412us;0us;16413us;2us;32768us;10us;45us;203us;46us;0us;16414us;1us;32768us;10us;47us;0us;16415us;4us;16434us;10us;49us;21us;1982us;67us;1981us;83us;1980us;0us;16416us;1us;16553us;73us;317us;3us;16647us;43us;514us;44us;513us;45us;515us;1us;17544us;103us;2001us;5us;32768us;10us;1075us;21us;55us;46us;1922us;193us;1921us;203us;1059us;1us;16417us;76us;1924us;0us;16418us;0us;16419us;1us;17544us;103us;2001us;4us;32768us;10us;1075us;46us;1922us;193us;1921us;203us;1059us;1us;16420us;76us;1924us;0us;16421us;1us;16422us;151us;57us;0us;16423us;1us;16425us;151us;57us;0us;16424us;1us;17536us;69us;1998us;16us;16435us;22us;74us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;43us;16553us;44us;16553us;45us;16553us;73us;317us;88us;38us;101us;287us;108us;16553us;109us;16553us;121us;16553us;150us;16553us;203us;82us;0us;16426us;3us;16647us;43us;514us;44us;513us;45us;515us;8us;32768us;37us;2031us;38us;2034us;39us;2036us;40us;2039us;108us;2035us;109us;104us;121us;735us;150us;2040us;18us;16435us;22us;74us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;43us;16553us;44us;16553us;45us;16553us;69us;2013us;73us;317us;77us;2012us;88us;38us;101us;287us;108us;16553us;109us;16553us;121us;16553us;150us;16553us;203us;83us;0us;16427us;0us;16428us;0us;16429us;15us;16435us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;43us;16553us;44us;16553us;45us;16553us;73us;317us;88us;38us;101us;287us;108us;16553us;109us;16553us;121us;16553us;150us;16553us;203us;79us;5us;32768us;10us;1075us;15us;2050us;16us;2052us;17us;2053us;203us;1059us;1us;17540us;21us;1999us;0us;16430us;0us;16431us;6us;16434us;15us;2050us;16us;2052us;17us;2053us;21us;1982us;67us;1981us;83us;1980us;0us;16432us;0us;16433us;3us;16434us;21us;1982us;67us;1981us;83us;1980us;17us;16434us;21us;1982us;37us;16443us;38us;16443us;39us;16443us;40us;16443us;43us;16443us;44us;16443us;45us;16443us;67us;1981us;73us;16443us;83us;1980us;88us;16443us;101us;16443us;108us;16443us;109us;16443us;121us;16443us;150us;16443us;3us;17521us;21us;1982us;67us;1981us;83us;1980us;15us;16438us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;43us;16553us;44us;16553us;45us;16553us;73us;317us;88us;38us;101us;287us;108us;16553us;109us;16553us;121us;16553us;150us;16553us;203us;87us;0us;16436us;3us;32768us;21us;1982us;67us;1981us;83us;1980us;4us;16553us;73us;317us;88us;38us;101us;287us;203us;87us;0us;16437us;0us;16439us;0us;16440us;3us;16647us;43us;514us;44us;513us;45us;515us;8us;32768us;37us;2031us;38us;2034us;39us;2036us;40us;2039us;108us;2035us;109us;104us;121us;735us;150us;2040us;3us;32768us;69us;2013us;77us;2012us;203us;98us;5us;32768us;22us;120us;46us;1922us;57us;2010us;136us;2011us;193us;1921us;0us;16441us;0us;16442us;0us;16443us;1us;16553us;73us;317us;1us;16455us;131us;130us;0us;16444us;0us;16445us;0us;16446us;1us;16553us;73us;317us;1us;17548us;110us;2002us;1us;17550us;118us;2003us;3us;16647us;43us;514us;44us;513us;45us;515us;3us;32768us;92us;1927us;100us;1932us;193us;1921us;2us;16714us;34us;2030us;160us;17575us;1us;32768us;77us;111us;34us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;73us;317us;74us;1691us;88us;1842us;91us;1916us;92us;1749us;96us;1669us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;1us;16448us;69us;114us;0us;16447us;80us;32768us;13us;1187us;22us;116us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;26us;16449us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;29us;32768us;15us;2050us;16us;2052us;17us;2053us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;1us;17534us;19us;1997us;0us;16450us;8us;16553us;46us;1922us;57us;2010us;73us;317us;88us;38us;101us;287us;136us;2011us;193us;1921us;203us;87us;3us;32768us;15us;2050us;16us;2052us;17us;2053us;0us;16451us;15us;16435us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;43us;16553us;44us;16553us;45us;16553us;73us;317us;88us;38us;101us;287us;108us;16553us;109us;16553us;121us;16553us;150us;16553us;203us;82us;1us;32768us;142us;125us;3us;32768us;15us;2050us;16us;2052us;17us;2053us;0us;16452us;15us;16435us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;43us;16553us;44us;16553us;45us;16553us;73us;317us;88us;38us;101us;287us;108us;16553us;109us;16553us;121us;16553us;150us;16553us;203us;82us;1us;32768us;142us;129us;0us;16453us;1us;16553us;73us;317us;1us;16455us;131us;130us;0us;16454us;2us;16497us;69us;134us;87us;220us;7us;16553us;22us;137us;49us;589us;56us;591us;73us;317us;111us;590us;136us;162us;152us;148us;0us;16456us;0us;16457us;54us;16475us;14us;16553us;22us;158us;43us;16553us;44us;16553us;45us;16553us;46us;16553us;47us;16553us;48us;16553us;49us;589us;50us;16553us;51us;16553us;52us;16553us;54us;16553us;56us;591us;58us;16553us;66us;16553us;72us;16553us;73us;317us;88us;16553us;91us;16553us;92us;16553us;96us;16553us;106us;16553us;109us;16553us;111us;590us;113us;16553us;119us;16553us;120us;16553us;122us;16553us;136us;162us;148us;16553us;152us;148us;166us;16553us;167us;16553us;168us;16553us;169us;16553us;170us;16553us;171us;16553us;172us;16553us;173us;16553us;174us;16553us;175us;16553us;176us;16553us;177us;16553us;178us;16553us;180us;16553us;181us;16553us;186us;16553us;189us;16553us;193us;16553us;194us;16553us;195us;16553us;201us;16553us;202us;16553us;1us;17540us;21us;1999us;14us;16475us;14us;16553us;43us;16553us;44us;16553us;45us;16553us;47us;16553us;48us;16553us;50us;16553us;51us;16553us;52us;16553us;54us;16553us;73us;317us;109us;16553us;111us;16553us;119us;16553us;1us;16497us;87us;220us;3us;32768us;15us;2050us;16us;2052us;17us;2053us;1us;16497us;87us;220us;0us;16458us;1us;16497us;87us;220us;0us;16459us;0us;16460us;0us;16461us;1us;32768us;120us;149us;34us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;73us;317us;74us;1691us;88us;1842us;91us;1916us;92us;1749us;96us;1669us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;16462us;0us;16463us;16us;16475us;14us;16553us;22us;166us;43us;16553us;44us;16553us;45us;16553us;47us;16553us;48us;16553us;50us;16553us;51us;16553us;52us;16553us;54us;16553us;73us;317us;109us;16553us;111us;16553us;119us;16553us;203us;156us;3us;32768us;10us;1075us;142us;154us;203us;1059us;0us;16464us;0us;16465us;1us;32768us;142us;157us;0us;16466us;14us;16475us;14us;16553us;43us;16553us;44us;16553us;45us;16553us;47us;16553us;48us;16553us;50us;16553us;51us;16553us;52us;16553us;54us;16553us;73us;317us;109us;16553us;111us;16553us;119us;16553us;5us;32768us;10us;1075us;15us;2050us;16us;2052us;17us;2053us;203us;1059us;0us;16467us;0us;16468us;15us;16475us;14us;16553us;22us;166us;43us;16553us;44us;16553us;45us;16553us;47us;16553us;48us;16553us;50us;16553us;51us;16553us;52us;16553us;54us;16553us;73us;317us;109us;16553us;111us;16553us;119us;16553us;3us;32768us;10us;1075us;142us;164us;203us;1059us;0us;16469us;0us;16470us;14us;16475us;14us;16553us;43us;16553us;44us;16553us;45us;16553us;47us;16553us;48us;16553us;50us;16553us;51us;16553us;52us;16553us;54us;16553us;73us;317us;109us;16553us;111us;16553us;119us;16553us;5us;32768us;10us;1075us;15us;2050us;16us;2052us;17us;2053us;203us;1059us;0us;16471us;0us;16472us;0us;16473us;0us;16474us;2us;17542us;21us;1987us;83us;1988us;14us;16475us;14us;16553us;43us;16553us;44us;16553us;45us;16553us;47us;16553us;48us;16553us;50us;16553us;51us;16553us;52us;16553us;54us;16553us;73us;317us;109us;16553us;111us;16553us;119us;16553us;0us;16476us;3us;16647us;43us;514us;44us;513us;45us;515us;3us;16647us;43us;514us;44us;513us;45us;515us;10us;32768us;14us;593us;47us;195us;48us;352us;50us;432us;51us;353us;52us;354us;54us;190us;109us;193us;111us;592us;119us;200us;46us;32768us;14us;593us;46us;1922us;47us;195us;48us;352us;50us;432us;51us;353us;52us;354us;54us;190us;56us;580us;58us;672us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;569us;96us;1715us;106us;1864us;109us;193us;111us;592us;113us;1862us;119us;200us;120us;707us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;195us;574us;201us;2014us;202us;847us;1us;17548us;110us;2002us;3us;16647us;43us;514us;44us;513us;45us;515us;3us;32768us;92us;1927us;100us;1932us;193us;1921us;2us;16714us;34us;2030us;160us;17575us;1us;32768us;77us;184us;34us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;73us;317us;74us;1691us;88us;1842us;91us;1916us;92us;1749us;96us;1669us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;2us;16485us;26us;205us;87us;203us;1us;16448us;69us;114us;0us;16477us;31us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;6us;16478us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;189us;1918us;193us;1921us;33us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;6us;16479us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;189us;1918us;193us;1921us;0us;16480us;1us;17550us;118us;2003us;0us;16481us;6us;16570us;37us;2031us;38us;2034us;48us;351us;50us;434us;108us;2035us;109us;196us;1us;17550us;118us;2003us;0us;16482us;1us;16553us;73us;317us;0us;16483us;1us;32768us;77us;201us;34us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;73us;317us;74us;1691us;88us;1842us;91us;1916us;92us;1749us;96us;1669us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;16484us;4us;32768us;22us;213us;92us;1927us;100us;1932us;193us;1921us;0us;16486us;4us;32768us;22us;213us;92us;1927us;100us;1932us;193us;1921us;2us;32768us;20us;207us;203us;208us;0us;16487us;0us;16488us;1us;16489us;97us;210us;5us;32768us;10us;1075us;92us;1927us;100us;1932us;193us;1921us;203us;1059us;0us;16490us;0us;16491us;3us;32768us;15us;2050us;16us;2052us;17us;2053us;1us;32768us;19us;215us;0us;16492us;0us;16493us;0us;16494us;1us;16497us;87us;220us;0us;16495us;15us;16475us;14us;16553us;22us;166us;43us;16553us;44us;16553us;45us;16553us;47us;16553us;48us;16553us;50us;16553us;51us;16553us;52us;16553us;54us;16553us;73us;317us;109us;16553us;111us;16553us;119us;16553us;3us;32768us;19us;1991us;20us;1992us;142us;1993us;0us;16496us;2us;32768us;10us;224us;203us;225us;0us;16498us;1us;32768us;10us;226us;0us;16499us;4us;32768us;10us;228us;21us;1982us;67us;1981us;83us;1980us;0us;16500us;1us;16501us;151us;57us;0us;16502us;1us;16504us;151us;57us;0us;16503us;1us;17536us;69us;1998us;95us;16513us;13us;16553us;22us;241us;24us;16553us;25us;16553us;29us;16553us;30us;16553us;32us;16553us;33us;16553us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;41us;16553us;43us;16553us;44us;16553us;45us;16553us;46us;16553us;56us;16553us;62us;16553us;66us;16553us;70us;16553us;71us;16553us;72us;16553us;73us;317us;74us;16553us;85us;16553us;86us;16553us;88us;38us;89us;16553us;90us;16553us;91us;16553us;92us;16553us;96us;16553us;98us;16553us;100us;16553us;101us;287us;106us;16553us;107us;16553us;108us;16553us;114us;16553us;115us;16553us;116us;16553us;117us;16553us;119us;16553us;121us;16553us;122us;16553us;123us;16553us;124us;16553us;125us;16553us;126us;16553us;130us;16553us;133us;16553us;134us;16553us;136us;16553us;137us;16553us;143us;16553us;146us;16553us;147us;16553us;148us;16553us;149us;16553us;150us;16553us;154us;16553us;155us;16553us;158us;16553us;159us;16553us;162us;16553us;163us;16553us;164us;16553us;166us;16553us;167us;16553us;168us;16553us;169us;16553us;170us;16553us;171us;16553us;172us;16553us;173us;16553us;174us;16553us;175us;16553us;176us;16553us;177us;16553us;178us;16553us;180us;16553us;181us;16553us;183us;16553us;184us;16553us;187us;16553us;189us;16553us;193us;16553us;194us;16553us;195us;16553us;199us;16553us;200us;16553us;201us;16553us;202us;16553us;203us;261us;0us;16505us;4us;16647us;43us;514us;44us;513us;45us;515us;203us;256us;87us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2031us;38us;2034us;39us;2036us;40us;2039us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;108us;2035us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;121us;735us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;137us;751us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;150us;2040us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;96us;16513us;13us;16553us;22us;241us;24us;16553us;25us;16553us;29us;16553us;30us;16553us;32us;16553us;33us;16553us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;41us;16553us;43us;16553us;44us;16553us;45us;16553us;46us;16553us;56us;16553us;62us;16553us;66us;16553us;69us;281us;70us;16553us;71us;16553us;72us;16553us;73us;317us;74us;16553us;85us;16553us;86us;16553us;88us;38us;89us;16553us;90us;16553us;91us;16553us;92us;16553us;96us;16553us;98us;16553us;100us;16553us;101us;287us;106us;16553us;107us;16553us;108us;16553us;114us;16553us;115us;16553us;116us;16553us;117us;16553us;119us;16553us;121us;16553us;122us;16553us;123us;16553us;124us;16553us;125us;16553us;126us;16553us;130us;16553us;133us;16553us;134us;16553us;136us;16553us;137us;16553us;143us;16553us;146us;16553us;147us;16553us;148us;16553us;149us;16553us;150us;16553us;154us;16553us;155us;16553us;158us;16553us;159us;16553us;162us;16553us;163us;16553us;164us;16553us;166us;16553us;167us;16553us;168us;16553us;169us;16553us;170us;16553us;171us;16553us;172us;16553us;173us;16553us;174us;16553us;175us;16553us;176us;16553us;177us;16553us;178us;16553us;180us;16553us;181us;16553us;183us;16553us;184us;16553us;187us;16553us;189us;16553us;193us;16553us;194us;16553us;195us;16553us;199us;16553us;200us;16553us;201us;16553us;202us;16553us;203us;262us;0us;16506us;0us;16507us;94us;16513us;13us;16553us;24us;16553us;25us;16553us;29us;16553us;30us;16553us;32us;16553us;33us;16553us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;41us;16553us;43us;16553us;44us;16553us;45us;16553us;46us;16553us;56us;16553us;62us;16553us;66us;16553us;70us;16553us;71us;16553us;72us;16553us;73us;317us;74us;16553us;85us;16553us;86us;16553us;88us;38us;89us;16553us;90us;16553us;91us;16553us;92us;16553us;96us;16553us;98us;16553us;100us;16553us;101us;287us;106us;16553us;107us;16553us;108us;16553us;114us;16553us;115us;16553us;116us;16553us;117us;16553us;119us;16553us;121us;16553us;122us;16553us;123us;16553us;124us;16553us;125us;16553us;126us;16553us;130us;16553us;133us;16553us;134us;16553us;136us;16553us;137us;16553us;143us;16553us;146us;16553us;147us;16553us;148us;16553us;149us;16553us;150us;16553us;154us;16553us;155us;16553us;158us;16553us;159us;16553us;162us;16553us;163us;16553us;164us;16553us;166us;16553us;167us;16553us;168us;16553us;169us;16553us;170us;16553us;171us;16553us;172us;16553us;173us;16553us;174us;16553us;175us;16553us;176us;16553us;177us;16553us;178us;16553us;180us;16553us;181us;16553us;183us;16553us;184us;16553us;187us;16553us;189us;16553us;193us;16553us;194us;16553us;195us;16553us;199us;16553us;200us;16553us;201us;16553us;202us;16553us;203us;246us;5us;32768us;10us;1075us;15us;2050us;16us;2052us;17us;2053us;203us;1059us;1us;17540us;21us;1999us;0us;16508us;0us;16509us;6us;32768us;15us;2050us;16us;2052us;17us;2053us;21us;1982us;67us;1981us;83us;1980us;0us;16510us;0us;16511us;0us;16512us;4us;16647us;43us;514us;44us;513us;45us;515us;203us;256us;87us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2031us;38us;2034us;39us;2036us;40us;2039us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;108us;2035us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;121us;735us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;137us;751us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;150us;2040us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;29us;16516us;21us;1982us;62us;1276us;63us;1262us;67us;1981us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;83us;1980us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;94us;16515us;13us;16553us;24us;16553us;25us;16553us;29us;16553us;30us;16553us;32us;16553us;33us;16553us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;41us;16553us;43us;16553us;44us;16553us;45us;16553us;46us;16553us;56us;16553us;62us;16553us;66us;16553us;70us;16553us;71us;16553us;72us;16553us;73us;317us;74us;16553us;85us;16553us;86us;16553us;88us;38us;89us;16553us;90us;16553us;91us;16553us;92us;16553us;96us;16553us;98us;16553us;100us;16553us;101us;287us;106us;16553us;107us;16553us;108us;16553us;114us;16553us;115us;16553us;116us;16553us;117us;16553us;119us;16553us;121us;16553us;122us;16553us;123us;16553us;124us;16553us;125us;16553us;126us;16553us;130us;16553us;133us;16553us;134us;16553us;136us;16553us;137us;16553us;143us;16553us;146us;16553us;147us;16553us;148us;16553us;149us;16553us;150us;16553us;154us;16553us;155us;16553us;158us;16553us;159us;16553us;162us;16553us;163us;16553us;164us;16553us;166us;16553us;167us;16553us;168us;16553us;169us;16553us;170us;16553us;171us;16553us;172us;16553us;173us;16553us;174us;16553us;175us;16553us;176us;16553us;177us;16553us;178us;16553us;180us;16553us;181us;16553us;183us;16553us;184us;16553us;187us;16553us;189us;16553us;193us;16553us;194us;16553us;195us;16553us;199us;16553us;200us;16553us;201us;16553us;202us;16553us;203us;261us;0us;16514us;0us;16517us;0us;16518us;21us;16521us;21us;1982us;33us;16553us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;41us;16553us;43us;16553us;44us;16553us;45us;16553us;67us;1981us;73us;317us;83us;1980us;88us;38us;101us;287us;108us;16553us;121us;16553us;137us;16553us;150us;16553us;162us;16553us;203us;261us;0us;16519us;94us;16522us;13us;16553us;24us;16553us;25us;16553us;29us;16553us;30us;16553us;32us;16553us;33us;16553us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;41us;16553us;43us;16553us;44us;16553us;45us;16553us;46us;16553us;56us;16553us;62us;16553us;66us;16553us;70us;16553us;71us;16553us;72us;16553us;73us;317us;74us;16553us;85us;16553us;86us;16553us;88us;38us;89us;16553us;90us;16553us;91us;16553us;92us;16553us;96us;16553us;98us;16553us;100us;16553us;101us;287us;106us;16553us;107us;16553us;108us;16553us;114us;16553us;115us;16553us;116us;16553us;117us;16553us;119us;16553us;121us;16553us;122us;16553us;123us;16553us;124us;16553us;125us;16553us;126us;16553us;130us;16553us;133us;16553us;134us;16553us;136us;16553us;137us;16553us;143us;16553us;146us;16553us;147us;16553us;148us;16553us;149us;16553us;150us;16553us;154us;16553us;155us;16553us;158us;16553us;159us;16553us;162us;16553us;163us;16553us;164us;16553us;166us;16553us;167us;16553us;168us;16553us;169us;16553us;170us;16553us;171us;16553us;172us;16553us;173us;16553us;174us;16553us;175us;16553us;176us;16553us;177us;16553us;178us;16553us;180us;16553us;181us;16553us;183us;16553us;184us;16553us;187us;16553us;189us;16553us;193us;16553us;194us;16553us;195us;16553us;199us;16553us;200us;16553us;201us;16553us;202us;16553us;203us;261us;0us;16520us;3us;32768us;21us;1982us;67us;1981us;83us;1980us;3us;16532us;21us;1982us;67us;1981us;83us;1980us;6us;32768us;15us;2050us;16us;2052us;17us;2053us;21us;1982us;67us;1981us;83us;1980us;4us;32768us;21us;1982us;67us;1981us;83us;1980us;142us;310us;4us;16553us;73us;317us;88us;38us;101us;287us;203us;261us;0us;16523us;0us;16524us;0us;16525us;3us;16647us;43us;514us;44us;513us;45us;515us;11us;32768us;33us;753us;37us;2031us;38us;2034us;39us;2036us;40us;2039us;41us;767us;108us;2035us;121us;735us;137us;751us;150us;2040us;162us;747us;0us;16526us;1us;16526us;127us;1088us;0us;16527us;80us;16527us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1093us;0us;16528us;1us;16553us;73us;317us;1us;16576us;131us;358us;0us;16529us;0us;16530us;2us;32768us;69us;281us;203us;283us;5us;32768us;22us;296us;46us;1922us;56us;2008us;136us;2009us;193us;1921us;0us;16531us;0us;16532us;2us;16552us;10us;1075us;203us;1059us;0us;16533us;0us;16534us;7us;32768us;10us;1075us;37us;2031us;38us;2034us;46us;1922us;108us;2035us;193us;1921us;203us;1059us;1us;16535us;76us;1924us;0us;16536us;33us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;6us;16537us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;189us;1918us;193us;1921us;0us;16538us;4us;32768us;15us;2050us;16us;2052us;17us;2053us;76us;1924us;0us;16539us;1us;16540us;76us;1924us;6us;16553us;56us;2008us;73us;317us;88us;38us;101us;287us;136us;2009us;203us;263us;5us;32768us;10us;1075us;15us;2050us;16us;2052us;17us;2053us;203us;1059us;0us;16541us;0us;16542us;5us;32768us;10us;1075us;15us;2050us;16us;2052us;17us;2053us;203us;1059us;0us;16543us;0us;16544us;0us;16545us;0us;16546us;1us;16547us;76us;1924us;94us;16513us;13us;16553us;24us;16553us;25us;16553us;29us;16553us;30us;16553us;32us;16553us;33us;16553us;37us;16553us;38us;16553us;39us;16553us;40us;16553us;41us;16553us;43us;16553us;44us;16553us;45us;16553us;46us;16553us;56us;16553us;62us;16553us;66us;16553us;70us;16553us;71us;16553us;72us;16553us;73us;317us;74us;16553us;85us;16553us;86us;16553us;88us;38us;89us;16553us;90us;16553us;91us;16553us;92us;16553us;96us;16553us;98us;16553us;100us;16553us;101us;287us;106us;16553us;107us;16553us;108us;16553us;114us;16553us;115us;16553us;116us;16553us;117us;16553us;119us;16553us;121us;16553us;122us;16553us;123us;16553us;124us;16553us;125us;16553us;126us;16553us;130us;16553us;133us;16553us;134us;16553us;136us;16553us;137us;16553us;143us;16553us;146us;16553us;147us;16553us;148us;16553us;149us;16553us;150us;16553us;154us;16553us;155us;16553us;158us;16553us;159us;16553us;162us;16553us;163us;16553us;164us;16553us;166us;16553us;167us;16553us;168us;16553us;169us;16553us;170us;16553us;171us;16553us;172us;16553us;173us;16553us;174us;16553us;175us;16553us;176us;16553us;177us;16553us;178us;16553us;180us;16553us;181us;16553us;183us;16553us;184us;16553us;187us;16553us;189us;16553us;193us;16553us;194us;16553us;195us;16553us;199us;16553us;200us;16553us;201us;16553us;202us;16553us;203us;264us;3us;32768us;10us;1075us;142us;308us;203us;1059us;0us;16548us;0us;16549us;0us;16550us;6us;16553us;19us;16599us;20us;16599us;22us;398us;73us;317us;142us;16599us;203us;404us;3us;32768us;19us;1991us;20us;1992us;142us;1993us;0us;16551us;0us;16552us;1us;16554us;73us;317us;0us;16555us;14us;32768us;10us;1075us;15us;2063us;37us;2032us;38us;2034us;39us;2037us;40us;2039us;46us;1922us;60us;2061us;94us;2062us;108us;2035us;150us;2040us;163us;348us;193us;1921us;203us;322us;2us;17542us;21us;1987us;83us;1988us;8us;32768us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;55us;320us;60us;2061us;94us;2062us;203us;1059us;1us;17540us;21us;1999us;0us;16556us;1us;16972us;55us;323us;1us;17540us;21us;1999us;0us;16557us;0us;16558us;0us;16559us;0us;16560us;9us;17541us;37us;2031us;38us;2034us;39us;2036us;40us;2039us;46us;1922us;108us;2035us;150us;2040us;163us;348us;193us;1921us;0us;16561us;3us;17573us;35us;2029us;36us;2028us;76us;1924us;30us;17242us;56us;1622us;71us;1481us;72us;1625us;92us;1487us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;16562us;3us;32768us;22us;337us;46us;1922us;193us;1921us;3us;17573us;35us;2029us;36us;2028us;76us;1924us;30us;17242us;56us;1622us;71us;1481us;72us;1625us;92us;1487us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;16563us;2us;32768us;46us;1922us;193us;1921us;4us;32768us;15us;2050us;16us;2052us;17us;2053us;76us;1924us;2us;17573us;35us;2029us;36us;2028us;30us;17242us;56us;1622us;71us;1481us;72us;1625us;92us;1487us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;16564us;1us;32768us;77us;343us;0us;16565us;1us;32768us;77us;345us;0us;16566us;1us;17469us;77us;347us;0us;16567us;1us;32768us;77us;349us;0us;16568us;11us;16570us;30us;757us;33us;753us;37us;2031us;38us;2034us;41us;767us;48us;351us;50us;434us;108us;2035us;109us;477us;137us;751us;162us;747us;0us;16569us;0us;16571us;0us;16572us;0us;16573us;3us;16647us;43us;514us;44us;513us;45us;515us;1us;16715us;84us;625us;0us;16574us;1us;16553us;73us;317us;1us;16576us;131us;358us;0us;16575us;39us;16553us;14us;16577us;15us;16577us;16us;16577us;17us;16577us;19us;16577us;20us;16577us;21us;16577us;30us;16577us;33us;16577us;37us;16577us;38us;16577us;39us;16577us;40us;16577us;41us;16577us;47us;16577us;48us;16577us;50us;16577us;51us;16577us;52us;16577us;54us;16577us;60us;16577us;67us;16577us;73us;317us;83us;16577us;87us;311us;88us;16577us;94us;16577us;101us;16577us;108us;16577us;109us;16577us;111us;16577us;119us;16577us;121us;16577us;131us;16577us;137us;16577us;142us;16577us;150us;16577us;151us;16577us;162us;16577us;0us;16578us;3us;16647us;43us;514us;44us;513us;45us;515us;2us;17573us;35us;2029us;36us;2028us;1us;16864us;92us;878us;1us;16661us;132us;530us;3us;32768us;10us;1075us;69us;368us;203us;1059us;6us;16553us;22us;371us;49us;589us;56us;591us;73us;317us;111us;590us;152us;384us;0us;16579us;0us;16580us;9us;16553us;15us;2050us;16us;2052us;17us;2053us;22us;394us;49us;589us;56us;591us;73us;317us;111us;590us;152us;384us;1us;17540us;21us;1999us;7us;16553us;10us;16599us;15us;16599us;16us;16599us;17us;16599us;73us;317us;87us;16599us;203us;404us;1us;16656us;87us;519us;5us;32768us;10us;1075us;15us;2050us;16us;2052us;17us;2053us;203us;1059us;1us;16656us;87us;519us;0us;16581us;0us;16582us;0us;16583us;1us;16656us;87us;519us;0us;16584us;0us;16585us;0us;16586us;1us;32768us;120us;385us;34us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;73us;317us;74us;1691us;88us;1842us;91us;1916us;92us;1749us;96us;1669us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;16587us;0us;16588us;10us;16553us;10us;16599us;15us;16599us;22us;398us;37us;16599us;39us;16599us;60us;16599us;73us;317us;94us;16599us;142us;16599us;203us;392us;8us;32768us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;60us;2061us;94us;2062us;142us;390us;203us;1059us;0us;16589us;0us;16590us;9us;16553us;10us;16599us;15us;16599us;37us;16599us;39us;16599us;60us;16599us;73us;317us;94us;16599us;142us;393us;203us;404us;0us;16591us;1us;16553us;73us;317us;5us;32768us;10us;1075us;15us;2050us;16us;2052us;17us;2053us;203us;1059us;0us;16592us;0us;16593us;6us;16553us;10us;16599us;15us;16599us;16us;16599us;17us;16599us;73us;317us;203us;404us;5us;32768us;10us;1075us;15us;2050us;16us;2052us;17us;2053us;203us;1059us;0us;16594us;0us;16595us;0us;16596us;0us;16597us;14us;16553us;10us;16599us;15us;16599us;16us;16599us;17us;16599us;19us;16599us;20us;16599us;37us;16599us;39us;16599us;60us;16599us;73us;317us;87us;16599us;94us;16599us;142us;16599us;203us;404us;0us;16598us;2us;17542us;21us;1987us;83us;1988us;14us;16553us;10us;16599us;15us;16599us;16us;16599us;17us;16599us;19us;16599us;20us;16599us;37us;16599us;39us;16599us;60us;16599us;73us;317us;87us;16599us;94us;16599us;142us;16599us;203us;404us;0us;16600us;1us;17548us;110us;2002us;0us;16601us;1us;17548us;110us;2002us;2us;32768us;20us;413us;203us;414us;0us;16602us;0us;16603us;1us;16604us;131us;416us;1us;17548us;110us;2002us;0us;16605us;1us;16553us;73us;317us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;97us;908us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;1us;17312us;77us;1658us;1us;32768us;69us;422us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;16606us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;97us;908us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;1us;17312us;77us;1658us;6us;32768us;10us;1075us;21us;429us;26us;411us;69us;427us;87us;409us;203us;1059us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;16607us;0us;16608us;0us;16609us;0us;16610us;1us;16611us;48us;433us;0us;16612us;1us;16613us;48us;435us;0us;16614us;3us;16647us;43us;514us;44us;513us;45us;515us;3us;16647us;43us;514us;44us;513us;45us;515us;15us;32768us;14us;593us;30us;757us;33us;753us;41us;767us;47us;350us;48us;352us;50us;432us;51us;353us;52us;354us;54us;522us;109us;477us;111us;592us;119us;465us;137us;751us;162us;747us;51us;32768us;14us;593us;30us;757us;33us;753us;41us;767us;46us;1922us;47us;350us;48us;352us;50us;432us;51us;353us;52us;354us;54us;522us;56us;580us;58us;672us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;569us;96us;1715us;106us;1864us;109us;477us;111us;592us;113us;1862us;119us;465us;120us;707us;122us;1863us;137us;751us;148us;1861us;162us;747us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;195us;574us;201us;2014us;202us;847us;0us;16615us;0us;16616us;4us;17548us;10us;1075us;109us;486us;110us;2002us;203us;1059us;1us;17534us;19us;1997us;0us;16617us;0us;16618us;33us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;7us;16654us;36us;1746us;46us;1922us;70us;1760us;87us;516us;91us;1916us;189us;1918us;193us;1921us;0us;16619us;0us;16620us;1us;17548us;110us;2002us;3us;32768us;92us;1927us;100us;1932us;193us;1921us;2us;16714us;34us;2030us;160us;17575us;1us;32768us;77us;454us;34us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;73us;317us;74us;1691us;88us;1842us;91us;1916us;92us;1749us;96us;1669us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;2us;16485us;26us;205us;87us;203us;1us;17534us;19us;1997us;0us;16621us;0us;16622us;1us;17534us;19us;1997us;0us;16623us;1us;17534us;19us;1997us;0us;16624us;1us;17534us;19us;1997us;0us;16625us;37us;32768us;10us;1075us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;92us;969us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1059us;1us;16661us;132us;530us;9us;32768us;10us;1075us;15us;2063us;21us;472us;37us;2059us;39us;2060us;60us;2061us;69us;468us;94us;2062us;203us;1059us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;1us;17534us;19us;1997us;0us;16626us;0us;16627us;0us;16628us;1us;17540us;21us;1999us;0us;16629us;1us;16553us;73us;317us;0us;16630us;1us;17550us;118us;2003us;3us;16647us;43us;514us;44us;513us;45us;515us;3us;32768us;10us;1075us;193us;1921us;203us;1059us;3us;32768us;10us;1075us;77us;481us;203us;1059us;35us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;16631us;0us;16632us;0us;16633us;0us;16634us;1us;17550us;118us;2003us;3us;16647us;43us;514us;44us;513us;45us;515us;3us;32768us;10us;1075us;193us;1921us;203us;1059us;1us;16639us;77us;497us;9us;32768us;10us;1075us;15us;2063us;21us;495us;37us;2059us;39us;2060us;60us;2061us;69us;491us;94us;2062us;203us;1059us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;2us;16485us;26us;205us;87us;203us;0us;16635us;0us;16636us;0us;16637us;0us;16638us;35us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;16640us;0us;16641us;1us;16910us;76us;501us;3us;32768us;92us;1927us;100us;1932us;193us;1921us;0us;16642us;1us;32768us;76us;504us;3us;32768us;92us;1927us;100us;1932us;193us;1921us;0us;16643us;0us;16644us;4us;32768us;66us;508us;92us;1927us;100us;1932us;193us;1921us;1us;32768us;76us;509us;3us;32768us;92us;1927us;100us;1932us;193us;1921us;0us;16645us;0us;16646us;0us;16648us;0us;16649us;0us;16650us;0us;16651us;31us;16553us;10us;16653us;14us;16653us;15us;16653us;16us;16653us;17us;16653us;19us;16653us;20us;16653us;21us;16653us;22us;537us;30us;16653us;33us;16653us;37us;16653us;39us;16653us;41us;16653us;43us;16653us;44us;16653us;45us;16653us;50us;16653us;52us;16653us;54us;16653us;60us;16653us;73us;317us;83us;16653us;87us;16653us;94us;16653us;109us;16653us;111us;16653us;119us;16653us;137us;16653us;142us;16653us;162us;16653us;3us;32768us;19us;1991us;20us;1992us;142us;1993us;0us;16652us;6us;16553us;19us;16599us;20us;16599us;22us;398us;73us;317us;142us;16599us;203us;404us;3us;32768us;19us;1991us;20us;1992us;142us;1993us;0us;16655us;37us;32768us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;46us;1922us;56us;1851us;60us;2061us;66us;1845us;88us;1842us;91us;1916us;92us;1835us;94us;2062us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;33us;16665us;35us;2029us;36us;2028us;56us;17573us;71us;17573us;72us;17573us;92us;17573us;106us;17573us;122us;17573us;132us;534us;136us;17573us;148us;17573us;155us;17573us;166us;17573us;167us;17573us;168us;17573us;169us;17573us;170us;17573us;171us;17573us;172us;17573us;173us;17573us;174us;17573us;175us;17573us;176us;17573us;177us;17573us;178us;17573us;180us;17573us;181us;17573us;194us;17573us;195us;17573us;199us;17573us;200us;17573us;201us;17573us;202us;17573us;0us;16657us;30us;32768us;56us;1622us;71us;1481us;72us;1625us;92us;1487us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;1us;16665us;132us;534us;0us;16658us;0us;16659us;0us;16660us;3us;32768us;10us;1075us;193us;1921us;203us;1059us;0us;16662us;0us;16663us;0us;16664us;2us;32768us;154us;536us;193us;1921us;0us;16666us;0us;16667us;1us;16553us;73us;317us;5us;32768us;10us;1075us;15us;2050us;16us;2052us;17us;2053us;203us;1059us;0us;16668us;0us;16669us;0us;16670us;2us;17542us;21us;1987us;83us;1988us;14us;16553us;10us;16672us;14us;16672us;15us;16672us;16us;16672us;17us;16672us;19us;16672us;20us;16672us;21us;16672us;60us;16672us;61us;16672us;73us;317us;111us;16672us;142us;16672us;196us;16672us;0us;16671us;4us;32768us;47us;556us;48us;558us;51us;559us;203us;553us;5us;17548us;47us;556us;48us;558us;51us;559us;110us;2002us;203us;553us;3us;17548us;109us;486us;110us;2002us;203us;552us;1us;17534us;19us;1997us;0us;16673us;1us;17534us;19us;1997us;0us;16674us;0us;16675us;1us;17548us;110us;2002us;1us;17534us;19us;1997us;0us;16676us;1us;32768us;48us;557us;0us;16677us;0us;16678us;0us;16679us;3us;16647us;43us;514us;44us;513us;45us;515us;36us;32768us;46us;1922us;56us;580us;58us;672us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;569us;96us;1715us;106us;1864us;113us;1862us;120us;707us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;195us;574us;201us;2014us;202us;847us;2us;17362us;76us;1924us;155us;563us;1us;32768us;201us;564us;2us;32768us;10us;1075us;203us;1059us;0us;16680us;0us;16681us;0us;16682us;0us;16683us;34us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;570us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1865us;30us;32768us;46us;1922us;56us;1851us;66us;1845us;88us;1842us;91us;1916us;92us;1846us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;1us;16842us;88us;572us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;16684us;2us;16553us;73us;317us;203us;578us;5us;32768us;10us;1075us;60us;2041us;61us;2043us;196us;2044us;203us;1059us;0us;16685us;0us;16686us;3us;32768us;60us;2041us;61us;2043us;196us;2044us;0us;16687us;2us;32768us;72us;583us;92us;1852us;0us;16688us;0us;16689us;2us;16553us;73us;317us;203us;587us;3us;32768us;10us;1075us;65us;2045us;203us;1059us;0us;16690us;0us;16691us;1us;32768us;65us;2045us;0us;16692us;0us;16693us;0us;16694us;0us;16695us;0us;16696us;0us;16697us;7us;32768us;10us;1075us;46us;1922us;91us;1916us;92us;601us;189us;1918us;193us;1921us;203us;1059us;3us;16698us;34us;2030us;76us;1924us;160us;17575us;2us;32768us;46us;1922us;193us;1921us;1us;16699us;76us;1924us;0us;16700us;0us;16701us;0us;16702us;1us;16553us;73us;317us;4us;32768us;93us;2049us;94us;2046us;95us;2048us;97us;606us;0us;16703us;2us;16715us;84us;625us;97us;606us;1us;16710us;97us;607us;1us;16553us;73us;317us;2us;16553us;73us;317us;143us;618us;0us;16704us;0us;16705us;2us;32768us;91us;1916us;189us;1918us;1us;16706us;89us;612us;30us;32768us;46us;1922us;56us;1851us;66us;1845us;88us;1842us;91us;1916us;92us;1846us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;1us;16707us;89us;634us;1us;32768us;160us;615us;1us;16553us;73us;317us;1us;32768us;161us;617us;0us;16708us;0us;16709us;1us;32768us;160us;620us;3us;16553us;73us;317us;84us;16711us;161us;16711us;1us;16715us;84us;625us;1us;32768us;161us;623us;0us;16712us;0us;16713us;32us;32768us;46us;1922us;52us;637us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;652us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;1us;16716us;131us;629us;1us;17309us;131us;629us;1us;17311us;131us;629us;32us;32768us;46us;1922us;52us;637us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;652us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;16717us;0us;16718us;1us;17360us;89us;634us;1us;17361us;89us;634us;30us;32768us;46us;1922us;56us;1851us;66us;1845us;88us;1842us;91us;1916us;92us;1846us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;1us;16719us;76us;1868us;1us;16720us;76us;1868us;2us;32768us;91us;1916us;189us;1918us;1us;32768us;77us;639us;33us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;16721us;3us;17363us;77us;644us;79us;642us;89us;1735us;33us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;4us;16722us;46us;17372us;70us;17372us;91us;17372us;193us;17372us;5us;32768us;56us;645us;92us;649us;148us;648us;152us;659us;193us;646us;0us;16723us;3us;16730us;34us;1874us;56us;647us;160us;1876us;0us;16724us;0us;16725us;1us;16553us;73us;317us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;16726us;34us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1865us;4us;32768us;93us;2049us;94us;2046us;95us;2048us;102us;663us;1us;32768us;77us;655us;1us;32768us;92us;656us;1us;16553us;73us;317us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;16727us;2us;32768us;34us;1874us;160us;1876us;0us;16728us;0us;16729us;6us;16731us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;189us;1918us;193us;1921us;31us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;6us;16732us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;189us;1918us;193us;1921us;13us;16733us;10us;17352us;36us;1746us;46us;1922us;69us;17352us;70us;1760us;91us;1916us;96us;1712us;97us;17352us;98us;17352us;186us;1720us;189us;1918us;193us;1921us;203us;17352us;1us;16553us;73us;317us;0us;16734us;1us;32768us;58us;672us;1us;16553us;73us;317us;0us;16735us;2us;16736us;21us;1999us;58us;17540us;0us;16737us;1us;16739us;58us;672us;1us;16553us;73us;317us;0us;16738us;3us;16647us;43us;514us;44us;513us;45us;515us;6us;32768us;10us;1075us;92us;692us;100us;1932us;120us;683us;193us;1921us;203us;1059us;35us;16740us;46us;1922us;56us;580us;66us;1757us;69us;689us;72us;583us;77us;687us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;120us;680us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;195us;574us;201us;2014us;202us;847us;0us;16741us;34us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;195us;574us;201us;2014us;202us;847us;203us;1059us;0us;16742us;0us;16743us;34us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;195us;574us;201us;2014us;202us;847us;203us;1059us;0us;16744us;0us;16745us;0us;16746us;34us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;73us;317us;74us;1691us;88us;1842us;91us;1916us;92us;1749us;96us;1669us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;16747us;40us;32768us;46us;1427us;56us;1435us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;5us;16748us;34us;1408us;35us;1407us;36us;1406us;74us;1425us;76us;1417us;0us;16749us;29us;32768us;58us;1967us;62us;1949us;63us;1947us;69us;1951us;70us;695us;74us;1955us;78us;693us;82us;1959us;89us;1956us;90us;1957us;96us;1950us;102us;1952us;143us;1962us;145us;1958us;155us;1964us;158us;1961us;160us;1953us;161us;1954us;182us;1960us;183us;1948us;184us;1945us;185us;1944us;186us;1946us;187us;1939us;188us;1943us;189us;1942us;190us;1941us;191us;1940us;203us;1930us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;16750us;1us;32768us;59us;696us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;16751us;4us;17469us;21us;1999us;58us;17540us;69us;700us;120us;704us;0us;16752us;40us;32768us;46us;1427us;56us;1435us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;6us;17540us;21us;1999us;34us;1408us;35us;1407us;36us;1406us;74us;1425us;76us;1417us;46us;16753us;10us;16758us;14us;16758us;15us;16758us;16us;16758us;17us;16758us;19us;16758us;20us;16758us;21us;16758us;30us;16758us;33us;16758us;37us;16758us;38us;16758us;39us;16758us;40us;16758us;41us;16758us;43us;16758us;44us;16758us;45us;16758us;47us;16758us;48us;16758us;50us;16758us;51us;16758us;52us;16758us;54us;16758us;60us;16758us;67us;16758us;73us;16758us;83us;16758us;87us;16758us;88us;16758us;93us;16758us;94us;16758us;95us;16758us;101us;16758us;108us;16758us;109us;16758us;111us;16758us;119us;16758us;121us;16758us;131us;16758us;137us;16758us;142us;16758us;150us;16758us;151us;16758us;162us;16758us;203us;16758us;0us;16754us;34us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;195us;574us;201us;2014us;202us;847us;203us;1059us;0us;16755us;0us;16756us;32us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;195us;574us;201us;2014us;202us;847us;0us;16757us;1us;16760us;96us;710us;31us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;16759us;1us;17469us;77us;713us;31us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;7us;16761us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;98us;1698us;189us;1918us;193us;1921us;7us;16762us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;98us;1698us;189us;1918us;193us;1921us;0us;16763us;0us;16764us;0us;16765us;0us;16766us;2us;17542us;21us;1987us;83us;1988us;7us;16553us;10us;17541us;60us;17541us;61us;17541us;65us;17541us;73us;317us;196us;17541us;203us;17541us;0us;16767us;0us;16768us;1us;17550us;118us;2003us;0us;16769us;3us;16647us;43us;514us;44us;513us;45us;515us;1us;32768us;193us;1921us;3us;32768us;10us;1075us;77us;729us;203us;1059us;35us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;16770us;0us;16771us;0us;16772us;1us;16656us;87us;519us;0us;16773us;1us;16553us;73us;317us;3us;16647us;43us;514us;44us;513us;45us;515us;3us;32768us;10us;1075us;193us;1921us;203us;1059us;1us;16779us;69us;745us;0us;16774us;0us;16775us;1us;16776us;120us;742us;34us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;195us;574us;201us;2014us;202us;847us;203us;1059us;0us;16777us;0us;16778us;2us;32768us;46us;1922us;193us;1921us;1us;16780us;76us;1924us;1us;17544us;103us;2001us;2us;16553us;73us;317us;203us;802us;0us;16781us;0us;16782us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;16783us;1us;17544us;103us;2001us;2us;16553us;73us;317us;203us;802us;3us;32768us;10us;1075us;19us;765us;203us;1059us;0us;16784us;81us;32768us;13us;1187us;19us;760us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;3us;32768us;10us;1075us;19us;765us;203us;1059us;0us;16785us;0us;16786us;0us;16787us;0us;16788us;0us;16789us;0us;16790us;0us;16791us;0us;16792us;1us;16553us;73us;317us;3us;16647us;43us;514us;44us;513us;45us;515us;1us;32768us;193us;1921us;2us;17573us;35us;2029us;36us;2028us;1us;32768us;92us;772us;4us;16553us;73us;317us;93us;16796us;94us;16796us;95us;16796us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;16793us;1us;16794us;97us;777us;1us;16795us;97us;779us;1us;16553us;73us;317us;0us;16797us;1us;16553us;73us;317us;0us;16798us;3us;32768us;42us;791us;46us;1922us;193us;1921us;6us;16799us;35us;2029us;36us;2028us;70us;17573us;89us;790us;96us;789us;193us;1921us;0us;16800us;1us;16801us;76us;1924us;5us;16806us;35us;2029us;36us;2028us;70us;17573us;89us;790us;96us;789us;1us;32768us;70us;787us;1us;32768us;59us;788us;0us;16802us;0us;16803us;0us;16804us;1us;32768us;96us;793us;1us;16807us;96us;793us;0us;16805us;3us;32768us;42us;792us;46us;1922us;193us;1921us;1us;16810us;131us;797us;0us;16808us;2us;16553us;73us;317us;203us;802us;1us;16810us;131us;797us;0us;16809us;1us;17548us;110us;2002us;0us;16811us;0us;16812us;1us;17550us;118us;2003us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;97us;908us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;1us;17312us;77us;1658us;3us;32768us;10us;1075us;69us;807us;203us;1059us;81us;32768us;13us;1187us;22us;811us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;809us;0us;16813us;0us;16814us;0us;16815us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;5us;32768us;10us;1075us;15us;2050us;16us;2052us;17us;2053us;203us;1059us;0us;16816us;0us;16817us;0us;16818us;0us;16821us;1us;16819us;84us;819us;0us;16820us;2us;32768us;91us;1916us;189us;1918us;2us;32768us;69us;821us;131us;823us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;16822us;2us;32768us;91us;1916us;189us;1918us;0us;16823us;0us;16824us;2us;32768us;56us;829us;77us;827us;33us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;16825us;0us;16826us;0us;16827us;0us;16828us;0us;16829us;0us;16830us;0us;16831us;0us;16832us;0us;16833us;0us;16834us;0us;16835us;0us;16836us;0us;16837us;0us;16838us;0us;16839us;0us;16840us;0us;16841us;0us;16842us;0us;16843us;0us;16844us;1us;16847us;186us;849us;1us;32768us;178us;850us;0us;16845us;1us;32768us;178us;852us;1us;16848us;186us;853us;1us;32768us;178us;854us;0us;16846us;0us;16849us;2us;32768us;62us;851us;178us;848us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;16850us;0us;16851us;2us;32768us;92us;856us;178us;855us;0us;16852us;1us;16853us;34us;863us;1us;32768us;160us;1893us;0us;16854us;5us;16855us;58us;899us;78us;900us;89us;911us;97us;905us;132us;897us;0us;16856us;1us;32768us;193us;1921us;0us;16857us;1us;16860us;77us;871us;2us;16861us;77us;871us;97us;875us;35us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;16858us;0us;16859us;3us;32768us;73us;317us;74us;867us;193us;1921us;3us;32768us;73us;317us;74us;867us;193us;1921us;0us;16862us;0us;16863us;8us;32768us;10us;1075us;73us;317us;74us;867us;93us;2049us;94us;2046us;95us;2048us;193us;1921us;203us;883us;5us;32768us;10us;1075us;93us;2049us;94us;2046us;95us;2048us;203us;1059us;0us;16865us;0us;16866us;0us;16867us;3us;16972us;93us;2049us;94us;2046us;95us;2048us;0us;16868us;0us;16869us;3us;16871us;78us;900us;89us;911us;97us;905us;1us;16872us;78us;900us;2us;16876us;78us;900us;89us;911us;2us;16877us;78us;900us;89us;911us;2us;16880us;78us;900us;89us;911us;1us;16882us;78us;900us;1us;16883us;78us;900us;6us;32768us;58us;899us;69us;1077us;78us;900us;89us;911us;97us;905us;132us;897us;6us;32768us;58us;899us;69us;1082us;78us;900us;89us;911us;97us;905us;132us;897us;6us;32768us;58us;899us;69us;1165us;78us;900us;89us;911us;97us;905us;132us;897us;6us;32768us;58us;899us;69us;1172us;78us;900us;89us;911us;97us;905us;132us;897us;36us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;0us;16870us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;97us;908us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;97us;908us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;1us;16873us;97us;904us;0us;16874us;0us;16875us;44us;32768us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;60us;2061us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;94us;2062us;97us;908us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1059us;44us;32768us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;60us;2061us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;94us;2062us;97us;908us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1059us;0us;16878us;0us;16879us;44us;32768us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;60us;2061us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;94us;2062us;97us;908us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1059us;0us;16881us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;97us;908us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;97us;908us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;2us;17542us;21us;1987us;83us;1988us;0us;16884us;3us;17541us;21us;1987us;83us;1988us;193us;1921us;0us;16885us;1us;32768us;193us;1921us;0us;16886us;3us;32768us;10us;1075us;69us;920us;203us;1059us;4us;17508us;10us;1075us;69us;920us;76us;1974us;203us;1059us;40us;32768us;10us;1075us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1059us;6us;16887us;58us;1000us;77us;1003us;78us;1007us;89us;1016us;97us;1010us;132us;998us;0us;16888us;0us;16889us;39us;16912us;34us;2030us;35us;932us;36us;934us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;92us;939us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;160us;17575us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;37us;16890us;35us;927us;36us;929us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;92us;939us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;0us;16891us;35us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;92us;939us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;0us;16892us;35us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;92us;939us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;0us;16893us;0us;16894us;35us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;92us;939us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;0us;16895us;35us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;92us;939us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;0us;16896us;31us;32768us;46us;1922us;56us;580us;66us;1845us;72us;583us;88us;1842us;91us;1916us;92us;1846us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;16897us;0us;16898us;64us;16926us;10us;1075us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;58us;1967us;62us;1949us;63us;1947us;66us;500us;69us;1951us;70us;955us;71us;958us;73us;317us;74us;962us;81us;936us;82us;1959us;89us;1956us;90us;1957us;92us;969us;96us;1950us;97us;1013us;100us;1932us;102us;1952us;106us;967us;122us;966us;143us;1962us;145us;1958us;148us;968us;155us;1475us;158us;1961us;160us;1953us;161us;1954us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;182us;1960us;183us;1948us;184us;1945us;185us;1944us;186us;1946us;187us;1939us;188us;1943us;189us;1942us;190us;1941us;191us;1940us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;973us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;16899us;0us;16900us;37us;16904us;35us;947us;36us;945us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;92us;969us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;0us;16901us;35us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;92us;969us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;0us;16902us;35us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;92us;969us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;0us;16903us;0us;16905us;3us;32768us;46us;1922us;193us;1921us;203us;953us;3us;32768us;60us;2041us;61us;2043us;196us;2044us;0us;16906us;3us;32768us;60us;2041us;61us;2043us;196us;2044us;0us;16907us;38us;16949us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;1us;32768us;59us;957us;0us;16908us;38us;16949us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;1us;32768us;64us;960us;0us;16909us;1us;32768us;193us;1921us;1us;17493us;193us;1921us;0us;16911us;0us;16912us;0us;16913us;0us;16914us;0us;16915us;0us;16916us;64us;16926us;10us;1075us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;58us;1967us;62us;1949us;63us;1947us;66us;500us;69us;1951us;70us;955us;71us;958us;73us;317us;74us;962us;81us;936us;82us;1959us;89us;1956us;90us;1957us;92us;969us;96us;1950us;97us;1013us;100us;1932us;102us;1952us;106us;967us;122us;966us;143us;1962us;145us;1958us;148us;968us;155us;1475us;158us;1961us;160us;1953us;161us;1954us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;182us;1960us;183us;1948us;184us;1945us;185us;1944us;186us;1946us;187us;1939us;188us;1943us;189us;1942us;190us;1941us;191us;1940us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;973us;5us;32768us;10us;1075us;93us;2049us;94us;2046us;95us;2048us;203us;1059us;0us;16917us;0us;16918us;3us;16972us;93us;2049us;94us;2046us;95us;2048us;2us;16919us;34us;17473us;160us;17473us;0us;16920us;1us;32768us;92us;977us;40us;32768us;10us;1075us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;981us;6us;16929us;10us;1075us;93us;2049us;94us;2046us;95us;2048us;97us;1009us;203us;1059us;0us;16921us;0us;16922us;3us;16972us;93us;2049us;94us;2046us;95us;2048us;0us;16923us;0us;16924us;6us;16925us;58us;1000us;77us;1003us;78us;1007us;89us;1016us;97us;1010us;132us;998us;4us;16928us;77us;1003us;78us;1007us;89us;1016us;97us;1010us;3us;16933us;77us;1003us;78us;1007us;89us;1016us;2us;16934us;77us;1003us;78us;1007us;3us;16936us;77us;1003us;78us;1007us;89us;1016us;3us;16937us;77us;1003us;78us;1007us;89us;1016us;3us;16940us;77us;1003us;78us;1007us;89us;1016us;2us;16942us;77us;1003us;78us;1007us;6us;32768us;58us;1000us;77us;1003us;78us;1007us;89us;1016us;97us;1010us;132us;998us;2us;16943us;77us;1003us;78us;1007us;6us;16946us;58us;1000us;77us;1003us;78us;1007us;89us;1016us;97us;1010us;132us;998us;8us;17542us;21us;1987us;58us;1000us;77us;1003us;78us;1007us;83us;1988us;89us;1016us;97us;1010us;132us;998us;15us;32768us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;58us;1000us;60us;2061us;69us;1535us;77us;1003us;78us;1007us;89us;1016us;94us;2062us;97us;1010us;127us;1532us;132us;998us;203us;1063us;7us;17110us;58us;1000us;77us;1003us;78us;1007us;84us;1325us;89us;1016us;97us;1010us;132us;998us;36us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;0us;16927us;38us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;1us;16929us;97us;1009us;1us;16930us;89us;1015us;35us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;16931us;0us;16932us;38us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;38us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;0us;16935us;45us;32768us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;60us;2061us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;94us;2062us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1059us;45us;32768us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;60us;2061us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;94us;2062us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1059us;0us;16938us;0us;16939us;45us;32768us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;60us;2061us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;94us;2062us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1059us;0us;16941us;38us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;38us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;2us;17542us;21us;1987us;83us;1988us;0us;16944us;2us;17541us;46us;1922us;193us;1921us;0us;16945us;4us;32768us;10us;1075us;69us;1022us;76us;1924us;203us;1059us;40us;32768us;10us;1075us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1059us;0us;16947us;0us;16948us;0us;16950us;38us;16949us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;0us;16951us;82us;32768us;13us;1187us;15us;2050us;16us;2052us;17us;2053us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;5us;32768us;10us;1075us;15us;2050us;16us;2052us;17us;2053us;203us;1059us;0us;16952us;0us;16953us;0us;16954us;0us;16955us;82us;32768us;13us;1187us;15us;2050us;16us;2052us;17us;2053us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;3us;32768us;15us;2050us;16us;2052us;17us;2053us;0us;16956us;0us;16957us;26us;16958us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;1us;16960us;18us;1040us;0us;16959us;0us;16961us;93us;16961us;14us;17303us;15us;17303us;16us;17303us;17us;17303us;18us;17303us;19us;17303us;21us;17303us;26us;17303us;27us;17303us;28us;17303us;30us;17303us;33us;17303us;37us;17303us;38us;17303us;39us;17303us;40us;17303us;41us;17303us;43us;17303us;44us;17303us;45us;17303us;47us;17303us;48us;17303us;50us;17303us;51us;17303us;52us;17303us;54us;17303us;58us;17303us;59us;17303us;60us;17303us;61us;17303us;62us;17303us;63us;17303us;64us;17303us;65us;17303us;67us;17303us;69us;17303us;73us;17303us;77us;17303us;78us;17303us;79us;17303us;80us;17303us;81us;17303us;82us;17303us;83us;17303us;84us;17303us;87us;17303us;88us;17303us;89us;17303us;90us;17303us;93us;17303us;94us;17303us;95us;17303us;96us;17303us;97us;17303us;98us;17303us;101us;17303us;102us;17303us;104us;17303us;105us;17303us;108us;17303us;109us;17303us;111us;17303us;119us;17303us;121us;17303us;127us;17303us;128us;17303us;129us;17303us;131us;17303us;137us;17303us;138us;17303us;139us;17303us;140us;17303us;141us;17303us;142us;17303us;143us;17303us;145us;17303us;150us;17303us;151us;17303us;156us;17303us;158us;17303us;160us;17303us;161us;17303us;162us;17303us;184us;17303us;185us;17303us;186us;17303us;188us;17303us;189us;17303us;190us;17303us;191us;17303us;196us;17303us;197us;17303us;198us;17303us;1us;16964us;77us;1044us;35us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;16962us;0us;16963us;1us;32768us;10us;1048us;0us;16965us;30us;16968us;21us;1987us;28us;1054us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;83us;1988us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;104us;1052us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;79us;16967us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;16966us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;16969us;1us;32768us;22us;1055us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;3us;32768us;15us;2050us;16us;2052us;17us;2053us;0us;16970us;82us;16971us;13us;1187us;21us;1094us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1093us;0us;16972us;2us;16972us;19us;2007us;138us;2006us;2us;16972us;19us;2007us;138us;2006us;2us;16972us;30us;2005us;137us;2004us;2us;16972us;19us;2007us;138us;2006us;2us;16972us;19us;2007us;138us;2006us;0us;16972us;1us;16972us;58us;1320us;1us;16972us;59us;1433us;1us;16972us;59us;1454us;1us;16972us;156us;1479us;1us;16972us;64us;1485us;3us;16972us;93us;2049us;94us;2046us;95us;2048us;3us;16972us;93us;2049us;94us;2046us;95us;2048us;3us;16972us;60us;2041us;61us;2043us;196us;2044us;1us;16972us;65us;2045us;0us;16973us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;97us;908us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;1us;32768us;127us;1079us;2us;16976us;31us;1081us;165us;1076us;0us;16974us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;97us;908us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;3us;32768us;10us;1075us;19us;765us;203us;1059us;1us;17540us;21us;1999us;2us;16976us;31us;1081us;165us;1076us;0us;16975us;1us;32768us;127us;1088us;80us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1090us;0us;16977us;0us;16978us;82us;32768us;13us;1187us;21us;1094us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1093us;0us;16979us;0us;16980us;81us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1096us;0us;16981us;0us;16982us;0us;16983us;0us;16984us;0us;16985us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;4us;32768us;10us;1075us;26us;1305us;87us;1303us;203us;1059us;0us;16986us;0us;16987us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;4us;32768us;10us;1075us;26us;1305us;87us;1303us;203us;1059us;0us;16988us;0us;16989us;82us;32768us;10us;1075us;13us;1187us;18us;1112us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;5us;32768us;10us;1075us;26us;1305us;87us;1303us;129us;1114us;203us;1059us;0us;16990us;0us;16991us;2us;16992us;26us;1305us;87us;1303us;0us;16993us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;16994us;81us;32768us;10us;1075us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;30us;32768us;10us;1075us;28us;1332us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;104us;1330us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;203us;1059us;0us;16995us;0us;16996us;0us;16997us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;16998us;68us;17000us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;159us;1164us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;16999us;80us;32768us;13us;1187us;22us;1034us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17001us;69us;17003us;13us;1187us;22us;1034us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;159us;1164us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17002us;81us;32768us;10us;1075us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1064us;0us;17004us;81us;32768us;10us;1075us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1064us;0us;17005us;45us;32768us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;60us;2061us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;94us;2062us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1062us;10us;17540us;10us;1075us;15us;2063us;21us;1999us;30us;2005us;37us;2059us;39us;2060us;60us;2061us;94us;2062us;137us;2004us;203us;1059us;87us;32768us;10us;1075us;13us;1187us;15us;2063us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1060us;9us;32768us;10us;1075us;15us;2063us;19us;2007us;37us;2059us;39us;2060us;60us;2061us;94us;2062us;138us;2006us;203us;1059us;0us;17006us;0us;17007us;0us;17008us;0us;17009us;0us;17010us;1us;32768us;98us;1530us;0us;17011us;4us;32768us;10us;1075us;30us;2005us;137us;2004us;203us;1059us;82us;32768us;10us;1075us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1061us;4us;32768us;10us;1075us;19us;2007us;138us;2006us;203us;1059us;0us;17012us;0us;17013us;0us;17014us;0us;17015us;0us;17016us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;2us;32768us;19us;2007us;138us;2006us;0us;17017us;0us;17018us;0us;17019us;0us;17020us;81us;32768us;10us;1075us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;26us;17021us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;81us;32768us;10us;1075us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;26us;17022us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;0us;17023us;0us;17024us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;97us;908us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;1us;32768us;127us;1167us;1us;17540us;21us;1999us;2us;16976us;31us;1081us;165us;1076us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17025us;37us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;81us;936us;92us;969us;97us;908us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;3us;32768us;10us;1075us;19us;765us;203us;1059us;1us;17540us;21us;1999us;3us;16976us;31us;1081us;165us;1076us;203us;1178us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17026us;0us;17027us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;1us;32768us;127us;1181us;1us;17540us;21us;1999us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17028us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;3us;32768us;10us;1075us;19us;765us;203us;1059us;0us;17029us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;26us;17030us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;81us;32768us;10us;1075us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17031us;26us;17038us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;20us;17041us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;89us;1252us;90us;1254us;96us;1278us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;20us;17043us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;89us;1252us;90us;1254us;96us;1278us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;9us;17045us;62us;1276us;78us;1272us;81us;1229us;96us;1278us;158us;1270us;184us;1274us;186us;1280us;189us;1268us;191us;1282us;20us;17047us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;89us;1252us;90us;1254us;96us;1278us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;18us;17049us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;96us;1278us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;18us;17051us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;96us;1278us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;9us;17053us;62us;1276us;78us;1272us;81us;1229us;96us;1278us;158us;1270us;184us;1274us;186us;1280us;189us;1268us;191us;1282us;9us;17055us;62us;1276us;78us;1272us;81us;1229us;96us;1278us;158us;1270us;184us;1274us;186us;1280us;189us;1268us;191us;1282us;9us;17057us;62us;1276us;78us;1272us;81us;1229us;96us;1278us;158us;1270us;184us;1274us;186us;1280us;189us;1268us;191us;1282us;9us;17059us;62us;1276us;78us;1272us;81us;1229us;96us;1278us;158us;1270us;184us;1274us;186us;1280us;189us;1268us;191us;1282us;9us;17061us;62us;1276us;78us;1272us;81us;1229us;96us;1278us;158us;1270us;184us;1274us;186us;1280us;189us;1268us;191us;1282us;9us;17063us;62us;1276us;78us;1272us;81us;1229us;96us;1278us;158us;1270us;184us;1274us;186us;1280us;189us;1268us;191us;1282us;9us;17065us;62us;1276us;78us;1272us;81us;1229us;96us;1278us;158us;1270us;184us;1274us;186us;1280us;189us;1268us;191us;1282us;1us;17067us;191us;1282us;8us;17069us;62us;1276us;78us;1272us;81us;1229us;96us;1278us;158us;1270us;184us;1274us;186us;1280us;191us;1282us;4us;17071us;96us;1278us;158us;1270us;186us;1280us;191us;1282us;4us;17073us;96us;1278us;158us;1270us;186us;1280us;191us;1282us;1us;17075us;191us;1282us;1us;17077us;191us;1282us;1us;17079us;191us;1282us;23us;17081us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;89us;1252us;90us;1254us;96us;1278us;102us;1250us;128us;1244us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;24us;17083us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;89us;1252us;90us;1254us;96us;1278us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;30us;32768us;10us;1075us;30us;2005us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;137us;2004us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;203us;1059us;26us;17109us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;26us;17113us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;26us;17118us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;30us;32768us;10us;1075us;28us;1332us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;104us;1330us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;203us;1059us;24us;17122us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;89us;1252us;90us;1254us;96us;1278us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;24us;17124us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;89us;1252us;90us;1254us;96us;1278us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;24us;17127us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;89us;1252us;90us;1254us;96us;1278us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;26us;32768us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;24us;17129us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;89us;1252us;90us;1254us;96us;1278us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;29us;32768us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;93us;2049us;94us;2046us;95us;2048us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;26us;17233us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;28us;32768us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;105us;1537us;128us;1244us;139us;1538us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;26us;17236us;62us;1276us;63us;1262us;69us;1258us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;27us;17563us;62us;1276us;63us;1262us;69us;1258us;77us;2016us;78us;1272us;79us;1232us;80us;1235us;81us;1229us;82us;1238us;89us;1252us;90us;1254us;96us;1278us;97us;1345us;102us;1250us;128us;1244us;143us;1284us;145us;1246us;158us;1270us;160us;1264us;161us;1266us;184us;1274us;185us;1256us;186us;1280us;188us;1248us;189us;1268us;190us;1260us;191us;1282us;35us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;17032us;0us;17033us;35us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;17034us;0us;17035us;35us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;17036us;0us;17037us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;1us;17085us;68us;1240us;80us;32768us;13us;1187us;22us;1034us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17039us;1us;17040us;97us;1341us;6us;17040us;10us;1075us;93us;2049us;94us;2046us;95us;2048us;97us;1341us;203us;1059us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17042us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17044us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17046us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17048us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17050us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17052us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17054us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17056us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17058us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17060us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17062us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17064us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17066us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17068us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17070us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17072us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17074us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17076us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17078us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17080us;76us;17082us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;79us;17500us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1287us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;79us;17501us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17084us;0us;17084us;81us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1294us;4us;32768us;10us;1075us;19us;2007us;138us;2006us;203us;1059us;0us;17086us;0us;17087us;2us;32768us;19us;2007us;138us;2006us;0us;17088us;0us;17089us;0us;17090us;0us;17091us;0us;17092us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;17093us;40us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;58us;1311us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1314us;0us;17094us;41us;32768us;10us;1075us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;58us;1311us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1065us;3us;32768us;10us;1075us;20us;1307us;203us;1059us;0us;17095us;0us;17096us;0us;17097us;0us;17098us;39us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1313us;0us;17099us;0us;17100us;0us;17101us;0us;17102us;3us;32768us;10us;1075us;98us;1326us;203us;1066us;3us;17103us;10us;1075us;58us;1318us;203us;1059us;40us;32768us;10us;1075us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1059us;0us;17104us;38us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;0us;17105us;0us;17106us;0us;17107us;0us;17108us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;81us;32768us;10us;1075us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17111us;3us;17117us;27us;1336us;140us;1335us;141us;1338us;0us;17112us;81us;32768us;10us;1075us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17114us;82us;32768us;10us;1075us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17115us;0us;17116us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;80us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17119us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17120us;0us;17121us;87us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;97us;1343us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17123us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17125us;87us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;97us;1347us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17126us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17128us;50us;32768us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;50us;32768us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;50us;17480us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;50us;17480us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17130us;50us;32768us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;50us;17487us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17131us;50us;32768us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;50us;17483us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17132us;50us;32768us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;50us;17486us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17133us;50us;32768us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;50us;17499us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17134us;50us;32768us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;50us;17494us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17135us;50us;32768us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;50us;17495us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17136us;31us;32768us;46us;1922us;56us;1851us;66us;1845us;88us;1842us;91us;1916us;92us;1835us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1383us;31us;32768us;46us;1922us;56us;1851us;66us;1845us;88us;1842us;91us;1916us;92us;1835us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1383us;2us;17573us;35us;2029us;36us;2028us;37us;17277us;14us;17280us;21us;17280us;26us;17280us;35us;2029us;36us;2028us;56us;17573us;71us;17573us;72us;17573us;87us;17280us;92us;17573us;106us;17573us;111us;17280us;122us;17573us;136us;17573us;148us;17573us;155us;17573us;166us;17573us;167us;17573us;168us;17573us;169us;17573us;170us;17573us;171us;17573us;172us;17573us;173us;17573us;174us;17573us;175us;17573us;176us;17573us;177us;17573us;178us;17573us;180us;17573us;181us;17573us;194us;17573us;195us;17573us;199us;17573us;200us;17573us;201us;17573us;202us;17573us;31us;32768us;56us;1622us;71us;1481us;72us;1625us;92us;1487us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1382us;31us;32768us;56us;1622us;71us;1481us;72us;1625us;92us;1487us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1382us;1us;17138us;76us;1380us;6us;17138us;14us;17279us;26us;17279us;76us;1380us;87us;17279us;111us;17279us;132us;534us;7us;17171us;10us;1075us;46us;1441us;70us;1450us;92us;1443us;100us;1932us;193us;1921us;203us;1059us;0us;17137us;0us;17139us;0us;17140us;50us;32768us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17141us;50us;32768us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;119us;1372us;122us;1462us;136us;1467us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17142us;41us;17143us;46us;1427us;56us;1435us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1395us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;44us;17143us;26us;1575us;46us;1427us;56us;1435us;66us;1398us;69us;1562us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;87us;1571us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1395us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;43us;32768us;10us;1075us;46us;1427us;56us;1435us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1395us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;44us;17253us;26us;1575us;46us;1427us;56us;1435us;66us;1398us;69us;1562us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;87us;1571us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1395us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17144us;101us;17145us;14us;17148us;15us;17148us;16us;17148us;17us;17148us;18us;17148us;19us;17148us;20us;17148us;21us;17148us;26us;17148us;27us;17148us;28us;17148us;30us;17148us;33us;17148us;34us;1408us;35us;1407us;36us;1406us;37us;17148us;38us;17148us;39us;17148us;40us;17148us;41us;17148us;43us;17148us;44us;17148us;45us;17148us;47us;17148us;48us;17148us;50us;17148us;51us;17148us;52us;17148us;54us;17148us;58us;17148us;59us;17148us;60us;17148us;61us;17148us;62us;17148us;63us;17148us;64us;17148us;65us;17148us;67us;17148us;68us;17148us;69us;17148us;73us;17148us;74us;1425us;76us;1417us;77us;17148us;78us;17148us;79us;17148us;80us;17148us;81us;17148us;82us;17148us;83us;17148us;84us;17148us;87us;17148us;88us;17148us;89us;17148us;90us;17148us;93us;17148us;94us;17148us;95us;17148us;96us;17148us;97us;17148us;98us;17148us;101us;17148us;102us;17148us;104us;17148us;105us;17148us;108us;17148us;109us;17148us;111us;17148us;119us;17148us;121us;17148us;127us;17148us;128us;17148us;129us;17148us;131us;17148us;132us;17148us;137us;17148us;138us;17148us;139us;17148us;140us;17148us;141us;17148us;142us;17148us;143us;17148us;145us;17148us;150us;17148us;151us;17148us;156us;17148us;158us;17148us;160us;17148us;161us;17148us;162us;17148us;184us;17148us;185us;17148us;186us;17148us;188us;17148us;189us;17148us;190us;17148us;191us;17148us;196us;17148us;197us;17148us;198us;17148us;5us;17145us;34us;1408us;35us;1407us;36us;1406us;74us;1425us;76us;1417us;40us;32768us;46us;1427us;56us;1435us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;5us;17146us;34us;1408us;35us;1407us;36us;1406us;74us;1425us;76us;1417us;5us;17147us;34us;1408us;35us;1407us;36us;1406us;74us;1425us;76us;1417us;1us;32768us;76us;1400us;2us;17254us;69us;1567us;76us;1400us;40us;32768us;46us;1427us;56us;1435us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17149us;2us;17150us;34us;1408us;35us;1407us;1us;17151us;34us;1408us;5us;17153us;34us;1408us;35us;1407us;36us;1406us;74us;1425us;76us;1417us;5us;17428us;34us;1408us;35us;1407us;36us;1406us;74us;1425us;76us;1417us;40us;32768us;46us;1427us;56us;1435us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;40us;32768us;46us;1427us;56us;1435us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;1us;32768us;160us;1876us;0us;17152us;40us;32768us;46us;1427us;56us;1435us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;40us;17477us;46us;1427us;56us;1435us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;1us;32768us;193us;1921us;1us;32768us;193us;1921us;0us;17154us;0us;17154us;0us;17155us;7us;17171us;10us;1075us;46us;1441us;70us;1450us;92us;1443us;100us;1932us;193us;1921us;203us;1059us;0us;17156us;1us;32768us;76us;1420us;7us;17171us;10us;1075us;46us;1441us;70us;1450us;92us;1443us;100us;1932us;193us;1921us;203us;1059us;0us;17157us;3us;32768us;92us;1927us;100us;1932us;193us;1921us;3us;17493us;92us;1927us;100us;1932us;193us;1921us;0us;17158us;2us;32768us;92us;1300us;193us;1299us;0us;17159us;0us;17160us;0us;17161us;81us;17228us;10us;1075us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1067us;3us;32768us;10us;1075us;59us;1431us;203us;1059us;0us;17162us;0us;17163us;0us;17164us;0us;17165us;2us;32768us;72us;1625us;92us;1436us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17166us;0us;17167us;0us;17168us;0us;17169us;0us;17170us;0us;17172us;95us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;58us;1967us;62us;1355us;63us;1947us;66us;1398us;69us;1951us;70us;1429us;71us;1481us;72us;1625us;74us;1423us;78us;1444us;82us;1959us;85us;1129us;86us;1131us;89us;1367us;90us;1370us;91us;1412us;92us;1489us;96us;1289us;98us;1189us;100us;1932us;102us;1952us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1286us;145us;1958us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1475us;158us;1364us;159us;1164us;160us;1953us;161us;1954us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;182us;1960us;183us;1361us;184us;1358us;185us;1944us;186us;1946us;187us;1411us;188us;1943us;189us;1352us;190us;1941us;191us;1940us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1930us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;1us;32768us;76us;1446us;1us;32768us;178us;1447us;0us;17173us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;17174us;81us;32768us;10us;1075us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1068us;3us;32768us;10us;1075us;59us;1452us;203us;1059us;0us;17175us;0us;17176us;0us;17177us;0us;17178us;0us;17179us;0us;17180us;0us;17181us;0us;17182us;0us;17183us;0us;17184us;0us;17185us;0us;17186us;0us;17187us;0us;17188us;0us;17189us;81us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;142us;1473us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1471us;3us;32768us;10us;1075us;142us;1469us;203us;1059us;0us;17190us;0us;17191us;1us;32768us;142us;1472us;0us;17192us;0us;17193us;81us;32768us;10us;1075us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1069us;82us;32768us;10us;1075us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;156us;1965us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1069us;3us;32768us;10us;1075us;156us;1477us;203us;1059us;0us;17194us;0us;17195us;0us;17196us;0us;17197us;81us;17230us;10us;1075us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1070us;3us;32768us;10us;1075us;64us;1483us;203us;1059us;0us;17198us;0us;17199us;0us;17200us;0us;17201us;90us;32768us;10us;1075us;13us;1187us;15us;1499us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;1496us;39us;1497us;41us;767us;46us;1427us;56us;1435us;60us;1498us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;88us;1539us;89us;1366us;90us;1369us;91us;1413us;92us;1488us;93us;2049us;94us;2046us;95us;2048us;96us;1288us;97us;1501us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1350us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1071us;104us;32768us;10us;1075us;13us;1187us;15us;1499us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;1496us;39us;1497us;41us;767us;46us;1427us;56us;1435us;58us;1967us;60us;1498us;62us;1355us;63us;1947us;66us;1398us;69us;1951us;70us;1429us;71us;1481us;72us;1625us;74us;1423us;82us;1959us;85us;1129us;86us;1131us;88us;1539us;89us;1367us;90us;1370us;91us;1413us;92us;1488us;93us;2049us;94us;2046us;95us;2048us;96us;1289us;97us;1501us;98us;1189us;100us;1932us;102us;1952us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1286us;145us;1958us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1475us;158us;1364us;159us;1164us;160us;1953us;161us;1954us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;182us;1960us;183us;1361us;184us;1358us;185us;1944us;186us;1946us;187us;1411us;188us;1943us;189us;1351us;190us;1941us;191us;1940us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1072us;104us;32768us;10us;1075us;13us;1187us;15us;1499us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;1496us;39us;1497us;41us;767us;46us;1427us;56us;1435us;58us;1967us;60us;1498us;62us;1355us;63us;1947us;66us;1398us;69us;1951us;70us;1429us;71us;1481us;72us;1625us;74us;1423us;82us;1959us;85us;1129us;86us;1131us;88us;1539us;89us;1367us;90us;1370us;91us;1413us;92us;1488us;93us;2049us;94us;2046us;95us;2048us;96us;1289us;97us;1501us;98us;1189us;100us;1932us;102us;1952us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1286us;145us;1958us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1475us;158us;1364us;159us;1164us;160us;1953us;161us;1954us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;182us;1960us;183us;1361us;184us;1358us;185us;1944us;186us;1946us;187us;1411us;188us;1943us;189us;1351us;190us;1941us;191us;1940us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1072us;0us;17202us;9us;32768us;10us;1075us;15us;2057us;37us;2054us;39us;2055us;60us;2056us;93us;2049us;94us;2046us;95us;2048us;203us;1059us;0us;17203us;0us;17204us;0us;17205us;0us;17205us;0us;17206us;0us;17207us;0us;17208us;0us;17209us;0us;17210us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17211us;1us;32768us;77us;1504us;1us;32768us;92us;1505us;1us;16553us;73us;317us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17212us;0us;17213us;0us;17214us;0us;17215us;4us;17215us;93us;17218us;94us;17218us;95us;17218us;102us;17218us;4us;32768us;93us;2049us;94us;2046us;95us;2048us;102us;1515us;0us;17216us;31us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;6us;17217us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;189us;1918us;193us;1921us;85us;32768us;10us;1075us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;54us;1555us;56us;1435us;60us;2041us;61us;2043us;62us;1354us;66us;1399us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1373us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;196us;2044us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1073us;5us;32768us;10us;1075us;60us;2041us;61us;2043us;196us;2044us;203us;1059us;0us;17219us;0us;17220us;0us;17221us;0us;17222us;0us;17223us;0us;17224us;0us;17225us;0us;17226us;0us;17227us;0us;17229us;0us;17231us;81us;32768us;10us;1075us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17232us;86us;32768us;10us;1075us;13us;1187us;15us;2063us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17234us;0us;17235us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;79us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17237us;0us;17238us;1us;32768us;201us;2014us;3us;17244us;37us;2031us;38us;2034us;108us;2035us;0us;17241us;42us;17246us;46us;1427us;56us;1435us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;77us;1551us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1395us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;1us;32768us;88us;1544us;0us;17239us;0us;17240us;0us;17243us;1us;32768us;92us;1548us;33us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;17245us;33us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1553us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;17247us;37us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;93us;2049us;94us;2046us;95us;2048us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1865us;0us;17248us;30us;32768us;46us;1922us;56us;1851us;66us;1845us;88us;1842us;91us;1916us;92us;1835us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;2us;17573us;35us;2029us;36us;2028us;30us;17242us;56us;1622us;71us;1481us;72us;1625us;92us;1487us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17269us;2us;17261us;21us;1584us;83us;1585us;0us;17249us;0us;17250us;82us;32768us;10us;1075us;13us;1187us;22us;1034us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17269us;2us;17261us;21us;1584us;83us;1585us;0us;17251us;0us;17252us;80us;17255us;13us;1187us;22us;1034us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17269us;2us;17261us;21us;1584us;83us;1585us;0us;17256us;3us;32768us;46us;1922us;66us;1589us;193us;1921us;0us;17269us;2us;17261us;21us;1584us;83us;1585us;0us;17257us;5us;17261us;21us;1584us;46us;1922us;66us;1589us;83us;1585us;193us;1921us;1us;32768us;20us;1577us;0us;17258us;0us;17269us;2us;17261us;21us;1584us;83us;1585us;1us;32768us;20us;1581us;0us;17259us;0us;17260us;3us;17260us;46us;1922us;66us;1589us;193us;1921us;1us;17262us;83us;1587us;1us;17263us;21us;1586us;0us;17264us;0us;17265us;1us;17266us;76us;1924us;0us;17267us;0us;17268us;8us;17273us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;60us;2061us;69us;1592us;94us;2062us;203us;1059us;87us;17271us;10us;1075us;13us;1187us;15us;2063us;22us;1034us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;37us;2059us;39us;2060us;41us;767us;46us;1427us;56us;1435us;60us;2061us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;94us;2062us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;0us;17270us;0us;17272us;0us;17274us;3us;17540us;21us;1999us;26us;1606us;87us;1604us;1us;17540us;21us;1999us;3us;17287us;14us;593us;111us;592us;203us;1615us;0us;17275us;2us;32768us;14us;593us;111us;592us;0us;17276us;0us;17278us;0us;17281us;3us;16553us;22us;537us;73us;317us;203us;802us;0us;17283us;2us;16553us;73us;317us;203us;802us;1us;32768us;20us;1608us;0us;17284us;3us;17532us;19us;1994us;20us;1995us;142us;1996us;0us;17285us;3us;17287us;14us;593us;111us;592us;203us;1615us;0us;17286us;3us;17287us;14us;593us;111us;592us;203us;1615us;0us;17288us;3us;17287us;14us;593us;111us;592us;203us;1615us;0us;17289us;31us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;8us;17282us;26us;1606us;36us;1746us;46us;1922us;70us;1760us;87us;1604us;91us;1916us;189us;1918us;193us;1921us;3us;17532us;19us;1994us;20us;1995us;142us;1996us;1us;17540us;21us;1999us;0us;17290us;1us;32768us;72us;1625us;0us;17291us;0us;17292us;43us;32768us;10us;1075us;46us;1427us;56us;1435us;65us;2045us;66us;1399us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1074us;3us;32768us;10us;1075us;65us;2045us;203us;1059us;0us;17293us;0us;17294us;0us;17295us;0us;17296us;0us;17297us;35us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;92us;969us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;1us;32768us;98us;1634us;81us;32768us;13us;1187us;22us;1028us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1636us;0us;17298us;0us;17299us;36us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;66us;500us;70us;955us;71us;958us;74us;961us;92us;969us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1647us;2us;32768us;98us;1639us;203us;1645us;82us;32768us;10us;1075us;13us;1187us;18us;1643us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;203us;1059us;3us;32768us;10us;1075us;20us;1641us;203us;1059us;0us;17300us;0us;17301us;1us;32768us;20us;1644us;0us;17302us;1us;32768us;20us;1646us;0us;17304us;1us;32768us;20us;1648us;0us;17305us;40us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;58us;1311us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1314us;0us;17306us;40us;32768us;43us;514us;44us;513us;45us;515us;46us;503us;56us;976us;58us;1311us;66us;500us;70us;955us;71us;958us;73us;317us;74us;961us;81us;936us;92us;969us;97us;1013us;100us;1932us;106us;967us;122us;966us;148us;968us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;193us;1921us;194us;2015us;195us;950us;201us;2014us;202us;847us;203us;1314us;1us;32768us;20us;1653us;0us;17307us;1us;17308us;84us;1655us;32us;32768us;46us;1922us;52us;637us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;652us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;1us;17310us;84us;1657us;32us;32768us;46us;1922us;52us;637us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;652us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;36us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;73us;317us;74us;1691us;88us;1842us;91us;1916us;92us;1749us;96us;1669us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;17313us;0us;17314us;1us;17317us;98us;1662us;36us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;73us;317us;74us;1691us;88us;1842us;91us;1916us;92us;1749us;96us;1669us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;17315us;0us;17316us;1us;17321us;96us;1666us;36us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;73us;317us;74us;1691us;88us;1842us;91us;1916us;92us;1749us;96us;1675us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;17318us;0us;17319us;34us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;73us;317us;74us;1691us;88us;1842us;91us;1916us;92us;1749us;96us;1675us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;17320us;1us;17325us;96us;1672us;36us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;73us;317us;74us;1691us;88us;1842us;91us;1916us;92us;1749us;96us;1675us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;17322us;0us;17323us;34us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;73us;317us;74us;1691us;88us;1842us;91us;1916us;92us;1749us;96us;1675us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;17324us;32us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;74us;1682us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;7us;17330us;36us;1746us;46us;1922us;70us;1760us;77us;1679us;91us;1916us;189us;1918us;193us;1921us;33us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;6us;17326us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;189us;1918us;193us;1921us;0us;17327us;1us;32768us;193us;1921us;1us;32768us;77us;1684us;33us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;6us;17328us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;189us;1918us;193us;1921us;0us;17329us;7us;17335us;36us;1746us;46us;1922us;70us;1760us;77us;1688us;91us;1916us;189us;1918us;193us;1921us;33us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;6us;17331us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;189us;1918us;193us;1921us;0us;17332us;1us;32768us;193us;1921us;1us;32768us;77us;1693us;33us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;6us;17333us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;189us;1918us;193us;1921us;0us;17334us;7us;17339us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;98us;1698us;189us;1918us;193us;1921us;7us;32768us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;98us;1698us;189us;1918us;193us;1921us;34us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;98us;1701us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;17336us;0us;17337us;31us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;17338us;1us;17343us;98us;1704us;36us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;98us;1707us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;17340us;0us;17341us;33us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;17342us;1us;32768us;10us;1710us;0us;17344us;8us;17352us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;96us;1712us;186us;1720us;189us;1918us;193us;1921us;35us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1727us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1732us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;17345us;0us;17346us;33us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1727us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1732us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;17347us;35us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1727us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1732us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;17348us;0us;17349us;35us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1727us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1732us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;17350us;0us;17351us;8us;17359us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;96us;1724us;186us;1729us;189us;1918us;193us;1921us;35us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1727us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1732us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;17353us;0us;17354us;33us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1727us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1732us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;17355us;35us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1727us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1732us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;17356us;0us;17357us;33us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1727us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1732us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;17358us;2us;17363us;79us;1755us;89us;1735us;30us;32768us;46us;1922us;56us;1851us;66us;1845us;88us;1842us;91us;1916us;92us;1846us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;2us;17414us;76us;1868us;89us;1737us;30us;32768us;46us;1922us;56us;1851us;66us;1845us;88us;1842us;91us;1916us;92us;1846us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;1us;17362us;76us;1924us;0us;17363us;1us;17365us;189us;1742us;4us;17365us;34us;1874us;76us;1871us;160us;1876us;189us;1742us;3us;32768us;62us;860us;92us;856us;178us;855us;0us;17364us;9us;32768us;10us;1075us;36us;1746us;46us;1922us;70us;1760us;91us;1916us;96us;1853us;189us;1918us;193us;1921us;203us;1059us;0us;17366us;1us;32768us;70us;1760us;0us;17367us;0us;17368us;34us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1865us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;4us;32768us;46us;1922us;91us;1916us;189us;1918us;193us;1921us;0us;17369us;0us;17370us;0us;17371us;33us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;17372us;1us;17418us;79us;1758us;33us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;17373us;2us;32768us;59us;1761us;97us;1762us;0us;17374us;2us;32768us;59us;1763us;97us;1764us;0us;17375us;2us;32768us;59us;1765us;97us;1766us;0us;17376us;2us;32768us;59us;1767us;97us;1768us;0us;17377us;2us;32768us;59us;1769us;97us;1770us;0us;17378us;2us;32768us;59us;1771us;97us;1772us;0us;17379us;2us;32768us;59us;1773us;97us;1774us;0us;17380us;2us;32768us;59us;1775us;97us;1776us;0us;17381us;2us;32768us;59us;1777us;97us;1778us;0us;17382us;2us;32768us;59us;1779us;97us;1780us;0us;17383us;2us;32768us;59us;1781us;97us;1782us;0us;17384us;2us;32768us;59us;1783us;97us;1784us;0us;17385us;2us;32768us;59us;1785us;97us;1786us;0us;17386us;2us;32768us;59us;1787us;97us;1788us;0us;17387us;2us;32768us;59us;1789us;97us;1790us;0us;17388us;2us;32768us;59us;1791us;97us;1792us;0us;17389us;2us;32768us;59us;1793us;97us;1794us;0us;17390us;2us;32768us;59us;1795us;97us;1796us;0us;17391us;2us;32768us;59us;1797us;97us;1798us;0us;17392us;2us;32768us;59us;1799us;97us;1800us;0us;17393us;2us;32768us;59us;1801us;97us;1802us;0us;17394us;2us;32768us;59us;1803us;97us;1804us;0us;17395us;2us;32768us;59us;1805us;97us;1806us;0us;17396us;2us;32768us;59us;1807us;97us;1808us;0us;17397us;2us;32768us;59us;1809us;97us;1810us;0us;17398us;2us;32768us;59us;1811us;97us;1812us;0us;17399us;2us;32768us;59us;1813us;97us;1814us;0us;17400us;2us;32768us;59us;1815us;97us;1816us;0us;17401us;2us;32768us;59us;1817us;97us;1818us;0us;17402us;2us;32768us;59us;1819us;97us;1820us;0us;17403us;2us;32768us;59us;1821us;97us;1822us;0us;17404us;1us;32768us;59us;1823us;0us;17405us;1us;32768us;97us;1825us;33us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;17409us;1us;17406us;97us;1829us;4us;32768us;10us;1075us;97us;1829us;161us;1880us;203us;1059us;33us;17450us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;17407us;0us;17408us;1us;17410us;189us;1833us;3us;32768us;62us;860us;92us;856us;178us;855us;0us;17411us;34us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1865us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;4us;32768us;46us;1922us;91us;1916us;189us;1918us;193us;1921us;0us;17412us;1us;17413us;76us;1868us;1us;17414us;76us;1868us;0us;17415us;30us;32768us;46us;1922us;56us;1851us;66us;1845us;88us;1842us;91us;1916us;92us;1846us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;1us;17416us;76us;1868us;0us;17417us;0us;17418us;34us;32768us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1865us;5us;32768us;10us;1075us;93us;2049us;94us;2046us;95us;2048us;203us;1059us;6us;17445us;10us;1075us;69us;1889us;93us;2049us;94us;2046us;95us;2048us;203us;1059us;0us;17419us;0us;17420us;1us;32768us;92us;1852us;33us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;35us;32768us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1727us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1732us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;5us;32768us;10us;1075us;93us;2049us;94us;2046us;95us;2048us;203us;1059us;0us;17421us;0us;17422us;0us;17423us;0us;17424us;0us;17425us;0us;17426us;0us;17427us;40us;32768us;46us;1427us;56us;1435us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;91us;1412us;92us;1489us;100us;1932us;106us;1463us;122us;1462us;136us;1467us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;187us;1410us;193us;1921us;194us;2015us;195us;1517us;199us;2023us;200us;2026us;201us;2014us;202us;847us;0us;17429us;0us;17430us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;17431us;0us;17432us;2us;32768us;46us;1922us;193us;1921us;3us;17433us;34us;1874us;76us;1924us;160us;1876us;0us;17434us;7us;32768us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;60us;2061us;94us;2062us;203us;1059us;0us;17435us;0us;17436us;1us;32768us;160us;1876us;0us;17437us;36us;17450us;10us;1075us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;161us;1886us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;1us;32768us;97us;1878us;40us;17450us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;46us;1922us;56us;580us;60us;2061us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;94us;2062us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;203us;1059us;0us;17409us;0us;17438us;0us;17439us;0us;17440us;8us;17448us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;60us;2061us;94us;2062us;161us;1884us;203us;1059us;0us;17441us;0us;17442us;0us;17443us;0us;17444us;1us;17445us;69us;1889us;33us;17447us;46us;1922us;56us;580us;66us;1757us;72us;583us;88us;1842us;91us;1916us;92us;1749us;96us;1715us;106us;1864us;113us;1862us;122us;1863us;148us;1861us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;186us;1717us;189us;1918us;193us;1921us;194us;2015us;201us;2014us;202us;847us;0us;17446us;0us;17448us;0us;17449us;8us;32768us;46us;1922us;66us;1896us;91us;1916us;92us;1900us;178us;1906us;186us;1915us;189us;1918us;193us;1921us;3us;32768us;96us;1913us;161us;1895us;186us;1914us;0us;17451us;1us;32768us;161us;1897us;0us;17452us;1us;17453us;76us;1924us;0us;17454us;7us;32768us;46us;1922us;91us;1916us;92us;1900us;178us;1906us;186us;1915us;189us;1918us;193us;1921us;5us;32768us;93us;2049us;94us;2046us;95us;2048us;96us;1913us;186us;1914us;0us;17455us;1us;17456us;189us;1904us;3us;32768us;62us;860us;92us;856us;178us;855us;0us;17457us;0us;17458us;6us;17459us;46us;1922us;91us;1916us;92us;1900us;178us;1906us;189us;1918us;193us;1921us;0us;17460us;0us;17461us;0us;17462us;0us;17463us;0us;17464us;7us;32768us;46us;1922us;91us;1916us;92us;1900us;178us;1906us;186us;1915us;189us;1918us;193us;1921us;7us;32768us;46us;1922us;91us;1916us;92us;1900us;178us;1906us;186us;1915us;189us;1918us;193us;1921us;7us;32768us;46us;1922us;91us;1916us;92us;1900us;178us;1906us;186us;1915us;189us;1918us;193us;1921us;1us;32768us;193us;1921us;0us;17465us;1us;32768us;193us;1921us;0us;17466us;81us;17466us;10us;17513us;15us;17513us;21us;17513us;28us;17513us;34us;17513us;35us;17513us;36us;17513us;37us;17513us;39us;17513us;46us;17513us;56us;17513us;60us;17513us;62us;17513us;63us;17513us;66us;17513us;68us;17513us;69us;17513us;70us;17513us;71us;17513us;72us;17513us;74us;17513us;76us;17513us;78us;17513us;79us;17513us;80us;17513us;81us;17513us;82us;17513us;83us;17513us;89us;17513us;90us;17513us;91us;17513us;92us;17513us;96us;17513us;97us;17513us;100us;17513us;104us;17513us;106us;17513us;122us;17513us;128us;17513us;136us;17513us;143us;17513us;145us;17513us;148us;17513us;149us;17513us;154us;17513us;155us;17513us;158us;17513us;160us;17513us;161us;17513us;166us;17513us;167us;17513us;168us;17513us;169us;17513us;170us;17513us;171us;17513us;172us;17513us;173us;17513us;174us;17513us;175us;17513us;176us;17513us;177us;17513us;178us;17513us;180us;17513us;181us;17513us;183us;17513us;184us;17513us;185us;17513us;186us;17513us;187us;17513us;188us;17513us;189us;17513us;190us;17513us;191us;17513us;193us;17513us;194us;17513us;195us;17513us;199us;17513us;200us;17513us;201us;17513us;202us;17513us;203us;17513us;0us;17467us;0us;17468us;0us;17469us;8us;32768us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;60us;2061us;94us;2062us;193us;1921us;203us;1059us;0us;17470us;0us;17471us;27us;32768us;58us;1967us;62us;1949us;63us;1947us;69us;1951us;74us;1955us;82us;1959us;89us;1956us;90us;1957us;96us;1950us;102us;1952us;143us;1962us;145us;1958us;155us;1964us;158us;1961us;160us;1953us;161us;1954us;182us;1960us;183us;1948us;184us;1945us;185us;1944us;186us;1946us;187us;1939us;188us;1943us;189us;1942us;190us;1941us;191us;1940us;203us;1930us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;17472us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;17473us;0us;17474us;1us;32768us;58us;1934us;5us;32768us;66us;1936us;93us;2049us;94us;2046us;95us;2048us;193us;1966us;0us;17475us;1us;32768us;58us;1937us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;17476us;0us;17477us;0us;17478us;0us;17479us;0us;17480us;0us;17481us;0us;17482us;0us;17483us;0us;17484us;0us;17485us;0us;17486us;0us;17487us;0us;17488us;0us;17489us;0us;17490us;0us;17491us;0us;17492us;0us;17493us;0us;17494us;0us;17495us;0us;17496us;0us;17497us;0us;17498us;0us;17499us;1us;17500us;143us;1963us;0us;17501us;1us;32768us;156us;1965us;0us;17502us;0us;17503us;1us;32768us;193us;1966us;0us;17504us;0us;17505us;0us;17506us;0us;17507us;1us;17508us;76us;1974us;0us;17509us;10us;32768us;10us;1075us;15us;2063us;37us;2059us;39us;2060us;60us;2061us;92us;1927us;94us;2062us;100us;1932us;193us;1921us;203us;1059us;0us;17510us;0us;17511us;0us;17512us;0us;17513us;0us;17514us;0us;17515us;0us;17516us;0us;17517us;3us;17518us;21us;1982us;67us;1981us;83us;1980us;0us;17519us;3us;17521us;21us;1982us;67us;1981us;83us;1980us;0us;17520us;1us;17522us;83us;1989us;1us;17523us;21us;1990us;0us;17524us;0us;17525us;0us;17526us;0us;17527us;0us;17528us;0us;17529us;0us;17530us;0us;17531us;0us;17533us;0us;17535us;0us;17539us;0us;17541us;0us;17543us;0us;17547us;0us;17549us;0us;17551us;0us;17552us;0us;17553us;0us;17554us;0us;17555us;0us;17556us;0us;17557us;0us;17558us;0us;17559us;0us;17560us;0us;17561us;0us;17562us;1us;32768us;193us;1921us;0us;17564us;0us;17565us;81us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;197us;2018us;198us;2019us;199us;2023us;200us;2026us;201us;2014us;202us;847us;2us;32768us;197us;2018us;198us;2019us;0us;17566us;0us;17567us;81us;32768us;13us;1187us;24us;1637us;25us;1651us;29us;1184us;30us;757us;32us;1171us;33us;753us;41us;767us;46us;1427us;56us;1435us;62us;1354us;66us;1398us;70us;1429us;71us;1481us;72us;1625us;74us;1422us;85us;1129us;86us;1131us;89us;1366us;90us;1369us;91us;1412us;92us;1489us;96us;1288us;98us;1189us;100us;1932us;106us;1463us;107us;1108us;114us;1121us;115us;1125us;116us;1100us;117us;1104us;119us;1372us;122us;1462us;123us;1133us;124us;1632us;125us;1649us;126us;1116us;130us;1179us;133us;1123us;134us;1127us;136us;1467us;143us;1285us;146us;1384us;147us;1386us;148us;1461us;149us;1416us;154us;1419us;155us;1474us;158us;1363us;159us;1164us;162us;747us;163us;1158us;164us;1160us;166us;844us;167us;843us;168us;842us;169us;841us;170us;840us;171us;839us;172us;837us;173us;835us;174us;833us;175us;831us;176us;838us;177us;836us;178us;834us;180us;832us;181us;830us;183us;1360us;184us;1357us;187us;1410us;189us;1349us;193us;1921us;194us;2015us;195us;1517us;197us;2018us;198us;2019us;199us;2023us;200us;2026us;201us;2014us;202us;847us;2us;32768us;197us;2018us;198us;2019us;0us;17568us;0us;17569us;0us;17570us;0us;17571us;0us;17572us;0us;17574us;3us;32768us;37us;2031us;38us;2034us;108us;2035us;3us;17597us;37us;2031us;38us;2034us;108us;2035us;0us;17576us;0us;17577us;0us;17578us;3us;32768us;39us;2036us;40us;2039us;150us;2040us;3us;17598us;39us;2036us;40us;2039us;150us;2040us;0us;17579us;0us;17580us;0us;17581us;3us;32768us;60us;2041us;61us;2043us;196us;2044us;0us;17582us;0us;17583us;0us;17584us;0us;17585us;3us;32768us;93us;2049us;94us;2046us;95us;2048us;0us;17586us;0us;17587us;0us;17588us;3us;32768us;15us;2050us;16us;2052us;17us;2053us;0us;17589us;0us;17590us;0us;17591us;0us;17592us;0us;17593us;0us;17594us;0us;17595us;0us;17596us;0us;17597us;0us;17598us;0us;17599us;0us;17600us;0us;17601us;0us;17602us;|] +let _fsyacc_actionTableRowOffsets = [|0us;17us;18us;114us;115us;123us;124us;204us;205us;239us;240us;241us;242us;243us;244us;245us;246us;251us;252us;257us;258us;263us;264us;270us;271us;277us;278us;284us;285us;302us;303us;307us;395us;422us;423us;426us;427us;428us;429us;431us;432us;435us;436us;437us;438us;441us;442us;444us;445us;450us;451us;453us;457us;459us;465us;467us;468us;469us;471us;476us;478us;479us;481us;482us;484us;485us;487us;504us;505us;509us;518us;537us;538us;539us;540us;556us;562us;564us;565us;566us;573us;574us;575us;579us;597us;601us;617us;618us;622us;627us;628us;629us;630us;634us;643us;647us;653us;654us;655us;656us;658us;660us;661us;662us;663us;665us;667us;669us;673us;677us;680us;682us;717us;719us;720us;801us;828us;908us;938us;940us;941us;950us;954us;955us;971us;973us;977us;978us;994us;996us;997us;999us;1001us;1002us;1005us;1013us;1014us;1015us;1070us;1072us;1087us;1089us;1093us;1095us;1096us;1098us;1099us;1100us;1101us;1103us;1138us;1139us;1140us;1157us;1161us;1162us;1163us;1165us;1166us;1181us;1187us;1188us;1189us;1205us;1209us;1210us;1211us;1226us;1232us;1233us;1234us;1235us;1236us;1239us;1254us;1255us;1259us;1263us;1274us;1321us;1323us;1327us;1331us;1334us;1336us;1371us;1374us;1376us;1377us;1409us;1416us;1450us;1457us;1458us;1460us;1461us;1468us;1470us;1471us;1473us;1474us;1476us;1511us;1512us;1517us;1518us;1523us;1526us;1527us;1528us;1530us;1536us;1537us;1538us;1542us;1544us;1545us;1546us;1547us;1549us;1550us;1566us;1570us;1571us;1574us;1575us;1577us;1578us;1583us;1584us;1586us;1587us;1589us;1590us;1592us;1688us;1689us;1694us;1782us;1879us;1880us;1881us;1976us;1982us;1984us;1985us;1986us;1993us;1994us;1995us;1996us;2001us;2089us;2119us;2214us;2215us;2216us;2217us;2239us;2240us;2335us;2336us;2340us;2344us;2351us;2356us;2361us;2362us;2363us;2364us;2368us;2380us;2381us;2383us;2384us;2465us;2466us;2468us;2470us;2471us;2472us;2475us;2481us;2482us;2483us;2486us;2487us;2488us;2496us;2498us;2499us;2533us;2540us;2541us;2546us;2547us;2549us;2556us;2562us;2563us;2564us;2570us;2571us;2572us;2573us;2574us;2576us;2671us;2675us;2676us;2677us;2678us;2685us;2689us;2690us;2691us;2693us;2694us;2709us;2712us;2721us;2723us;2724us;2726us;2728us;2729us;2730us;2731us;2732us;2742us;2743us;2747us;2778us;2779us;2783us;2787us;2818us;2819us;2822us;2827us;2830us;2861us;2862us;2864us;2865us;2867us;2868us;2870us;2871us;2873us;2874us;2886us;2887us;2888us;2889us;2890us;2894us;2896us;2897us;2899us;2901us;2902us;2942us;2943us;2947us;2950us;2952us;2954us;2958us;2965us;2966us;2967us;2977us;2979us;2987us;2989us;2995us;2997us;2998us;2999us;3000us;3002us;3003us;3004us;3005us;3007us;3042us;3043us;3044us;3055us;3064us;3065us;3066us;3076us;3077us;3079us;3085us;3086us;3087us;3094us;3100us;3101us;3102us;3103us;3104us;3119us;3120us;3123us;3138us;3139us;3141us;3142us;3144us;3147us;3148us;3149us;3151us;3153us;3154us;3156us;3194us;3196us;3198us;3279us;3280us;3318us;3320us;3327us;3408us;3409us;3410us;3411us;3412us;3414us;3415us;3417us;3418us;3422us;3426us;3442us;3494us;3495us;3496us;3501us;3503us;3504us;3505us;3539us;3547us;3548us;3549us;3551us;3555us;3558us;3560us;3595us;3598us;3600us;3601us;3602us;3604us;3605us;3607us;3608us;3610us;3611us;3649us;3651us;3661us;3742us;3744us;3745us;3746us;3747us;3749us;3750us;3752us;3753us;3755us;3759us;3763us;3767us;3803us;3804us;3805us;3806us;3807us;3809us;3813us;3817us;3819us;3829us;3910us;3913us;3914us;3915us;3916us;3917us;3953us;3954us;3955us;3957us;3961us;3962us;3964us;3968us;3969us;3970us;3975us;3977us;3981us;3982us;3983us;3984us;3985us;3986us;3987us;4019us;4023us;4024us;4031us;4035us;4036us;4074us;4108us;4109us;4140us;4142us;4143us;4144us;4145us;4149us;4150us;4151us;4152us;4155us;4156us;4157us;4159us;4165us;4166us;4167us;4168us;4171us;4186us;4187us;4192us;4198us;4202us;4204us;4205us;4207us;4208us;4209us;4211us;4213us;4214us;4216us;4217us;4218us;4219us;4223us;4260us;4263us;4265us;4268us;4269us;4270us;4271us;4272us;4307us;4338us;4340us;4344us;4345us;4348us;4354us;4355us;4356us;4360us;4361us;4364us;4365us;4366us;4369us;4373us;4374us;4375us;4377us;4378us;4379us;4380us;4381us;4382us;4383us;4391us;4395us;4398us;4400us;4401us;4402us;4403us;4405us;4410us;4411us;4414us;4416us;4418us;4421us;4422us;4423us;4426us;4428us;4459us;4461us;4463us;4465us;4467us;4468us;4469us;4471us;4475us;4477us;4479us;4480us;4481us;4514us;4516us;4518us;4520us;4553us;4554us;4555us;4557us;4559us;4590us;4592us;4594us;4597us;4599us;4633us;4634us;4638us;4672us;4677us;4683us;4684us;4688us;4689us;4690us;4692us;4696us;4697us;4732us;4737us;4739us;4741us;4743us;4747us;4748us;4751us;4752us;4753us;4760us;4792us;4799us;4813us;4815us;4816us;4818us;4820us;4821us;4824us;4825us;4827us;4829us;4830us;4834us;4841us;4877us;4878us;4913us;4914us;4915us;4950us;4951us;4952us;4953us;4988us;4989us;5030us;5036us;5037us;5067us;5071us;5072us;5074us;5078us;5079us;5084us;5085us;5126us;5133us;5180us;5181us;5216us;5217us;5218us;5251us;5252us;5254us;5286us;5287us;5289us;5321us;5329us;5337us;5338us;5339us;5340us;5341us;5344us;5352us;5353us;5354us;5356us;5357us;5361us;5363us;5367us;5403us;5404us;5405us;5406us;5408us;5409us;5411us;5415us;5419us;5421us;5422us;5423us;5425us;5460us;5461us;5462us;5465us;5467us;5469us;5472us;5473us;5474us;5555us;5556us;5558us;5561us;5565us;5566us;5648us;5652us;5653us;5654us;5655us;5656us;5657us;5658us;5659us;5660us;5662us;5666us;5668us;5671us;5673us;5678us;5682us;5683us;5685us;5687us;5689us;5690us;5692us;5693us;5697us;5704us;5705us;5707us;5713us;5715us;5717us;5718us;5719us;5720us;5722us;5724us;5725us;5729us;5731us;5732us;5735us;5737us;5738us;5740us;5741us;5742us;5744us;5782us;5784us;5788us;5870us;5871us;5872us;5873us;5953us;5959us;5960us;5961us;5962us;5963us;5965us;5966us;5969us;5972us;6053us;6054us;6057us;6058us;6059us;6062us;6096us;6097us;6098us;6099us;6100us;6101us;6102us;6103us;6104us;6105us;6106us;6107us;6108us;6109us;6110us;6111us;6112us;6113us;6114us;6115us;6116us;6118us;6120us;6121us;6123us;6125us;6127us;6128us;6129us;6132us;6136us;6137us;6138us;6141us;6142us;6144us;6146us;6147us;6153us;6154us;6156us;6157us;6159us;6162us;6198us;6199us;6200us;6204us;6208us;6209us;6210us;6219us;6225us;6226us;6227us;6228us;6232us;6233us;6234us;6238us;6240us;6243us;6246us;6249us;6251us;6253us;6260us;6267us;6274us;6281us;6318us;6319us;6357us;6395us;6397us;6398us;6399us;6444us;6489us;6490us;6491us;6536us;6537us;6575us;6613us;6616us;6617us;6621us;6622us;6624us;6625us;6629us;6634us;6675us;6682us;6683us;6684us;6724us;6762us;6763us;6799us;6800us;6836us;6837us;6838us;6874us;6875us;6911us;6912us;6944us;6945us;6946us;7011us;7015us;7016us;7017us;7055us;7056us;7092us;7093us;7129us;7130us;7131us;7135us;7139us;7140us;7144us;7145us;7184us;7186us;7187us;7226us;7228us;7229us;7231us;7233us;7234us;7235us;7236us;7237us;7238us;7239us;7304us;7310us;7311us;7312us;7316us;7319us;7320us;7322us;7363us;7370us;7371us;7372us;7376us;7377us;7378us;7385us;7390us;7394us;7397us;7401us;7405us;7409us;7412us;7419us;7422us;7429us;7438us;7454us;7462us;7499us;7500us;7539us;7541us;7543us;7579us;7580us;7581us;7620us;7659us;7660us;7706us;7752us;7753us;7754us;7800us;7801us;7840us;7879us;7882us;7883us;7886us;7887us;7892us;7933us;7934us;7935us;7936us;7975us;7976us;8059us;8065us;8066us;8067us;8068us;8069us;8152us;8156us;8157us;8158us;8185us;8187us;8188us;8189us;8283us;8285us;8321us;8322us;8323us;8325us;8326us;8357us;8437us;8438us;8518us;8519us;8521us;8601us;8605us;8606us;8689us;8690us;8693us;8696us;8699us;8702us;8705us;8706us;8708us;8710us;8712us;8714us;8716us;8720us;8724us;8728us;8730us;8731us;8769us;8850us;8852us;8855us;8856us;8894us;8975us;8979us;8981us;8984us;8985us;8987us;9068us;9069us;9070us;9153us;9154us;9155us;9237us;9238us;9239us;9240us;9241us;9242us;9322us;9327us;9328us;9329us;9409us;9414us;9415us;9416us;9499us;9505us;9506us;9507us;9510us;9511us;9592us;9593us;9675us;9706us;9707us;9708us;9709us;9789us;9790us;9859us;9860us;9941us;9942us;10012us;10013us;10095us;10096us;10178us;10179us;10225us;10236us;10324us;10334us;10335us;10336us;10337us;10338us;10339us;10341us;10342us;10347us;10430us;10435us;10436us;10437us;10438us;10439us;10440us;10521us;10524us;10525us;10526us;10527us;10528us;10610us;10637us;10719us;10746us;10747us;10748us;10786us;10867us;10869us;10871us;10874us;10955us;10956us;10994us;11075us;11079us;11081us;11085us;11166us;11167us;11168us;11248us;11250us;11252us;11333us;11334us;11415us;11419us;11420us;11500us;11527us;11609us;11610us;11637us;11658us;11679us;11689us;11710us;11729us;11748us;11758us;11768us;11778us;11788us;11798us;11808us;11818us;11820us;11829us;11834us;11839us;11841us;11843us;11845us;11869us;11894us;11925us;11952us;11979us;12006us;12037us;12062us;12087us;12112us;12139us;12164us;12194us;12221us;12250us;12277us;12305us;12341us;12342us;12343us;12379us;12380us;12381us;12417us;12418us;12419us;12499us;12501us;12582us;12583us;12585us;12592us;12679us;12680us;12767us;12768us;12855us;12856us;12943us;12944us;13031us;13032us;13119us;13120us;13207us;13208us;13295us;13296us;13383us;13384us;13471us;13472us;13559us;13560us;13647us;13648us;13735us;13736us;13823us;13824us;13911us;13912us;13999us;14000us;14087us;14088us;14175us;14176us;14263us;14264us;14351us;14352us;14429us;14509us;14589us;14669us;14670us;14671us;14753us;14758us;14759us;14760us;14763us;14764us;14765us;14766us;14767us;14768us;14848us;14852us;14853us;14894us;14895us;14937us;14941us;14942us;14943us;14944us;14945us;14985us;14986us;14987us;14988us;14989us;14993us;14997us;15038us;15039us;15078us;15079us;15080us;15081us;15082us;15162us;15244us;15245us;15249us;15250us;15332us;15333us;15416us;15417us;15418us;15498us;15579us;15580us;15660us;15661us;15662us;15750us;15751us;15838us;15839us;15927us;15928us;16015us;16016us;16067us;16118us;16169us;16220us;16221us;16272us;16323us;16324us;16375us;16426us;16427us;16478us;16529us;16530us;16581us;16632us;16633us;16684us;16735us;16736us;16787us;16838us;16839us;16871us;16903us;16906us;16944us;16976us;17008us;17010us;17017us;17025us;17026us;17027us;17028us;17079us;17080us;17131us;17132us;17174us;17219us;17263us;17308us;17309us;17411us;17417us;17458us;17464us;17470us;17472us;17475us;17516us;17517us;17520us;17522us;17528us;17534us;17575us;17616us;17618us;17619us;17660us;17701us;17703us;17705us;17706us;17707us;17708us;17716us;17717us;17719us;17727us;17728us;17732us;17736us;17737us;17740us;17741us;17742us;17743us;17825us;17829us;17830us;17831us;17832us;17833us;17836us;17916us;17917us;17918us;17919us;17920us;17921us;17922us;18018us;18022us;18024us;18026us;18027us;18031us;18032us;18114us;18118us;18119us;18120us;18121us;18122us;18123us;18124us;18125us;18126us;18127us;18128us;18129us;18130us;18131us;18132us;18133us;18215us;18219us;18220us;18221us;18223us;18224us;18225us;18307us;18390us;18394us;18395us;18396us;18397us;18398us;18480us;18484us;18485us;18486us;18487us;18488us;18579us;18684us;18789us;18790us;18800us;18801us;18802us;18803us;18804us;18805us;18806us;18807us;18808us;18809us;18889us;18890us;18892us;18894us;18896us;18900us;18980us;18981us;18982us;18983us;18984us;18989us;18994us;18995us;19027us;19034us;19120us;19126us;19127us;19128us;19129us;19130us;19131us;19132us;19133us;19134us;19135us;19136us;19137us;19219us;19220us;19307us;19308us;19309us;19389us;19469us;19470us;19471us;19473us;19477us;19478us;19521us;19523us;19524us;19525us;19526us;19528us;19562us;19566us;19567us;19601us;19602us;19640us;19641us;19672us;19675us;19706us;19707us;19710us;19711us;19712us;19795us;19796us;19799us;19800us;19801us;19882us;19883us;19886us;19887us;19891us;19892us;19895us;19896us;19902us;19904us;19905us;19906us;19909us;19911us;19912us;19913us;19917us;19919us;19921us;19922us;19923us;19925us;19926us;19927us;19936us;20024us;20025us;20026us;20027us;20031us;20033us;20037us;20038us;20041us;20042us;20043us;20044us;20048us;20049us;20052us;20054us;20055us;20059us;20060us;20064us;20065us;20069us;20070us;20074us;20075us;20107us;20116us;20120us;20122us;20123us;20125us;20126us;20127us;20171us;20175us;20176us;20177us;20178us;20179us;20180us;20216us;20218us;20300us;20301us;20302us;20339us;20342us;20425us;20429us;20430us;20431us;20433us;20434us;20436us;20437us;20439us;20440us;20481us;20482us;20523us;20525us;20526us;20528us;20561us;20563us;20596us;20633us;20634us;20635us;20637us;20674us;20675us;20676us;20678us;20715us;20716us;20717us;20752us;20753us;20755us;20792us;20793us;20794us;20829us;20830us;20863us;20871us;20905us;20912us;20913us;20915us;20917us;20951us;20958us;20959us;20967us;21001us;21008us;21009us;21011us;21013us;21047us;21054us;21055us;21063us;21071us;21106us;21107us;21108us;21140us;21141us;21143us;21180us;21181us;21182us;21216us;21217us;21219us;21220us;21229us;21265us;21266us;21267us;21301us;21302us;21338us;21339us;21340us;21376us;21377us;21378us;21387us;21423us;21424us;21425us;21459us;21460us;21496us;21497us;21498us;21532us;21533us;21536us;21567us;21570us;21601us;21603us;21604us;21606us;21611us;21615us;21616us;21626us;21627us;21629us;21630us;21631us;21666us;21670us;21675us;21676us;21677us;21678us;21712us;21713us;21715us;21749us;21750us;21753us;21754us;21757us;21758us;21761us;21762us;21765us;21766us;21769us;21770us;21773us;21774us;21777us;21778us;21781us;21782us;21785us;21786us;21789us;21790us;21793us;21794us;21797us;21798us;21801us;21802us;21805us;21806us;21809us;21810us;21813us;21814us;21817us;21818us;21821us;21822us;21825us;21826us;21829us;21830us;21833us;21834us;21837us;21838us;21841us;21842us;21845us;21846us;21849us;21850us;21853us;21854us;21857us;21858us;21861us;21862us;21865us;21866us;21869us;21870us;21873us;21874us;21876us;21877us;21879us;21913us;21914us;21916us;21921us;21955us;21956us;21957us;21959us;21963us;21964us;21999us;22003us;22008us;22009us;22011us;22013us;22014us;22045us;22047us;22048us;22049us;22084us;22090us;22097us;22098us;22099us;22101us;22135us;22171us;22177us;22178us;22179us;22180us;22181us;22182us;22183us;22184us;22225us;22226us;22227us;22231us;22232us;22233us;22236us;22240us;22241us;22249us;22250us;22251us;22253us;22254us;22291us;22293us;22334us;22335us;22336us;22337us;22338us;22347us;22348us;22349us;22350us;22351us;22353us;22387us;22388us;22389us;22390us;22399us;22403us;22404us;22406us;22407us;22409us;22410us;22418us;22424us;22425us;22427us;22431us;22432us;22433us;22440us;22441us;22442us;22443us;22444us;22445us;22453us;22461us;22469us;22471us;22472us;22474us;22475us;22557us;22558us;22559us;22560us;22569us;22570us;22571us;22599us;22603us;22604us;22608us;22609us;22610us;22612us;22618us;22619us;22621us;22625us;22626us;22627us;22628us;22629us;22630us;22631us;22632us;22633us;22634us;22635us;22636us;22637us;22638us;22639us;22640us;22641us;22642us;22643us;22644us;22645us;22646us;22647us;22648us;22649us;22651us;22652us;22654us;22655us;22656us;22658us;22659us;22660us;22661us;22662us;22664us;22665us;22676us;22677us;22678us;22679us;22680us;22681us;22682us;22683us;22684us;22688us;22689us;22693us;22694us;22696us;22698us;22699us;22700us;22701us;22702us;22703us;22704us;22705us;22706us;22707us;22708us;22709us;22710us;22711us;22712us;22713us;22714us;22715us;22716us;22717us;22718us;22719us;22720us;22721us;22722us;22723us;22724us;22725us;22727us;22728us;22729us;22811us;22814us;22815us;22816us;22898us;22901us;22902us;22903us;22904us;22905us;22906us;22907us;22911us;22915us;22916us;22917us;22918us;22922us;22926us;22927us;22928us;22929us;22933us;22934us;22935us;22936us;22937us;22941us;22942us;22943us;22944us;22948us;22949us;22950us;22951us;22952us;22953us;22954us;22955us;22956us;22957us;22958us;22959us;22960us;22961us;|] +let _fsyacc_reductionSymbolCounts = [|1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;2us;2us;2us;3us;3us;3us;1us;2us;3us;1us;1us;2us;1us;1us;3us;0us;2us;1us;1us;2us;3us;2us;5us;5us;5us;3us;3us;1us;2us;2us;1us;3us;4us;1us;1us;4us;3us;3us;1us;1us;0us;3us;3us;2us;1us;1us;5us;5us;4us;5us;3us;1us;12us;0us;2us;5us;3us;5us;3us;3us;0us;3us;2us;7us;2us;1us;1us;3us;1us;3us;3us;3us;3us;3us;3us;3us;3us;3us;1us;1us;0us;3us;11us;4us;4us;4us;4us;5us;5us;5us;0us;2us;3us;3us;1us;3us;3us;3us;1us;1us;2us;3us;0us;2us;3us;2us;1us;2us;2us;1us;3us;4us;1us;4us;3us;3us;1us;1us;0us;5us;4us;3us;1us;2us;2us;3us;1us;2us;3us;1us;1us;3us;3us;3us;5us;3us;5us;4us;2us;1us;2us;2us;3us;3us;3us;1us;3us;3us;3us;3us;3us;1us;1us;3us;3us;3us;3us;1us;0us;1us;2us;5us;4us;4us;2us;1us;3us;3us;4us;6us;2us;2us;2us;2us;2us;1us;1us;1us;1us;3us;3us;0us;1us;2us;8us;7us;7us;6us;2us;2us;1us;1us;3us;1us;3us;3us;3us;3us;3us;3us;3us;1us;1us;2us;0us;3us;2us;3us;3us;1us;3us;6us;5us;4us;4us;4us;1us;2us;2us;3us;3us;4us;5us;4us;5us;4us;10us;3us;4us;5us;5us;8us;6us;6us;5us;5us;6us;6us;5us;4us;8us;6us;6us;4us;0us;2us;2us;3us;3us;1us;4us;2us;0us;1us;1us;1us;1us;3us;1us;0us;3us;0us;3us;5us;2us;1us;0us;2us;2us;1us;0us;2us;2us;3us;3us;1us;3us;2us;4us;4us;3us;4us;2us;1us;1us;6us;3us;3us;3us;7us;3us;3us;3us;2us;1us;3us;3us;3us;1us;1us;1us;1us;1us;2us;3us;3us;2us;1us;3us;3us;1us;2us;4us;5us;3us;1us;0us;5us;1us;0us;0us;2us;3us;1us;3us;1us;4us;3us;3us;4us;3us;5us;7us;4us;4us;3us;1us;3us;1us;2us;3us;1us;1us;3us;1us;3us;3us;5us;4us;4us;4us;5us;5us;5us;1us;3us;4us;2us;4us;2us;3us;3us;2us;4us;3us;1us;3us;1us;3us;1us;1us;1us;3us;2us;2us;5us;5us;4us;2us;5us;4us;1us;3us;3us;0us;2us;3us;1us;2us;4us;3us;2us;1us;1us;1us;1us;1us;1us;8us;1us;1us;0us;3us;3us;2us;3us;1us;4us;2us;2us;2us;2us;2us;2us;3us;0us;2us;1us;6us;6us;5us;3us;3us;1us;2us;2us;0us;4us;3us;1us;3us;2us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;3us;4us;1us;2us;1us;3us;1us;2us;1us;3us;1us;1us;2us;3us;3us;2us;1us;3us;1us;0us;3us;2us;3us;3us;2us;3us;3us;3us;1us;1us;1us;3us;3us;3us;3us;2us;2us;3us;3us;2us;3us;4us;3us;3us;2us;2us;3us;4us;4us;2us;3us;3us;2us;1us;3us;1us;2us;3us;3us;1us;1us;3us;3us;3us;3us;1us;2us;1us;1us;1us;1us;1us;3us;3us;3us;2us;4us;4us;4us;3us;1us;0us;3us;3us;1us;1us;3us;3us;2us;3us;1us;3us;3us;3us;3us;2us;2us;3us;3us;2us;3us;3us;3us;2us;0us;2us;3us;3us;3us;2us;1us;3us;2us;1us;2us;1us;1us;3us;3us;1us;2us;3us;2us;1us;3us;5us;1us;1us;1us;6us;7us;0us;3us;3us;2us;2us;3us;3us;1us;1us;1us;3us;3us;3us;3us;3us;3us;2us;3us;4us;3us;3us;2us;2us;2us;1us;2us;2us;1us;2us;2us;5us;5us;5us;4us;3us;4us;5us;5us;5us;4us;3us;5us;2us;4us;3us;2us;2us;2us;2us;8us;8us;7us;5us;3us;2us;2us;3us;3us;3us;3us;3us;3us;3us;3us;1us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;3us;2us;2us;1us;1us;4us;4us;4us;2us;1us;2us;1us;3us;2us;3us;3us;2us;1us;2us;2us;1us;2us;2us;4us;4us;4us;3us;2us;2us;0us;2us;2us;2us;2us;2us;2us;0us;2us;2us;3us;3us;3us;3us;4us;4us;3us;3us;4us;4us;2us;2us;2us;2us;2us;2us;2us;6us;4us;4us;2us;2us;2us;1us;2us;1us;2us;1us;3us;4us;3us;3us;3us;2us;2us;1us;3us;3us;2us;3us;1us;1us;3us;3us;3us;2us;4us;4us;1us;1us;1us;0us;1us;5us;3us;3us;3us;3us;2us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;3us;3us;3us;2us;3us;3us;3us;2us;3us;3us;3us;2us;2us;3us;3us;3us;2us;2us;2us;2us;2us;4us;6us;1us;1us;1us;3us;3us;1us;3us;3us;3us;2us;2us;1us;1us;1us;1us;0us;1us;0us;1us;2us;3us;3us;2us;5us;1us;1us;6us;2us;0us;0us;1us;0us;4us;0us;2us;3us;6us;1us;5us;3us;1us;1us;2us;5us;5us;4us;6us;1us;0us;1us;1us;2us;2us;1us;1us;3us;0us;3us;2us;3us;1us;2us;4us;3us;2us;5us;4us;2us;1us;0us;2us;3us;3us;2us;0us;2us;2us;5us;2us;1us;3us;3us;3us;2us;2us;4us;4us;5us;5us;5us;4us;4us;3us;2us;3us;1us;3us;1us;3us;0us;2us;2us;3us;3us;1us;3us;3us;2us;1us;3us;3us;2us;1us;4us;4us;5us;5us;2us;3us;3us;4us;4us;1us;3us;3us;4us;3us;3us;3us;4us;1us;2us;3us;3us;2us;2us;2us;3us;3us;1us;3us;3us;2us;3us;3us;2us;1us;3us;3us;1us;1us;3us;1us;2us;3us;2us;4us;1us;1us;3us;3us;2us;3us;4us;5us;6us;7us;8us;9us;10us;11us;12us;13us;14us;15us;16us;17us;18us;19us;20us;21us;22us;23us;24us;25us;26us;27us;28us;29us;30us;31us;32us;33us;4us;3us;3us;0us;1us;3us;4us;1us;1us;1us;2us;1us;1us;3us;3us;6us;6us;5us;4us;3us;1us;1us;2us;1us;1us;3us;2us;3us;4us;3us;1us;2us;6us;6us;4us;3us;3us;2us;2us;1us;3us;2us;1us;1us;0us;3us;3us;1us;1us;3us;1us;3us;1us;1us;2us;1us;3us;3us;2us;2us;2us;1us;1us;1us;3us;3us;3us;3us;1us;4us;6us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;2us;2us;1us;2us;3us;1us;1us;1us;1us;3us;3us;1us;1us;1us;1us;1us;1us;1us;2us;2us;0us;1us;1us;2us;2us;1us;1us;1us;1us;1us;1us;0us;1us;0us;1us;0us;1us;0us;1us;0us;1us;0us;1us;0us;1us;0us;1us;0us;1us;0us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;3us;1us;3us;2us;3us;1us;2us;1us;1us;0us;1us;0us;2us;1us;1us;2us;1us;1us;2us;1us;1us;1us;2us;1us;1us;2us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;1us;|] +let _fsyacc_productionToNonTerminalTable = [|0us;1us;2us;3us;4us;5us;5us;5us;6us;6us;7us;7us;7us;7us;7us;7us;7us;8us;8us;9us;10us;11us;11us;12us;12us;13us;14us;14us;15us;15us;16us;16us;16us;17us;17us;17us;18us;18us;19us;19us;20us;20us;21us;22us;22us;23us;23us;23us;23us;24us;24us;24us;25us;25us;25us;26us;26us;26us;26us;26us;26us;26us;26us;27us;28us;28us;28us;29us;29us;29us;30us;30us;31us;31us;32us;32us;33us;33us;33us;34us;34us;34us;34us;35us;35us;35us;35us;36us;36us;36us;37us;37us;38us;39us;39us;39us;39us;39us;39us;39us;39us;40us;40us;40us;40us;41us;41us;41us;41us;42us;42us;43us;44us;44us;45us;45us;45us;46us;46us;47us;47us;48us;49us;49us;50us;50us;50us;50us;51us;51us;52us;52us;52us;52us;52us;53us;53us;53us;53us;53us;54us;54us;55us;55us;55us;55us;55us;55us;55us;55us;55us;56us;56us;56us;56us;57us;57us;58us;58us;58us;58us;58us;58us;58us;59us;59us;59us;60us;61us;61us;62us;62us;63us;63us;63us;63us;64us;64us;65us;65us;65us;66us;66us;66us;66us;67us;67us;67us;67us;67us;68us;69us;69us;70us;70us;70us;70us;71us;71us;71us;71us;72us;72us;72us;73us;73us;73us;73us;74us;74us;75us;75us;75us;76us;76us;76us;77us;78us;78us;78us;79us;79us;80us;81us;81us;81us;81us;82us;82us;82us;82us;83us;83us;83us;83us;83us;83us;83us;83us;83us;83us;83us;83us;83us;83us;83us;83us;84us;84us;84us;84us;85us;85us;85us;85us;86us;86us;86us;87us;87us;87us;87us;87us;88us;88us;89us;89us;89us;90us;90us;90us;91us;91us;92us;92us;92us;93us;93us;94us;94us;95us;95us;96us;96us;97us;97us;97us;98us;98us;99us;99us;99us;99us;100us;100us;100us;101us;101us;101us;101us;101us;102us;102us;102us;103us;103us;104us;104us;104us;105us;105us;105us;106us;106us;107us;107us;107us;107us;108us;108us;109us;109us;110us;110us;111us;112us;112us;112us;113us;114us;114us;115us;115us;116us;116us;117us;117us;118us;118us;118us;118us;118us;118us;118us;118us;118us;118us;118us;119us;119us;120us;120us;120us;121us;122us;122us;123us;123us;123us;123us;123us;123us;123us;123us;123us;124us;124us;124us;125us;125us;125us;126us;126us;126us;126us;127us;127us;128us;128us;128us;128us;129us;129us;130us;130us;131us;132us;132us;132us;133us;134us;134us;135us;135us;135us;136us;136us;137us;137us;138us;139us;140us;140us;141us;141us;141us;141us;142us;142us;143us;144us;144us;144us;145us;145us;146us;146us;147us;147us;147us;147us;147us;148us;148us;149us;150us;150us;151us;151us;152us;152us;152us;153us;153us;153us;154us;155us;155us;156us;157us;157us;158us;158us;159us;159us;159us;159us;159us;159us;159us;159us;159us;159us;159us;159us;159us;159us;159us;159us;159us;159us;160us;160us;160us;160us;161us;161us;162us;162us;163us;163us;164us;165us;165us;165us;165us;165us;166us;166us;167us;167us;168us;168us;168us;168us;168us;169us;169us;169us;169us;169us;169us;170us;170us;170us;170us;170us;170us;171us;171us;172us;172us;172us;173us;173us;173us;174us;174us;174us;174us;174us;174us;174us;174us;174us;175us;175us;176us;176us;176us;176us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;177us;178us;178us;179us;179us;179us;179us;179us;179us;179us;179us;179us;180us;180us;180us;180us;180us;180us;181us;181us;182us;182us;183us;183us;183us;184us;184us;184us;185us;185us;185us;185us;186us;186us;186us;187us;187us;187us;188us;188us;188us;189us;190us;190us;190us;190us;190us;190us;191us;191us;192us;192us;192us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;193us;194us;194us;194us;194us;194us;194us;195us;195us;196us;196us;196us;196us;197us;197us;197us;197us;198us;199us;199us;199us;199us;199us;199us;200us;200us;201us;202us;203us;203us;203us;203us;204us;204us;204us;204us;204us;205us;205us;205us;205us;205us;205us;205us;205us;206us;206us;206us;206us;206us;206us;206us;206us;206us;206us;206us;206us;206us;206us;207us;207us;208us;208us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;209us;210us;210us;210us;210us;210us;210us;210us;210us;210us;210us;211us;211us;211us;211us;211us;211us;211us;211us;211us;211us;211us;212us;212us;212us;212us;213us;213us;213us;213us;214us;214us;214us;214us;215us;215us;215us;215us;215us;215us;215us;215us;215us;215us;216us;216us;216us;217us;217us;218us;218us;219us;219us;219us;219us;219us;220us;220us;220us;221us;221us;222us;222us;223us;224us;225us;225us;225us;226us;227us;227us;228us;229us;229us;230us;230us;231us;231us;232us;232us;232us;233us;233us;234us;234us;234us;234us;234us;234us;234us;234us;234us;235us;235us;236us;236us;236us;236us;237us;237us;238us;238us;239us;239us;239us;239us;239us;240us;240us;240us;241us;241us;241us;242us;242us;243us;243us;243us;244us;245us;245us;245us;246us;247us;247us;248us;248us;248us;248us;248us;249us;249us;249us;249us;249us;249us;249us;249us;250us;250us;251us;251us;252us;252us;253us;253us;253us;254us;254us;254us;255us;255us;255us;255us;256us;256us;256us;256us;257us;257us;257us;257us;257us;257us;257us;257us;257us;257us;258us;258us;258us;258us;259us;259us;259us;259us;260us;261us;261us;261us;261us;261us;261us;261us;261us;262us;262us;262us;262us;262us;262us;262us;263us;263us;264us;264us;265us;265us;266us;266us;266us;266us;266us;266us;266us;266us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;267us;268us;269us;269us;269us;270us;270us;271us;271us;272us;272us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;273us;274us;274us;275us;275us;275us;275us;275us;275us;275us;276us;276us;276us;277us;277us;278us;279us;279us;280us;280us;280us;281us;281us;281us;282us;282us;283us;283us;283us;283us;284us;284us;285us;286us;286us;286us;286us;287us;287us;287us;287us;287us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;288us;289us;290us;290us;291us;291us;292us;292us;292us;292us;293us;294us;294us;295us;295us;295us;296us;296us;297us;297us;298us;298us;298us;298us;299us;299us;299us;300us;300us;300us;300us;301us;301us;302us;302us;303us;303us;304us;304us;305us;305us;306us;306us;307us;307us;308us;308us;309us;309us;310us;310us;311us;311us;312us;312us;313us;313us;314us;314us;315us;316us;317us;317us;318us;318us;318us;319us;319us;319us;320us;320us;320us;321us;321us;322us;322us;322us;323us;323us;323us;324us;324us;324us;325us;326us;326us;326us;327us;327us;327us;328us;328us;328us;328us;328us;329us;329us;329us;329us;329us;329us;|] +let _fsyacc_immediateActions = [|65535us;49152us;65535us;49152us;65535us;49152us;65535us;49152us;65535us;49152us;16389us;16390us;16391us;16392us;16393us;16394us;65535us;16395us;65535us;16396us;65535us;16397us;65535us;16398us;65535us;16399us;65535us;16400us;65535us;16402us;65535us;65535us;65535us;16404us;65535us;16406us;16407us;16408us;65535us;65535us;65535us;16411us;16412us;16413us;65535us;16414us;65535us;16415us;65535us;16416us;65535us;65535us;65535us;65535us;65535us;16418us;16419us;65535us;65535us;65535us;16421us;65535us;16423us;65535us;16424us;65535us;65535us;16426us;65535us;65535us;65535us;16427us;16428us;16429us;65535us;65535us;65535us;16430us;16431us;65535us;16432us;16433us;65535us;65535us;65535us;65535us;16436us;65535us;65535us;16437us;16439us;16440us;65535us;65535us;65535us;65535us;16441us;16442us;16443us;65535us;65535us;16444us;16445us;16446us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16447us;65535us;65535us;65535us;65535us;65535us;16450us;65535us;65535us;16451us;65535us;65535us;65535us;16452us;65535us;65535us;16453us;65535us;65535us;16454us;65535us;65535us;16456us;16457us;65535us;65535us;65535us;65535us;65535us;65535us;16458us;65535us;16459us;16460us;16461us;65535us;65535us;16462us;16463us;65535us;65535us;16464us;16465us;65535us;16466us;65535us;65535us;16467us;16468us;65535us;65535us;16469us;16470us;65535us;65535us;16471us;16472us;16473us;16474us;65535us;65535us;16476us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16477us;65535us;65535us;65535us;65535us;16480us;65535us;16481us;65535us;65535us;16482us;65535us;16483us;65535us;65535us;16484us;65535us;16486us;65535us;65535us;16487us;16488us;65535us;65535us;16490us;16491us;65535us;65535us;16492us;16493us;16494us;65535us;16495us;65535us;65535us;16496us;65535us;16498us;65535us;16499us;65535us;16500us;65535us;16502us;65535us;16503us;65535us;65535us;16505us;65535us;65535us;65535us;16506us;16507us;65535us;65535us;65535us;16508us;16509us;65535us;16510us;16511us;16512us;65535us;65535us;65535us;65535us;16514us;16517us;16518us;65535us;16519us;65535us;16520us;65535us;65535us;65535us;65535us;65535us;16523us;16524us;16525us;65535us;65535us;16526us;65535us;16527us;65535us;16528us;65535us;65535us;16529us;16530us;65535us;65535us;16531us;16532us;65535us;16533us;16534us;65535us;65535us;16536us;65535us;65535us;16538us;65535us;16539us;65535us;65535us;65535us;16541us;16542us;65535us;16543us;16544us;16545us;16546us;65535us;65535us;65535us;16548us;16549us;16550us;65535us;65535us;16551us;16552us;65535us;16555us;65535us;65535us;65535us;65535us;16556us;65535us;65535us;16557us;16558us;16559us;16560us;65535us;16561us;65535us;65535us;16562us;65535us;65535us;65535us;16563us;65535us;65535us;65535us;65535us;16564us;65535us;16565us;65535us;16566us;65535us;16567us;65535us;16568us;65535us;16569us;16571us;16572us;16573us;65535us;65535us;16574us;65535us;65535us;16575us;65535us;16578us;65535us;65535us;65535us;65535us;65535us;65535us;16579us;16580us;65535us;65535us;65535us;65535us;65535us;65535us;16581us;16582us;16583us;65535us;16584us;16585us;16586us;65535us;65535us;16587us;16588us;65535us;65535us;16589us;16590us;65535us;16591us;65535us;65535us;16592us;16593us;65535us;65535us;16594us;16595us;16596us;16597us;65535us;16598us;65535us;65535us;16600us;65535us;16601us;65535us;65535us;16602us;16603us;65535us;65535us;16605us;65535us;65535us;65535us;65535us;65535us;16606us;65535us;65535us;65535us;65535us;16607us;16608us;16609us;16610us;65535us;16612us;65535us;16614us;65535us;65535us;65535us;65535us;16615us;16616us;65535us;65535us;16617us;16618us;65535us;65535us;16619us;16620us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16621us;16622us;65535us;16623us;65535us;16624us;65535us;16625us;65535us;65535us;65535us;65535us;65535us;16626us;16627us;16628us;65535us;16629us;65535us;16630us;65535us;65535us;65535us;65535us;65535us;16631us;16632us;16633us;16634us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16635us;16636us;16637us;16638us;65535us;16640us;16641us;65535us;65535us;16642us;65535us;65535us;16643us;16644us;65535us;65535us;65535us;16645us;16646us;16648us;16649us;16650us;16651us;65535us;65535us;16652us;65535us;65535us;16655us;65535us;65535us;16657us;65535us;65535us;16658us;16659us;16660us;65535us;16662us;16663us;16664us;65535us;16666us;16667us;65535us;65535us;16668us;16669us;16670us;65535us;65535us;16671us;65535us;65535us;65535us;65535us;16673us;65535us;16674us;16675us;65535us;65535us;16676us;65535us;16677us;16678us;16679us;65535us;65535us;65535us;65535us;65535us;16680us;16681us;16682us;16683us;65535us;65535us;65535us;65535us;16684us;65535us;65535us;16685us;16686us;65535us;16687us;65535us;16688us;16689us;65535us;65535us;16690us;16691us;65535us;16692us;16693us;16694us;16695us;16696us;16697us;65535us;65535us;65535us;65535us;16700us;16701us;16702us;65535us;65535us;16703us;65535us;65535us;65535us;65535us;16704us;16705us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16708us;16709us;65535us;65535us;65535us;65535us;16712us;16713us;65535us;65535us;65535us;65535us;65535us;16717us;16718us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16721us;65535us;65535us;65535us;65535us;16723us;65535us;16724us;16725us;65535us;65535us;16726us;65535us;65535us;65535us;65535us;65535us;65535us;16727us;65535us;16728us;16729us;65535us;65535us;65535us;65535us;65535us;16734us;65535us;65535us;16735us;65535us;16737us;65535us;65535us;16738us;65535us;65535us;65535us;16741us;65535us;16742us;16743us;65535us;16744us;16745us;16746us;65535us;16747us;65535us;65535us;16749us;65535us;65535us;16750us;65535us;65535us;16751us;65535us;16752us;65535us;65535us;65535us;16754us;65535us;16755us;16756us;65535us;16757us;65535us;65535us;16759us;65535us;65535us;65535us;65535us;16763us;16764us;16765us;16766us;65535us;65535us;16767us;16768us;65535us;16769us;65535us;65535us;65535us;65535us;16770us;16771us;16772us;65535us;16773us;65535us;65535us;65535us;65535us;16774us;16775us;65535us;65535us;16777us;16778us;65535us;65535us;65535us;65535us;16781us;16782us;65535us;16783us;65535us;65535us;65535us;16784us;65535us;65535us;16785us;16786us;16787us;16788us;16789us;16790us;16791us;16792us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16793us;65535us;65535us;65535us;16797us;65535us;16798us;65535us;65535us;16800us;65535us;65535us;65535us;65535us;16802us;16803us;16804us;65535us;65535us;16805us;65535us;65535us;16808us;65535us;65535us;16809us;65535us;16811us;16812us;65535us;65535us;65535us;65535us;65535us;16813us;16814us;16815us;65535us;65535us;16816us;16817us;16818us;65535us;65535us;16820us;65535us;65535us;65535us;16822us;65535us;16823us;16824us;65535us;65535us;16825us;16826us;16827us;16828us;16829us;16830us;16831us;16832us;16833us;16834us;16835us;16836us;16837us;16838us;16839us;16840us;16841us;16842us;16843us;16844us;65535us;65535us;16845us;65535us;65535us;65535us;16846us;16849us;65535us;65535us;16850us;16851us;65535us;16852us;65535us;65535us;16854us;65535us;16856us;65535us;16857us;65535us;65535us;65535us;16858us;16859us;65535us;65535us;16862us;16863us;65535us;65535us;16865us;16866us;16867us;65535us;16868us;16869us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16870us;65535us;65535us;65535us;65535us;16875us;65535us;65535us;16878us;16879us;65535us;16881us;65535us;65535us;65535us;16884us;65535us;16885us;65535us;16886us;65535us;65535us;65535us;65535us;16888us;16889us;65535us;65535us;16891us;65535us;16892us;65535us;16893us;16894us;65535us;16895us;65535us;16896us;65535us;16897us;16898us;65535us;65535us;16899us;16900us;65535us;16901us;65535us;16902us;65535us;16903us;16905us;65535us;65535us;16906us;65535us;16907us;65535us;65535us;16908us;65535us;65535us;16909us;65535us;65535us;16911us;16912us;16913us;16914us;16915us;16916us;65535us;65535us;16917us;16918us;65535us;65535us;16920us;65535us;65535us;65535us;16921us;16922us;65535us;16923us;16924us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16927us;65535us;65535us;65535us;65535us;16931us;16932us;65535us;65535us;16935us;65535us;65535us;16938us;16939us;65535us;16941us;65535us;65535us;65535us;16944us;65535us;16945us;65535us;65535us;16947us;16948us;16950us;65535us;16951us;65535us;65535us;16952us;16953us;16954us;16955us;65535us;65535us;16956us;16957us;65535us;65535us;16959us;16961us;65535us;65535us;65535us;16962us;16963us;65535us;16965us;65535us;65535us;16966us;65535us;16969us;65535us;65535us;65535us;16970us;65535us;16972us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16973us;65535us;65535us;65535us;65535us;16974us;65535us;65535us;65535us;65535us;65535us;16975us;65535us;65535us;16977us;16978us;65535us;16979us;16980us;65535us;16981us;16982us;16983us;16984us;16985us;65535us;65535us;16986us;16987us;65535us;65535us;16988us;16989us;65535us;65535us;16990us;16991us;65535us;16993us;65535us;16994us;65535us;65535us;16995us;16996us;16997us;65535us;65535us;65535us;65535us;65535us;17001us;65535us;17002us;65535us;17004us;65535us;17005us;65535us;65535us;65535us;65535us;17006us;17007us;17008us;17009us;17010us;65535us;17011us;65535us;65535us;65535us;17012us;17013us;17014us;17015us;17016us;65535us;65535us;17017us;17018us;17019us;65535us;65535us;65535us;65535us;65535us;17023us;17024us;65535us;65535us;65535us;65535us;65535us;65535us;17025us;65535us;65535us;65535us;65535us;65535us;65535us;17026us;17027us;65535us;65535us;65535us;65535us;17028us;65535us;65535us;17029us;65535us;65535us;65535us;17031us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;17032us;17033us;65535us;17034us;17035us;65535us;17036us;17037us;65535us;65535us;65535us;17039us;65535us;65535us;65535us;17042us;65535us;17044us;65535us;17046us;65535us;17048us;65535us;17050us;65535us;17052us;65535us;17054us;65535us;17056us;65535us;17058us;65535us;17060us;65535us;17062us;65535us;17064us;65535us;17066us;65535us;17068us;65535us;17070us;65535us;17072us;65535us;17074us;65535us;17076us;65535us;17078us;65535us;17080us;65535us;65535us;65535us;65535us;17084us;65535us;65535us;65535us;17086us;17087us;65535us;17088us;17089us;17090us;17091us;17092us;65535us;65535us;17093us;65535us;17094us;65535us;65535us;17095us;17096us;17097us;17098us;65535us;17099us;17100us;17101us;17102us;65535us;65535us;65535us;17104us;65535us;17105us;17106us;17107us;17108us;65535us;65535us;17111us;65535us;17112us;65535us;17114us;65535us;17115us;17116us;65535us;65535us;17119us;65535us;17120us;17121us;65535us;17123us;65535us;17125us;65535us;17126us;65535us;17128us;65535us;65535us;65535us;65535us;17130us;65535us;65535us;17131us;65535us;65535us;17132us;65535us;65535us;17133us;65535us;65535us;17134us;65535us;65535us;17135us;65535us;65535us;17136us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;17137us;17139us;17140us;65535us;17141us;65535us;17142us;65535us;65535us;65535us;65535us;17144us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;17149us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;17152us;65535us;65535us;65535us;65535us;17154us;65535us;17155us;65535us;17156us;65535us;65535us;17157us;65535us;65535us;17158us;65535us;17159us;17160us;17161us;65535us;65535us;17162us;17163us;17164us;17165us;65535us;65535us;17166us;17167us;17168us;17169us;17170us;17172us;65535us;65535us;65535us;65535us;17173us;65535us;17174us;65535us;65535us;17175us;17176us;17177us;17178us;17179us;17180us;17181us;17182us;17183us;17184us;17185us;17186us;17187us;17188us;17189us;65535us;65535us;17190us;17191us;65535us;17192us;17193us;65535us;65535us;65535us;17194us;17195us;17196us;17197us;65535us;65535us;17198us;17199us;17200us;17201us;65535us;65535us;65535us;17202us;65535us;17203us;17204us;17205us;65535us;17206us;17207us;17208us;17209us;17210us;65535us;17211us;65535us;65535us;65535us;65535us;65535us;17212us;17213us;17214us;17215us;65535us;65535us;17216us;65535us;65535us;65535us;65535us;17219us;17220us;17221us;17222us;17223us;17224us;17225us;17226us;17227us;17229us;17231us;65535us;17232us;65535us;17234us;17235us;65535us;65535us;17237us;17238us;65535us;65535us;65535us;65535us;65535us;17239us;17240us;17243us;65535us;65535us;65535us;17245us;65535us;17247us;65535us;17248us;65535us;65535us;65535us;65535us;65535us;17249us;17250us;65535us;65535us;65535us;17251us;17252us;65535us;65535us;65535us;17256us;65535us;65535us;65535us;17257us;65535us;65535us;17258us;65535us;65535us;65535us;17259us;17260us;65535us;65535us;65535us;17264us;17265us;65535us;17267us;17268us;65535us;65535us;17270us;17272us;17274us;65535us;65535us;65535us;17275us;65535us;17276us;17278us;17281us;65535us;17283us;65535us;65535us;17284us;65535us;17285us;65535us;17286us;65535us;17288us;65535us;17289us;65535us;65535us;65535us;65535us;17290us;65535us;17291us;17292us;65535us;65535us;17293us;17294us;17295us;17296us;17297us;65535us;65535us;65535us;17298us;17299us;65535us;65535us;65535us;65535us;17300us;17301us;65535us;17302us;65535us;17304us;65535us;17305us;65535us;17306us;65535us;65535us;17307us;65535us;65535us;65535us;65535us;65535us;17313us;17314us;65535us;65535us;17315us;17316us;65535us;65535us;17318us;17319us;65535us;17320us;65535us;65535us;17322us;17323us;65535us;17324us;65535us;65535us;65535us;65535us;17327us;65535us;65535us;65535us;65535us;17329us;65535us;65535us;65535us;17332us;65535us;65535us;65535us;65535us;17334us;65535us;65535us;65535us;17336us;17337us;65535us;17338us;65535us;65535us;17340us;17341us;65535us;17342us;65535us;17344us;65535us;65535us;17345us;17346us;65535us;17347us;65535us;17348us;17349us;65535us;17350us;17351us;65535us;65535us;17353us;17354us;65535us;17355us;65535us;17356us;17357us;65535us;17358us;65535us;65535us;65535us;65535us;65535us;17363us;65535us;65535us;65535us;17364us;65535us;17366us;65535us;17367us;17368us;65535us;65535us;65535us;17369us;17370us;17371us;65535us;17372us;65535us;65535us;17373us;65535us;17374us;65535us;17375us;65535us;17376us;65535us;17377us;65535us;17378us;65535us;17379us;65535us;17380us;65535us;17381us;65535us;17382us;65535us;17383us;65535us;17384us;65535us;17385us;65535us;17386us;65535us;17387us;65535us;17388us;65535us;17389us;65535us;17390us;65535us;17391us;65535us;17392us;65535us;17393us;65535us;17394us;65535us;17395us;65535us;17396us;65535us;17397us;65535us;17398us;65535us;17399us;65535us;17400us;65535us;17401us;65535us;17402us;65535us;17403us;65535us;17404us;65535us;17405us;65535us;65535us;65535us;65535us;65535us;65535us;17407us;17408us;65535us;65535us;17411us;65535us;65535us;65535us;17412us;65535us;65535us;17415us;65535us;65535us;17417us;17418us;65535us;65535us;65535us;17419us;17420us;65535us;65535us;65535us;65535us;17421us;17422us;17423us;17424us;17425us;17426us;17427us;65535us;17429us;17430us;65535us;17431us;17432us;65535us;65535us;17434us;65535us;17435us;17436us;65535us;17437us;65535us;65535us;65535us;65535us;17438us;17439us;17440us;65535us;17441us;17442us;17443us;17444us;65535us;65535us;17446us;17448us;17449us;65535us;65535us;17451us;65535us;17452us;65535us;17454us;65535us;65535us;17455us;65535us;65535us;17457us;17458us;65535us;17460us;17461us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;17465us;65535us;17466us;65535us;17467us;17468us;17469us;65535us;17470us;17471us;65535us;65535us;17472us;65535us;17473us;17474us;65535us;65535us;17475us;65535us;65535us;17476us;17477us;17478us;17479us;17480us;17481us;17482us;17483us;17484us;17485us;17486us;17487us;17488us;17489us;17490us;17491us;17492us;17493us;17494us;17495us;17496us;17497us;17498us;17499us;65535us;17501us;65535us;17502us;17503us;65535us;17504us;17505us;17506us;17507us;65535us;17509us;65535us;17510us;17511us;17512us;17513us;17514us;17515us;17516us;17517us;65535us;17519us;65535us;17520us;65535us;65535us;17524us;17525us;17526us;17527us;17528us;17529us;17530us;17531us;17533us;17535us;17539us;17541us;17543us;17547us;17549us;17551us;17552us;17553us;17554us;17555us;17556us;17557us;17558us;17559us;17560us;17561us;17562us;65535us;17564us;17565us;65535us;65535us;17566us;17567us;65535us;65535us;17568us;17569us;17570us;17571us;17572us;17574us;65535us;65535us;17576us;17577us;17578us;65535us;65535us;17579us;17580us;17581us;65535us;17582us;17583us;17584us;17585us;65535us;17586us;17587us;17588us;65535us;17589us;17590us;17591us;17592us;17593us;17594us;17595us;17596us;17597us;17598us;17599us;17600us;17601us;17602us;|] let _fsyacc_reductions = lazy [| -//# 2785 "pars.fs" +//# 2855 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> ParsedSigFile in Microsoft.FSharp.Core.Operators.box @@ -2791,7 +2861,7 @@ let _fsyacc_reductions = lazy [| raise (Internal.Utilities.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1)) ) : 'gentype__startsignatureFile)); -//# 2794 "pars.fs" +//# 2864 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> ParsedImplFile in Microsoft.FSharp.Core.Operators.box @@ -2800,7 +2870,7 @@ let _fsyacc_reductions = lazy [| raise (Internal.Utilities.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1)) ) : 'gentype__startimplementationFile)); -//# 2803 "pars.fs" +//# 2873 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> ParsedScriptInteraction in Microsoft.FSharp.Core.Operators.box @@ -2809,7 +2879,7 @@ let _fsyacc_reductions = lazy [| raise (Internal.Utilities.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1)) ) : 'gentype__startinteraction)); -//# 2812 "pars.fs" +//# 2882 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in Microsoft.FSharp.Core.Operators.box @@ -2818,7 +2888,7 @@ let _fsyacc_reductions = lazy [| raise (Internal.Utilities.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1)) ) : 'gentype__starttypedSequentialExprEOF)); -//# 2821 "pars.fs" +//# 2891 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynType in Microsoft.FSharp.Core.Operators.box @@ -2827,107 +2897,107 @@ let _fsyacc_reductions = lazy [| raise (Internal.Utilities.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1)) ) : 'gentype__starttypEOF)); -//# 2830 "pars.fs" +//# 2900 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_interactiveItemsTerminator in Microsoft.FSharp.Core.Operators.box ( ( -//# 386 "src/Compiler/pars.fsy" +//# 388 "src/Compiler/pars.fsy" ParsedScriptInteraction.Definitions(_1, lhs parseState) ) -//# 386 "src/Compiler/pars.fsy" +//# 388 "src/Compiler/pars.fsy" : ParsedScriptInteraction)); -//# 2841 "pars.fs" +//# 2911 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 389 "src/Compiler/pars.fsy" +//# 391 "src/Compiler/pars.fsy" warning(Error(FSComp.SR.parsUnexpectedSemicolon(), rhs parseState 1)) ParsedScriptInteraction.Definitions([], lhs parseState) ) -//# 389 "src/Compiler/pars.fsy" +//# 391 "src/Compiler/pars.fsy" : ParsedScriptInteraction)); -//# 2852 "pars.fs" +//# 2922 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 393 "src/Compiler/pars.fsy" +//# 395 "src/Compiler/pars.fsy" ParsedScriptInteraction.Definitions([], lhs parseState) ) -//# 393 "src/Compiler/pars.fsy" +//# 395 "src/Compiler/pars.fsy" : ParsedScriptInteraction)); -//# 2862 "pars.fs" +//# 2932 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 397 "src/Compiler/pars.fsy" +//# 399 "src/Compiler/pars.fsy" ) -//# 397 "src/Compiler/pars.fsy" +//# 399 "src/Compiler/pars.fsy" : 'gentype_interactiveTerminator)); -//# 2872 "pars.fs" +//# 2942 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> ParseHelpers.LexerContinuation in Microsoft.FSharp.Core.Operators.box ( ( -//# 398 "src/Compiler/pars.fsy" +//# 400 "src/Compiler/pars.fsy" checkEndOfFileError _1 ) -//# 398 "src/Compiler/pars.fsy" +//# 400 "src/Compiler/pars.fsy" : 'gentype_interactiveTerminator)); -//# 2883 "pars.fs" +//# 2953 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_interactiveTerminator in Microsoft.FSharp.Core.Operators.box ( ( -//# 412 "src/Compiler/pars.fsy" +//# 414 "src/Compiler/pars.fsy" [] ) -//# 412 "src/Compiler/pars.fsy" +//# 414 "src/Compiler/pars.fsy" : 'gentype_interactiveItemsTerminator)); -//# 2894 "pars.fs" +//# 2964 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_interactiveDefns in let _2 = parseState.GetInput(2) :?> 'gentype_interactiveTerminator in Microsoft.FSharp.Core.Operators.box ( ( -//# 415 "src/Compiler/pars.fsy" +//# 417 "src/Compiler/pars.fsy" _1 ) -//# 415 "src/Compiler/pars.fsy" +//# 417 "src/Compiler/pars.fsy" : 'gentype_interactiveItemsTerminator)); -//# 2906 "pars.fs" +//# 2976 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_interactiveExpr in let _2 = parseState.GetInput(2) :?> 'gentype_interactiveTerminator in Microsoft.FSharp.Core.Operators.box ( ( -//# 418 "src/Compiler/pars.fsy" +//# 420 "src/Compiler/pars.fsy" _1 ) -//# 418 "src/Compiler/pars.fsy" +//# 420 "src/Compiler/pars.fsy" : 'gentype_interactiveItemsTerminator)); -//# 2918 "pars.fs" +//# 2988 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_interactiveHash in let _2 = parseState.GetInput(2) :?> 'gentype_interactiveTerminator in Microsoft.FSharp.Core.Operators.box ( ( -//# 421 "src/Compiler/pars.fsy" +//# 423 "src/Compiler/pars.fsy" _1 ) -//# 421 "src/Compiler/pars.fsy" +//# 423 "src/Compiler/pars.fsy" : 'gentype_interactiveItemsTerminator)); -//# 2930 "pars.fs" +//# 3000 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_interactiveDefns in let _2 = parseState.GetInput(2) :?> 'gentype_interactiveSeparators in @@ -2935,12 +3005,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 424 "src/Compiler/pars.fsy" +//# 426 "src/Compiler/pars.fsy" _1 @ _3 ) -//# 424 "src/Compiler/pars.fsy" +//# 426 "src/Compiler/pars.fsy" : 'gentype_interactiveItemsTerminator)); -//# 2943 "pars.fs" +//# 3013 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_interactiveExpr in let _2 = parseState.GetInput(2) :?> 'gentype_interactiveSeparators in @@ -2948,12 +3018,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 427 "src/Compiler/pars.fsy" +//# 429 "src/Compiler/pars.fsy" _1 @ _3 ) -//# 427 "src/Compiler/pars.fsy" +//# 429 "src/Compiler/pars.fsy" : 'gentype_interactiveItemsTerminator)); -//# 2956 "pars.fs" +//# 3026 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_interactiveHash in let _2 = parseState.GetInput(2) :?> 'gentype_interactiveSeparators in @@ -2961,35 +3031,35 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 430 "src/Compiler/pars.fsy" +//# 432 "src/Compiler/pars.fsy" _1 @ _3 ) -//# 430 "src/Compiler/pars.fsy" +//# 432 "src/Compiler/pars.fsy" : 'gentype_interactiveItemsTerminator)); -//# 2969 "pars.fs" +//# 3039 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_moduleDefn in Microsoft.FSharp.Core.Operators.box ( ( -//# 436 "src/Compiler/pars.fsy" +//# 438 "src/Compiler/pars.fsy" _1 ) -//# 436 "src/Compiler/pars.fsy" +//# 438 "src/Compiler/pars.fsy" : 'gentype_interactiveDefns)); -//# 2980 "pars.fs" +//# 3050 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_moduleDefn in let _2 = parseState.GetInput(2) :?> 'gentype_interactiveDefns in Microsoft.FSharp.Core.Operators.box ( ( -//# 439 "src/Compiler/pars.fsy" +//# 441 "src/Compiler/pars.fsy" _1 @ _2 ) -//# 439 "src/Compiler/pars.fsy" +//# 441 "src/Compiler/pars.fsy" : 'gentype_interactiveDefns)); -//# 2992 "pars.fs" +//# 3062 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -2997,165 +3067,165 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 445 "src/Compiler/pars.fsy" +//# 447 "src/Compiler/pars.fsy" match _2 with | Some vis -> errorR(Error(FSComp.SR.parsUnexpectedVisibilityDeclaration(vis.ToString()), rhs parseState 3)) | _ -> () let attrDecls = if not (isNil _1) then [ SynModuleDecl.Attributes(_1, rangeOfNonNilAttrs _1) ] else [] attrDecls @ [ mkSynExprDecl _3 ] ) -//# 445 "src/Compiler/pars.fsy" +//# 447 "src/Compiler/pars.fsy" : 'gentype_interactiveExpr)); -//# 3009 "pars.fs" +//# 3079 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_hashDirective in Microsoft.FSharp.Core.Operators.box ( ( -//# 454 "src/Compiler/pars.fsy" +//# 456 "src/Compiler/pars.fsy" [SynModuleDecl.HashDirective(_1, rhs parseState 1)] ) -//# 454 "src/Compiler/pars.fsy" +//# 456 "src/Compiler/pars.fsy" : 'gentype_interactiveHash)); -//# 3020 "pars.fs" +//# 3090 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_interactiveSeparator in Microsoft.FSharp.Core.Operators.box ( ( -//# 458 "src/Compiler/pars.fsy" +//# 460 "src/Compiler/pars.fsy" ) -//# 458 "src/Compiler/pars.fsy" +//# 460 "src/Compiler/pars.fsy" : 'gentype_interactiveSeparators)); -//# 3031 "pars.fs" +//# 3101 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_interactiveSeparator in let _2 = parseState.GetInput(2) :?> 'gentype_interactiveSeparators in Microsoft.FSharp.Core.Operators.box ( ( -//# 460 "src/Compiler/pars.fsy" +//# 462 "src/Compiler/pars.fsy" ) -//# 460 "src/Compiler/pars.fsy" +//# 462 "src/Compiler/pars.fsy" : 'gentype_interactiveSeparators)); -//# 3043 "pars.fs" +//# 3113 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 464 "src/Compiler/pars.fsy" +//# 466 "src/Compiler/pars.fsy" ) -//# 464 "src/Compiler/pars.fsy" +//# 466 "src/Compiler/pars.fsy" : 'gentype_interactiveSeparator)); -//# 3053 "pars.fs" +//# 3123 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 465 "src/Compiler/pars.fsy" +//# 467 "src/Compiler/pars.fsy" ) -//# 465 "src/Compiler/pars.fsy" +//# 467 "src/Compiler/pars.fsy" : 'gentype_interactiveSeparator)); -//# 3063 "pars.fs" +//# 3133 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> string in let _3 = parseState.GetInput(3) :?> 'gentype_hashDirectiveArgs in Microsoft.FSharp.Core.Operators.box ( ( -//# 474 "src/Compiler/pars.fsy" +//# 476 "src/Compiler/pars.fsy" let m = match _3 with [] -> rhs2 parseState 1 2 | _ -> rhs2 parseState 1 3 ParsedHashDirective(_2, _3, m) ) -//# 474 "src/Compiler/pars.fsy" +//# 476 "src/Compiler/pars.fsy" : 'gentype_hashDirective)); -//# 3076 "pars.fs" +//# 3146 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 481 "src/Compiler/pars.fsy" +//# 483 "src/Compiler/pars.fsy" [] ) -//# 481 "src/Compiler/pars.fsy" +//# 483 "src/Compiler/pars.fsy" : 'gentype_hashDirectiveArgs)); -//# 3086 "pars.fs" +//# 3156 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_hashDirectiveArgs in let _2 = parseState.GetInput(2) :?> 'gentype_hashDirectiveArg in Microsoft.FSharp.Core.Operators.box ( ( -//# 484 "src/Compiler/pars.fsy" +//# 486 "src/Compiler/pars.fsy" _1 @ [_2] ) -//# 484 "src/Compiler/pars.fsy" +//# 486 "src/Compiler/pars.fsy" : 'gentype_hashDirectiveArgs)); -//# 3098 "pars.fs" +//# 3168 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_string in Microsoft.FSharp.Core.Operators.box ( ( -//# 490 "src/Compiler/pars.fsy" +//# 492 "src/Compiler/pars.fsy" let s, kind = _1 ParsedHashDirectiveArgument.String(s, kind, lhs parseState) ) -//# 490 "src/Compiler/pars.fsy" +//# 492 "src/Compiler/pars.fsy" : 'gentype_hashDirectiveArg)); -//# 3110 "pars.fs" +//# 3180 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_sourceIdentifier in Microsoft.FSharp.Core.Operators.box ( ( -//# 493 "src/Compiler/pars.fsy" +//# 495 "src/Compiler/pars.fsy" let c, v = _1 ParsedHashDirectiveArgument.SourceIdentifier(c, v, lhs parseState) ) -//# 493 "src/Compiler/pars.fsy" +//# 495 "src/Compiler/pars.fsy" : 'gentype_hashDirectiveArg)); -//# 3122 "pars.fs" +//# 3192 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_fileNamespaceSpecs in let _2 = parseState.GetInput(2) :?> ParseHelpers.LexerContinuation in Microsoft.FSharp.Core.Operators.box ( ( -//# 503 "src/Compiler/pars.fsy" +//# 505 "src/Compiler/pars.fsy" checkEndOfFileError _2; _1 ) -//# 503 "src/Compiler/pars.fsy" +//# 505 "src/Compiler/pars.fsy" : ParsedSigFile)); -//# 3134 "pars.fs" +//# 3204 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_fileNamespaceSpecs in let _3 = parseState.GetInput(3) :?> ParseHelpers.LexerContinuation in Microsoft.FSharp.Core.Operators.box ( ( -//# 506 "src/Compiler/pars.fsy" +//# 508 "src/Compiler/pars.fsy" _1 ) -//# 506 "src/Compiler/pars.fsy" +//# 508 "src/Compiler/pars.fsy" : ParsedSigFile)); -//# 3146 "pars.fs" +//# 3216 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> ParseHelpers.LexerContinuation in Microsoft.FSharp.Core.Operators.box ( ( -//# 512 "src/Compiler/pars.fsy" +//# 514 "src/Compiler/pars.fsy" let emptySigFileFrag = ParsedSigFileFragment.AnonModule([], rhs parseState 1) ParsedSigFile([], [emptySigFileFrag]) ) -//# 512 "src/Compiler/pars.fsy" +//# 514 "src/Compiler/pars.fsy" : ParsedSigFile)); -//# 3158 "pars.fs" +//# 3228 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_moduleKeyword in let _2 = parseState.GetInput(2) :?> 'gentype_opt_attributes in @@ -3165,46 +3235,94 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 519 "src/Compiler/pars.fsy" +//# 521 "src/Compiler/pars.fsy" if not (isNil _2) then parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.AttributesToRightOfModuleKeyword (rhs parseState 4) let mModule = rhs parseState 1 mModule, _4, _5.LongIdent, _3, _2 ) -//# 519 "src/Compiler/pars.fsy" +//# 521 "src/Compiler/pars.fsy" + : 'gentype_moduleIntro)); +//# 3246 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> 'gentype_moduleKeyword in + let _2 = parseState.GetInput(2) :?> 'gentype_opt_attributes in + let _3 = parseState.GetInput(3) :?> 'gentype_opt_access in + let _4 = parseState.GetInput(4) :?> 'gentype_opt_rec in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 527 "src/Compiler/pars.fsy" + if not (isNil _2) then + parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.AttributesToRightOfModuleKeyword (rhs parseState 4) + let mModule = rhs parseState 1 + mModule, _4, [], _3, _2 + ) +//# 527 "src/Compiler/pars.fsy" + : 'gentype_moduleIntro)); +//# 3263 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> 'gentype_moduleKeyword in + let _2 = parseState.GetInput(2) :?> 'gentype_opt_attributes in + let _3 = parseState.GetInput(3) :?> 'gentype_opt_access in + let _4 = parseState.GetInput(4) :?> 'gentype_opt_rec in + let _5 = parseState.GetInput(5) :?> 'gentype_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 533 "src/Compiler/pars.fsy" + if not (isNil _2) then + parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.AttributesToRightOfModuleKeyword (rhs parseState 4) + let mModule = rhs parseState 1 + mModule, _4, [], _3, _2 + ) +//# 533 "src/Compiler/pars.fsy" : 'gentype_moduleIntro)); -//# 3176 "pars.fs" +//# 3281 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_opt_rec in let _3 = parseState.GetInput(3) :?> SynLongIdent in Microsoft.FSharp.Core.Operators.box ( ( -//# 528 "src/Compiler/pars.fsy" +//# 541 "src/Compiler/pars.fsy" let mNamespace = rhs parseState 1 mNamespace, _2, _3.LongIdent, grabXmlDoc(parseState, [], 1) ) -//# 528 "src/Compiler/pars.fsy" +//# 541 "src/Compiler/pars.fsy" + : 'gentype_namespaceIntro)); +//# 3294 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = parseState.GetInput(2) :?> 'gentype_opt_rec in + let _3 = parseState.GetInput(3) :?> 'gentype_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 545 "src/Compiler/pars.fsy" + let mNamespace = rhs parseState 1 + mNamespace, _2, [], grabXmlDoc(parseState, [], 1) + ) +//# 545 "src/Compiler/pars.fsy" : 'gentype_namespaceIntro)); -//# 3189 "pars.fs" +//# 3307 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_fileModuleSpec in Microsoft.FSharp.Core.Operators.box ( ( -//# 535 "src/Compiler/pars.fsy" +//# 552 "src/Compiler/pars.fsy" ParsedSigFile([], [ (_1 (None, false, [], PreXmlDoc.Empty)) ]) ) -//# 535 "src/Compiler/pars.fsy" +//# 552 "src/Compiler/pars.fsy" : 'gentype_fileNamespaceSpecs)); -//# 3200 "pars.fs" +//# 3318 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_fileModuleSpec in let _2 = parseState.GetInput(2) :?> 'gentype_fileNamespaceSpecList in Microsoft.FSharp.Core.Operators.box ( ( -//# 538 "src/Compiler/pars.fsy" +//# 555 "src/Compiler/pars.fsy" // If there are namespaces, the first fileModuleImpl may only contain # directives let decls = match (_1 (None, false, [], PreXmlDoc.Empty)) with @@ -3220,32 +3338,32 @@ let _fsyacc_reductions = lazy [| []) ParsedSigFile(decls, _2) ) -//# 538 "src/Compiler/pars.fsy" +//# 555 "src/Compiler/pars.fsy" : 'gentype_fileNamespaceSpecs)); -//# 3225 "pars.fs" +//# 3343 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_fileNamespaceSpec in let _2 = parseState.GetInput(2) :?> 'gentype_fileNamespaceSpecList in Microsoft.FSharp.Core.Operators.box ( ( -//# 556 "src/Compiler/pars.fsy" +//# 573 "src/Compiler/pars.fsy" _1 :: _2 ) -//# 556 "src/Compiler/pars.fsy" +//# 573 "src/Compiler/pars.fsy" : 'gentype_fileNamespaceSpecList)); -//# 3237 "pars.fs" +//# 3355 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_fileNamespaceSpec in Microsoft.FSharp.Core.Operators.box ( ( -//# 559 "src/Compiler/pars.fsy" +//# 576 "src/Compiler/pars.fsy" [_1] ) -//# 559 "src/Compiler/pars.fsy" +//# 576 "src/Compiler/pars.fsy" : 'gentype_fileNamespaceSpecList)); -//# 3248 "pars.fs" +//# 3366 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_namespaceIntro in let _2 = parseState.GetInput(2) :?> 'gentype_deprecated_opt_equals in @@ -3253,13 +3371,13 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 563 "src/Compiler/pars.fsy" +//# 580 "src/Compiler/pars.fsy" let mNamespace, isRec, path, xml = _1 _3 (Some mNamespace, isRec, path, xml) ) -//# 563 "src/Compiler/pars.fsy" +//# 580 "src/Compiler/pars.fsy" : 'gentype_fileNamespaceSpec)); -//# 3262 "pars.fs" +//# 3380 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -3268,7 +3386,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 570 "src/Compiler/pars.fsy" +//# 587 "src/Compiler/pars.fsy" if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2)) let m2 = rhs parseState 3 let mDeclsAndAttrs = (List.map (fun (a: SynAttributeList) -> a.Range) _1) @ (List.map (fun (d: SynModuleSigDecl) -> d.Range) _4) @@ -3281,22 +3399,22 @@ let _fsyacc_reductions = lazy [| let trivia: SynModuleOrNamespaceSigTrivia = { LeadingKeyword = SynModuleOrNamespaceLeadingKeyword.Module mModule } ParsedSigFileFragment.NamedModule(SynModuleOrNamespaceSig(lid, (isRec || isRec2), SynModuleOrNamespaceKind.NamedModule, _4, xmlDoc, _1 @ attribs2, vis, m, trivia))) ) -//# 570 "src/Compiler/pars.fsy" +//# 587 "src/Compiler/pars.fsy" : 'gentype_fileModuleSpec)); -//# 3286 "pars.fs" +//# 3404 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_moduleSpfnsPossiblyEmptyBlock in Microsoft.FSharp.Core.Operators.box ( ( -//# 583 "src/Compiler/pars.fsy" +//# 600 "src/Compiler/pars.fsy" let m = (rhs parseState 1) (fun (mNamespaceOpt, isRec, path, xml) -> match path with | [] -> ParsedSigFileFragment.AnonModule(_1, m) | _ -> let lastDeclRange = List.tryLast _1 |> Option.map (fun decl -> decl.Range) |> Option.defaultValue (rhs parseState 1) - let m = mkRange lastDeclRange.FileName (lhs parseState).Start lastDeclRange.End + let m = withStart (lhs parseState).Start lastDeclRange xml.MarkAsInvalid() let trivia: SynModuleOrNamespaceSigTrivia = match mNamespaceOpt with @@ -3304,20 +3422,20 @@ let _fsyacc_reductions = lazy [| | Some mNamespace -> { LeadingKeyword = SynModuleOrNamespaceLeadingKeyword.Namespace mNamespace } ParsedSigFileFragment.NamespaceFragment(path, isRec, SynModuleOrNamespaceKind.DeclaredNamespace, _1, PreXmlDoc.Empty, [], m, trivia)) ) -//# 583 "src/Compiler/pars.fsy" +//# 600 "src/Compiler/pars.fsy" : 'gentype_fileModuleSpec)); -//# 3309 "pars.fs" +//# 3427 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_moduleSpfnsPossiblyEmpty in Microsoft.FSharp.Core.Operators.box ( ( -//# 600 "src/Compiler/pars.fsy" +//# 617 "src/Compiler/pars.fsy" _1 ) -//# 600 "src/Compiler/pars.fsy" +//# 617 "src/Compiler/pars.fsy" : 'gentype_moduleSpfnsPossiblyEmptyBlock)); -//# 3320 "pars.fs" +//# 3438 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_moduleSpfnsPossiblyEmpty in let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in @@ -3325,69 +3443,69 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 603 "src/Compiler/pars.fsy" +//# 620 "src/Compiler/pars.fsy" _2 ) -//# 603 "src/Compiler/pars.fsy" +//# 620 "src/Compiler/pars.fsy" : 'gentype_moduleSpfnsPossiblyEmptyBlock)); -//# 3333 "pars.fs" +//# 3451 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_moduleSpfnsPossiblyEmpty in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 606 "src/Compiler/pars.fsy" +//# 623 "src/Compiler/pars.fsy" // The lex filter ensures we can only get a mismatch in OBLOCKBEGIN/OBLOCKEND tokens if there was some other kind of error, hence we don't need to report this error // reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnClosedBlockInHashLight()) _2 ) -//# 606 "src/Compiler/pars.fsy" +//# 623 "src/Compiler/pars.fsy" : 'gentype_moduleSpfnsPossiblyEmptyBlock)); -//# 3348 "pars.fs" +//# 3466 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in Microsoft.FSharp.Core.Operators.box ( ( -//# 612 "src/Compiler/pars.fsy" +//# 629 "src/Compiler/pars.fsy" [] ) -//# 612 "src/Compiler/pars.fsy" +//# 629 "src/Compiler/pars.fsy" : 'gentype_moduleSpfnsPossiblyEmptyBlock)); -//# 3359 "pars.fs" +//# 3477 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_moduleSpfns in Microsoft.FSharp.Core.Operators.box ( ( -//# 617 "src/Compiler/pars.fsy" +//# 634 "src/Compiler/pars.fsy" _1 ) -//# 617 "src/Compiler/pars.fsy" +//# 634 "src/Compiler/pars.fsy" : 'gentype_moduleSpfnsPossiblyEmpty)); -//# 3370 "pars.fs" +//# 3488 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 620 "src/Compiler/pars.fsy" +//# 637 "src/Compiler/pars.fsy" [] ) -//# 620 "src/Compiler/pars.fsy" +//# 637 "src/Compiler/pars.fsy" : 'gentype_moduleSpfnsPossiblyEmpty)); -//# 3380 "pars.fs" +//# 3498 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 623 "src/Compiler/pars.fsy" +//# 640 "src/Compiler/pars.fsy" [] ) -//# 623 "src/Compiler/pars.fsy" +//# 640 "src/Compiler/pars.fsy" : 'gentype_moduleSpfnsPossiblyEmpty)); -//# 3390 "pars.fs" +//# 3508 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_moduleSpfn in let _2 = parseState.GetInput(2) :?> 'gentype_opt_topSeparators in @@ -3395,58 +3513,58 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 628 "src/Compiler/pars.fsy" +//# 645 "src/Compiler/pars.fsy" _1 :: _3 ) -//# 628 "src/Compiler/pars.fsy" +//# 645 "src/Compiler/pars.fsy" : 'gentype_moduleSpfns)); -//# 3403 "pars.fs" +//# 3521 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_topSeparators in let _3 = parseState.GetInput(3) :?> 'gentype_moduleSpfns in Microsoft.FSharp.Core.Operators.box ( ( -//# 631 "src/Compiler/pars.fsy" +//# 648 "src/Compiler/pars.fsy" (* silent recovery *) _3 ) -//# 631 "src/Compiler/pars.fsy" +//# 648 "src/Compiler/pars.fsy" : 'gentype_moduleSpfns)); -//# 3415 "pars.fs" +//# 3533 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_moduleSpfn in let _2 = parseState.GetInput(2) :?> 'gentype_opt_topSeparators in Microsoft.FSharp.Core.Operators.box ( ( -//# 634 "src/Compiler/pars.fsy" +//# 651 "src/Compiler/pars.fsy" [_1] ) -//# 634 "src/Compiler/pars.fsy" +//# 651 "src/Compiler/pars.fsy" : 'gentype_moduleSpfns)); -//# 3427 "pars.fs" +//# 3545 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_hashDirective in Microsoft.FSharp.Core.Operators.box ( ( -//# 639 "src/Compiler/pars.fsy" +//# 656 "src/Compiler/pars.fsy" SynModuleSigDecl.HashDirective(_1, rhs2 parseState 1 1) ) -//# 639 "src/Compiler/pars.fsy" +//# 656 "src/Compiler/pars.fsy" : 'gentype_moduleSpfn)); -//# 3438 "pars.fs" +//# 3556 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_valSpfn in Microsoft.FSharp.Core.Operators.box ( ( -//# 642 "src/Compiler/pars.fsy" +//# 659 "src/Compiler/pars.fsy" _1 ) -//# 642 "src/Compiler/pars.fsy" +//# 659 "src/Compiler/pars.fsy" : 'gentype_moduleSpfn)); -//# 3449 "pars.fs" +//# 3567 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -3456,7 +3574,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 645 "src/Compiler/pars.fsy" +//# 662 "src/Compiler/pars.fsy" if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2)) let mModule, isRec, path, vis, attribs2 = _3 if isRec then raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsInvalidUseOfRec()) @@ -3470,9 +3588,9 @@ let _fsyacc_reductions = lazy [| let m = unionRanges mModule lid.Range SynModuleSigDecl.ModuleAbbrev(List.head path, lid.LongIdent, m) ) -//# 645 "src/Compiler/pars.fsy" +//# 662 "src/Compiler/pars.fsy" : 'gentype_moduleSpfn)); -//# 3475 "pars.fs" +//# 3593 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -3482,22 +3600,24 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 659 "src/Compiler/pars.fsy" +//# 676 "src/Compiler/pars.fsy" let mModule, isRec, path, vis, attribs2 = _3 let xmlDoc = grabXmlDoc(parseState, _1, 1) if not (isSingleton path) then raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsModuleDefnMustBeSimpleName()) if isRec then raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsInvalidUseOfRec()) let info = SynComponentInfo(_1 @ attribs2, None, [], path, xmlDoc, false, vis, rhs parseState 3) if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2)) - let m = (rhs2 parseState 1 4, _5) + let decls, mOptEnd = _5 + let m = (rhs2 parseState 1 4, decls) ||> unionRangeWithListBy (fun (d: SynModuleSigDecl) -> d.Range) |> unionRangeWithXmlDoc xmlDoc + let m = match mOptEnd with | None -> m | Some mEnd -> unionRanges m mEnd let trivia: SynModuleSigDeclNestedModuleTrivia = { ModuleKeyword = Some mModule; EqualsRange = _4 } - SynModuleSigDecl.NestedModule(info, isRec, _5, m, trivia) + SynModuleSigDecl.NestedModule(info, isRec, decls, m, trivia) ) -//# 659 "src/Compiler/pars.fsy" +//# 676 "src/Compiler/pars.fsy" : 'gentype_moduleSpfn)); -//# 3500 "pars.fs" +//# 3620 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -3505,7 +3625,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 672 "src/Compiler/pars.fsy" +//# 691 "src/Compiler/pars.fsy" let mModule, isRec, path, vis, attribs2 = _3 let xmlDoc = grabXmlDoc(parseState, _1, 1) if not (isSingleton path) then raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsModuleDefnMustBeSimpleName()) @@ -3516,9 +3636,9 @@ let _fsyacc_reductions = lazy [| let trivia: SynModuleSigDeclNestedModuleTrivia = { ModuleKeyword = Some mModule; EqualsRange = None } SynModuleSigDecl.NestedModule(info, isRec, [], mWhole, trivia) ) -//# 672 "src/Compiler/pars.fsy" +//# 691 "src/Compiler/pars.fsy" : 'gentype_moduleSpfn)); -//# 3521 "pars.fs" +//# 3641 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -3528,7 +3648,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 683 "src/Compiler/pars.fsy" +//# 702 "src/Compiler/pars.fsy" if Option.isSome _2 then errorR (Error (FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier (), rhs parseState 2)) let leadingKeyword = SynTypeDefnLeadingKeyword.Type(rhs parseState 3) let (SynTypeDefnSig (SynComponentInfo (cas, a, cs, b, _xmlDoc, d, d2, d3), typeRepr, members, range, trivia)) = _4 leadingKeyword @@ -3543,9 +3663,9 @@ let _fsyacc_reductions = lazy [| let m = (mDefn, _5) ||> unionRangeWithListBy (fun (a: SynTypeDefnSig) -> a.Range) |> unionRanges (rhs parseState 3) SynModuleSigDecl.Types(tc :: _5, m) ) -//# 683 "src/Compiler/pars.fsy" +//# 702 "src/Compiler/pars.fsy" : 'gentype_moduleSpfn)); -//# 3548 "pars.fs" +//# 3668 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -3553,7 +3673,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 698 "src/Compiler/pars.fsy" +//# 717 "src/Compiler/pars.fsy" if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2)) let (SynExceptionSig(SynExceptionDefnRepr(cas, a, b, c, d, d2), withKeyword, members, range)) = _3 let xmlDoc = grabXmlDoc(parseState, _1, 1) @@ -3562,20 +3682,20 @@ let _fsyacc_reductions = lazy [| let synExnDefn = SynExceptionSig(SynExceptionDefnRepr(_1@cas, a, b, xmlDoc, d, mDefnReprWithAttributes), withKeyword, members, mWhole) SynModuleSigDecl.Exception(synExnDefn, mWhole) ) -//# 698 "src/Compiler/pars.fsy" +//# 717 "src/Compiler/pars.fsy" : 'gentype_moduleSpfn)); -//# 3567 "pars.fs" +//# 3687 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_openDecl in Microsoft.FSharp.Core.Operators.box ( ( -//# 707 "src/Compiler/pars.fsy" - SynModuleSigDecl.Open(_1, (rhs parseState 1)) +//# 726 "src/Compiler/pars.fsy" + SynModuleSigDecl.Open _1 ) -//# 707 "src/Compiler/pars.fsy" +//# 726 "src/Compiler/pars.fsy" : 'gentype_moduleSpfn)); -//# 3578 "pars.fs" +//# 3698 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -3590,7 +3710,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 711 "src/Compiler/pars.fsy" +//# 730 "src/Compiler/pars.fsy" if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2)) let attr1, attr2, isInline, isMutable, vis2, id, doc, explicitValTyparDecls, (ty, arity), (mEquals, konst: SynExpr option) = (_1), (_4), (Option.isSome _5), (_6), (_7), (_8), grabXmlDoc(parseState, _1, 1), (_9), (_11), (_12) if not (isNil attr2) then errorR(Deprecated(FSComp.SR.parsAttributesMustComeBeforeVal(), rhs parseState 4)) @@ -3607,31 +3727,31 @@ let _fsyacc_reductions = lazy [| SynModuleSigDecl.Val(valSpfn, m) ) -//# 711 "src/Compiler/pars.fsy" +//# 730 "src/Compiler/pars.fsy" : 'gentype_valSpfn)); -//# 3612 "pars.fs" +//# 3732 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 730 "src/Compiler/pars.fsy" +//# 749 "src/Compiler/pars.fsy" None, None ) -//# 730 "src/Compiler/pars.fsy" +//# 749 "src/Compiler/pars.fsy" : 'gentype_optLiteralValueSpfn)); -//# 3622 "pars.fs" +//# 3742 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 733 "src/Compiler/pars.fsy" +//# 752 "src/Compiler/pars.fsy" let mEquals = rhs parseState 1 Some(mEquals), Some(_2) ) -//# 733 "src/Compiler/pars.fsy" +//# 752 "src/Compiler/pars.fsy" : 'gentype_optLiteralValueSpfn)); -//# 3634 "pars.fs" +//# 3754 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> SynExpr in let _4 = parseState.GetInput(4) :?> 'gentype_oblockend in @@ -3639,25 +3759,25 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 737 "src/Compiler/pars.fsy" +//# 756 "src/Compiler/pars.fsy" let mEquals = rhs parseState 1 Some(mEquals), Some(_3) ) -//# 737 "src/Compiler/pars.fsy" +//# 756 "src/Compiler/pars.fsy" : 'gentype_optLiteralValueSpfn)); -//# 3648 "pars.fs" +//# 3768 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_moduleSpfns in let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in Microsoft.FSharp.Core.Operators.box ( ( -//# 746 "src/Compiler/pars.fsy" - _2 +//# 765 "src/Compiler/pars.fsy" + _2, None ) -//# 746 "src/Compiler/pars.fsy" +//# 765 "src/Compiler/pars.fsy" : 'gentype_moduleSpecBlock)); -//# 3660 "pars.fs" +//# 3780 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_sigOrBegin in let _3 = parseState.GetInput(3) :?> 'gentype_moduleSpfnsPossiblyEmpty in @@ -3665,31 +3785,33 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 750 "src/Compiler/pars.fsy" - _3 +//# 769 "src/Compiler/pars.fsy" + let mEnd = rhs parseState 4 + _3, Some mEnd ) -//# 750 "src/Compiler/pars.fsy" +//# 769 "src/Compiler/pars.fsy" : 'gentype_moduleSpecBlock)); -//# 3673 "pars.fs" +//# 3794 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_sigOrBegin in let _2 = parseState.GetInput(2) :?> 'gentype_moduleSpfnsPossiblyEmpty in Microsoft.FSharp.Core.Operators.box ( ( -//# 754 "src/Compiler/pars.fsy" - _2 +//# 774 "src/Compiler/pars.fsy" + let mEnd = rhs parseState 3 + _2, Some mEnd ) -//# 754 "src/Compiler/pars.fsy" +//# 774 "src/Compiler/pars.fsy" : 'gentype_moduleSpecBlock)); -//# 3685 "pars.fs" +//# 3807 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_tyconSpfn in let _3 = parseState.GetInput(3) :?> SynTypeDefnSig list in Microsoft.FSharp.Core.Operators.box ( ( -//# 759 "src/Compiler/pars.fsy" +//# 780 "src/Compiler/pars.fsy" let xmlDoc = grabXmlDoc(parseState, [], 1) let tyconSpfn = let leadingKeyword = SynTypeDefnLeadingKeyword.And(rhs parseState 1) @@ -3706,40 +3828,40 @@ let _fsyacc_reductions = lazy [| SynTypeDefnSig(componentInfo, typeRepr, members, range, trivia) tyconSpfn :: _3 ) -//# 759 "src/Compiler/pars.fsy" +//# 780 "src/Compiler/pars.fsy" : SynTypeDefnSig list)); -//# 3711 "pars.fs" +//# 3833 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 777 "src/Compiler/pars.fsy" +//# 798 "src/Compiler/pars.fsy" [] ) -//# 777 "src/Compiler/pars.fsy" +//# 798 "src/Compiler/pars.fsy" : SynTypeDefnSig list)); -//# 3721 "pars.fs" +//# 3843 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typeNameInfo in let _3 = parseState.GetInput(3) :?> 'gentype_tyconSpfnRhsBlock in Microsoft.FSharp.Core.Operators.box ( ( -//# 783 "src/Compiler/pars.fsy" +//# 804 "src/Compiler/pars.fsy" let mLhs = rhs parseState 1 let mEquals = rhs parseState 2 fun leadingKeyword -> _3 leadingKeyword mLhs _1 (Some mEquals) ) -//# 783 "src/Compiler/pars.fsy" +//# 804 "src/Compiler/pars.fsy" : 'gentype_tyconSpfn)); -//# 3735 "pars.fs" +//# 3857 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typeNameInfo in let _2 = parseState.GetInput(2) :?> 'gentype_opt_classSpfn in Microsoft.FSharp.Core.Operators.box ( ( -//# 787 "src/Compiler/pars.fsy" +//# 808 "src/Compiler/pars.fsy" let mWithKwd, members = _2 let (SynComponentInfo(range = range)) = _1 let m = @@ -3754,9 +3876,9 @@ let _fsyacc_reductions = lazy [| let trivia: SynTypeDefnSigTrivia = { LeadingKeyword = leadingKeyword; EqualsRange = None; WithKeyword = mWithKwd } SynTypeDefnSig(_1, SynTypeDefnSigRepr.Simple(SynTypeDefnSimpleRepr.None m, m), members, m, trivia) ) -//# 787 "src/Compiler/pars.fsy" +//# 808 "src/Compiler/pars.fsy" : 'gentype_tyconSpfn)); -//# 3759 "pars.fs" +//# 3881 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_tyconSpfnRhs in let _3 = parseState.GetInput(3) :?> 'gentype_opt_OBLOCKSEP in @@ -3767,51 +3889,51 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 813 "src/Compiler/pars.fsy" +//# 834 "src/Compiler/pars.fsy" let m = lhs parseState (fun leadingKeyword mLhs nameInfo mEquals -> let members = _4 @ (snd _5) _2 leadingKeyword mLhs nameInfo mEquals (checkForMultipleAugmentations m members (snd _7))) ) -//# 813 "src/Compiler/pars.fsy" +//# 834 "src/Compiler/pars.fsy" : 'gentype_tyconSpfnRhsBlock)); -//# 3778 "pars.fs" +//# 3900 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_tyconSpfnRhs in let _2 = parseState.GetInput(2) :?> 'gentype_opt_classSpfn in Microsoft.FSharp.Core.Operators.box ( ( -//# 819 "src/Compiler/pars.fsy" +//# 840 "src/Compiler/pars.fsy" let m = lhs parseState (fun leadingKeyword mLhs nameInfo mEquals -> let _, members = _2 _1 leadingKeyword mLhs nameInfo mEquals members) ) -//# 819 "src/Compiler/pars.fsy" +//# 840 "src/Compiler/pars.fsy" : 'gentype_tyconSpfnRhsBlock)); -//# 3793 "pars.fs" +//# 3915 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynTypeDefnSimpleRepr in Microsoft.FSharp.Core.Operators.box ( ( -//# 828 "src/Compiler/pars.fsy" +//# 849 "src/Compiler/pars.fsy" (fun leadingKeyword mLhs nameInfo mEquals augmentation -> let declRange = unionRanges mLhs _1.Range let mWhole = (declRange, augmentation) ||> unionRangeWithListBy (fun (mem: SynMemberSig) -> mem.Range) let trivia: SynTypeDefnSigTrivia = { LeadingKeyword = leadingKeyword; WithKeyword = None; EqualsRange = mEquals } SynTypeDefnSig(nameInfo, SynTypeDefnSigRepr.Simple(_1, _1.Range), augmentation, mWhole, trivia)) ) -//# 828 "src/Compiler/pars.fsy" +//# 849 "src/Compiler/pars.fsy" : 'gentype_tyconSpfnRhs)); -//# 3808 "pars.fs" +//# 3930 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_tyconClassSpfn in Microsoft.FSharp.Core.Operators.box ( ( -//# 835 "src/Compiler/pars.fsy" +//# 856 "src/Compiler/pars.fsy" let needsCheck, (kind, decls) = _1 let objectModelRange = match decls with @@ -3827,15 +3949,15 @@ let _fsyacc_reductions = lazy [| let trivia: SynTypeDefnSigTrivia = { LeadingKeyword = leadingKeyword; WithKeyword = None; EqualsRange = mEquals } SynTypeDefnSig(nameInfo, SynTypeDefnSigRepr.ObjectModel(kind, decls, objectModelRange), augmentation, mWhole, trivia)) ) -//# 835 "src/Compiler/pars.fsy" +//# 856 "src/Compiler/pars.fsy" : 'gentype_tyconSpfnRhs)); -//# 3832 "pars.fs" +//# 3954 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_topType in Microsoft.FSharp.Core.Operators.box ( ( -//# 853 "src/Compiler/pars.fsy" +//# 874 "src/Compiler/pars.fsy" let m = lhs parseState let ty, arity = _3 let flags = AbstractMemberFlags true SynMemberKind.Member @@ -3847,33 +3969,33 @@ let _fsyacc_reductions = lazy [| let trivia: SynTypeDefnSigTrivia = { LeadingKeyword = leadingKeyword; WithKeyword = None; EqualsRange = mEquals } SynTypeDefnSig(nameInfo, SynTypeDefnSigRepr.ObjectModel(SynTypeDefnKind.Delegate(ty, arity), [invoke], m), [], mWhole, trivia)) ) -//# 853 "src/Compiler/pars.fsy" +//# 874 "src/Compiler/pars.fsy" : 'gentype_tyconSpfnRhs)); -//# 3852 "pars.fs" +//# 3974 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_classSpfnBlockKindUnspecified in Microsoft.FSharp.Core.Operators.box ( ( -//# 868 "src/Compiler/pars.fsy" +//# 889 "src/Compiler/pars.fsy" let needsCheck, decls = _1 needsCheck, (SynTypeDefnKind.Unspecified, decls) ) -//# 868 "src/Compiler/pars.fsy" +//# 889 "src/Compiler/pars.fsy" : 'gentype_tyconClassSpfn)); -//# 3864 "pars.fs" +//# 3986 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_classOrInterfaceOrStruct in let _2 = parseState.GetInput(2) :?> 'gentype_classSpfnBlock in Microsoft.FSharp.Core.Operators.box ( ( -//# 872 "src/Compiler/pars.fsy" +//# 893 "src/Compiler/pars.fsy" false, (_1, _2) ) -//# 872 "src/Compiler/pars.fsy" +//# 893 "src/Compiler/pars.fsy" : 'gentype_tyconClassSpfn)); -//# 3876 "pars.fs" +//# 3998 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_classOrInterfaceOrStruct in let _2 = parseState.GetInput(2) :?> 'gentype_classSpfnBlock in @@ -3881,130 +4003,130 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 875 "src/Compiler/pars.fsy" +//# 896 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedClassInterfaceOrStruct()) false, (_1, _2) ) -//# 875 "src/Compiler/pars.fsy" +//# 896 "src/Compiler/pars.fsy" : 'gentype_tyconClassSpfn)); -//# 3890 "pars.fs" +//# 4012 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_classOrInterfaceOrStruct in Microsoft.FSharp.Core.Operators.box ( ( -//# 879 "src/Compiler/pars.fsy" +//# 900 "src/Compiler/pars.fsy" // silent recovery false, (_1, []) ) -//# 879 "src/Compiler/pars.fsy" +//# 900 "src/Compiler/pars.fsy" : 'gentype_tyconClassSpfn)); -//# 3902 "pars.fs" +//# 4024 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_classSpfnMembers in let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in Microsoft.FSharp.Core.Operators.box ( ( -//# 886 "src/Compiler/pars.fsy" +//# 907 "src/Compiler/pars.fsy" true, _2 ) -//# 886 "src/Compiler/pars.fsy" +//# 907 "src/Compiler/pars.fsy" : 'gentype_classSpfnBlockKindUnspecified)); -//# 3914 "pars.fs" +//# 4036 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_classSpfnMembers in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 889 "src/Compiler/pars.fsy" +//# 910 "src/Compiler/pars.fsy" if not _3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileTypeSignature()) false, _2 ) -//# 889 "src/Compiler/pars.fsy" +//# 910 "src/Compiler/pars.fsy" : 'gentype_classSpfnBlockKindUnspecified)); -//# 3927 "pars.fs" +//# 4049 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_classSpfnBlock in Microsoft.FSharp.Core.Operators.box ( ( -//# 894 "src/Compiler/pars.fsy" +//# 915 "src/Compiler/pars.fsy" false, _2 ) -//# 894 "src/Compiler/pars.fsy" +//# 915 "src/Compiler/pars.fsy" : 'gentype_classSpfnBlockKindUnspecified)); -//# 3938 "pars.fs" +//# 4060 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_classSpfnBlock in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 897 "src/Compiler/pars.fsy" +//# 918 "src/Compiler/pars.fsy" false, _2 ) -//# 897 "src/Compiler/pars.fsy" +//# 918 "src/Compiler/pars.fsy" : 'gentype_classSpfnBlockKindUnspecified)); -//# 3950 "pars.fs" +//# 4072 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_classSpfnMembers in let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in Microsoft.FSharp.Core.Operators.box ( ( -//# 903 "src/Compiler/pars.fsy" +//# 924 "src/Compiler/pars.fsy" _2 ) -//# 903 "src/Compiler/pars.fsy" +//# 924 "src/Compiler/pars.fsy" : 'gentype_classSpfnBlock)); -//# 3962 "pars.fs" +//# 4084 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_classSpfnMembers in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 906 "src/Compiler/pars.fsy" +//# 927 "src/Compiler/pars.fsy" if not _3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileTypeSignature()) _2 ) -//# 906 "src/Compiler/pars.fsy" +//# 927 "src/Compiler/pars.fsy" : 'gentype_classSpfnBlock)); -//# 3975 "pars.fs" +//# 4097 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_classSpfnMembers in Microsoft.FSharp.Core.Operators.box ( ( -//# 909 "src/Compiler/pars.fsy" +//# 930 "src/Compiler/pars.fsy" _1 ) -//# 909 "src/Compiler/pars.fsy" +//# 930 "src/Compiler/pars.fsy" : 'gentype_classSpfnBlock)); -//# 3986 "pars.fs" +//# 4108 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_classSpfnMembersAtLeastOne in Microsoft.FSharp.Core.Operators.box ( ( -//# 914 "src/Compiler/pars.fsy" +//# 935 "src/Compiler/pars.fsy" _1 ) -//# 914 "src/Compiler/pars.fsy" +//# 935 "src/Compiler/pars.fsy" : 'gentype_classSpfnMembers)); -//# 3997 "pars.fs" +//# 4119 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 917 "src/Compiler/pars.fsy" +//# 938 "src/Compiler/pars.fsy" [] ) -//# 917 "src/Compiler/pars.fsy" +//# 938 "src/Compiler/pars.fsy" : 'gentype_classSpfnMembers)); -//# 4007 "pars.fs" +//# 4129 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_classMemberSpfn in let _2 = parseState.GetInput(2) :?> 'gentype_opt_seps in @@ -4012,12 +4134,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 923 "src/Compiler/pars.fsy" +//# 944 "src/Compiler/pars.fsy" _1 :: _3 ) -//# 923 "src/Compiler/pars.fsy" +//# 944 "src/Compiler/pars.fsy" : 'gentype_classSpfnMembersAtLeastOne)); -//# 4020 "pars.fs" +//# 4142 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -4032,7 +4154,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 929 "src/Compiler/pars.fsy" +//# 950 "src/Compiler/pars.fsy" if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2)) let isInline, doc, vis2, id, explicitValTyparDecls, (ty, arity), (mEquals, optLiteralValue) = (Option.isSome _4), grabXmlDoc(parseState, _1, 1), _5, _6, _7, _9, _11 let mWith, (getSet, getSetRangeOpt) = _10 @@ -4055,9 +4177,9 @@ let _fsyacc_reductions = lazy [| let trivia: SynMemberSigMemberTrivia = { GetSetKeywords = getSetRangeOpt } SynMemberSig.Member(valSpfn, flags, mWhole, trivia) ) -//# 929 "src/Compiler/pars.fsy" +//# 950 "src/Compiler/pars.fsy" : 'gentype_classMemberSpfn)); -//# 4060 "pars.fs" +//# 4182 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -4066,13 +4188,13 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 953 "src/Compiler/pars.fsy" +//# 974 "src/Compiler/pars.fsy" if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2)) SynMemberSig.Interface(_4, unionRanges (rhs parseState 3) (_4).Range) ) -//# 953 "src/Compiler/pars.fsy" +//# 974 "src/Compiler/pars.fsy" : 'gentype_classMemberSpfn)); -//# 4075 "pars.fs" +//# 4197 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -4080,13 +4202,29 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 957 "src/Compiler/pars.fsy" - if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2)) - SynMemberSig.Inherit(_4, unionRanges (rhs parseState 3) (_4).Range) +//# 978 "src/Compiler/pars.fsy" + if Option.isSome _2 then errorR (Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier (), rhs parseState 2)) + SynMemberSig.Inherit(_4, unionRanges (rhs parseState 1) _4.Range) + ) +//# 978 "src/Compiler/pars.fsy" + : 'gentype_classMemberSpfn)); +//# 4211 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in + let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in + let _4 = parseState.GetInput(4) :?> 'gentype_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 982 "src/Compiler/pars.fsy" + if Option.isSome _2 then errorR (Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier (), rhs parseState 2)) + let mInherit = rhs parseState 3 + let ty = SynType.FromParseError(mInherit.EndRange) + SynMemberSig.Inherit(ty, unionRanges (rhs parseState 1) mInherit) ) -//# 957 "src/Compiler/pars.fsy" +//# 982 "src/Compiler/pars.fsy" : 'gentype_classMemberSpfn)); -//# 4089 "pars.fs" +//# 4227 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -4094,7 +4232,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 961 "src/Compiler/pars.fsy" +//# 988 "src/Compiler/pars.fsy" let mWhole = rhs2 parseState 1 4 if Option.isSome _2 then errorR (Error (FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier (), rhs parseState 2)) let mVal = rhs parseState 3 @@ -4102,9 +4240,9 @@ let _fsyacc_reductions = lazy [| let mWhole = unionRangeWithXmlDoc xmlDoc mWhole SynMemberSig.ValField(field, mWhole) ) -//# 961 "src/Compiler/pars.fsy" +//# 988 "src/Compiler/pars.fsy" : 'gentype_classMemberSpfn)); -//# 4107 "pars.fs" +//# 4245 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -4112,7 +4250,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 969 "src/Compiler/pars.fsy" +//# 996 "src/Compiler/pars.fsy" let mWhole = rhs2 parseState 1 5 if Option.isSome _2 then errorR (Error (FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier (), rhs parseState 2)) let mStatic = rhs parseState 3 @@ -4121,9 +4259,9 @@ let _fsyacc_reductions = lazy [| let mWhole = unionRangeWithXmlDoc xmlDoc mWhole SynMemberSig.ValField(field, mWhole) ) -//# 969 "src/Compiler/pars.fsy" +//# 996 "src/Compiler/pars.fsy" : 'gentype_classMemberSpfn)); -//# 4126 "pars.fs" +//# 4264 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -4132,14 +4270,14 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 978 "src/Compiler/pars.fsy" +//# 1005 "src/Compiler/pars.fsy" let leadingKeyword = SynTypeDefnLeadingKeyword.StaticType(rhs parseState 3, rhs parseState 4) if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2)) SynMemberSig.NestedType(_5 leadingKeyword, rhs2 parseState 1 5) ) -//# 978 "src/Compiler/pars.fsy" +//# 1005 "src/Compiler/pars.fsy" : 'gentype_classMemberSpfn)); -//# 4142 "pars.fs" +//# 4280 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -4147,7 +4285,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 983 "src/Compiler/pars.fsy" +//# 1010 "src/Compiler/pars.fsy" let vis, doc, (ty, valSynInfo) = _2, grabXmlDoc(parseState, _1, 1), _5 let mNew = rhs parseState 3 let m = unionRanges (rhs parseState 1) ty.Range |> unionRangeWithXmlDoc doc @@ -4156,62 +4294,62 @@ let _fsyacc_reductions = lazy [| let valSpfn = SynValSig (_1, (SynIdent(mkSynId (rhs parseState 3) "new", None)), noInferredTypars, ty, valSynInfo, isInline, false, doc, vis, None, m, trivia) SynMemberSig.Member(valSpfn, CtorMemberFlags, m, SynMemberSigMemberTrivia.Zero) ) -//# 983 "src/Compiler/pars.fsy" +//# 1010 "src/Compiler/pars.fsy" : 'gentype_classMemberSpfn)); -//# 4161 "pars.fs" +//# 4299 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 995 "src/Compiler/pars.fsy" +//# 1022 "src/Compiler/pars.fsy" None, (SynMemberKind.Member, None) ) -//# 995 "src/Compiler/pars.fsy" +//# 1022 "src/Compiler/pars.fsy" : 'gentype_classMemberSpfnGetSet)); -//# 4171 "pars.fs" +//# 4309 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_classMemberSpfnGetSetElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 998 "src/Compiler/pars.fsy" +//# 1025 "src/Compiler/pars.fsy" let mWith = rhs parseState 1 Some mWith, _2 ) -//# 998 "src/Compiler/pars.fsy" +//# 1025 "src/Compiler/pars.fsy" : 'gentype_classMemberSpfnGetSet)); -//# 4183 "pars.fs" +//# 4321 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_classMemberSpfnGetSetElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 1002 "src/Compiler/pars.fsy" +//# 1029 "src/Compiler/pars.fsy" let mWith = rhs parseState 1 Some mWith, _2 ) -//# 1002 "src/Compiler/pars.fsy" +//# 1029 "src/Compiler/pars.fsy" : 'gentype_classMemberSpfnGetSet)); -//# 4195 "pars.fs" +//# 4333 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_classMemberSpfnGetSetElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 1006 "src/Compiler/pars.fsy" +//# 1033 "src/Compiler/pars.fsy" let mWith = rhs parseState 1 reportParseErrorAt mWith (FSComp.SR.parsUnmatchedWith()) Some mWith, _2 ) -//# 1006 "src/Compiler/pars.fsy" +//# 1033 "src/Compiler/pars.fsy" : 'gentype_classMemberSpfnGetSet)); -//# 4208 "pars.fs" +//# 4346 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_nameop in Microsoft.FSharp.Core.Operators.box ( ( -//# 1014 "src/Compiler/pars.fsy" +//# 1041 "src/Compiler/pars.fsy" (let (SynIdent(id:Ident, _)) = _1 if id.idText = "get" then SynMemberKind.PropertyGet, Some(GetSetKeywords.Get id.idRange) @@ -4220,16 +4358,16 @@ let _fsyacc_reductions = lazy [| else raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsGetOrSetRequired())) ) -//# 1014 "src/Compiler/pars.fsy" +//# 1041 "src/Compiler/pars.fsy" : 'gentype_classMemberSpfnGetSetElements)); -//# 4225 "pars.fs" +//# 4363 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_nameop in let _3 = parseState.GetInput(3) :?> 'gentype_nameop in Microsoft.FSharp.Core.Operators.box ( ( -//# 1023 "src/Compiler/pars.fsy" +//# 1050 "src/Compiler/pars.fsy" let (SynIdent(id, _)) = _1 let (SynIdent(id2, _)) = _3 if not ((id.idText = "get" && id2.idText = "set") || @@ -4240,121 +4378,152 @@ let _fsyacc_reductions = lazy [| else SynMemberKind.PropertyGetSet, Some(GetSetKeywords.GetSet(id2.idRange, id.idRange)) ) -//# 1023 "src/Compiler/pars.fsy" +//# 1050 "src/Compiler/pars.fsy" : 'gentype_classMemberSpfnGetSetElements)); -//# 4245 "pars.fs" +//# 4383 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> 'gentype_nameop in + let _3 = parseState.GetInput(3) :?> 'gentype_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 1062 "src/Compiler/pars.fsy" + (let (SynIdent(id:Ident, _)) = _1 + if id.idText = "get" then + SynMemberKind.PropertyGet, Some(GetSetKeywords.Get id.idRange) + else if id.idText = "set" then + SynMemberKind.PropertySet, Some(GetSetKeywords.Set id.idRange) + else + raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsGetOrSetRequired())) + ) +//# 1062 "src/Compiler/pars.fsy" + : 'gentype_classMemberSpfnGetSetElements)); +//# 4401 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = parseState.GetInput(2) :?> 'gentype_oblockend in + let _3 = parseState.GetInput(3) :?> range in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 1071 "src/Compiler/pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsIdentifierExpected()) + SynMemberKind.Member, None + ) +//# 1071 "src/Compiler/pars.fsy" + : 'gentype_classMemberSpfnGetSetElements)); +//# 4414 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_memberFlags in Microsoft.FSharp.Core.Operators.box ( ( -//# 1035 "src/Compiler/pars.fsy" +//# 1075 "src/Compiler/pars.fsy" _1 ) -//# 1035 "src/Compiler/pars.fsy" +//# 1075 "src/Compiler/pars.fsy" : 'gentype_memberSpecFlags)); -//# 4256 "pars.fs" +//# 4425 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_abstractMemberFlags in Microsoft.FSharp.Core.Operators.box ( ( -//# 1036 "src/Compiler/pars.fsy" +//# 1076 "src/Compiler/pars.fsy" _1 ) -//# 1036 "src/Compiler/pars.fsy" +//# 1076 "src/Compiler/pars.fsy" : 'gentype_memberSpecFlags)); -//# 4267 "pars.fs" +//# 4436 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExceptionDefnRepr in let _2 = parseState.GetInput(2) :?> 'gentype_opt_classSpfn in Microsoft.FSharp.Core.Operators.box ( ( -//# 1042 "src/Compiler/pars.fsy" +//# 1082 "src/Compiler/pars.fsy" let mWithKwd, members = _2 SynExceptionSig(_1, mWithKwd, members, lhs parseState) ) -//# 1042 "src/Compiler/pars.fsy" +//# 1082 "src/Compiler/pars.fsy" : 'gentype_exconSpfn)); -//# 4280 "pars.fs" +//# 4449 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_classSpfnBlock in let _3 = parseState.GetInput(3) :?> 'gentype_declEnd in Microsoft.FSharp.Core.Operators.box ( ( -//# 1049 "src/Compiler/pars.fsy" +//# 1089 "src/Compiler/pars.fsy" let mWithKwd = rhs parseState 1 (Some mWithKwd), _2 ) -//# 1049 "src/Compiler/pars.fsy" +//# 1089 "src/Compiler/pars.fsy" : 'gentype_opt_classSpfn)); -//# 4293 "pars.fs" +//# 4462 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1053 "src/Compiler/pars.fsy" +//# 1093 "src/Compiler/pars.fsy" None, [] ) -//# 1053 "src/Compiler/pars.fsy" +//# 1093 "src/Compiler/pars.fsy" : 'gentype_opt_classSpfn)); -//# 4303 "pars.fs" +//# 4472 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_fileNamespaceImpls in let _2 = parseState.GetInput(2) :?> ParseHelpers.LexerContinuation in Microsoft.FSharp.Core.Operators.box ( ( -//# 1062 "src/Compiler/pars.fsy" +//# 1102 "src/Compiler/pars.fsy" checkEndOfFileError _2; _1 ) -//# 1062 "src/Compiler/pars.fsy" +//# 1102 "src/Compiler/pars.fsy" : ParsedImplFile)); -//# 4315 "pars.fs" +//# 4484 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_fileNamespaceImpls in let _3 = parseState.GetInput(3) :?> ParseHelpers.LexerContinuation in Microsoft.FSharp.Core.Operators.box ( ( -//# 1065 "src/Compiler/pars.fsy" +//# 1105 "src/Compiler/pars.fsy" _1 ) -//# 1065 "src/Compiler/pars.fsy" +//# 1105 "src/Compiler/pars.fsy" : ParsedImplFile)); -//# 4327 "pars.fs" +//# 4496 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> ParseHelpers.LexerContinuation in Microsoft.FSharp.Core.Operators.box ( ( -//# 1071 "src/Compiler/pars.fsy" +//# 1111 "src/Compiler/pars.fsy" let emptyImplFileFrag = ParsedImplFileFragment.AnonModule([], rhs parseState 1) ParsedImplFile ([], [emptyImplFileFrag]) ) -//# 1071 "src/Compiler/pars.fsy" +//# 1111 "src/Compiler/pars.fsy" : ParsedImplFile)); -//# 4339 "pars.fs" +//# 4508 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_fileModuleImpl in Microsoft.FSharp.Core.Operators.box ( ( -//# 1078 "src/Compiler/pars.fsy" +//# 1118 "src/Compiler/pars.fsy" ParsedImplFile ([], [ (_1 (None, false, [], PreXmlDoc.Empty)) ]) ) -//# 1078 "src/Compiler/pars.fsy" +//# 1118 "src/Compiler/pars.fsy" : 'gentype_fileNamespaceImpls)); -//# 4350 "pars.fs" +//# 4519 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_fileModuleImpl in let _2 = parseState.GetInput(2) :?> 'gentype_fileNamespaceImplList in Microsoft.FSharp.Core.Operators.box ( ( -//# 1081 "src/Compiler/pars.fsy" +//# 1121 "src/Compiler/pars.fsy" // If there are namespaces, the first fileModuleImpl may only contain # directives let decls = match (_1 (None, false, [], PreXmlDoc.Empty)) with @@ -4370,32 +4539,32 @@ let _fsyacc_reductions = lazy [| []) ParsedImplFile (decls, _2) ) -//# 1081 "src/Compiler/pars.fsy" +//# 1121 "src/Compiler/pars.fsy" : 'gentype_fileNamespaceImpls)); -//# 4375 "pars.fs" +//# 4544 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_fileNamespaceImpl in let _2 = parseState.GetInput(2) :?> 'gentype_fileNamespaceImplList in Microsoft.FSharp.Core.Operators.box ( ( -//# 1100 "src/Compiler/pars.fsy" +//# 1140 "src/Compiler/pars.fsy" _1 :: _2 ) -//# 1100 "src/Compiler/pars.fsy" +//# 1140 "src/Compiler/pars.fsy" : 'gentype_fileNamespaceImplList)); -//# 4387 "pars.fs" +//# 4556 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_fileNamespaceImpl in Microsoft.FSharp.Core.Operators.box ( ( -//# 1103 "src/Compiler/pars.fsy" +//# 1143 "src/Compiler/pars.fsy" [_1] ) -//# 1103 "src/Compiler/pars.fsy" +//# 1143 "src/Compiler/pars.fsy" : 'gentype_fileNamespaceImplList)); -//# 4398 "pars.fs" +//# 4567 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_namespaceIntro in let _2 = parseState.GetInput(2) :?> 'gentype_deprecated_opt_equals in @@ -4403,13 +4572,13 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1109 "src/Compiler/pars.fsy" +//# 1149 "src/Compiler/pars.fsy" let mNamespace, isRec, path, xml = _1 _3 (Some mNamespace, isRec, path, xml) ) -//# 1109 "src/Compiler/pars.fsy" +//# 1149 "src/Compiler/pars.fsy" : 'gentype_fileNamespaceImpl)); -//# 4412 "pars.fs" +//# 4581 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -4418,7 +4587,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1116 "src/Compiler/pars.fsy" +//# 1156 "src/Compiler/pars.fsy" if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2)) let m2 = rhs parseState 3 let mDeclsAndAttrs = (List.map (fun (a: SynAttributeList) -> a.Range) _1) @ (List.map (fun (d: SynModuleDecl) -> d.Range) _4) @@ -4431,22 +4600,22 @@ let _fsyacc_reductions = lazy [| let trivia: SynModuleOrNamespaceTrivia = { LeadingKeyword = SynModuleOrNamespaceLeadingKeyword.Module mModule } ParsedImplFileFragment.NamedModule(SynModuleOrNamespace(lid, (isRec || isRec2), SynModuleOrNamespaceKind.NamedModule, _4, xmlDoc, _1@attribs2, vis, m, trivia))) ) -//# 1116 "src/Compiler/pars.fsy" +//# 1156 "src/Compiler/pars.fsy" : 'gentype_fileModuleImpl)); -//# 4436 "pars.fs" +//# 4605 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynModuleDecl list in Microsoft.FSharp.Core.Operators.box ( ( -//# 1129 "src/Compiler/pars.fsy" +//# 1169 "src/Compiler/pars.fsy" let m = (rhs parseState 1) (fun (mNamespaceOpt, isRec, path, xml) -> - match path with - | [] -> ParsedImplFileFragment.AnonModule(_1, m) + match path, mNamespaceOpt with + | [], None -> ParsedImplFileFragment.AnonModule(_1, m) | _ -> let lastDeclRange = List.tryLast _1 |> Option.map (fun decl -> decl.Range) |> Option.defaultValue (rhs parseState 1) - let m = mkRange lastDeclRange.FileName (lhs parseState).Start lastDeclRange.End + let m = withStart (lhs parseState).Start lastDeclRange xml.MarkAsInvalid() let trivia: SynModuleOrNamespaceTrivia = match mNamespaceOpt with @@ -4454,9 +4623,9 @@ let _fsyacc_reductions = lazy [| | Some mNamespace -> { LeadingKeyword = SynModuleOrNamespaceLeadingKeyword.Namespace mNamespace } ParsedImplFileFragment.NamespaceFragment(path, isRec, SynModuleOrNamespaceKind.DeclaredNamespace, _1, PreXmlDoc.Empty, [], m, trivia)) ) -//# 1129 "src/Compiler/pars.fsy" +//# 1169 "src/Compiler/pars.fsy" : 'gentype_fileModuleImpl)); -//# 4459 "pars.fs" +//# 4628 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_moduleDefnsOrExprPossiblyEmpty in let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in @@ -4464,69 +4633,69 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1147 "src/Compiler/pars.fsy" +//# 1187 "src/Compiler/pars.fsy" _2 ) -//# 1147 "src/Compiler/pars.fsy" +//# 1187 "src/Compiler/pars.fsy" : SynModuleDecl list)); -//# 4472 "pars.fs" +//# 4641 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_moduleDefnsOrExprPossiblyEmpty in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 1150 "src/Compiler/pars.fsy" +//# 1190 "src/Compiler/pars.fsy" // The lex filter ensures we can only get a mismatch in OBLOCKBEGIN/OBLOCKEND tokens if there was some other kind of error, hence we don't need to report this error // reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnClosedBlockInHashLight()) _2 ) -//# 1150 "src/Compiler/pars.fsy" +//# 1190 "src/Compiler/pars.fsy" : SynModuleDecl list)); -//# 4486 "pars.fs" +//# 4655 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in Microsoft.FSharp.Core.Operators.box ( ( -//# 1155 "src/Compiler/pars.fsy" +//# 1195 "src/Compiler/pars.fsy" [] ) -//# 1155 "src/Compiler/pars.fsy" +//# 1195 "src/Compiler/pars.fsy" : SynModuleDecl list)); -//# 4497 "pars.fs" +//# 4666 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_moduleDefnsOrExprPossiblyEmpty in Microsoft.FSharp.Core.Operators.box ( ( -//# 1158 "src/Compiler/pars.fsy" +//# 1198 "src/Compiler/pars.fsy" _1 ) -//# 1158 "src/Compiler/pars.fsy" +//# 1198 "src/Compiler/pars.fsy" : SynModuleDecl list)); -//# 4508 "pars.fs" +//# 4677 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_moduleDefnsOrExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 1164 "src/Compiler/pars.fsy" +//# 1204 "src/Compiler/pars.fsy" _1 ) -//# 1164 "src/Compiler/pars.fsy" +//# 1204 "src/Compiler/pars.fsy" : 'gentype_moduleDefnsOrExprPossiblyEmpty)); -//# 4519 "pars.fs" +//# 4688 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1167 "src/Compiler/pars.fsy" +//# 1207 "src/Compiler/pars.fsy" [] ) -//# 1167 "src/Compiler/pars.fsy" +//# 1207 "src/Compiler/pars.fsy" : 'gentype_moduleDefnsOrExprPossiblyEmpty)); -//# 4529 "pars.fs" +//# 4698 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -4536,16 +4705,16 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1174 "src/Compiler/pars.fsy" +//# 1214 "src/Compiler/pars.fsy" match _2 with | Some vis -> errorR(Error(FSComp.SR.parsUnexpectedVisibilityDeclaration(vis.ToString()), rhs parseState 3)) | _ -> () let attrDecls = if not (isNil _1) then [ SynModuleDecl.Attributes(_1, rangeOfNonNilAttrs _1) ] else [] attrDecls @ mkSynExprDecl _3 :: _5 ) -//# 1174 "src/Compiler/pars.fsy" +//# 1214 "src/Compiler/pars.fsy" : 'gentype_moduleDefnsOrExpr)); -//# 4548 "pars.fs" +//# 4717 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -4554,16 +4723,16 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1181 "src/Compiler/pars.fsy" +//# 1221 "src/Compiler/pars.fsy" match _2 with | Some vis -> errorR(Error(FSComp.SR.parsUnexpectedVisibilityDeclaration(vis.ToString()), rhs parseState 3)) | _ -> () let attrDecls = if not (isNil _1) then [ SynModuleDecl.Attributes(_1, rangeOfNonNilAttrs _1) ] else [] attrDecls @ [ mkSynExprDecl _3 ] ) -//# 1181 "src/Compiler/pars.fsy" +//# 1221 "src/Compiler/pars.fsy" : 'gentype_moduleDefnsOrExpr)); -//# 4566 "pars.fs" +//# 4735 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -4571,50 +4740,50 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1188 "src/Compiler/pars.fsy" +//# 1228 "src/Compiler/pars.fsy" match _2 with | Some vis -> errorR(Error(FSComp.SR.parsUnexpectedVisibilityDeclaration(vis.ToString()), rhs parseState 3)) | _ -> () let attrDecls = if not (isNil _1) then [ SynModuleDecl.Attributes(_1, rangeOfNonNilAttrs _1) ] else [] attrDecls @ [ mkSynExprDecl _3 ] ) -//# 1188 "src/Compiler/pars.fsy" +//# 1228 "src/Compiler/pars.fsy" : 'gentype_moduleDefnsOrExpr)); -//# 4583 "pars.fs" +//# 4752 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_moduleDefns in Microsoft.FSharp.Core.Operators.box ( ( -//# 1195 "src/Compiler/pars.fsy" +//# 1235 "src/Compiler/pars.fsy" _1 ) -//# 1195 "src/Compiler/pars.fsy" +//# 1235 "src/Compiler/pars.fsy" : 'gentype_moduleDefnsOrExpr)); -//# 4594 "pars.fs" +//# 4763 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in Microsoft.FSharp.Core.Operators.box ( ( -//# 1198 "src/Compiler/pars.fsy" +//# 1238 "src/Compiler/pars.fsy" if not (isNil _1) then [ SynModuleDecl.Attributes(_1, rangeOfNonNilAttrs _1) ] else [] ) -//# 1198 "src/Compiler/pars.fsy" +//# 1238 "src/Compiler/pars.fsy" : 'gentype_moduleDefnsOrExpr)); -//# 4605 "pars.fs" +//# 4774 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_moduleDefnOrDirective in let _2 = parseState.GetInput(2) :?> 'gentype_moduleDefns in Microsoft.FSharp.Core.Operators.box ( ( -//# 1204 "src/Compiler/pars.fsy" +//# 1244 "src/Compiler/pars.fsy" _1 @ _2 ) -//# 1204 "src/Compiler/pars.fsy" +//# 1244 "src/Compiler/pars.fsy" : 'gentype_moduleDefns)); -//# 4617 "pars.fs" +//# 4786 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_moduleDefnOrDirective in let _2 = parseState.GetInput(2) :?> 'gentype_topSeparators in @@ -4622,69 +4791,69 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1207 "src/Compiler/pars.fsy" +//# 1247 "src/Compiler/pars.fsy" _1 @ _3 ) -//# 1207 "src/Compiler/pars.fsy" +//# 1247 "src/Compiler/pars.fsy" : 'gentype_moduleDefns)); -//# 4630 "pars.fs" +//# 4799 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_moduleDefnOrDirective in Microsoft.FSharp.Core.Operators.box ( ( -//# 1210 "src/Compiler/pars.fsy" +//# 1250 "src/Compiler/pars.fsy" _1 ) -//# 1210 "src/Compiler/pars.fsy" +//# 1250 "src/Compiler/pars.fsy" : 'gentype_moduleDefns)); -//# 4641 "pars.fs" +//# 4810 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_moduleDefnOrDirective in let _2 = parseState.GetInput(2) :?> 'gentype_topSeparators in Microsoft.FSharp.Core.Operators.box ( ( -//# 1213 "src/Compiler/pars.fsy" +//# 1253 "src/Compiler/pars.fsy" _1 ) -//# 1213 "src/Compiler/pars.fsy" +//# 1253 "src/Compiler/pars.fsy" : 'gentype_moduleDefns)); -//# 4653 "pars.fs" +//# 4822 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_topSeparators in let _3 = parseState.GetInput(3) :?> 'gentype_moduleDefnsOrExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 1216 "src/Compiler/pars.fsy" +//# 1256 "src/Compiler/pars.fsy" _3 ) -//# 1216 "src/Compiler/pars.fsy" +//# 1256 "src/Compiler/pars.fsy" : 'gentype_moduleDefns)); -//# 4665 "pars.fs" +//# 4834 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_moduleDefn in Microsoft.FSharp.Core.Operators.box ( ( -//# 1222 "src/Compiler/pars.fsy" +//# 1262 "src/Compiler/pars.fsy" _1 ) -//# 1222 "src/Compiler/pars.fsy" +//# 1262 "src/Compiler/pars.fsy" : 'gentype_moduleDefnOrDirective)); -//# 4676 "pars.fs" +//# 4845 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_hashDirective in Microsoft.FSharp.Core.Operators.box ( ( -//# 1225 "src/Compiler/pars.fsy" +//# 1265 "src/Compiler/pars.fsy" [ SynModuleDecl.HashDirective(_1, rhs2 parseState 1 1) ] ) -//# 1225 "src/Compiler/pars.fsy" +//# 1265 "src/Compiler/pars.fsy" : 'gentype_moduleDefnOrDirective)); -//# 4687 "pars.fs" +//# 4856 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -4692,15 +4861,15 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1234 "src/Compiler/pars.fsy" +//# 1274 "src/Compiler/pars.fsy" if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2)) parseState.ResetSynArgNameGenerator() let (BindingSetPreAttrs(_, _, _, _, mWhole)) = _3 mkDefnBindings (mWhole, _3, _1, _2, mWhole) ) -//# 1234 "src/Compiler/pars.fsy" +//# 1274 "src/Compiler/pars.fsy" : 'gentype_moduleDefn)); -//# 4703 "pars.fs" +//# 4872 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -4708,15 +4877,15 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1241 "src/Compiler/pars.fsy" +//# 1281 "src/Compiler/pars.fsy" let hwlb, m, _ = _3 if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2)) parseState.ResetSynArgNameGenerator() mkDefnBindings (m, hwlb, _1, _2, m) ) -//# 1241 "src/Compiler/pars.fsy" +//# 1281 "src/Compiler/pars.fsy" : 'gentype_moduleDefn)); -//# 4719 "pars.fs" +//# 4888 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -4724,14 +4893,14 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1248 "src/Compiler/pars.fsy" +//# 1288 "src/Compiler/pars.fsy" if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2)) let mWhole = rhs parseState 3 mkDefnBindings (mWhole, _3, _1, _2, mWhole) ) -//# 1248 "src/Compiler/pars.fsy" +//# 1288 "src/Compiler/pars.fsy" : 'gentype_moduleDefn)); -//# 4734 "pars.fs" +//# 4903 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -4741,7 +4910,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1254 "src/Compiler/pars.fsy" +//# 1294 "src/Compiler/pars.fsy" if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2)) let xmlDoc = grabXmlDoc(parseState, _1, 1) let leadingKeyword = SynTypeDefnLeadingKeyword.Type(rhs parseState 3) @@ -4753,9 +4922,9 @@ let _fsyacc_reductions = lazy [| let types = tc :: _5 [ SynModuleDecl.Types(types, (rhs parseState 3, types) ||> unionRangeWithListBy (fun t -> t.Range)) ] ) -//# 1254 "src/Compiler/pars.fsy" +//# 1294 "src/Compiler/pars.fsy" : 'gentype_moduleDefn)); -//# 4758 "pars.fs" +//# 4927 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -4763,7 +4932,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1267 "src/Compiler/pars.fsy" +//# 1307 "src/Compiler/pars.fsy" if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2)) let (SynExceptionDefn(SynExceptionDefnRepr(cas, a, b, c, d, d2), withKeyword, e, f)) = _3 let xmlDoc = grabXmlDoc(parseState, _1, 1) @@ -4772,9 +4941,9 @@ let _fsyacc_reductions = lazy [| let synExnDefn = SynExceptionDefn(SynExceptionDefnRepr(_1@cas, a, b, xmlDoc, d, defnReprRange), withKeyword, e, mWhole) [ SynModuleDecl.Exception(synExnDefn, mWhole) ] ) -//# 1267 "src/Compiler/pars.fsy" +//# 1307 "src/Compiler/pars.fsy" : 'gentype_moduleDefn)); -//# 4777 "pars.fs" +//# 4946 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -4783,7 +4952,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1277 "src/Compiler/pars.fsy" +//# 1317 "src/Compiler/pars.fsy" if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2)) let attribs, (mModule, isRec, path, vis, attribs2) = _1, _3 let xmlDoc = grabXmlDoc(parseState, _1, 1) @@ -4810,9 +4979,9 @@ let _fsyacc_reductions = lazy [| let m = match mEndOpt with | None -> m | Some mEnd -> unionRanges m mEnd [ SynModuleDecl.NestedModule(info, isRec, def, false, m, trivia) ] ) -//# 1277 "src/Compiler/pars.fsy" +//# 1317 "src/Compiler/pars.fsy" : 'gentype_moduleDefn)); -//# 4815 "pars.fs" +//# 4984 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -4820,7 +4989,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1305 "src/Compiler/pars.fsy" +//# 1345 "src/Compiler/pars.fsy" let xmlDoc = grabXmlDoc(parseState, _1, 1) let mWhole = rhs2 parseState 1 3 |> unionRangeWithXmlDoc xmlDoc let attribs, (mModule, isRec, path, vis, attribs2) = _1, _3 @@ -4828,111 +4997,140 @@ let _fsyacc_reductions = lazy [| let trivia: SynModuleDeclNestedModuleTrivia = { ModuleKeyword = Some mModule; EqualsRange = None } [ SynModuleDecl.NestedModule(info, isRec, [], false, mWhole, trivia) ] ) -//# 1305 "src/Compiler/pars.fsy" +//# 1345 "src/Compiler/pars.fsy" : 'gentype_moduleDefn)); -//# 4833 "pars.fs" +//# 5002 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 1314 "src/Compiler/pars.fsy" +//# 1354 "src/Compiler/pars.fsy" errorR(Error(FSComp.SR.parsAttributeOnIncompleteCode(), rhs parseState 1)) [ SynModuleDecl.Attributes(_1, rhs parseState 1) ] ) -//# 1314 "src/Compiler/pars.fsy" +//# 1354 "src/Compiler/pars.fsy" : 'gentype_moduleDefn)); -//# 4846 "pars.fs" +//# 5015 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_openDecl in Microsoft.FSharp.Core.Operators.box ( ( -//# 1319 "src/Compiler/pars.fsy" - [ SynModuleDecl.Open(_1, (rhs parseState 1)) ] +//# 1359 "src/Compiler/pars.fsy" + [ SynModuleDecl.Open _1 ] ) -//# 1319 "src/Compiler/pars.fsy" +//# 1359 "src/Compiler/pars.fsy" : 'gentype_moduleDefn)); -//# 4857 "pars.fs" +//# 5026 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynLongIdent in Microsoft.FSharp.Core.Operators.box ( ( -//# 1324 "src/Compiler/pars.fsy" - SynOpenDeclTarget.ModuleOrNamespace(_2, (rhs parseState 2)) +//# 1363 "src/Compiler/pars.fsy" + let mOpen = rhs parseState 1 + let mPath = _2.Range + SynOpenDeclTarget.ModuleOrNamespace(_2, mPath), unionRanges mOpen mPath + ) +//# 1363 "src/Compiler/pars.fsy" + : 'gentype_openDecl)); +//# 5039 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = parseState.GetInput(2) :?> 'gentype_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 1368 "src/Compiler/pars.fsy" + let mOpen = rhs parseState 1 + SynOpenDeclTarget.ModuleOrNamespace(SynLongIdent([], [], []), mOpen.EndRange), mOpen ) -//# 1324 "src/Compiler/pars.fsy" +//# 1368 "src/Compiler/pars.fsy" : 'gentype_openDecl)); -//# 4868 "pars.fs" +//# 5051 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typeKeyword in let _3 = parseState.GetInput(3) :?> 'gentype_appType in Microsoft.FSharp.Core.Operators.box ( ( -//# 1327 "src/Compiler/pars.fsy" - SynOpenDeclTarget.Type(_3, (rhs parseState 3)) +//# 1372 "src/Compiler/pars.fsy" + let mOpen = rhs parseState 1 + let mPath = _3.Range + SynOpenDeclTarget.Type(_3, mPath), unionRanges mOpen mPath + ) +//# 1372 "src/Compiler/pars.fsy" + : 'gentype_openDecl)); +//# 5065 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = parseState.GetInput(2) :?> 'gentype_typeKeyword in + let _3 = parseState.GetInput(3) :?> 'gentype_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 1377 "src/Compiler/pars.fsy" + let m = rhs2 parseState 1 2 + SynOpenDeclTarget.ModuleOrNamespace(SynLongIdent([], [], []), m.EndRange), m ) -//# 1327 "src/Compiler/pars.fsy" +//# 1377 "src/Compiler/pars.fsy" : 'gentype_openDecl)); -//# 4880 "pars.fs" +//# 5078 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynLongIdent in let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in Microsoft.FSharp.Core.Operators.box ( ( -//# 1334 "src/Compiler/pars.fsy" +//# 1385 "src/Compiler/pars.fsy" _2 ) -//# 1334 "src/Compiler/pars.fsy" +//# 1385 "src/Compiler/pars.fsy" : 'gentype_namedModuleAbbrevBlock)); -//# 4892 "pars.fs" +//# 5090 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynLongIdent in Microsoft.FSharp.Core.Operators.box ( ( -//# 1337 "src/Compiler/pars.fsy" +//# 1388 "src/Compiler/pars.fsy" _1 ) -//# 1337 "src/Compiler/pars.fsy" +//# 1388 "src/Compiler/pars.fsy" : 'gentype_namedModuleAbbrevBlock)); -//# 4903 "pars.fs" +//# 5101 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_wrappedNamedModuleDefn in let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in Microsoft.FSharp.Core.Operators.box ( ( -//# 1343 "src/Compiler/pars.fsy" +//# 1394 "src/Compiler/pars.fsy" Choice2Of2 _2 ) -//# 1343 "src/Compiler/pars.fsy" +//# 1394 "src/Compiler/pars.fsy" : 'gentype_namedModuleDefnBlock)); -//# 4915 "pars.fs" +//# 5113 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_wrappedNamedModuleDefn in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 1346 "src/Compiler/pars.fsy" +//# 1397 "src/Compiler/pars.fsy" // The lex filter ensures we can only get a mismatch in OBLOCKBEGIN/OBLOCKEND tokens if there was some other kind of error, hence we don't need to report this error Choice2Of2 _2 ) -//# 1346 "src/Compiler/pars.fsy" +//# 1397 "src/Compiler/pars.fsy" : 'gentype_namedModuleDefnBlock)); -//# 4928 "pars.fs" +//# 5126 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_moduleDefnsOrExpr in let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in Microsoft.FSharp.Core.Operators.box ( ( -//# 1350 "src/Compiler/pars.fsy" +//# 1401 "src/Compiler/pars.fsy" // There is an ambiguity here // In particular, consider the following two: // @@ -4957,70 +5155,70 @@ let _fsyacc_reductions = lazy [| Choice2Of2 (_2, None) ) -//# 1350 "src/Compiler/pars.fsy" +//# 1401 "src/Compiler/pars.fsy" : 'gentype_namedModuleDefnBlock)); -//# 4962 "pars.fs" +//# 5160 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_moduleDefnsOrExpr in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 1376 "src/Compiler/pars.fsy" +//# 1427 "src/Compiler/pars.fsy" // The lex filter ensures we can only get a mismatch in OBLOCKBEGIN/OBLOCKEND tokens if there was some other kind of error, hence we don't need to report this error // reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnClosedBlockInHashLight()) Choice2Of2 (_2, None) ) -//# 1376 "src/Compiler/pars.fsy" +//# 1427 "src/Compiler/pars.fsy" : 'gentype_namedModuleDefnBlock)); -//# 4976 "pars.fs" +//# 5174 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in Microsoft.FSharp.Core.Operators.box ( ( -//# 1381 "src/Compiler/pars.fsy" +//# 1432 "src/Compiler/pars.fsy" let mEnd = rhs parseState 3 Choice2Of2 ([], Some mEnd) ) -//# 1381 "src/Compiler/pars.fsy" +//# 1432 "src/Compiler/pars.fsy" : 'gentype_namedModuleDefnBlock)); -//# 4988 "pars.fs" +//# 5186 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_wrappedNamedModuleDefn in Microsoft.FSharp.Core.Operators.box ( ( -//# 1385 "src/Compiler/pars.fsy" +//# 1436 "src/Compiler/pars.fsy" Choice2Of2 _1 ) -//# 1385 "src/Compiler/pars.fsy" +//# 1436 "src/Compiler/pars.fsy" : 'gentype_namedModuleDefnBlock)); -//# 4999 "pars.fs" +//# 5197 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynLongIdent in Microsoft.FSharp.Core.Operators.box ( ( -//# 1388 "src/Compiler/pars.fsy" +//# 1439 "src/Compiler/pars.fsy" Choice1Of2 _1.LongIdent ) -//# 1388 "src/Compiler/pars.fsy" +//# 1439 "src/Compiler/pars.fsy" : 'gentype_namedModuleDefnBlock)); -//# 5010 "pars.fs" +//# 5208 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_structOrBegin in let _2 = parseState.GetInput(2) :?> 'gentype_moduleDefnsOrExprPossiblyEmpty in Microsoft.FSharp.Core.Operators.box ( ( -//# 1394 "src/Compiler/pars.fsy" +//# 1445 "src/Compiler/pars.fsy" let mEnd = rhs parseState 3 _2, Some mEnd ) -//# 1394 "src/Compiler/pars.fsy" +//# 1445 "src/Compiler/pars.fsy" : 'gentype_wrappedNamedModuleDefn)); -//# 5023 "pars.fs" +//# 5221 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_structOrBegin in let _2 = parseState.GetInput(2) :?> 'gentype_moduleDefnsOrExprPossiblyEmpty in @@ -5028,82 +5226,82 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1398 "src/Compiler/pars.fsy" +//# 1449 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBeginOrStruct()) _2, None ) -//# 1398 "src/Compiler/pars.fsy" +//# 1449 "src/Compiler/pars.fsy" : 'gentype_wrappedNamedModuleDefn)); -//# 5037 "pars.fs" +//# 5235 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_structOrBegin in Microsoft.FSharp.Core.Operators.box ( ( -//# 1402 "src/Compiler/pars.fsy" +//# 1453 "src/Compiler/pars.fsy" let mEnd = rhs parseState 3 [], Some mEnd ) -//# 1402 "src/Compiler/pars.fsy" +//# 1453 "src/Compiler/pars.fsy" : 'gentype_wrappedNamedModuleDefn)); -//# 5049 "pars.fs" +//# 5247 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_classDefnBlock in let _3 = parseState.GetInput(3) :?> 'gentype_declEnd in Microsoft.FSharp.Core.Operators.box ( ( -//# 1408 "src/Compiler/pars.fsy" +//# 1459 "src/Compiler/pars.fsy" let mWithKwd = rhs parseState 1 mWithKwd, _2 ) -//# 1408 "src/Compiler/pars.fsy" +//# 1459 "src/Compiler/pars.fsy" : range * SynMemberDefns)); -//# 5062 "pars.fs" +//# 5260 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_attributes in Microsoft.FSharp.Core.Operators.box ( ( -//# 1415 "src/Compiler/pars.fsy" +//# 1466 "src/Compiler/pars.fsy" _1 ) -//# 1415 "src/Compiler/pars.fsy" +//# 1466 "src/Compiler/pars.fsy" : 'gentype_opt_attributes)); -//# 5073 "pars.fs" +//# 5271 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1418 "src/Compiler/pars.fsy" +//# 1469 "src/Compiler/pars.fsy" [] ) -//# 1418 "src/Compiler/pars.fsy" +//# 1469 "src/Compiler/pars.fsy" : 'gentype_opt_attributes)); -//# 5083 "pars.fs" +//# 5281 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_attributeList in Microsoft.FSharp.Core.Operators.box ( ( -//# 1423 "src/Compiler/pars.fsy" +//# 1474 "src/Compiler/pars.fsy" _1 ) -//# 1423 "src/Compiler/pars.fsy" +//# 1474 "src/Compiler/pars.fsy" : 'gentype_attributes)); -//# 5094 "pars.fs" +//# 5292 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_attributeList in let _2 = parseState.GetInput(2) :?> 'gentype_attributes in Microsoft.FSharp.Core.Operators.box ( ( -//# 1426 "src/Compiler/pars.fsy" +//# 1477 "src/Compiler/pars.fsy" _1 @ _2 ) -//# 1426 "src/Compiler/pars.fsy" +//# 1477 "src/Compiler/pars.fsy" : 'gentype_attributes)); -//# 5106 "pars.fs" +//# 5304 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_attributeListElements in let _3 = parseState.GetInput(3) :?> 'gentype_opt_seps in @@ -5111,23 +5309,23 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1432 "src/Compiler/pars.fsy" +//# 1483 "src/Compiler/pars.fsy" mkAttributeList _2 (rhs2 parseState 1 4) ) -//# 1432 "src/Compiler/pars.fsy" +//# 1483 "src/Compiler/pars.fsy" : 'gentype_attributeList)); -//# 5119 "pars.fs" +//# 5317 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _4 = parseState.GetInput(4) :?> 'gentype_opt_OBLOCKSEP in Microsoft.FSharp.Core.Operators.box ( ( -//# 1435 "src/Compiler/pars.fsy" +//# 1486 "src/Compiler/pars.fsy" mkAttributeList [] (rhs2 parseState 1 3) ) -//# 1435 "src/Compiler/pars.fsy" +//# 1486 "src/Compiler/pars.fsy" : 'gentype_attributeList)); -//# 5130 "pars.fs" +//# 5328 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_attributeListElements in let _3 = parseState.GetInput(3) :?> 'gentype_opt_seps in @@ -5135,36 +5333,36 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1438 "src/Compiler/pars.fsy" +//# 1489 "src/Compiler/pars.fsy" if not _4 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedLBrackLess()) mkAttributeList _2 (rhs2 parseState 1 2) ) -//# 1438 "src/Compiler/pars.fsy" +//# 1489 "src/Compiler/pars.fsy" : 'gentype_attributeList)); -//# 5144 "pars.fs" +//# 5342 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 1442 "src/Compiler/pars.fsy" +//# 1493 "src/Compiler/pars.fsy" if not _2 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedLBrackLess()) mkAttributeList [] (rhs parseState 1) ) -//# 1442 "src/Compiler/pars.fsy" +//# 1493 "src/Compiler/pars.fsy" : 'gentype_attributeList)); -//# 5156 "pars.fs" +//# 5354 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_attribute in Microsoft.FSharp.Core.Operators.box ( ( -//# 1449 "src/Compiler/pars.fsy" +//# 1500 "src/Compiler/pars.fsy" [_1] ) -//# 1449 "src/Compiler/pars.fsy" +//# 1500 "src/Compiler/pars.fsy" : 'gentype_attributeListElements)); -//# 5167 "pars.fs" +//# 5365 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_attributeListElements in let _2 = parseState.GetInput(2) :?> 'gentype_seps in @@ -5172,12 +5370,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1452 "src/Compiler/pars.fsy" +//# 1503 "src/Compiler/pars.fsy" _1 @ [_3] ) -//# 1452 "src/Compiler/pars.fsy" +//# 1503 "src/Compiler/pars.fsy" : 'gentype_attributeListElements)); -//# 5180 "pars.fs" +//# 5378 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynLongIdent in let _2 = parseState.GetInput(2) :?> 'gentype_opt_HIGH_PRECEDENCE_APP in @@ -5185,14 +5383,14 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1459 "src/Compiler/pars.fsy" +//# 1510 "src/Compiler/pars.fsy" let arg = match _3 with None -> mkSynUnit _1.Range | Some e -> e let m = unionRanges _1.Range arg.Range ({ TypeName = _1; ArgExpr = arg; Target = None; AppliesToGetterAndSetter = false; Range = m }: SynAttribute) ) -//# 1459 "src/Compiler/pars.fsy" +//# 1510 "src/Compiler/pars.fsy" : 'gentype_attribute)); -//# 5195 "pars.fs" +//# 5393 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_attributeTarget in let _2 = parseState.GetInput(2) :?> SynLongIdent in @@ -5201,15 +5399,15 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1465 "src/Compiler/pars.fsy" +//# 1516 "src/Compiler/pars.fsy" let arg = match _4 with None -> mkSynUnit _2.Range | Some e -> e let startRange = match _1 with Some(ident:Ident) -> ident.idRange | None -> _2.Range let m = unionRanges startRange arg.Range ({ TypeName = _2; ArgExpr = arg; Target = _1; AppliesToGetterAndSetter = false; Range = m }: SynAttribute) ) -//# 1465 "src/Compiler/pars.fsy" +//# 1516 "src/Compiler/pars.fsy" : 'gentype_attribute)); -//# 5212 "pars.fs" +//# 5410 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_attributeTarget in let _3 = parseState.GetInput(3) :?> SynLongIdent in @@ -5219,105 +5417,117 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1472 "src/Compiler/pars.fsy" +//# 1523 "src/Compiler/pars.fsy" let arg = match _6 with None -> mkSynUnit _3.Range | Some e -> e let startRange = match _1 with Some ident -> ident.idRange | None -> _3.Range let m = unionRanges startRange arg.Range ({ TypeName = _3; ArgExpr = arg; Target = _1; AppliesToGetterAndSetter = false; Range = m }: SynAttribute) ) -//# 1472 "src/Compiler/pars.fsy" +//# 1523 "src/Compiler/pars.fsy" : 'gentype_attribute)); -//# 5230 "pars.fs" +//# 5428 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_moduleKeyword in Microsoft.FSharp.Core.Operators.box ( ( -//# 1481 "src/Compiler/pars.fsy" +//# 1532 "src/Compiler/pars.fsy" Some(ident("module", (rhs parseState 1))) ) -//# 1481 "src/Compiler/pars.fsy" +//# 1532 "src/Compiler/pars.fsy" : 'gentype_attributeTarget)); -//# 5241 "pars.fs" +//# 5439 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typeKeyword in Microsoft.FSharp.Core.Operators.box ( ( -//# 1484 "src/Compiler/pars.fsy" +//# 1535 "src/Compiler/pars.fsy" Some(ident("type", (rhs parseState 1))) ) -//# 1484 "src/Compiler/pars.fsy" +//# 1535 "src/Compiler/pars.fsy" : 'gentype_attributeTarget)); -//# 5252 "pars.fs" +//# 5450 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Ident in Microsoft.FSharp.Core.Operators.box ( ( -//# 1486 "src/Compiler/pars.fsy" +//# 1537 "src/Compiler/pars.fsy" Some(_1) ) -//# 1486 "src/Compiler/pars.fsy" +//# 1537 "src/Compiler/pars.fsy" : 'gentype_attributeTarget)); -//# 5263 "pars.fs" +//# 5461 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 1490 "src/Compiler/pars.fsy" +//# 1541 "src/Compiler/pars.fsy" if _1 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsSyntaxError()) Some(ident("return", (rhs parseState 1))) ) -//# 1490 "src/Compiler/pars.fsy" +//# 1541 "src/Compiler/pars.fsy" : 'gentype_attributeTarget)); -//# 5275 "pars.fs" +//# 5473 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1496 "src/Compiler/pars.fsy" +//# 1547 "src/Compiler/pars.fsy" let mStatic = rhs parseState 1 let mMember = rhs parseState 2 - StaticMemberFlags, (SynLeadingKeyword.StaticMember(mStatic, mMember)) + StaticMemberFlags, SynLeadingKeyword.StaticMember(mStatic, mMember) ) -//# 1496 "src/Compiler/pars.fsy" +//# 1547 "src/Compiler/pars.fsy" : 'gentype_memberFlags)); -//# 5287 "pars.fs" +//# 5485 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1500 "src/Compiler/pars.fsy" +//# 1552 "src/Compiler/pars.fsy" + let mStatic = rhs parseState 1 + // todo: it should be possible to make it work better for both `abstract` and `member` in the type checker + StaticMemberFlags, SynLeadingKeyword.Static(mStatic) + ) +//# 1552 "src/Compiler/pars.fsy" + : 'gentype_memberFlags)); +//# 5497 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 1557 "src/Compiler/pars.fsy" let mMember = rhs parseState 1 - NonVirtualMemberFlags, (SynLeadingKeyword.Member mMember) + NonVirtualMemberFlags, SynLeadingKeyword.Member mMember ) -//# 1500 "src/Compiler/pars.fsy" +//# 1557 "src/Compiler/pars.fsy" : 'gentype_memberFlags)); -//# 5298 "pars.fs" +//# 5508 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1503 "src/Compiler/pars.fsy" +//# 1561 "src/Compiler/pars.fsy" let mOverride = rhs parseState 1 - OverrideMemberFlags, (SynLeadingKeyword.Override mOverride) + OverrideMemberFlags, SynLeadingKeyword.Override mOverride ) -//# 1503 "src/Compiler/pars.fsy" +//# 1561 "src/Compiler/pars.fsy" : 'gentype_memberFlags)); -//# 5309 "pars.fs" +//# 5519 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1506 "src/Compiler/pars.fsy" +//# 1565 "src/Compiler/pars.fsy" let mDefault = rhs parseState 1 - OverrideMemberFlags, (SynLeadingKeyword.Default mDefault) + OverrideMemberFlags, SynLeadingKeyword.Default mDefault ) -//# 1506 "src/Compiler/pars.fsy" +//# 1565 "src/Compiler/pars.fsy" : 'gentype_memberFlags)); -//# 5320 "pars.fs" +//# 5530 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_tyconNameAndTyparDecls in @@ -5325,21 +5535,22 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1512 "src/Compiler/pars.fsy" +//# 1571 "src/Compiler/pars.fsy" let typars, lid, fixity, vis = _2 let xmlDoc = grabXmlDoc(parseState, _1, 1) - SynComponentInfo (_1, typars, _3, lid, xmlDoc, fixity, vis, rangeOfLid lid) + let m = match lid with [] -> rhs parseState 2 | _ -> rangeOfLid lid + SynComponentInfo (_1, typars, _3, lid, xmlDoc, fixity, vis, m) ) -//# 1512 "src/Compiler/pars.fsy" +//# 1571 "src/Compiler/pars.fsy" : 'gentype_typeNameInfo)); -//# 5335 "pars.fs" +//# 5546 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_tyconDefn in let _3 = parseState.GetInput(3) :?> 'gentype_tyconDefnList in Microsoft.FSharp.Core.Operators.box ( ( -//# 1519 "src/Compiler/pars.fsy" +//# 1579 "src/Compiler/pars.fsy" let xmlDoc = grabXmlDoc(parseState, [], 1) let tyconDefn = let leadingKeyword = SynTypeDefnLeadingKeyword.And(rhs parseState 1) @@ -5356,109 +5567,144 @@ let _fsyacc_reductions = lazy [| SynTypeDefn(componentInfo, typeRepr, members, implicitConstructor, range, trivia) tyconDefn :: _3 ) -//# 1519 "src/Compiler/pars.fsy" +//# 1579 "src/Compiler/pars.fsy" : 'gentype_tyconDefnList)); -//# 5361 "pars.fs" +//# 5572 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1536 "src/Compiler/pars.fsy" +//# 1596 "src/Compiler/pars.fsy" [] ) -//# 1536 "src/Compiler/pars.fsy" +//# 1596 "src/Compiler/pars.fsy" : 'gentype_tyconDefnList)); -//# 5371 "pars.fs" +//# 5582 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typeNameInfo in Microsoft.FSharp.Core.Operators.box ( ( -//# 1541 "src/Compiler/pars.fsy" +//# 1601 "src/Compiler/pars.fsy" fun leadingKeyword -> let trivia: SynTypeDefnTrivia = { LeadingKeyword = leadingKeyword; EqualsRange = None; WithKeyword = None } SynTypeDefn(_1, SynTypeDefnRepr.Simple(SynTypeDefnSimpleRepr.None(_1.Range), _1.Range), [], None, _1.Range, trivia) ) -//# 1541 "src/Compiler/pars.fsy" +//# 1601 "src/Compiler/pars.fsy" : 'gentype_tyconDefn)); -//# 5384 "pars.fs" +//# 5595 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typeNameInfo in - let _2 = parseState.GetInput(2) :?> 'gentype_opt_equals in - let _3 = parseState.GetInput(3) :?> 'gentype_tyconDefnRhsBlock in + let _2 = parseState.GetInput(2) :?> range * SynMemberDefns in Microsoft.FSharp.Core.Operators.box ( ( -//# 1546 "src/Compiler/pars.fsy" - match _2 with - | Some _ -> () - | None -> - let (SynComponentInfo(_, _, _, lid, _, _, _, _)) = _1 - // While the spec doesn't allow long idents here, the parser doesn't enforce this, so take one ident - let typeNameId = List.last lid - raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsEqualsMissingInTypeDefinition(typeNameId.ToString())) - let nameRange = rhs parseState 1 - let (tcDefRepr: SynTypeDefnRepr), mWith, members = _3 nameRange - let declRange = unionRanges (rhs parseState 1) tcDefRepr.Range - let mWhole = (declRange, members) ||> unionRangeWithListBy (fun (mem: SynMemberDefn) -> mem.Range) - fun leadingKeyword -> - let trivia: SynTypeDefnTrivia = { LeadingKeyword = leadingKeyword; EqualsRange = _2; WithKeyword = mWith } - SynTypeDefn(_1, tcDefRepr, members, None, mWhole, trivia) - ) -//# 1546 "src/Compiler/pars.fsy" - : 'gentype_tyconDefn)); -//# 5410 "pars.fs" - (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _1 = parseState.GetInput(1) :?> 'gentype_typeNameInfo in - let _2 = parseState.GetInput(2) :?> range * SynMemberDefns in - Microsoft.FSharp.Core.Operators.box - ( - ( -//# 1564 "src/Compiler/pars.fsy" - let mWithKwd, classDefns = _2 - let m = (rhs parseState 1, classDefns) ||> unionRangeWithListBy (fun mem -> mem.Range) +//# 1606 "src/Compiler/pars.fsy" + let mWithKwd, classDefns = _2 + let m = (rhs parseState 1, classDefns) ||> unionRangeWithListBy (fun mem -> mem.Range) fun leadingKeyword -> let trivia: SynTypeDefnTrivia = { LeadingKeyword = leadingKeyword; EqualsRange = None; WithKeyword = None } SynTypeDefn(_1, SynTypeDefnRepr.ObjectModel(SynTypeDefnKind.Augmentation mWithKwd, [], m), classDefns, None, m, trivia) ) -//# 1564 "src/Compiler/pars.fsy" +//# 1606 "src/Compiler/pars.fsy" : 'gentype_tyconDefn)); -//# 5426 "pars.fs" +//# 5611 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typeNameInfo in let _2 = parseState.GetInput(2) :?> 'gentype_opt_attributes in let _3 = parseState.GetInput(3) :?> 'gentype_opt_access in let _4 = parseState.GetInput(4) :?> 'gentype_opt_HIGH_PRECEDENCE_APP in - let _5 = parseState.GetInput(5) :?> 'gentype_simplePatterns in + let _5 = parseState.GetInput(5) :?> 'gentype_opt_simplePatterns in let _6 = parseState.GetInput(6) :?> 'gentype_optAsSpec in let _8 = parseState.GetInput(8) :?> 'gentype_tyconDefnRhsBlock in Microsoft.FSharp.Core.Operators.box ( ( -//# 1571 "src/Compiler/pars.fsy" +//# 1613 "src/Compiler/pars.fsy" let vis, spats, az = _3, _5, _6 let nameRange = rhs parseState 1 let (tcDefRepr, mWith, members) = _8 nameRange let (SynComponentInfo(_, _, _, lid, _, _, _, _)) = _1 let mEquals = rhs parseState 7 // Gets the XML doc comments prior to the implicit constructor - let xmlDoc = grabXmlDoc(parseState, _2, 2) - let memberCtorPattern = SynMemberDefn.ImplicitCtor(vis, _2, spats, Option.map snd az, xmlDoc, rangeOfLid lid, { AsKeyword = Option.map fst az }) + let xmlDoc = grabXmlDoc (parseState, _2, 2) + let m = match lid with [] -> rhs parseState 1 | _ -> rangeOfLid lid + let memberCtorPattern = + spats |> Option.map (fun spats -> + SynMemberDefn.ImplicitCtor(vis, _2, spats, Option.bind snd az, xmlDoc, m, { AsKeyword = Option.map fst az }) + ) let tcDefRepr = - match tcDefRepr with - | SynTypeDefnRepr.ObjectModel (k, cspec, m) -> SynTypeDefnRepr.ObjectModel(k, memberCtorPattern :: cspec, m) - | _ -> reportParseErrorAt (rhs2 parseState 1 5) (FSComp.SR.parsOnlyClassCanTakeValueArguments()); tcDefRepr + match tcDefRepr, memberCtorPattern with + | SynTypeDefnRepr.Simple(SynTypeDefnSimpleRepr.None _, m), Some ctor -> + reportParseErrorAt m (FSComp.SR.parsEmptyTypeDefinition()) + SynTypeDefnRepr.ObjectModel(SynTypeDefnKind.Unspecified, [ctor], unionRanges m mEquals) + | SynTypeDefnRepr.Simple(SynTypeDefnSimpleRepr.None mName, m), _ -> + reportParseErrorAt m (FSComp.SR.parsEmptyTypeDefinition()) + tcDefRepr + | SynTypeDefnRepr.ObjectModel(k, cspec, m), Some ctor -> + SynTypeDefnRepr.ObjectModel(k, ctor :: cspec, m) + | _, Some ctor -> + reportParseErrorAt (rhs2 parseState 1 5) (FSComp.SR.parsOnlyClassCanTakeValueArguments ()) + tcDefRepr + | _ -> + match az with + | Some(_, Some id) -> + reportParseErrorAt (rhs parseState 6) (FSComp.SR.tcLetAndDoRequiresImplicitConstructionSequence ()) + | _ -> () + tcDefRepr let declRange = unionRanges (rhs parseState 1) tcDefRepr.Range let mWhole = (declRange, members) ||> unionRangeWithListBy (fun (mem: SynMemberDefn) -> mem.Range) |> unionRangeWithXmlDoc xmlDoc fun leadingKeyword -> let trivia: SynTypeDefnTrivia = { LeadingKeyword = leadingKeyword; EqualsRange = Some mEquals; WithKeyword = mWith } - SynTypeDefn(_1, tcDefRepr, members, Some memberCtorPattern, mWhole, trivia) + SynTypeDefn(_1, tcDefRepr, members, memberCtorPattern, mWhole, trivia) ) -//# 1571 "src/Compiler/pars.fsy" +//# 1613 "src/Compiler/pars.fsy" : 'gentype_tyconDefn)); -//# 5461 "pars.fs" +//# 5665 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> 'gentype_typeNameInfo in + let _2 = parseState.GetInput(2) :?> 'gentype_opt_attributes in + let _3 = parseState.GetInput(3) :?> 'gentype_opt_access in + let _4 = parseState.GetInput(4) :?> 'gentype_opt_HIGH_PRECEDENCE_APP in + let _5 = parseState.GetInput(5) :?> 'gentype_opt_simplePatterns in + let _6 = parseState.GetInput(6) :?> 'gentype_optAsSpec in + let _7 = parseState.GetInput(7) :?> 'gentype_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 1664 "src/Compiler/pars.fsy" + let vis, spats, az = _3, _5, _6 + let (SynComponentInfo(longId = lid)) = _1 + // Gets the XML doc comments prior to the implicit constructor + let xmlDoc = grabXmlDoc (parseState, _2, 2) + let m = match lid with [] -> rhs parseState 1 | _ -> rangeOfLid lid + let mName = _1.Range + let members, mWhole = + match spats, vis, az with + | Some spats, _, _ -> + let memberCtorPattern = SynMemberDefn.ImplicitCtor(vis, _2, spats, Option.bind snd az, xmlDoc, m, { AsKeyword = Option.map fst az }) + [memberCtorPattern], unionRanges mName memberCtorPattern.Range + | _, _, Some(mAs, asId) -> + let mAs = + asId |> Option.map (fun id -> + reportParseErrorAt (rhs parseState 6) (FSComp.SR.tcLetAndDoRequiresImplicitConstructionSequence ()) + id.idRange + ) + |> Option.defaultValue mAs + [], unionRanges mName mAs + | _, Some vis, _ -> + [], unionRanges mName vis.Range + | _ -> + [], mName + fun leadingKeyword -> + let trivia = { SynTypeDefnTrivia.Zero with LeadingKeyword = leadingKeyword } + SynTypeDefn(_1, SynTypeDefnRepr.Simple(SynTypeDefnSimpleRepr.None(mName), mName), members, None, mWhole, trivia) + ) +//# 1664 "src/Compiler/pars.fsy" + : 'gentype_tyconDefn)); +//# 5707 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_tyconDefnRhs in let _3 = parseState.GetInput(3) :?> 'gentype_opt_OBLOCKSEP in @@ -5469,7 +5715,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1603 "src/Compiler/pars.fsy" +//# 1708 "src/Compiler/pars.fsy" let mWith, optClassDefn = _5 let mWith2, optClassDefn2 = _7 let m = unionRanges (rhs parseState 1) (match optClassDefn2 with [] -> (match optClassDefn with [] -> (rhs parseState 4) | _ -> (rhs parseState 5)) | _ -> (rhs parseState 7)) @@ -5478,9 +5724,9 @@ let _fsyacc_reductions = lazy [| let mWith = Option.orElse mWith2 mWith tcDefRepr, mWith, members) ) -//# 1603 "src/Compiler/pars.fsy" +//# 1708 "src/Compiler/pars.fsy" : 'gentype_tyconDefnRhsBlock)); -//# 5483 "pars.fs" +//# 5729 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_tyconDefnRhs in let _3 = parseState.GetInput(3) :?> 'gentype_opt_OBLOCKSEP in @@ -5490,7 +5736,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1612 "src/Compiler/pars.fsy" +//# 1717 "src/Compiler/pars.fsy" if not _6 then reportParseErrorAt (rhs parseState 6) (FSComp.SR.parsUnexpectedEndOfFileTypeDefinition()) let mWith, optClassDefn = _5 let m = unionRanges (rhs parseState 1) (match optClassDefn with [] -> (rhs parseState 4) | _ -> (rhs parseState 5)) @@ -5498,43 +5744,55 @@ let _fsyacc_reductions = lazy [| let tcDefRepr, members = _2 nameRange (checkForMultipleAugmentations m (_4 @ optClassDefn) []) tcDefRepr, mWith, members) ) -//# 1612 "src/Compiler/pars.fsy" +//# 1717 "src/Compiler/pars.fsy" + : 'gentype_tyconDefnRhsBlock)); +//# 5749 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = parseState.GetInput(2) :?> 'gentype_oblockend in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 1725 "src/Compiler/pars.fsy" + fun mName -> + SynTypeDefnRepr.Simple(SynTypeDefnSimpleRepr.None mName, mName), None, [] + ) +//# 1725 "src/Compiler/pars.fsy" : 'gentype_tyconDefnRhsBlock)); -//# 5503 "pars.fs" +//# 5761 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_tyconDefnRhs in let _2 = parseState.GetInput(2) :?> 'gentype_opt_classDefn in Microsoft.FSharp.Core.Operators.box ( ( -//# 1620 "src/Compiler/pars.fsy" +//# 1729 "src/Compiler/pars.fsy" let m = rhs parseState 1 let mWith, optClassDefn = _2 (fun nameRange -> let tcDefRepr, members = _1 nameRange optClassDefn tcDefRepr, mWith, members) ) -//# 1620 "src/Compiler/pars.fsy" +//# 1729 "src/Compiler/pars.fsy" : 'gentype_tyconDefnRhsBlock)); -//# 5519 "pars.fs" +//# 5777 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynTypeDefnSimpleRepr in Microsoft.FSharp.Core.Operators.box ( ( -//# 1632 "src/Compiler/pars.fsy" +//# 1741 "src/Compiler/pars.fsy" let m = _1.Range (fun nameRange augmentation -> SynTypeDefnRepr.Simple(_1, m), augmentation) ) -//# 1632 "src/Compiler/pars.fsy" +//# 1741 "src/Compiler/pars.fsy" : 'gentype_tyconDefnRhs)); -//# 5531 "pars.fs" +//# 5789 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_tyconClassDefn in Microsoft.FSharp.Core.Operators.box ( ( -//# 1637 "src/Compiler/pars.fsy" +//# 1746 "src/Compiler/pars.fsy" let needsCheck, (kind, decls), mopt = _1 let m = match mopt with | None -> (lhs parseState).StartRange // create a zero-width range @@ -5544,15 +5802,15 @@ let _fsyacc_reductions = lazy [| reportParseErrorAt nameRange (FSComp.SR.parsEmptyTypeDefinition()) SynTypeDefnRepr.ObjectModel(kind, decls, m), augmentation) ) -//# 1637 "src/Compiler/pars.fsy" +//# 1746 "src/Compiler/pars.fsy" : 'gentype_tyconDefnRhs)); -//# 5549 "pars.fs" +//# 5807 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_topType in Microsoft.FSharp.Core.Operators.box ( ( -//# 1648 "src/Compiler/pars.fsy" +//# 1757 "src/Compiler/pars.fsy" let m = lhs parseState let ty, arity = _3 (fun nameRange augmentation -> @@ -5562,67 +5820,67 @@ let _fsyacc_reductions = lazy [| if not (isNil augmentation) then raiseParseErrorAt m (FSComp.SR.parsAugmentationsIllegalOnDelegateType()) SynTypeDefnRepr.ObjectModel(SynTypeDefnKind.Delegate(ty, arity), [invoke], m), []) ) -//# 1648 "src/Compiler/pars.fsy" +//# 1757 "src/Compiler/pars.fsy" : 'gentype_tyconDefnRhs)); -//# 5567 "pars.fs" +//# 5825 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_classDefnBlockKindUnspecified in Microsoft.FSharp.Core.Operators.box ( ( -//# 1661 "src/Compiler/pars.fsy" +//# 1770 "src/Compiler/pars.fsy" let needsCheck, decls, mopt = _1 needsCheck, (SynTypeDefnKind.Unspecified, decls), mopt ) -//# 1661 "src/Compiler/pars.fsy" +//# 1770 "src/Compiler/pars.fsy" : 'gentype_tyconClassDefn)); -//# 5579 "pars.fs" +//# 5837 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_classOrInterfaceOrStruct in let _2 = parseState.GetInput(2) :?> 'gentype_classDefnBlock in Microsoft.FSharp.Core.Operators.box ( ( -//# 1665 "src/Compiler/pars.fsy" +//# 1774 "src/Compiler/pars.fsy" false, (_1, _2), Some(rhs2 parseState 1 3) ) -//# 1665 "src/Compiler/pars.fsy" +//# 1774 "src/Compiler/pars.fsy" : 'gentype_tyconClassDefn)); -//# 5591 "pars.fs" +//# 5849 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_classOrInterfaceOrStruct in let _2 = parseState.GetInput(2) :?> 'gentype_classDefnBlock in - let _3 = parseState.GetInput(3) :?> 'gentype_recover in + let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 1668 "src/Compiler/pars.fsy" +//# 1777 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedClassInterfaceOrStruct()) let m = (rhs parseState 1, _2) ||> unionRangeWithListBy (fun (d: SynMemberDefn) -> d.Range) false, (_1, _2), Some(m) ) -//# 1668 "src/Compiler/pars.fsy" +//# 1777 "src/Compiler/pars.fsy" : 'gentype_tyconClassDefn)); -//# 5606 "pars.fs" +//# 5864 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_classOrInterfaceOrStruct in Microsoft.FSharp.Core.Operators.box ( ( -//# 1673 "src/Compiler/pars.fsy" +//# 1782 "src/Compiler/pars.fsy" // silent recovery false, (_1, []), Some(rhs2 parseState 1 3) ) -//# 1673 "src/Compiler/pars.fsy" +//# 1782 "src/Compiler/pars.fsy" : 'gentype_tyconClassDefn)); -//# 5618 "pars.fs" +//# 5876 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _2 = parseState.GetInput(2) :?> 'gentype_classDefnMembers in + let _2 = parseState.GetInput(2) :?> 'gentype_classDefnMembersAtLeastOne in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 1680 "src/Compiler/pars.fsy" +//# 1789 "src/Compiler/pars.fsy" if not _3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileTypeDefinition()) let mopt = match _2 with @@ -5630,93 +5888,93 @@ let _fsyacc_reductions = lazy [| | _ -> None false, _2, mopt ) -//# 1680 "src/Compiler/pars.fsy" +//# 1789 "src/Compiler/pars.fsy" : 'gentype_classDefnBlockKindUnspecified)); -//# 5635 "pars.fs" +//# 5893 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _2 = parseState.GetInput(2) :?> 'gentype_classDefnMembers in + let _2 = parseState.GetInput(2) :?> 'gentype_classDefnMembersAtLeastOne in let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in Microsoft.FSharp.Core.Operators.box ( ( -//# 1688 "src/Compiler/pars.fsy" +//# 1797 "src/Compiler/pars.fsy" let mopt = match _2 with | _ :: _ -> Some((rhs parseState 1, _2) ||> unionRangeWithListBy (fun (d: SynMemberDefn) -> d.Range)) | _ -> None true, _2, mopt ) -//# 1688 "src/Compiler/pars.fsy" +//# 1797 "src/Compiler/pars.fsy" : 'gentype_classDefnBlockKindUnspecified)); -//# 5651 "pars.fs" +//# 5909 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_classDefnMembers in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 1698 "src/Compiler/pars.fsy" +//# 1807 "src/Compiler/pars.fsy" if not _3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileTypeDefinition()) _2 ) -//# 1698 "src/Compiler/pars.fsy" +//# 1807 "src/Compiler/pars.fsy" : 'gentype_classDefnBlock)); -//# 5664 "pars.fs" +//# 5922 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_classDefnMembers in let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in Microsoft.FSharp.Core.Operators.box ( ( -//# 1702 "src/Compiler/pars.fsy" +//# 1811 "src/Compiler/pars.fsy" _2 ) -//# 1702 "src/Compiler/pars.fsy" +//# 1811 "src/Compiler/pars.fsy" : 'gentype_classDefnBlock)); -//# 5676 "pars.fs" +//# 5934 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_classDefnMembers in Microsoft.FSharp.Core.Operators.box ( ( -//# 1705 "src/Compiler/pars.fsy" +//# 1814 "src/Compiler/pars.fsy" _1 ) -//# 1705 "src/Compiler/pars.fsy" +//# 1814 "src/Compiler/pars.fsy" : 'gentype_classDefnBlock)); -//# 5687 "pars.fs" +//# 5945 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_classDefnMembersAtLeastOne in Microsoft.FSharp.Core.Operators.box ( ( -//# 1711 "src/Compiler/pars.fsy" +//# 1820 "src/Compiler/pars.fsy" _1 ) -//# 1711 "src/Compiler/pars.fsy" +//# 1820 "src/Compiler/pars.fsy" : 'gentype_classDefnMembers)); -//# 5698 "pars.fs" +//# 5956 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_classDefnMembers in Microsoft.FSharp.Core.Operators.box ( ( -//# 1715 "src/Compiler/pars.fsy" +//# 1824 "src/Compiler/pars.fsy" _2 ) -//# 1715 "src/Compiler/pars.fsy" +//# 1824 "src/Compiler/pars.fsy" : 'gentype_classDefnMembers)); -//# 5709 "pars.fs" +//# 5967 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1718 "src/Compiler/pars.fsy" +//# 1827 "src/Compiler/pars.fsy" [] ) -//# 1718 "src/Compiler/pars.fsy" +//# 1827 "src/Compiler/pars.fsy" : 'gentype_classDefnMembers)); -//# 5719 "pars.fs" +//# 5977 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_classDefnMember in let _2 = parseState.GetInput(2) :?> 'gentype_opt_seps in @@ -5724,77 +5982,79 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1724 "src/Compiler/pars.fsy" +//# 1833 "src/Compiler/pars.fsy" match _1, _3 with | [ SynMemberDefn.Interface(members=Some []; range=m) ], nextMember :: _ -> - warning(IndentationProblem(FSComp.SR.lexfltTokenIsOffsideOfContextStartedEarlier(warningStringOfPos m.Start), nextMember.Range)) + let strictIndentation = parseState.LexBuffer.SupportsFeature LanguageFeature.StrictIndentation + let warnF = if strictIndentation then errorR else warning + warnF(IndentationProblem(FSComp.SR.lexfltTokenIsOffsideOfContextStartedEarlier(warningStringOfPos m.Start), nextMember.Range)) | _ -> () _1 @ _3 ) -//# 1724 "src/Compiler/pars.fsy" +//# 1833 "src/Compiler/pars.fsy" : 'gentype_classDefnMembersAtLeastOne)); -//# 5736 "pars.fs" +//# 5996 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_classDefnMemberGetSetElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 1734 "src/Compiler/pars.fsy" +//# 1845 "src/Compiler/pars.fsy" let mWithKwd = rhs parseState 1 mWithKwd, _2 ) -//# 1734 "src/Compiler/pars.fsy" +//# 1845 "src/Compiler/pars.fsy" : 'gentype_classDefnMemberGetSet)); -//# 5748 "pars.fs" +//# 6008 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_classDefnMemberGetSetElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 1738 "src/Compiler/pars.fsy" +//# 1849 "src/Compiler/pars.fsy" let mWithKwd = rhs parseState 1 mWithKwd, _2 ) -//# 1738 "src/Compiler/pars.fsy" +//# 1849 "src/Compiler/pars.fsy" : 'gentype_classDefnMemberGetSet)); -//# 5760 "pars.fs" +//# 6020 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_classDefnMemberGetSetElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 1742 "src/Compiler/pars.fsy" +//# 1853 "src/Compiler/pars.fsy" let mWithKwd = rhs parseState 1 reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedWith()) mWithKwd, _2 ) -//# 1742 "src/Compiler/pars.fsy" +//# 1853 "src/Compiler/pars.fsy" : 'gentype_classDefnMemberGetSet)); -//# 5773 "pars.fs" +//# 6033 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_classDefnMemberGetSetElement in Microsoft.FSharp.Core.Operators.box ( ( -//# 1749 "src/Compiler/pars.fsy" +//# 1860 "src/Compiler/pars.fsy" [_1], None ) -//# 1749 "src/Compiler/pars.fsy" +//# 1860 "src/Compiler/pars.fsy" : 'gentype_classDefnMemberGetSetElements)); -//# 5784 "pars.fs" +//# 6044 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_classDefnMemberGetSetElement in let _3 = parseState.GetInput(3) :?> 'gentype_classDefnMemberGetSetElement in Microsoft.FSharp.Core.Operators.box ( ( -//# 1752 "src/Compiler/pars.fsy" +//# 1863 "src/Compiler/pars.fsy" let mAnd = rhs parseState 2 [_1;_3], Some mAnd ) -//# 1752 "src/Compiler/pars.fsy" +//# 1863 "src/Compiler/pars.fsy" : 'gentype_classDefnMemberGetSetElements)); -//# 5797 "pars.fs" +//# 6057 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_inline in let _2 = parseState.GetInput(2) :?> 'gentype_opt_attributes in @@ -5804,14 +6064,14 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1757 "src/Compiler/pars.fsy" +//# 1868 "src/Compiler/pars.fsy" let mEquals = rhs parseState 5 let mRhs = (_6: SynExpr).Range (_1, _2, _3, _4, Some mEquals, _6, mRhs) ) -//# 1757 "src/Compiler/pars.fsy" +//# 1868 "src/Compiler/pars.fsy" : 'gentype_classDefnMemberGetSetElement)); -//# 5814 "pars.fs" +//# 6074 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_inline in let _2 = parseState.GetInput(2) :?> 'gentype_bindingPattern in @@ -5820,7 +6080,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1766 "src/Compiler/pars.fsy" +//# 1877 "src/Compiler/pars.fsy" let mRhs = _5.Range let optReturnType = _3 let mEquals = rhs parseState 4 @@ -5835,9 +6095,67 @@ let _fsyacc_reductions = lazy [| let memberRange = unionRanges rangeStart mRhs |> unionRangeWithXmlDoc xmlDoc [ SynMemberDefn.Member(binding, memberRange) ]) ) -//# 1766 "src/Compiler/pars.fsy" +//# 1877 "src/Compiler/pars.fsy" + : 'gentype_memberCore)); +//# 6100 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> 'gentype_opt_inline in + let _2 = parseState.GetInput(2) :?> 'gentype_bindingPattern in + let _3 = parseState.GetInput(3) :?> 'gentype_opt_topReturnTypeWithTypeConstraints in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 1892 "src/Compiler/pars.fsy" + let optReturnType = _3 + let bindingPat, mBindLhs = _2 + let mEnd = + match optReturnType with + | Some(_, ty) -> ty.Range.EndRange + | _ -> bindingPat.Range.EndRange + let expr = arbExpr ("memberCore1", mEnd) + errorR (Error(FSComp.SR.parsMissingMemberBody(), rhs parseState 4)) + fun vis flagsBuilderAndLeadingKeyword attrs rangeStart -> + let xmlDoc = grabXmlDocAtRangeStart(parseState, attrs, rangeStart) + let memFlagsBuilder, leadingKeyword = flagsBuilderAndLeadingKeyword + let memberFlags = memFlagsBuilder SynMemberKind.Member + let mWholeBindLhs = (mBindLhs, attrs) ||> unionRangeWithListBy (fun (a: SynAttributeList) -> a.Range) + let trivia: SynBindingTrivia = { LeadingKeyword = leadingKeyword; InlineKeyword = _1; EqualsRange = None } + let binding = mkSynBinding (xmlDoc, bindingPat) (vis, (Option.isSome _1), false, mWholeBindLhs, DebugPointAtBinding.NoneAtInvisible, optReturnType, expr, mEnd, [], attrs, Some memberFlags, trivia) + let memberRange = unionRanges rangeStart mEnd |> unionRangeWithXmlDoc xmlDoc + [ SynMemberDefn.Member (binding, memberRange) ] + ) +//# 1892 "src/Compiler/pars.fsy" + : 'gentype_memberCore)); +//# 6129 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> 'gentype_opt_inline in + let _2 = parseState.GetInput(2) :?> 'gentype_bindingPattern in + let _3 = parseState.GetInput(3) :?> 'gentype_opt_topReturnTypeWithTypeConstraints in + let _4 = parseState.GetInput(4) :?> 'gentype_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 1912 "src/Compiler/pars.fsy" + let optReturnType = _3 + let bindingPat, mBindLhs = _2 + let mEnd = + match optReturnType with + | Some(_, ty) -> ty.Range.EndRange + | _ -> bindingPat.Range.EndRange + let expr = arbExpr ("memberCore2", mEnd) + fun vis flagsBuilderAndLeadingKeyword attrs rangeStart -> + let xmlDoc = grabXmlDocAtRangeStart(parseState, attrs, rangeStart) + let memFlagsBuilder, leadingKeyword = flagsBuilderAndLeadingKeyword + let memberFlags = memFlagsBuilder SynMemberKind.Member + let mWholeBindLhs = (mBindLhs, attrs) ||> unionRangeWithListBy (fun (a: SynAttributeList) -> a.Range) + let trivia: SynBindingTrivia = { LeadingKeyword = leadingKeyword; InlineKeyword = _1; EqualsRange = None } + let binding = mkSynBinding (xmlDoc, bindingPat) (vis, (Option.isSome _1), false, mWholeBindLhs, DebugPointAtBinding.NoneAtInvisible, optReturnType, expr, mEnd, [], attrs, Some memberFlags, trivia) + let memberRange = unionRanges rangeStart mEnd |> unionRangeWithXmlDoc xmlDoc + [ SynMemberDefn.Member (binding, memberRange) ] + ) +//# 1912 "src/Compiler/pars.fsy" : 'gentype_memberCore)); -//# 5840 "pars.fs" +//# 6158 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_inline in let _2 = parseState.GetInput(2) :?> 'gentype_bindingPattern in @@ -5846,7 +6164,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1782 "src/Compiler/pars.fsy" +//# 1932 "src/Compiler/pars.fsy" let mWith, (classDefnMemberGetSetElements, mAnd) = _4 let mWhole = (rhs parseState 2, classDefnMemberGetSetElements) ||> unionRangeWithListBy (fun (_, _, _, _, _, _, m2) -> m2) let propertyNameBindingPat, _ = _2 @@ -5861,37 +6179,37 @@ let _fsyacc_reductions = lazy [| propertyNameBindingPat optPropertyType ) -//# 1782 "src/Compiler/pars.fsy" +//# 1932 "src/Compiler/pars.fsy" : 'gentype_memberCore)); -//# 5866 "pars.fs" +//# 6184 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1799 "src/Compiler/pars.fsy" +//# 1949 "src/Compiler/pars.fsy" let mAbstract = rhs parseState 1 AbstractMemberFlags true, SynLeadingKeyword.Abstract mAbstract ) -//# 1799 "src/Compiler/pars.fsy" +//# 1949 "src/Compiler/pars.fsy" : 'gentype_abstractMemberFlags)); -//# 5877 "pars.fs" +//# 6195 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1803 "src/Compiler/pars.fsy" +//# 1953 "src/Compiler/pars.fsy" let mAbstract = rhs parseState 1 let mMember = rhs parseState 2 AbstractMemberFlags true, SynLeadingKeyword.AbstractMember(mAbstract, mMember) ) -//# 1803 "src/Compiler/pars.fsy" +//# 1953 "src/Compiler/pars.fsy" : 'gentype_abstractMemberFlags)); -//# 5889 "pars.fs" +//# 6207 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1808 "src/Compiler/pars.fsy" +//# 1958 "src/Compiler/pars.fsy" let mWhole = rhs2 parseState 1 2 parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.InterfacesWithAbstractStaticMembers mWhole if parseState.LexBuffer.SupportsFeature LanguageFeature.InterfacesWithAbstractStaticMembers then @@ -5900,14 +6218,14 @@ let _fsyacc_reductions = lazy [| let mAbstract = rhs parseState 2 AbstractMemberFlags false, SynLeadingKeyword.StaticAbstract(mStatic, mAbstract) ) -//# 1808 "src/Compiler/pars.fsy" +//# 1958 "src/Compiler/pars.fsy" : 'gentype_abstractMemberFlags)); -//# 5905 "pars.fs" +//# 6223 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1817 "src/Compiler/pars.fsy" +//# 1967 "src/Compiler/pars.fsy" let mWhole = rhs2 parseState 1 2 parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.InterfacesWithAbstractStaticMembers mWhole if parseState.LexBuffer.SupportsFeature LanguageFeature.InterfacesWithAbstractStaticMembers then @@ -5917,9 +6235,9 @@ let _fsyacc_reductions = lazy [| let mMember = rhs parseState 3 AbstractMemberFlags false, SynLeadingKeyword.StaticAbstractMember(mStatic, mAbstract, mMember) ) -//# 1817 "src/Compiler/pars.fsy" +//# 1967 "src/Compiler/pars.fsy" : 'gentype_abstractMemberFlags)); -//# 5922 "pars.fs" +//# 6240 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -5927,13 +6245,13 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1829 "src/Compiler/pars.fsy" +//# 1979 "src/Compiler/pars.fsy" if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2)) [mkClassMemberLocalBindings(false, None, _1, _2, _3)] ) -//# 1829 "src/Compiler/pars.fsy" +//# 1979 "src/Compiler/pars.fsy" : 'gentype_classDefnMember)); -//# 5936 "pars.fs" +//# 6254 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -5941,13 +6259,13 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1833 "src/Compiler/pars.fsy" +//# 1983 "src/Compiler/pars.fsy" if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2)) [mkClassMemberLocalBindings(true, Some(rhs parseState 3), _1, _2, _4)] ) -//# 1833 "src/Compiler/pars.fsy" +//# 1983 "src/Compiler/pars.fsy" : 'gentype_classDefnMember)); -//# 5950 "pars.fs" +//# 6268 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -5957,16 +6275,46 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1837 "src/Compiler/pars.fsy" +//# 1987 "src/Compiler/pars.fsy" let rangeStart = rhs parseState 1 if Option.isSome _2 then errorR (Error (FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier (), rhs parseState 2)) let flags = _3 _4 _2 flags _1 rangeStart ) -//# 1837 "src/Compiler/pars.fsy" +//# 1987 "src/Compiler/pars.fsy" + : 'gentype_classDefnMember)); +//# 6287 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in + let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in + let _3 = parseState.GetInput(3) :?> 'gentype_memberFlags in + let _4 = parseState.GetInput(4) :?> 'gentype_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 1994 "src/Compiler/pars.fsy" + let rangeStart = rhs parseState 1 + if Option.isSome _2 then + errorR (Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier (), rhs parseState 2)) + let memFlagsBuilder, leadingKeyword = _3 + let flags = Some(memFlagsBuilder SynMemberKind.Member) + let xmlDoc = grabXmlDocAtRangeStart (parseState, _1, rangeStart) + let trivia = { LeadingKeyword = leadingKeyword; InlineKeyword = None; EqualsRange = None } + let mMember = rhs parseState 3 + let mEnd = mMember.EndRange + let bindingPat = patFromParseError (SynPat.Wild(mEnd)) + let expr = arbExpr ("classDefnMember1", mEnd) + let mWhole = rhs2 parseState 1 3 + let binding = + mkSynBinding + (xmlDoc, bindingPat) + (_2, (Option.isSome _2), false, mWhole, DebugPointAtBinding.NoneAtInvisible, None, expr, mEnd, [], _1, flags, trivia) + [SynMemberDefn.Member(binding, mWhole)] + ) +//# 1994 "src/Compiler/pars.fsy" : 'gentype_classDefnMember)); -//# 5969 "pars.fs" +//# 6317 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -5976,7 +6324,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1844 "src/Compiler/pars.fsy" +//# 2014 "src/Compiler/pars.fsy" if not (isNil _1) then errorR(Error(FSComp.SR.parsAttributesAreNotPermittedOnInterfaceImplementations(), rhs parseState 1)) if Option.isSome _2 then errorR(Error(FSComp.SR.parsInterfacesHaveSameVisibilityAsEnclosingType(), rhs parseState 3)) let mWithKwd, members, mWhole = @@ -5985,9 +6333,27 @@ let _fsyacc_reductions = lazy [| | Some(mWithKwd, members, m) -> Some mWithKwd, Some members, unionRanges (rhs2 parseState 1 4) m [ SynMemberDefn.Interface(_4, mWithKwd, members, mWhole) ] ) -//# 1844 "src/Compiler/pars.fsy" +//# 2014 "src/Compiler/pars.fsy" + : 'gentype_classDefnMember)); +//# 6338 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in + let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in + let _3 = parseState.GetInput(3) :?> 'gentype_interfaceMember in + let _4 = parseState.GetInput(4) :?> 'gentype_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 2023 "src/Compiler/pars.fsy" + let mInterface = rhs parseState 3 + if not (isNil _1) then errorR(Error(FSComp.SR.parsAttributesAreNotPermittedOnInterfaceImplementations(), rhs parseState 1)) + if Option.isSome _2 then errorR(Error(FSComp.SR.parsInterfacesHaveSameVisibilityAsEnclosingType(), mInterface)) + let ty = SynType.FromParseError(mInterface.EndRange) + [ SynMemberDefn.Interface(ty, None, None, rhs2 parseState 1 3) ] + ) +//# 2023 "src/Compiler/pars.fsy" : 'gentype_classDefnMember)); -//# 5990 "pars.fs" +//# 6356 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -6001,7 +6367,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1853 "src/Compiler/pars.fsy" +//# 2030 "src/Compiler/pars.fsy" let ty, arity = _8 let isInline, doc, id, explicitValTyparDecls = (Option.isSome _4), grabXmlDoc(parseState, _1, 1), _5, _6 let mWith, (getSet, getSetRangeOpt) = _9 @@ -6019,9 +6385,9 @@ let _fsyacc_reductions = lazy [| let trivia: SynMemberDefnAbstractSlotTrivia = { GetSetKeywords = getSetRangeOpt } [ SynMemberDefn.AbstractSlot(valSpfn, mkFlags (getSetAdjuster arity), mWhole, trivia) ] ) -//# 1853 "src/Compiler/pars.fsy" +//# 2030 "src/Compiler/pars.fsy" : 'gentype_classDefnMember)); -//# 6024 "pars.fs" +//# 6390 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -6029,14 +6395,14 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1871 "src/Compiler/pars.fsy" +//# 2048 "src/Compiler/pars.fsy" if not (isNil _1) then errorR(Error(FSComp.SR.parsAttributesIllegalOnInherit(), rhs parseState 1)) if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityIllegalOnInherit(), rhs parseState 1)) [ _3 ] ) -//# 1871 "src/Compiler/pars.fsy" +//# 2048 "src/Compiler/pars.fsy" : 'gentype_classDefnMember)); -//# 6039 "pars.fs" +//# 6405 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -6045,14 +6411,14 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1876 "src/Compiler/pars.fsy" +//# 2053 "src/Compiler/pars.fsy" if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2)) let rangeStart = rhs parseState 1 _3 rangeStart _1 None ) -//# 1876 "src/Compiler/pars.fsy" +//# 2053 "src/Compiler/pars.fsy" : 'gentype_classDefnMember)); -//# 6055 "pars.fs" +//# 6421 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -6061,15 +6427,15 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1881 "src/Compiler/pars.fsy" +//# 2058 "src/Compiler/pars.fsy" if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2)) let mStatic = rhs parseState 3 let rangeStart = rhs parseState 1 _4 rangeStart _1 (Some mStatic) ) -//# 1881 "src/Compiler/pars.fsy" +//# 2058 "src/Compiler/pars.fsy" : 'gentype_classDefnMember)); -//# 6072 "pars.fs" +//# 6438 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -6079,16 +6445,16 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1887 "src/Compiler/pars.fsy" +//# 2064 "src/Compiler/pars.fsy" let rangeStart = rhs parseState 1 if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2)) let flags = _3 _4 _1 flags rangeStart ) -//# 1887 "src/Compiler/pars.fsy" +//# 2064 "src/Compiler/pars.fsy" : 'gentype_classDefnMember)); -//# 6091 "pars.fs" +//# 6457 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -6099,14 +6465,14 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1894 "src/Compiler/pars.fsy" +//# 2071 "src/Compiler/pars.fsy" let mWholeBindLhs = rhs2 parseState 1 (if Option.isSome _5 then 5 else 4) let mNew = rhs parseState 3 let xmlDoc = grabXmlDoc(parseState, _1, 1) let m = unionRanges mWholeBindLhs _7.Range |> unionRangeWithXmlDoc xmlDoc let mEquals = rhs parseState 6 let expr = _7 - let valSynData = SynValData (Some CtorMemberFlags, SynValInfo([SynInfo.InferSynArgInfoFromPat _4], SynInfo.unnamedRetVal), Option.map snd _5) + let valSynData = SynValData (Some CtorMemberFlags, SynValInfo([SynInfo.InferSynArgInfoFromPat _4], SynInfo.unnamedRetVal), Option.bind snd _5, None) let vis = _2 let declPat = SynPat.LongIdent(SynLongIdent([mkSynId (rhs parseState 3) "new"], [], [None]), None, Some noInferredTypars, SynArgPats.Pats [_4], vis, rhs parseState 3) // Check that 'SynPatForConstructorDecl' matches this correctly @@ -6114,9 +6480,83 @@ let _fsyacc_reductions = lazy [| let synBindingTrivia: SynBindingTrivia = { LeadingKeyword = SynLeadingKeyword.New mNew; InlineKeyword = None; EqualsRange = Some mEquals } [ SynMemberDefn.Member(SynBinding (None, SynBindingKind.Normal, false, false, _1, xmlDoc, valSynData, declPat, None, expr, mWholeBindLhs, DebugPointAtBinding.NoneAtInvisible, synBindingTrivia), m) ] ) -//# 1894 "src/Compiler/pars.fsy" +//# 2071 "src/Compiler/pars.fsy" + : 'gentype_classDefnMember)); +//# 6485 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in + let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in + let _4 = parseState.GetInput(4) :?> 'gentype_atomicPattern in + let _5 = parseState.GetInput(5) :?> 'gentype_optAsSpec in + let _6 = parseState.GetInput(6) :?> 'gentype_ends_coming_soon_or_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 2086 "src/Compiler/pars.fsy" + if not _6 then reportParseErrorAt (rhs parseState 6) (FSComp.SR.parsMissingMemberBody ()) + let mNew = rhs parseState 3 + let mAs = _5 |> Option.map (fun (mAs, id) -> id |> Option.map (fun id -> id.idRange) |> Option.defaultValue mAs) + let mEnd = mAs |> Option.defaultValue _4.Range + let xmlDoc = grabXmlDoc (parseState, _1, 1) + let m = unionRanges (rhs parseState 1) mEnd |> unionRangeWithXmlDoc xmlDoc + let expr = arbExpr ("new1", mEnd.EndRange) + let valSynData = SynValData (Some CtorMemberFlags, SynValInfo([SynInfo.InferSynArgInfoFromPat _4], SynInfo.unnamedRetVal), Option.bind snd _5, None) + let declPat = SynPat.LongIdent(SynLongIdent([mkSynId (rhs parseState 3) "new"], [], [None]), None, Some noInferredTypars, SynArgPats.Pats [_4], _2, rhs parseState 3) + assert (match declPat with SynPatForConstructorDecl _ -> true | _ -> false) + let synBindingTrivia: SynBindingTrivia = { LeadingKeyword = SynLeadingKeyword.New mNew; InlineKeyword = None; EqualsRange = None } + [ SynMemberDefn.Member(SynBinding(None, SynBindingKind.Normal, false, false, _1, xmlDoc, valSynData, declPat, None, expr, m, DebugPointAtBinding.NoneAtInvisible, synBindingTrivia), m) ] + ) +//# 2086 "src/Compiler/pars.fsy" + : 'gentype_classDefnMember)); +//# 6511 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in + let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in + let _4 = parseState.GetInput(4) :?> 'gentype_atomicPattern in + let _5 = parseState.GetInput(5) :?> 'gentype_optAsSpec in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 2100 "src/Compiler/pars.fsy" + reportParseErrorAt (rhs parseState 5) (FSComp.SR.parsMissingMemberBody ()) + let mNew = rhs parseState 3 + let mAs = _5 |> Option.map (fun (mAs, id) -> id |> Option.map (fun id -> id.idRange) |> Option.defaultValue mAs) + let mEnd = mAs |> Option.defaultValue _4.Range + let xmlDoc = grabXmlDoc (parseState, _1, 1) + let m = unionRanges (rhs parseState 1) mEnd |> unionRangeWithXmlDoc xmlDoc + let expr = arbExpr ("new2", mEnd.EndRange) + let valSynData = SynValData(Some CtorMemberFlags, SynValInfo([SynInfo.InferSynArgInfoFromPat _4], SynInfo.unnamedRetVal), Option.bind snd _5, None) + let declPat = SynPat.LongIdent(SynLongIdent([mkSynId (rhs parseState 3) "new"], [], [None]), None, Some noInferredTypars, SynArgPats.Pats [_4], _2, rhs parseState 3) + assert (match declPat with SynPatForConstructorDecl _ -> true | _ -> false) + let synBindingTrivia: SynBindingTrivia = { LeadingKeyword = SynLeadingKeyword.New mNew; InlineKeyword = None; EqualsRange = None } + [ SynMemberDefn.Member(SynBinding (None, SynBindingKind.Normal, false, false, _1, xmlDoc, valSynData, declPat, None, expr, m, DebugPointAtBinding.NoneAtInvisible, synBindingTrivia), m) ] + ) +//# 2100 "src/Compiler/pars.fsy" + : 'gentype_classDefnMember)); +//# 6536 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in + let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in + let _4 = parseState.GetInput(4) :?> 'gentype_recover in + let _5 = parseState.GetInput(5) :?> 'gentype_opt_OBLOCKSEP in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 2114 "src/Compiler/pars.fsy" + let m = rhs2 parseState 1 3 + let mNew = rhs parseState 3 + let xmlDoc = grabXmlDoc (parseState, _1, 1) + let pat = patFromParseError (SynPat.Wild(mNew.EndRange)) + let expr = arbExpr ("new3", mNew.EndRange) + let valSynData = SynValData(Some CtorMemberFlags, SynValInfo([SynInfo.InferSynArgInfoFromPat pat], SynInfo.unnamedRetVal), None, None) + let vis = _2 + let declPat = SynPat.LongIdent(SynLongIdent([mkSynId (rhs parseState 3) "new"], [], [None]), None, Some noInferredTypars, SynArgPats.Pats [pat], vis, rhs parseState 3) + let synBindingTrivia: SynBindingTrivia = { LeadingKeyword = SynLeadingKeyword.New mNew; InlineKeyword = None; EqualsRange = None } + [ SynMemberDefn.Member(SynBinding(None, SynBindingKind.Normal, false, false, _1, xmlDoc, valSynData, declPat, None, expr, m, DebugPointAtBinding.NoneAtInvisible, synBindingTrivia), m) ] + ) +//# 2114 "src/Compiler/pars.fsy" : 'gentype_classDefnMember)); -//# 6119 "pars.fs" +//# 6559 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -6125,14 +6565,14 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1909 "src/Compiler/pars.fsy" +//# 2126 "src/Compiler/pars.fsy" if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2)) let leadingKeyword = SynTypeDefnLeadingKeyword.StaticType(rhs parseState 3, rhs parseState 4) [ SynMemberDefn.NestedType(_5 leadingKeyword, None, rhs2 parseState 1 5) ] ) -//# 1909 "src/Compiler/pars.fsy" +//# 2126 "src/Compiler/pars.fsy" : 'gentype_classDefnMember)); -//# 6135 "pars.fs" +//# 6575 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_opt_mutable in let _3 = parseState.GetInput(3) :?> 'gentype_opt_access in @@ -6141,24 +6581,76 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1917 "src/Compiler/pars.fsy" +//# 2134 "src/Compiler/pars.fsy" let mVal = rhs parseState 1 let mRhs = rhs2 parseState 4 6 - let mValDecl = rhs2 parseState 1 6 - (fun rangeStart attribs mStaticOpt -> - let isStatic = Option.isSome mStaticOpt - let xmlDoc = grabXmlDocAtRangeStart(parseState, attribs, rangeStart) - let mValDecl = unionRanges rangeStart mValDecl |> unionRangeWithXmlDoc xmlDoc - let leadingKeyword = - match mStaticOpt with - | None -> SynLeadingKeyword.Val mVal - | Some mStatic -> SynLeadingKeyword.StaticVal(mStatic, mVal) - let fld = SynField(attribs, isStatic, Some _4, _6, _2, xmlDoc, _3, mRhs, { LeadingKeyword = Some leadingKeyword }) - [ SynMemberDefn.ValField(fld, mValDecl) ]) - ) -//# 1917 "src/Compiler/pars.fsy" + fun rangeStart attribs mStaticOpt -> + let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart) + [ mkValField mVal mRhs _2 _3 _4 _6 xmlDoc rangeStart attribs mStaticOpt ] + ) +//# 2134 "src/Compiler/pars.fsy" + : 'gentype_valDefnDecl)); +//# 6593 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = parseState.GetInput(2) :?> 'gentype_opt_mutable in + let _3 = parseState.GetInput(3) :?> 'gentype_opt_access in + let _4 = parseState.GetInput(4) :?> Ident in + let _6 = parseState.GetInput(6) :?> 'gentype_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 2141 "src/Compiler/pars.fsy" + let mVal = rhs parseState 1 + let mRhs = rhs2 parseState 4 6 + let mColon = rhs parseState 5 + let ty = SynType.FromParseError(mColon.EndRange) + fun rangeStart attribs mStaticOpt -> + let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart) + [ mkValField mVal mRhs _2 _3 _4 ty xmlDoc rangeStart attribs mStaticOpt ] + ) +//# 2141 "src/Compiler/pars.fsy" + : 'gentype_valDefnDecl)); +//# 6613 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = parseState.GetInput(2) :?> 'gentype_opt_mutable in + let _3 = parseState.GetInput(3) :?> 'gentype_opt_access in + let _4 = parseState.GetInput(4) :?> Ident in + let _5 = parseState.GetInput(5) :?> 'gentype_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 2150 "src/Compiler/pars.fsy" + let mVal = rhs parseState 1 + let mRhs = rhs2 parseState 4 6 + let mColon = rhs parseState 5 + let ty = SynType.FromParseError(mColon.EndRange) + fun rangeStart attribs mStaticOpt -> + let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart) + [ mkValField mVal mRhs _2 _3 _4 ty xmlDoc rangeStart attribs mStaticOpt ] + ) +//# 2150 "src/Compiler/pars.fsy" + : 'gentype_valDefnDecl)); +//# 6633 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = parseState.GetInput(2) :?> 'gentype_opt_mutable in + let _3 = parseState.GetInput(3) :?> 'gentype_opt_access in + let _4 = parseState.GetInput(4) :?> 'gentype_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 2159 "src/Compiler/pars.fsy" + let mVal = rhs parseState 1 + let mRhs = rhs2 parseState 4 6 + let id = mkSynId mVal.EndRange "" + let mColon = rhs parseState 5 + let ty = SynType.FromParseError(mColon.EndRange) + fun rangeStart attribs mStaticOpt -> + let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart) + [ mkValField mVal mRhs _2 _3 id ty xmlDoc rangeStart attribs mStaticOpt ] + ) +//# 2159 "src/Compiler/pars.fsy" : 'gentype_valDefnDecl)); -//# 6161 "pars.fs" +//# 6653 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_opt_mutable in let _3 = parseState.GetInput(3) :?> 'gentype_opt_access in @@ -6169,381 +6661,466 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 1935 "src/Compiler/pars.fsy" +//# 2172 "src/Compiler/pars.fsy" let mVal = rhs parseState 1 - let mWith, (getSet, getSetOpt) = _8 let mEquals = rhs parseState 6 if _2 then - errorR (Error (FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSet (), rhs parseState 3)) - (fun attribs flags rangeStart -> + errorR (Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSet (), rhs parseState 2)) + fun attribs flags rangeStart -> + let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart) + [ mkAutoPropDefn mVal _3 _4 _5 (Some mEquals) _7 _8 xmlDoc attribs flags rangeStart ] + ) +//# 2172 "src/Compiler/pars.fsy" + : 'gentype_autoPropsDefnDecl)); +//# 6675 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = parseState.GetInput(2) :?> 'gentype_opt_mutable in + let _3 = parseState.GetInput(3) :?> 'gentype_opt_access in + let _4 = parseState.GetInput(4) :?> Ident in + let _5 = parseState.GetInput(5) :?> 'gentype_opt_typ in + let _6 = parseState.GetInput(6) :?> 'gentype_ends_coming_soon_or_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 2181 "src/Compiler/pars.fsy" + let mVal = rhs parseState 1 + let mEnd = + match _5 with + | Some t -> t.Range + | _ -> _4.idRange + let expr = arbExpr ("autoProp1", mEnd.EndRange) + if _2 then + errorR (Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSet (), rhs parseState 2)) + fun attribs flags rangeStart -> + let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart) + [ mkAutoPropDefn mVal _3 _4 _5 None expr (None, (SynMemberKind.Member, None)) xmlDoc attribs flags rangeStart ] + ) +//# 2181 "src/Compiler/pars.fsy" + : 'gentype_autoPropsDefnDecl)); +//# 6700 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = parseState.GetInput(2) :?> 'gentype_opt_mutable in + let _3 = parseState.GetInput(3) :?> 'gentype_opt_access in + let _4 = parseState.GetInput(4) :?> Ident in + let _5 = parseState.GetInput(5) :?> 'gentype_opt_typ in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 2194 "src/Compiler/pars.fsy" + let mVal = rhs parseState 1 + let mEnd = + match _5 with + | Some t -> t.Range + | _ -> _4.idRange + let expr = arbExpr ("autoProp2", mEnd.EndRange) + if _2 then + errorR (Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSet (), rhs parseState 2)) + fun attribs flags rangeStart -> + let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart) + [ mkAutoPropDefn mVal _3 _4 _5 None expr (None, (SynMemberKind.Member, None)) xmlDoc attribs flags rangeStart ] + ) +//# 2194 "src/Compiler/pars.fsy" + : 'gentype_autoPropsDefnDecl)); +//# 6724 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = parseState.GetInput(2) :?> 'gentype_opt_mutable in + let _3 = parseState.GetInput(3) :?> 'gentype_opt_access in + let _4 = parseState.GetInput(4) :?> 'gentype_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 2207 "src/Compiler/pars.fsy" + let mVal = rhs parseState 1 + let id = mkSynId mVal.EndRange "" + let expr = arbExpr ("autoProp3", mVal.EndRange) + if _2 then + errorR (Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSet (), rhs parseState 2)) + fun attribs flags rangeStart -> let xmlDoc = grabXmlDocAtRangeStart(parseState, attribs, rangeStart) - let memberRange = unionRanges rangeStart _7.Range |> unionRangeWithXmlDoc xmlDoc - let flags, leadingKeyword = flags - let leadingKeyword = appendValToLeadingKeyword mVal leadingKeyword - let memberFlags = flags SynMemberKind.Member - let memberFlagsForSet = flags SynMemberKind.PropertySet - let isStatic = not memberFlags.IsInstance - let trivia = { LeadingKeyword = leadingKeyword; WithKeyword = mWith; EqualsRange = Some mEquals; GetSetKeywords = getSetOpt } - [ SynMemberDefn.AutoProperty(attribs, isStatic, _4, _5, getSet, memberFlags, memberFlagsForSet, xmlDoc, _3, _7, memberRange, trivia) ]) - ) -//# 1935 "src/Compiler/pars.fsy" + [ mkAutoPropDefn mVal _3 id None None expr (None, (SynMemberKind.Member, None)) xmlDoc attribs flags rangeStart ] + ) +//# 2207 "src/Compiler/pars.fsy" : 'gentype_autoPropsDefnDecl)); -//# 6191 "pars.fs" +//# 6744 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1953 "src/Compiler/pars.fsy" - None +//# 2219 "src/Compiler/pars.fsy" + None ) -//# 1953 "src/Compiler/pars.fsy" +//# 2219 "src/Compiler/pars.fsy" : 'gentype_opt_typ)); -//# 6201 "pars.fs" +//# 6754 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynType in Microsoft.FSharp.Core.Operators.box ( ( -//# 1954 "src/Compiler/pars.fsy" - Some _2 +//# 2222 "src/Compiler/pars.fsy" + Some _2 + ) +//# 2222 "src/Compiler/pars.fsy" + : 'gentype_opt_typ)); +//# 6765 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = parseState.GetInput(2) :?> 'gentype_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 2225 "src/Compiler/pars.fsy" + let mColon = rhs parseState 1 + let ty = SynType.FromParseError(mColon.EndRange) + Some ty ) -//# 1954 "src/Compiler/pars.fsy" +//# 2225 "src/Compiler/pars.fsy" : 'gentype_opt_typ)); -//# 6212 "pars.fs" +//# 6778 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> SynLongIdent in Microsoft.FSharp.Core.Operators.box ( ( -//# 1959 "src/Compiler/pars.fsy" +//# 2232 "src/Compiler/pars.fsy" if not (parseState.LexBuffer.SupportsFeature LanguageFeature.SingleUnderscorePattern) then raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedSymbolDot()) let underscore = ident("_", rhs parseState 1) let mDot = rhs parseState 2 None, prependIdentInLongIdentWithTrivia (SynIdent(underscore, None)) mDot _3 ) -//# 1959 "src/Compiler/pars.fsy" +//# 2232 "src/Compiler/pars.fsy" : 'gentype_atomicPatternLongIdent)); -//# 6227 "pars.fs" +//# 6793 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> SynLongIdent in Microsoft.FSharp.Core.Operators.box ( ( -//# 1967 "src/Compiler/pars.fsy" +//# 2240 "src/Compiler/pars.fsy" let globalIdent = ident(MangledGlobalName, rhs parseState 1) let mDot = rhs parseState 2 None, prependIdentInLongIdentWithTrivia (SynIdent(globalIdent, (Some(IdentTrivia.OriginalNotation "global")))) mDot _3 ) -//# 1967 "src/Compiler/pars.fsy" +//# 2240 "src/Compiler/pars.fsy" : 'gentype_atomicPatternLongIdent)); -//# 6240 "pars.fs" +//# 6806 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynLongIdent in Microsoft.FSharp.Core.Operators.box ( ( -//# 1972 "src/Compiler/pars.fsy" +//# 2245 "src/Compiler/pars.fsy" (None, _1) ) -//# 1972 "src/Compiler/pars.fsy" +//# 2245 "src/Compiler/pars.fsy" : 'gentype_atomicPatternLongIdent)); -//# 6251 "pars.fs" +//# 6817 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_access in let _4 = parseState.GetInput(4) :?> SynLongIdent in Microsoft.FSharp.Core.Operators.box ( ( -//# 1975 "src/Compiler/pars.fsy" +//# 2248 "src/Compiler/pars.fsy" if not (parseState.LexBuffer.SupportsFeature LanguageFeature.SingleUnderscorePattern) then raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedSymbolDot()) let underscore = ident("_", rhs parseState 2) let mDot = rhs parseState 3 Some(_1), prependIdentInLongIdentWithTrivia (SynIdent(underscore, None)) mDot _4 ) -//# 1975 "src/Compiler/pars.fsy" +//# 2248 "src/Compiler/pars.fsy" : 'gentype_atomicPatternLongIdent)); -//# 6267 "pars.fs" +//# 6833 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_access in let _2 = parseState.GetInput(2) :?> SynLongIdent in Microsoft.FSharp.Core.Operators.box ( ( -//# 1983 "src/Compiler/pars.fsy" +//# 2256 "src/Compiler/pars.fsy" (Some(_1), _2) ) -//# 1983 "src/Compiler/pars.fsy" +//# 2256 "src/Compiler/pars.fsy" : 'gentype_atomicPatternLongIdent)); -//# 6279 "pars.fs" +//# 6845 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1988 "src/Compiler/pars.fsy" +//# 2261 "src/Compiler/pars.fsy" None ) -//# 1988 "src/Compiler/pars.fsy" +//# 2261 "src/Compiler/pars.fsy" : 'gentype_opt_access)); -//# 6289 "pars.fs" +//# 6855 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_access in Microsoft.FSharp.Core.Operators.box ( ( -//# 1991 "src/Compiler/pars.fsy" +//# 2264 "src/Compiler/pars.fsy" Some(_1) ) -//# 1991 "src/Compiler/pars.fsy" +//# 2264 "src/Compiler/pars.fsy" : 'gentype_opt_access)); -//# 6300 "pars.fs" +//# 6866 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 1996 "src/Compiler/pars.fsy" +//# 2269 "src/Compiler/pars.fsy" let m = rhs parseState 1 SynAccess.Private m ) -//# 1996 "src/Compiler/pars.fsy" +//# 2269 "src/Compiler/pars.fsy" : 'gentype_access)); -//# 6311 "pars.fs" +//# 6877 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2000 "src/Compiler/pars.fsy" +//# 2273 "src/Compiler/pars.fsy" let m = rhs parseState 1 SynAccess.Public m ) -//# 2000 "src/Compiler/pars.fsy" +//# 2273 "src/Compiler/pars.fsy" : 'gentype_access)); -//# 6322 "pars.fs" +//# 6888 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2004 "src/Compiler/pars.fsy" +//# 2277 "src/Compiler/pars.fsy" let m = rhs parseState 1 SynAccess.Internal m ) -//# 2004 "src/Compiler/pars.fsy" +//# 2277 "src/Compiler/pars.fsy" : 'gentype_access)); -//# 6333 "pars.fs" +//# 6899 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_objectImplementationBlock in let _3 = parseState.GetInput(3) :?> 'gentype_declEnd in Microsoft.FSharp.Core.Operators.box ( ( -//# 2010 "src/Compiler/pars.fsy" +//# 2283 "src/Compiler/pars.fsy" let mWithKwd = rhs parseState 1 let members = _2 let m = (rhs parseState 1, members) ||> unionRangeWithListBy (fun (mem: SynMemberDefn) -> mem.Range) Some(mWithKwd, members, m) ) -//# 2010 "src/Compiler/pars.fsy" +//# 2283 "src/Compiler/pars.fsy" : 'gentype_opt_interfaceImplDefn)); -//# 6348 "pars.fs" +//# 6914 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2016 "src/Compiler/pars.fsy" +//# 2289 "src/Compiler/pars.fsy" let mWithKwd = rhs parseState 1 Some(mWithKwd, [], mWithKwd) ) -//# 2016 "src/Compiler/pars.fsy" +//# 2289 "src/Compiler/pars.fsy" : 'gentype_opt_interfaceImplDefn)); -//# 6359 "pars.fs" +//# 6925 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2020 "src/Compiler/pars.fsy" +//# 2293 "src/Compiler/pars.fsy" None ) -//# 2020 "src/Compiler/pars.fsy" +//# 2293 "src/Compiler/pars.fsy" : 'gentype_opt_interfaceImplDefn)); -//# 6369 "pars.fs" +//# 6935 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_classDefnBlock in let _3 = parseState.GetInput(3) :?> 'gentype_declEnd in Microsoft.FSharp.Core.Operators.box ( ( -//# 2025 "src/Compiler/pars.fsy" +//# 2298 "src/Compiler/pars.fsy" let mWithKwd = rhs parseState 1 (Some mWithKwd), _2 ) -//# 2025 "src/Compiler/pars.fsy" +//# 2298 "src/Compiler/pars.fsy" : 'gentype_opt_classDefn)); -//# 6382 "pars.fs" +//# 6948 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2029 "src/Compiler/pars.fsy" +//# 2302 "src/Compiler/pars.fsy" None, [] ) -//# 2029 "src/Compiler/pars.fsy" +//# 2302 "src/Compiler/pars.fsy" : 'gentype_opt_classDefn)); -//# 6392 "pars.fs" +//# 6958 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _2 = parseState.GetInput(2) :?> 'gentype_atomTypeNonAtomicDeprecated in + let _2 = parseState.GetInput(2) :?> SynType in let _3 = parseState.GetInput(3) :?> 'gentype_optBaseSpec in Microsoft.FSharp.Core.Operators.box ( ( -//# 2035 "src/Compiler/pars.fsy" - let mDecl = unionRanges (rhs parseState 1) ((_2): SynType).Range +//# 2308 "src/Compiler/pars.fsy" + let mDecl = unionRanges (rhs parseState 1) _2.Range SynMemberDefn.Inherit(_2, _3, mDecl) ) -//# 2035 "src/Compiler/pars.fsy" +//# 2308 "src/Compiler/pars.fsy" : 'gentype_inheritsDefn)); -//# 6405 "pars.fs" +//# 6971 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _2 = parseState.GetInput(2) :?> 'gentype_atomTypeNonAtomicDeprecated in + let _2 = parseState.GetInput(2) :?> SynType in let _3 = parseState.GetInput(3) :?> 'gentype_opt_HIGH_PRECEDENCE_APP in let _4 = parseState.GetInput(4) :?> SynExpr in let _5 = parseState.GetInput(5) :?> 'gentype_optBaseSpec in Microsoft.FSharp.Core.Operators.box ( ( -//# 2039 "src/Compiler/pars.fsy" +//# 2312 "src/Compiler/pars.fsy" let mDecl = unionRanges (rhs parseState 1) _4.Range SynMemberDefn.ImplicitInherit(_2, _4, _5, mDecl) ) -//# 2039 "src/Compiler/pars.fsy" +//# 2312 "src/Compiler/pars.fsy" : 'gentype_inheritsDefn)); -//# 6420 "pars.fs" +//# 6986 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 2043 "src/Compiler/pars.fsy" +//# 2316 "src/Compiler/pars.fsy" let mDecl = (rhs parseState 1) - if not _2 then errorR(Error(FSComp.SR.parsTypeNameCannotBeEmpty(), mDecl)) + if not _2 then errorR (Error(FSComp.SR.parsTypeNameCannotBeEmpty (), mDecl)) SynMemberDefn.Inherit(SynType.LongIdent(SynLongIdent([], [], [])), None, mDecl) ) -//# 2043 "src/Compiler/pars.fsy" +//# 2316 "src/Compiler/pars.fsy" : 'gentype_inheritsDefn)); -//# 6433 "pars.fs" +//# 6999 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_asSpec in Microsoft.FSharp.Core.Operators.box ( ( -//# 2049 "src/Compiler/pars.fsy" +//# 2322 "src/Compiler/pars.fsy" Some(_1) ) -//# 2049 "src/Compiler/pars.fsy" +//# 2322 "src/Compiler/pars.fsy" : 'gentype_optAsSpec)); -//# 6444 "pars.fs" +//# 7010 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2052 "src/Compiler/pars.fsy" +//# 2325 "src/Compiler/pars.fsy" None ) -//# 2052 "src/Compiler/pars.fsy" +//# 2325 "src/Compiler/pars.fsy" : 'gentype_optAsSpec)); -//# 6454 "pars.fs" +//# 7020 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> Ident in Microsoft.FSharp.Core.Operators.box ( ( -//# 2056 "src/Compiler/pars.fsy" - rhs parseState 1, _2 +//# 2329 "src/Compiler/pars.fsy" + rhs parseState 1, Some _2 ) -//# 2056 "src/Compiler/pars.fsy" +//# 2329 "src/Compiler/pars.fsy" : 'gentype_asSpec)); -//# 6465 "pars.fs" +//# 7031 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _1 = parseState.GetInput(1) :?> 'gentype_baseSpec in + let _2 = parseState.GetInput(2) :?> 'gentype_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 2332 "src/Compiler/pars.fsy" + rhs parseState 1, None + ) +//# 2332 "src/Compiler/pars.fsy" + : 'gentype_asSpec)); +//# 7042 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> 'gentype_baseSpec in Microsoft.FSharp.Core.Operators.box ( ( -//# 2060 "src/Compiler/pars.fsy" +//# 2336 "src/Compiler/pars.fsy" Some(_1) ) -//# 2060 "src/Compiler/pars.fsy" +//# 2336 "src/Compiler/pars.fsy" : 'gentype_optBaseSpec)); -//# 6476 "pars.fs" +//# 7053 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2063 "src/Compiler/pars.fsy" +//# 2339 "src/Compiler/pars.fsy" None ) -//# 2063 "src/Compiler/pars.fsy" +//# 2339 "src/Compiler/pars.fsy" : 'gentype_optBaseSpec)); -//# 6486 "pars.fs" +//# 7063 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> Ident in Microsoft.FSharp.Core.Operators.box ( ( -//# 2067 "src/Compiler/pars.fsy" +//# 2343 "src/Compiler/pars.fsy" if (_2).idText <> "base" then errorR(Error(FSComp.SR.parsInheritDeclarationsCannotHaveAsBindings(), rhs2 parseState 1 2)) ident("base", rhs parseState 2) ) -//# 2067 "src/Compiler/pars.fsy" +//# 2343 "src/Compiler/pars.fsy" : 'gentype_baseSpec)); -//# 6499 "pars.fs" +//# 7076 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2072 "src/Compiler/pars.fsy" +//# 2348 "src/Compiler/pars.fsy" errorR(Error(FSComp.SR.parsInheritDeclarationsCannotHaveAsBindings(), rhs2 parseState 1 2)) ident("base", rhs parseState 2) ) -//# 2072 "src/Compiler/pars.fsy" +//# 2348 "src/Compiler/pars.fsy" : 'gentype_baseSpec)); -//# 6510 "pars.fs" +//# 7087 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_objectImplementationMembers in let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in Microsoft.FSharp.Core.Operators.box ( ( -//# 2079 "src/Compiler/pars.fsy" +//# 2355 "src/Compiler/pars.fsy" _2 ) -//# 2079 "src/Compiler/pars.fsy" +//# 2355 "src/Compiler/pars.fsy" : 'gentype_objectImplementationBlock)); -//# 6522 "pars.fs" +//# 7099 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_objectImplementationMembers in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 2082 "src/Compiler/pars.fsy" +//# 2358 "src/Compiler/pars.fsy" if not _3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileObjectMembers()) _2 ) -//# 2082 "src/Compiler/pars.fsy" +//# 2358 "src/Compiler/pars.fsy" : 'gentype_objectImplementationBlock)); -//# 6535 "pars.fs" +//# 7112 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_objectImplementationMembers in Microsoft.FSharp.Core.Operators.box ( ( -//# 2086 "src/Compiler/pars.fsy" +//# 2362 "src/Compiler/pars.fsy" _1 ) -//# 2086 "src/Compiler/pars.fsy" +//# 2362 "src/Compiler/pars.fsy" : 'gentype_objectImplementationBlock)); -//# 6546 "pars.fs" +//# 7123 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_objectImplementationMember in let _2 = parseState.GetInput(2) :?> 'gentype_opt_seps in @@ -6551,24 +7128,24 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2092 "src/Compiler/pars.fsy" +//# 2368 "src/Compiler/pars.fsy" _1 @ _3 ) -//# 2092 "src/Compiler/pars.fsy" +//# 2368 "src/Compiler/pars.fsy" : 'gentype_objectImplementationMembers)); -//# 6559 "pars.fs" +//# 7136 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_objectImplementationMember in let _2 = parseState.GetInput(2) :?> 'gentype_opt_seps in Microsoft.FSharp.Core.Operators.box ( ( -//# 2095 "src/Compiler/pars.fsy" +//# 2371 "src/Compiler/pars.fsy" _1 ) -//# 2095 "src/Compiler/pars.fsy" +//# 2371 "src/Compiler/pars.fsy" : 'gentype_objectImplementationMembers)); -//# 6571 "pars.fs" +//# 7148 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_staticMemberOrMemberOrOverride in @@ -6577,13 +7154,13 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2101 "src/Compiler/pars.fsy" +//# 2377 "src/Compiler/pars.fsy" let rangeStart = rhs parseState 1 _3 None _2 _1 rangeStart ) -//# 2101 "src/Compiler/pars.fsy" +//# 2377 "src/Compiler/pars.fsy" : 'gentype_objectImplementationMember)); -//# 6586 "pars.fs" +//# 7163 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_staticMemberOrMemberOrOverride in @@ -6592,25 +7169,25 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2105 "src/Compiler/pars.fsy" +//# 2381 "src/Compiler/pars.fsy" let rangeStart = rhs parseState 1 _3 _1 _2 rangeStart ) -//# 2105 "src/Compiler/pars.fsy" +//# 2381 "src/Compiler/pars.fsy" : 'gentype_objectImplementationMember)); -//# 6601 "pars.fs" +//# 7178 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_staticMemberOrMemberOrOverride in Microsoft.FSharp.Core.Operators.box ( ( -//# 2109 "src/Compiler/pars.fsy" +//# 2385 "src/Compiler/pars.fsy" [] ) -//# 2109 "src/Compiler/pars.fsy" +//# 2385 "src/Compiler/pars.fsy" : 'gentype_objectImplementationMember)); -//# 6613 "pars.fs" +//# 7190 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _3 = parseState.GetInput(3) :?> 'gentype_memberCore in @@ -6618,46 +7195,46 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2112 "src/Compiler/pars.fsy" +//# 2388 "src/Compiler/pars.fsy" [] ) -//# 2112 "src/Compiler/pars.fsy" +//# 2388 "src/Compiler/pars.fsy" : 'gentype_objectImplementationMember)); -//# 6626 "pars.fs" +//# 7203 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2117 "src/Compiler/pars.fsy" +//# 2393 "src/Compiler/pars.fsy" let mStatic = rhs parseState 1 let mMember = rhs parseState 2 ImplementStaticMemberFlags, (SynLeadingKeyword.StaticMember(mStatic, mMember)) ) -//# 2117 "src/Compiler/pars.fsy" +//# 2393 "src/Compiler/pars.fsy" : 'gentype_staticMemberOrMemberOrOverride)); -//# 6638 "pars.fs" +//# 7215 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2121 "src/Compiler/pars.fsy" +//# 2397 "src/Compiler/pars.fsy" let mMember = rhs parseState 1 OverrideMemberFlags, (SynLeadingKeyword.Member mMember) ) -//# 2121 "src/Compiler/pars.fsy" +//# 2397 "src/Compiler/pars.fsy" : 'gentype_staticMemberOrMemberOrOverride)); -//# 6649 "pars.fs" +//# 7226 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2124 "src/Compiler/pars.fsy" +//# 2400 "src/Compiler/pars.fsy" let mOverride = rhs parseState 1 OverrideMemberFlags, (SynLeadingKeyword.Override mOverride) ) -//# 2124 "src/Compiler/pars.fsy" +//# 2400 "src/Compiler/pars.fsy" : 'gentype_staticMemberOrMemberOrOverride)); -//# 6660 "pars.fs" +//# 7237 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -6668,13 +7245,13 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2133 "src/Compiler/pars.fsy" +//# 2409 "src/Compiler/pars.fsy" errorR(Error(FSComp.SR.parsUnexpectedQuotationOperatorInTypeAliasDidYouMeanVerbatimString(), rhs parseState 4)) SynTypeDefnSimpleRepr.TypeAbbrev(ParserDetail.ErrorRecovery, SynType.LongIdent(_3), unionRanges (rhs parseState 1) _3.Range) ) -//# 2133 "src/Compiler/pars.fsy" +//# 2409 "src/Compiler/pars.fsy" : SynTypeDefnSimpleRepr)); -//# 6677 "pars.fs" +//# 7254 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -6682,14 +7259,14 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2138 "src/Compiler/pars.fsy" +//# 2414 "src/Compiler/pars.fsy" if not (isNil _1) then errorR(Error(FSComp.SR.parsAttributesIllegalHere(), rhs parseState 1)) if Option.isSome _2 then errorR(Error(FSComp.SR.parsTypeAbbreviationsCannotHaveVisibilityDeclarations(), rhs parseState 2)) SynTypeDefnSimpleRepr.TypeAbbrev(ParserDetail.Ok, _3, unionRanges (rhs parseState 1) _3.Range) ) -//# 2138 "src/Compiler/pars.fsy" +//# 2414 "src/Compiler/pars.fsy" : SynTypeDefnSimpleRepr)); -//# 6692 "pars.fs" +//# 7269 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -6697,7 +7274,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2144 "src/Compiler/pars.fsy" +//# 2420 "src/Compiler/pars.fsy" if not (isNil _1) then errorR(Error(FSComp.SR.parsAttributesIllegalHere(), rhs parseState 1)) let rangesOf3 = _3 |> List.map (function Choice1Of2 ec -> ec.Range | Choice2Of2 uc -> uc.Range) let mWhole = (rhs2 parseState 1 2, rangesOf3) ||> List.fold unionRanges @@ -6714,9 +7291,9 @@ let _fsyacc_reductions = lazy [| _3 |> List.choose (function Choice2Of2 data -> Some(data) | Choice1Of2 _ -> failwith "huh?"), mWhole) ) -//# 2144 "src/Compiler/pars.fsy" +//# 2420 "src/Compiler/pars.fsy" : SynTypeDefnSimpleRepr)); -//# 6719 "pars.fs" +//# 7296 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -6724,13 +7301,13 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2162 "src/Compiler/pars.fsy" +//# 2438 "src/Compiler/pars.fsy" if not (isNil _1) then errorR(Error(FSComp.SR.parsAttributesIllegalHere(), rhs parseState 1)) SynTypeDefnSimpleRepr.Record(_2, _3, lhs parseState) ) -//# 2162 "src/Compiler/pars.fsy" +//# 2438 "src/Compiler/pars.fsy" : SynTypeDefnSimpleRepr)); -//# 6733 "pars.fs" +//# 7310 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -6739,18 +7316,18 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2167 "src/Compiler/pars.fsy" +//# 2443 "src/Compiler/pars.fsy" if not (isNil _1) then errorR(Error(FSComp.SR.parsAttributesIllegalHere(), rhs parseState 1)) let mLhs = lhs parseState if parseState.LexBuffer.ReportLibraryOnlyFeatures then libraryOnlyError mLhs if Option.isSome _2 then errorR(Error(FSComp.SR.parsInlineAssemblyCannotHaveVisibilityDeclarations(), rhs parseState 2)) let s, _ = _5 - let ilType = ParseAssemblyCodeType s parseState.LexBuffer.ReportLibraryOnlyFeatures parseState.LexBuffer.LanguageVersion (rhs parseState 5) + let ilType = ParseAssemblyCodeType s parseState.LexBuffer.ReportLibraryOnlyFeatures parseState.LexBuffer.LanguageVersion parseState.LexBuffer.StrictIndentation (rhs parseState 5) SynTypeDefnSimpleRepr.LibraryOnlyILAssembly(box ilType, mLhs) ) -//# 2167 "src/Compiler/pars.fsy" +//# 2443 "src/Compiler/pars.fsy" : SynTypeDefnSimpleRepr)); -//# 6753 "pars.fs" +//# 7330 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> ParseHelpers.LexerContinuation in let _2 = parseState.GetInput(2) :?> 'gentype_recdFieldDeclList in @@ -6758,12 +7335,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2179 "src/Compiler/pars.fsy" +//# 2455 "src/Compiler/pars.fsy" _2 ) -//# 2179 "src/Compiler/pars.fsy" +//# 2455 "src/Compiler/pars.fsy" : 'gentype_braceFieldDeclList)); -//# 6766 "pars.fs" +//# 7343 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> ParseHelpers.LexerContinuation in let _2 = parseState.GetInput(2) :?> 'gentype_recdFieldDeclList in @@ -6771,145 +7348,145 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2182 "src/Compiler/pars.fsy" +//# 2458 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBrace()) _2 ) -//# 2182 "src/Compiler/pars.fsy" +//# 2458 "src/Compiler/pars.fsy" : 'gentype_braceFieldDeclList)); -//# 6780 "pars.fs" +//# 7357 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> ParseHelpers.LexerContinuation in let _3 = parseState.GetInput(3) :?> 'gentype_rbrace in Microsoft.FSharp.Core.Operators.box ( ( -//# 2186 "src/Compiler/pars.fsy" +//# 2462 "src/Compiler/pars.fsy" [] ) -//# 2186 "src/Compiler/pars.fsy" +//# 2462 "src/Compiler/pars.fsy" : 'gentype_braceFieldDeclList)); -//# 6792 "pars.fs" +//# 7369 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_braceBarFieldDeclListCore in Microsoft.FSharp.Core.Operators.box ( ( -//# 2190 "src/Compiler/pars.fsy" +//# 2466 "src/Compiler/pars.fsy" _2, true ) -//# 2190 "src/Compiler/pars.fsy" +//# 2466 "src/Compiler/pars.fsy" : 'gentype_anonRecdType)); -//# 6803 "pars.fs" +//# 7380 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_braceBarFieldDeclListCore in Microsoft.FSharp.Core.Operators.box ( ( -//# 2192 "src/Compiler/pars.fsy" +//# 2468 "src/Compiler/pars.fsy" _1, false ) -//# 2192 "src/Compiler/pars.fsy" +//# 2468 "src/Compiler/pars.fsy" : 'gentype_anonRecdType)); -//# 6814 "pars.fs" +//# 7391 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_recdFieldDeclList in let _3 = parseState.GetInput(3) :?> 'gentype_bar_rbrace in Microsoft.FSharp.Core.Operators.box ( ( -//# 2197 "src/Compiler/pars.fsy" +//# 2473 "src/Compiler/pars.fsy" _2 ) -//# 2197 "src/Compiler/pars.fsy" +//# 2473 "src/Compiler/pars.fsy" : 'gentype_braceBarFieldDeclListCore)); -//# 6826 "pars.fs" +//# 7403 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_recdFieldDeclList in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 2200 "src/Compiler/pars.fsy" +//# 2476 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBraceBar()) _2 ) -//# 2200 "src/Compiler/pars.fsy" +//# 2476 "src/Compiler/pars.fsy" : 'gentype_braceBarFieldDeclListCore)); -//# 6839 "pars.fs" +//# 7416 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_bar_rbrace in Microsoft.FSharp.Core.Operators.box ( ( -//# 2204 "src/Compiler/pars.fsy" +//# 2480 "src/Compiler/pars.fsy" [] ) -//# 2204 "src/Compiler/pars.fsy" +//# 2480 "src/Compiler/pars.fsy" : 'gentype_braceBarFieldDeclListCore)); -//# 6850 "pars.fs" +//# 7427 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2208 "src/Compiler/pars.fsy" +//# 2484 "src/Compiler/pars.fsy" SynTypeDefnKind.Class ) -//# 2208 "src/Compiler/pars.fsy" +//# 2484 "src/Compiler/pars.fsy" : 'gentype_classOrInterfaceOrStruct)); -//# 6860 "pars.fs" +//# 7437 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2211 "src/Compiler/pars.fsy" +//# 2487 "src/Compiler/pars.fsy" SynTypeDefnKind.Interface ) -//# 2211 "src/Compiler/pars.fsy" +//# 2487 "src/Compiler/pars.fsy" : 'gentype_classOrInterfaceOrStruct)); -//# 6870 "pars.fs" +//# 7447 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2214 "src/Compiler/pars.fsy" +//# 2490 "src/Compiler/pars.fsy" SynTypeDefnKind.Struct ) -//# 2214 "src/Compiler/pars.fsy" +//# 2490 "src/Compiler/pars.fsy" : 'gentype_classOrInterfaceOrStruct)); -//# 6880 "pars.fs" +//# 7457 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2217 "src/Compiler/pars.fsy" +//# 2493 "src/Compiler/pars.fsy" ) -//# 2217 "src/Compiler/pars.fsy" +//# 2493 "src/Compiler/pars.fsy" : 'gentype_interfaceMember)); -//# 6890 "pars.fs" +//# 7467 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2218 "src/Compiler/pars.fsy" +//# 2494 "src/Compiler/pars.fsy" ) -//# 2218 "src/Compiler/pars.fsy" +//# 2494 "src/Compiler/pars.fsy" : 'gentype_interfaceMember)); -//# 6900 "pars.fs" +//# 7477 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_access in let _2 = parseState.GetInput(2) :?> SynLongIdent in Microsoft.FSharp.Core.Operators.box ( ( -//# 2222 "src/Compiler/pars.fsy" +//# 2498 "src/Compiler/pars.fsy" None, _2.LongIdent, false, _1 ) -//# 2222 "src/Compiler/pars.fsy" +//# 2498 "src/Compiler/pars.fsy" : 'gentype_tyconNameAndTyparDecls)); -//# 6912 "pars.fs" +//# 7489 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_access in let _2 = parseState.GetInput(2) :?> 'gentype_prefixTyparDecls in @@ -6917,12 +7494,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2225 "src/Compiler/pars.fsy" +//# 2501 "src/Compiler/pars.fsy" Some _2, _3.LongIdent, false, _1 ) -//# 2225 "src/Compiler/pars.fsy" +//# 2501 "src/Compiler/pars.fsy" : 'gentype_tyconNameAndTyparDecls)); -//# 6925 "pars.fs" +//# 7502 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_access in let _2 = parseState.GetInput(2) :?> SynLongIdent in @@ -6930,70 +7507,97 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2228 "src/Compiler/pars.fsy" +//# 2504 "src/Compiler/pars.fsy" Some _3, _2.LongIdent, true, _1 ) -//# 2228 "src/Compiler/pars.fsy" +//# 2504 "src/Compiler/pars.fsy" : 'gentype_tyconNameAndTyparDecls)); -//# 6938 "pars.fs" +//# 7515 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> 'gentype_opt_access in + let _2 = parseState.GetInput(2) :?> 'gentype_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 2507 "src/Compiler/pars.fsy" + None, [], false, _1 + ) +//# 2507 "src/Compiler/pars.fsy" + : 'gentype_tyconNameAndTyparDecls)); +//# 7527 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynTypar in Microsoft.FSharp.Core.Operators.box ( ( -//# 2232 "src/Compiler/pars.fsy" - SynTyparDecls.SinglePrefix(SynTyparDecl([], _1), rhs parseState 1) +//# 2511 "src/Compiler/pars.fsy" + SynTyparDecls.SinglePrefix(SynTyparDecl([], _1, [], SynTyparDeclTrivia.Zero), rhs parseState 1) ) -//# 2232 "src/Compiler/pars.fsy" +//# 2511 "src/Compiler/pars.fsy" : 'gentype_prefixTyparDecls)); -//# 6949 "pars.fs" +//# 7538 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typarDeclList in let _3 = parseState.GetInput(3) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 2235 "src/Compiler/pars.fsy" +//# 2514 "src/Compiler/pars.fsy" SynTyparDecls.PrefixList(List.rev _2, rhs2 parseState 1 3) ) -//# 2235 "src/Compiler/pars.fsy" +//# 2514 "src/Compiler/pars.fsy" : 'gentype_prefixTyparDecls)); -//# 6961 "pars.fs" +//# 7550 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typarDeclList in let _3 = parseState.GetInput(3) :?> 'gentype_typarDecl in Microsoft.FSharp.Core.Operators.box ( ( -//# 2238 "src/Compiler/pars.fsy" +//# 2517 "src/Compiler/pars.fsy" _3 :: _1 ) -//# 2238 "src/Compiler/pars.fsy" +//# 2517 "src/Compiler/pars.fsy" : 'gentype_typarDeclList)); -//# 6973 "pars.fs" +//# 7562 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typarDecl in Microsoft.FSharp.Core.Operators.box ( ( -//# 2239 "src/Compiler/pars.fsy" +//# 2518 "src/Compiler/pars.fsy" [_1] ) -//# 2239 "src/Compiler/pars.fsy" +//# 2518 "src/Compiler/pars.fsy" : 'gentype_typarDeclList)); -//# 6984 "pars.fs" +//# 7573 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in + let _2 = parseState.GetInput(2) :?> SynTypar in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 2522 "src/Compiler/pars.fsy" + SynTyparDecl(_1, _2, [], SynTyparDeclTrivia.Zero) + ) +//# 2522 "src/Compiler/pars.fsy" + : 'gentype_typarDecl)); +//# 7585 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> SynTypar in + let _4 = parseState.GetInput(4) :?> 'gentype_intersectionConstraints in Microsoft.FSharp.Core.Operators.box ( ( -//# 2243 "src/Compiler/pars.fsy" - SynTyparDecl(_1, _2) +//# 2525 "src/Compiler/pars.fsy" + parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.ConstraintIntersectionOnFlexibleTypes (rhs2 parseState 3 4) + let constraints, mAmpersands = _4 + SynTyparDecl(_1, _2, List.rev constraints, { AmpersandRanges = rhs parseState 3 :: List.rev mAmpersands }) ) -//# 2243 "src/Compiler/pars.fsy" +//# 2525 "src/Compiler/pars.fsy" : 'gentype_typarDecl)); -//# 6996 "pars.fs" +//# 7600 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_HIGH_PRECEDENCE_TYAPP in let _2 = parseState.GetInput(2) :?> bool in @@ -7003,46 +7607,46 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2249 "src/Compiler/pars.fsy" +//# 2533 "src/Compiler/pars.fsy" let m = rhs2 parseState 2 5 if not _2 then warning(Error(FSComp.SR.parsNonAdjacentTypars(), m)) SynTyparDecls.PostfixList(List.rev _3, _4, m) ) -//# 2249 "src/Compiler/pars.fsy" +//# 2533 "src/Compiler/pars.fsy" : 'gentype_postfixTyparDecls)); -//# 7013 "pars.fs" +//# 7617 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typarDeclList in Microsoft.FSharp.Core.Operators.box ( ( -//# 2257 "src/Compiler/pars.fsy" +//# 2541 "src/Compiler/pars.fsy" (List.rev _1, true) ) -//# 2257 "src/Compiler/pars.fsy" +//# 2541 "src/Compiler/pars.fsy" : 'gentype_explicitValTyparDeclsCore)); -//# 7024 "pars.fs" +//# 7628 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typarDeclList in Microsoft.FSharp.Core.Operators.box ( ( -//# 2260 "src/Compiler/pars.fsy" +//# 2544 "src/Compiler/pars.fsy" (List.rev _1, false) ) -//# 2260 "src/Compiler/pars.fsy" +//# 2544 "src/Compiler/pars.fsy" : 'gentype_explicitValTyparDeclsCore)); -//# 7035 "pars.fs" +//# 7639 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2263 "src/Compiler/pars.fsy" +//# 2547 "src/Compiler/pars.fsy" ([], false) ) -//# 2263 "src/Compiler/pars.fsy" +//# 2547 "src/Compiler/pars.fsy" : 'gentype_explicitValTyparDeclsCore)); -//# 7045 "pars.fs" +//# 7649 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_HIGH_PRECEDENCE_TYAPP in let _2 = parseState.GetInput(2) :?> bool in @@ -7052,141 +7656,171 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2267 "src/Compiler/pars.fsy" +//# 2551 "src/Compiler/pars.fsy" let m = rhs2 parseState 2 5 if not _2 then warning(Error(FSComp.SR.parsNonAdjacentTypars(), m)) let tps, flex = _3 let tps = SynTyparDecls.PostfixList(tps, _4, m) SynValTyparDecls(Some tps, flex) ) -//# 2267 "src/Compiler/pars.fsy" +//# 2551 "src/Compiler/pars.fsy" : 'gentype_explicitValTyparDecls)); -//# 7064 "pars.fs" +//# 7668 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_explicitValTyparDecls in Microsoft.FSharp.Core.Operators.box ( ( -//# 2275 "src/Compiler/pars.fsy" +//# 2559 "src/Compiler/pars.fsy" _1 ) -//# 2275 "src/Compiler/pars.fsy" +//# 2559 "src/Compiler/pars.fsy" : 'gentype_opt_explicitValTyparDecls)); -//# 7075 "pars.fs" +//# 7679 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2277 "src/Compiler/pars.fsy" +//# 2561 "src/Compiler/pars.fsy" SynValTyparDecls(None, true) ) -//# 2277 "src/Compiler/pars.fsy" +//# 2561 "src/Compiler/pars.fsy" : 'gentype_opt_explicitValTyparDecls)); -//# 7085 "pars.fs" +//# 7689 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2283 "src/Compiler/pars.fsy" +//# 2567 "src/Compiler/pars.fsy" [] ) -//# 2283 "src/Compiler/pars.fsy" +//# 2567 "src/Compiler/pars.fsy" : 'gentype_opt_typeConstraints)); -//# 7095 "pars.fs" +//# 7699 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typeConstraints in Microsoft.FSharp.Core.Operators.box ( ( -//# 2286 "src/Compiler/pars.fsy" +//# 2570 "src/Compiler/pars.fsy" List.rev _2 ) -//# 2286 "src/Compiler/pars.fsy" +//# 2570 "src/Compiler/pars.fsy" : 'gentype_opt_typeConstraints)); -//# 7106 "pars.fs" +//# 7710 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typeConstraints in let _3 = parseState.GetInput(3) :?> 'gentype_typeConstraint in Microsoft.FSharp.Core.Operators.box ( ( -//# 2292 "src/Compiler/pars.fsy" +//# 2576 "src/Compiler/pars.fsy" _3 :: _1 ) -//# 2292 "src/Compiler/pars.fsy" +//# 2576 "src/Compiler/pars.fsy" : 'gentype_typeConstraints)); -//# 7118 "pars.fs" +//# 7722 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typeConstraint in Microsoft.FSharp.Core.Operators.box ( ( -//# 2295 "src/Compiler/pars.fsy" +//# 2579 "src/Compiler/pars.fsy" [_1] ) -//# 2295 "src/Compiler/pars.fsy" +//# 2579 "src/Compiler/pars.fsy" : 'gentype_typeConstraints)); -//# 7129 "pars.fs" +//# 7733 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> 'gentype_intersectionConstraints in + let _3 = parseState.GetInput(3) :?> 'gentype_atomType in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 2585 "src/Compiler/pars.fsy" + let constraints, mAmpersands = _1 + match _3 with + | SynType.HashConstraint _ -> () + | ty -> errorR(Error(FSComp.SR.parsConstraintIntersectionSyntaxUsedWithNonFlexibleType(), ty.Range)) + (_3 :: constraints), (rhs parseState 2 :: mAmpersands) + ) +//# 2585 "src/Compiler/pars.fsy" + : 'gentype_intersectionConstraints)); +//# 7749 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> 'gentype_atomType in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 2594 "src/Compiler/pars.fsy" + match _1 with + | SynType.HashConstraint _ -> () + | ty -> errorR(Error(FSComp.SR.parsConstraintIntersectionSyntaxUsedWithNonFlexibleType(), ty.Range)) + [ _1 ], [] + ) +//# 2594 "src/Compiler/pars.fsy" + : 'gentype_intersectionConstraints)); +//# 7763 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynTypar in let _4 = parseState.GetInput(4) :?> SynType in Microsoft.FSharp.Core.Operators.box ( ( -//# 2301 "src/Compiler/pars.fsy" +//# 2604 "src/Compiler/pars.fsy" if parseState.LexBuffer.ReportLibraryOnlyFeatures then libraryOnlyError (lhs parseState) SynTypeConstraint.WhereTyparDefaultsToType(_2, _4, lhs parseState) ) -//# 2301 "src/Compiler/pars.fsy" +//# 2604 "src/Compiler/pars.fsy" : 'gentype_typeConstraint)); -//# 7142 "pars.fs" +//# 7776 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynTypar in let _3 = parseState.GetInput(3) :?> SynType in Microsoft.FSharp.Core.Operators.box ( ( -//# 2305 "src/Compiler/pars.fsy" +//# 2608 "src/Compiler/pars.fsy" SynTypeConstraint.WhereTyparSubtypeOfType(_1, _3, lhs parseState) ) -//# 2305 "src/Compiler/pars.fsy" +//# 2608 "src/Compiler/pars.fsy" : 'gentype_typeConstraint)); -//# 7154 "pars.fs" +//# 7788 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynTypar in Microsoft.FSharp.Core.Operators.box ( ( -//# 2308 "src/Compiler/pars.fsy" +//# 2611 "src/Compiler/pars.fsy" SynTypeConstraint.WhereTyparIsValueType(_1, lhs parseState) ) -//# 2308 "src/Compiler/pars.fsy" +//# 2611 "src/Compiler/pars.fsy" : 'gentype_typeConstraint)); -//# 7165 "pars.fs" +//# 7799 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynTypar in let _3 = parseState.GetInput(3) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 2311 "src/Compiler/pars.fsy" +//# 2614 "src/Compiler/pars.fsy" if _3 <> "not" then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedIdentifier(_3)) SynTypeConstraint.WhereTyparIsReferenceType(_1, lhs parseState) ) -//# 2311 "src/Compiler/pars.fsy" +//# 2614 "src/Compiler/pars.fsy" : 'gentype_typeConstraint)); -//# 7178 "pars.fs" +//# 7812 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynTypar in Microsoft.FSharp.Core.Operators.box ( ( -//# 2315 "src/Compiler/pars.fsy" +//# 2618 "src/Compiler/pars.fsy" SynTypeConstraint.WhereTyparSupportsNull(_1, lhs parseState) ) -//# 2315 "src/Compiler/pars.fsy" +//# 2618 "src/Compiler/pars.fsy" : 'gentype_typeConstraint)); -//# 7189 "pars.fs" +//# 7823 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynTypar in let _4 = parseState.GetInput(4) :?> 'gentype_classMemberSpfn in @@ -7194,13 +7828,13 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2318 "src/Compiler/pars.fsy" +//# 2621 "src/Compiler/pars.fsy" let tp = _1 SynTypeConstraint.WhereTyparSupportsMember(SynType.Var(tp, tp.Range), _4, lhs parseState) ) -//# 2318 "src/Compiler/pars.fsy" +//# 2621 "src/Compiler/pars.fsy" : 'gentype_typeConstraint)); -//# 7203 "pars.fs" +//# 7837 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typeAlts in let _3 = parseState.GetInput(3) :?> 'gentype_rparen in @@ -7209,27 +7843,27 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2322 "src/Compiler/pars.fsy" +//# 2625 "src/Compiler/pars.fsy" let mParen = rhs2 parseState 1 3 let t = SynType.Paren(_2, mParen) SynTypeConstraint.WhereTyparSupportsMember(t, _6, lhs parseState) ) -//# 2322 "src/Compiler/pars.fsy" +//# 2625 "src/Compiler/pars.fsy" : 'gentype_typeConstraint)); -//# 7219 "pars.fs" +//# 7853 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynTypar in let _4 = parseState.GetInput(4) :?> range * range option * SynType list * range list * range in Microsoft.FSharp.Core.Operators.box ( ( -//# 2327 "src/Compiler/pars.fsy" +//# 2630 "src/Compiler/pars.fsy" let _ltm, _gtm, args, _commas, mWhole = _4 SynTypeConstraint.WhereTyparIsDelegate(_1, args, unionRanges _1.Range mWhole) ) -//# 2327 "src/Compiler/pars.fsy" +//# 2630 "src/Compiler/pars.fsy" : 'gentype_typeConstraint)); -//# 7232 "pars.fs" +//# 7866 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynTypar in let _3 = parseState.GetInput(3) :?> string in @@ -7237,80 +7871,80 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2331 "src/Compiler/pars.fsy" +//# 2634 "src/Compiler/pars.fsy" match _3 with | "enum" -> let _ltm, _gtm, args, _commas, mWhole = _4 SynTypeConstraint.WhereTyparIsEnum(_1, args, unionRanges _1.Range mWhole) | nm -> raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedIdentifier(nm)) ) -//# 2331 "src/Compiler/pars.fsy" +//# 2634 "src/Compiler/pars.fsy" : 'gentype_typeConstraint)); -//# 7249 "pars.fs" +//# 7883 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynTypar in let _3 = parseState.GetInput(3) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 2338 "src/Compiler/pars.fsy" +//# 2641 "src/Compiler/pars.fsy" match _3 with | "comparison" -> SynTypeConstraint.WhereTyparIsComparable(_1, lhs parseState) | "equality" -> SynTypeConstraint.WhereTyparIsEquatable(_1, lhs parseState) | "unmanaged" -> SynTypeConstraint.WhereTyparIsUnmanaged(_1, lhs parseState) | nm -> raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedIdentifier(nm)) ) -//# 2338 "src/Compiler/pars.fsy" +//# 2641 "src/Compiler/pars.fsy" : 'gentype_typeConstraint)); -//# 7265 "pars.fs" +//# 7899 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in Microsoft.FSharp.Core.Operators.box ( ( -//# 2345 "src/Compiler/pars.fsy" +//# 2648 "src/Compiler/pars.fsy" SynTypeConstraint.WhereSelfConstrained(_1, lhs parseState) ) -//# 2345 "src/Compiler/pars.fsy" +//# 2648 "src/Compiler/pars.fsy" : 'gentype_typeConstraint)); -//# 7276 "pars.fs" +//# 7910 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typeAlts in let _3 = parseState.GetInput(3) :?> 'gentype_appType in Microsoft.FSharp.Core.Operators.box ( ( -//# 2349 "src/Compiler/pars.fsy" +//# 2652 "src/Compiler/pars.fsy" let mOr = rhs parseState 2 let m = unionRanges _1.Range _3.Range SynType.Or(_1, _3, m, { OrKeyword = mOr }) ) -//# 2349 "src/Compiler/pars.fsy" +//# 2652 "src/Compiler/pars.fsy" : 'gentype_typeAlts)); -//# 7290 "pars.fs" +//# 7924 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in Microsoft.FSharp.Core.Operators.box ( ( -//# 2354 "src/Compiler/pars.fsy" +//# 2657 "src/Compiler/pars.fsy" _1 ) -//# 2354 "src/Compiler/pars.fsy" +//# 2657 "src/Compiler/pars.fsy" : 'gentype_typeAlts)); -//# 7301 "pars.fs" +//# 7935 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_barAndgrabXmlDoc in let _2 = parseState.GetInput(2) :?> 'gentype_attrUnionCaseDecls in Microsoft.FSharp.Core.Operators.box ( ( -//# 2361 "src/Compiler/pars.fsy" +//# 2664 "src/Compiler/pars.fsy" _2 _1 ) -//# 2361 "src/Compiler/pars.fsy" +//# 2664 "src/Compiler/pars.fsy" : Choice list)); -//# 7313 "pars.fs" +//# 7947 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_firstUnionCaseDeclOfMany in let _2 = parseState.GetInput(2) :?> 'gentype_barAndgrabXmlDoc in @@ -7318,34 +7952,34 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2364 "src/Compiler/pars.fsy" +//# 2667 "src/Compiler/pars.fsy" _1 :: _3 _2 ) -//# 2364 "src/Compiler/pars.fsy" +//# 2667 "src/Compiler/pars.fsy" : Choice list)); -//# 7326 "pars.fs" +//# 7960 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_firstUnionCaseDecl in Microsoft.FSharp.Core.Operators.box ( ( -//# 2367 "src/Compiler/pars.fsy" +//# 2670 "src/Compiler/pars.fsy" [_1] ) -//# 2367 "src/Compiler/pars.fsy" +//# 2670 "src/Compiler/pars.fsy" : Choice list)); -//# 7337 "pars.fs" +//# 7971 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2371 "src/Compiler/pars.fsy" +//# 2674 "src/Compiler/pars.fsy" let mBar = rhs parseState 1 grabXmlDoc(parseState, [], 1), mBar ) -//# 2371 "src/Compiler/pars.fsy" +//# 2674 "src/Compiler/pars.fsy" : 'gentype_barAndgrabXmlDoc)); -//# 7348 "pars.fs" +//# 7982 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_attrUnionCaseDecl in let _2 = parseState.GetInput(2) :?> 'gentype_barAndgrabXmlDoc in @@ -7353,23 +7987,23 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2376 "src/Compiler/pars.fsy" +//# 2679 "src/Compiler/pars.fsy" (fun xmlDocAndBar -> _1 xmlDocAndBar :: _3 _2) ) -//# 2376 "src/Compiler/pars.fsy" +//# 2679 "src/Compiler/pars.fsy" : 'gentype_attrUnionCaseDecls)); -//# 7361 "pars.fs" +//# 7995 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_attrUnionCaseDecl in Microsoft.FSharp.Core.Operators.box ( ( -//# 2379 "src/Compiler/pars.fsy" +//# 2682 "src/Compiler/pars.fsy" (fun xmlDocAndBar -> [ _1 xmlDocAndBar ]) ) -//# 2379 "src/Compiler/pars.fsy" +//# 2682 "src/Compiler/pars.fsy" : 'gentype_attrUnionCaseDecls)); -//# 7372 "pars.fs" +//# 8006 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -7377,17 +8011,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2384 "src/Compiler/pars.fsy" - if Option.isSome _2 then errorR(Error(FSComp.SR.parsUnionCasesCannotHaveVisibilityDeclarations(), rhs parseState 2)) - let mDecl = rhs parseState 3 - (fun (xmlDoc, mBar) -> - let trivia: SynUnionCaseTrivia = { BarRange = Some mBar } - let mDecl = unionRangeWithXmlDoc xmlDoc mDecl - Choice2Of2 (SynUnionCase (_1, _3, SynUnionCaseKind.Fields [], xmlDoc, None, mDecl, trivia))) +//# 2687 "src/Compiler/pars.fsy" + mkSynUnionCase _1 _2 _3 (SynUnionCaseKind.Fields []) (rhs2 parseState 1 3) >> Choice2Of2 ) -//# 2384 "src/Compiler/pars.fsy" +//# 2687 "src/Compiler/pars.fsy" : 'gentype_attrUnionCaseDecl)); -//# 7390 "pars.fs" +//# 8019 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -7395,17 +8024,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2392 "src/Compiler/pars.fsy" - if Option.isSome _2 then errorR(Error(FSComp.SR.parsUnionCasesCannotHaveVisibilityDeclarations(), rhs parseState 2)) - (fun (xmlDoc, mBar) -> - let id = SynIdent(mkSynId mBar.EndRange "", None) - let trivia: SynUnionCaseTrivia = { BarRange = Some mBar } - let mDecl = unionRangeWithXmlDoc xmlDoc mBar - Choice2Of2 (SynUnionCase (_1, id, SynUnionCaseKind.Fields [], xmlDoc, None, mDecl, trivia))) +//# 2690 "src/Compiler/pars.fsy" + fun (xmlDoc, mBar) -> mkSynUnionCase _1 _2 (SynIdent(mkSynId mBar.EndRange "", None)) (SynUnionCaseKind.Fields []) mBar (xmlDoc, mBar) |> Choice2Of2 ) -//# 2392 "src/Compiler/pars.fsy" +//# 2690 "src/Compiler/pars.fsy" : 'gentype_attrUnionCaseDecl)); -//# 7408 "pars.fs" +//# 8032 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -7414,17 +8038,27 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2400 "src/Compiler/pars.fsy" - if Option.isSome _2 then errorR(Error(FSComp.SR.parsUnionCasesCannotHaveVisibilityDeclarations(), rhs parseState 2)) - let mDecl = rhs2 parseState 1 5 - (fun (xmlDoc, mBar) -> - let trivia: SynUnionCaseTrivia = { BarRange = Some mBar } - let mDecl = unionRangeWithXmlDoc xmlDoc mDecl - Choice2Of2 (SynUnionCase (_1, _3, SynUnionCaseKind.Fields _5, xmlDoc, None, mDecl, trivia))) +//# 2693 "src/Compiler/pars.fsy" + mkSynUnionCase _1 _2 _3 (SynUnionCaseKind.Fields _5) (rhs2 parseState 1 5) >> Choice2Of2 ) -//# 2400 "src/Compiler/pars.fsy" +//# 2693 "src/Compiler/pars.fsy" : 'gentype_attrUnionCaseDecl)); -//# 7427 "pars.fs" +//# 8046 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in + let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in + let _3 = parseState.GetInput(3) :?> 'gentype_unionCaseName in + let _4 = parseState.GetInput(4) :?> 'gentype_unionCaseRepr in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 2696 "src/Compiler/pars.fsy" + errorR (Error(FSComp.SR.parsMissingKeyword("of"), rhs2 parseState 3 4)) + mkSynUnionCase _1 _2 _3 (SynUnionCaseKind.Fields _4) (rhs2 parseState 1 4) >> Choice2Of2 + ) +//# 2696 "src/Compiler/pars.fsy" + : 'gentype_attrUnionCaseDecl)); +//# 8061 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -7432,21 +8066,15 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2408 "src/Compiler/pars.fsy" - if Option.isSome _2 then errorR(Error(FSComp.SR.parsUnionCasesCannotHaveVisibilityDeclarations(), rhs parseState 2)) +//# 2700 "src/Compiler/pars.fsy" let mOf = rhs parseState 3 let mId = mOf.StartRange errorR (Error(FSComp.SR.parsMissingUnionCaseName(), mOf)) - let mDecl = rhs2 parseState 1 4 - (fun (xmlDoc, mBar) -> - let id = SynIdent(mkSynId mId "", None) - let trivia: SynUnionCaseTrivia = { BarRange = Some mBar } - let mDecl = unionRangeWithXmlDoc xmlDoc mDecl - Choice2Of2(SynUnionCase(_1, id, SynUnionCaseKind.Fields _4, xmlDoc, None, mDecl, trivia))) + mkSynUnionCase _1 _2 (SynIdent(mkSynId mId "", None)) (SynUnionCaseKind.Fields _4) (rhs2 parseState 1 4) >> Choice2Of2 ) -//# 2408 "src/Compiler/pars.fsy" +//# 2700 "src/Compiler/pars.fsy" : 'gentype_attrUnionCaseDecl)); -//# 7449 "pars.fs" +//# 8077 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -7454,21 +8082,15 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2420 "src/Compiler/pars.fsy" - if Option.isSome _2 then errorR(Error(FSComp.SR.parsUnionCasesCannotHaveVisibilityDeclarations(), rhs parseState 2)) +//# 2706 "src/Compiler/pars.fsy" let mOf = rhs parseState 3 let mId = mOf.StartRange errorR (Error(FSComp.SR.parsMissingUnionCaseName(), mOf)) - let mDecl = rhs2 parseState 1 3 - (fun (xmlDoc, mBar) -> - let id = SynIdent(mkSynId mId "", None) - let trivia: SynUnionCaseTrivia = { BarRange = Some mBar } - let mDecl = unionRangeWithXmlDoc xmlDoc mDecl - Choice2Of2(SynUnionCase(_1, id, SynUnionCaseKind.Fields [], xmlDoc, None, mDecl, trivia))) + mkSynUnionCase _1 _2 (SynIdent(mkSynId mId "", None)) (SynUnionCaseKind.Fields []) (rhs2 parseState 1 3) >> Choice2Of2 ) -//# 2420 "src/Compiler/pars.fsy" +//# 2706 "src/Compiler/pars.fsy" : 'gentype_attrUnionCaseDecl)); -//# 7471 "pars.fs" +//# 8093 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -7477,17 +8099,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2432 "src/Compiler/pars.fsy" - if Option.isSome _2 then errorR(Error(FSComp.SR.parsUnionCasesCannotHaveVisibilityDeclarations(), rhs parseState 2)) - let mDecl = rhs2 parseState 1 4 - (fun (xmlDoc, mBar) -> - let trivia: SynUnionCaseTrivia = { BarRange = Some mBar } - let mDecl = unionRangeWithXmlDoc xmlDoc mDecl - Choice2Of2 (SynUnionCase (_1, _3, SynUnionCaseKind.Fields [], xmlDoc, None, mDecl, trivia))) +//# 2712 "src/Compiler/pars.fsy" + mkSynUnionCase _1 _2 _3 (SynUnionCaseKind.Fields []) (rhs2 parseState 1 4) >> Choice2Of2 ) -//# 2432 "src/Compiler/pars.fsy" +//# 2712 "src/Compiler/pars.fsy" : 'gentype_attrUnionCaseDecl)); -//# 7490 "pars.fs" +//# 8107 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -7496,18 +8113,13 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2440 "src/Compiler/pars.fsy" - if Option.isSome _2 then errorR(Error(FSComp.SR.parsUnionCasesCannotHaveVisibilityDeclarations(), rhs parseState 2)) +//# 2715 "src/Compiler/pars.fsy" if parseState.LexBuffer.ReportLibraryOnlyFeatures then libraryOnlyWarning(lhs parseState) - let mDecl = rhs2 parseState 1 5 - (fun (xmlDoc, mBar) -> - let trivia: SynUnionCaseTrivia = { BarRange = Some mBar } - let mDecl = unionRangeWithXmlDoc xmlDoc mDecl - Choice2Of2 (SynUnionCase (_1, _3, SynUnionCaseKind.FullType _5, xmlDoc, None, mDecl, trivia))) + mkSynUnionCase _1 _2 _3 (SynUnionCaseKind.FullType _5) (rhs2 parseState 1 5) >> Choice2Of2 ) -//# 2440 "src/Compiler/pars.fsy" +//# 2715 "src/Compiler/pars.fsy" : 'gentype_attrUnionCaseDecl)); -//# 7510 "pars.fs" +//# 8122 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -7516,7 +8128,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2449 "src/Compiler/pars.fsy" +//# 2719 "src/Compiler/pars.fsy" if Option.isSome _2 then errorR(Error(FSComp.SR.parsEnumFieldsCannotHaveVisibilityDeclarations(), rhs parseState 2)) let mEquals = rhs parseState 4 let mDecl = rhs2 parseState 1 5 @@ -7525,61 +8137,61 @@ let _fsyacc_reductions = lazy [| let mDecl = unionRangeWithXmlDoc xmlDoc mDecl Choice1Of2 (SynEnumCase (_1, _3, fst _5, xmlDoc, mDecl, trivia))) ) -//# 2449 "src/Compiler/pars.fsy" +//# 2719 "src/Compiler/pars.fsy" : 'gentype_attrUnionCaseDecl)); -//# 7530 "pars.fs" +//# 8142 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_nameop in Microsoft.FSharp.Core.Operators.box ( ( -//# 2460 "src/Compiler/pars.fsy" +//# 2730 "src/Compiler/pars.fsy" _1 ) -//# 2460 "src/Compiler/pars.fsy" +//# 2730 "src/Compiler/pars.fsy" : 'gentype_unionCaseName)); -//# 7541 "pars.fs" +//# 8153 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 2463 "src/Compiler/pars.fsy" +//# 2733 "src/Compiler/pars.fsy" let lpr = rhs parseState 1 let rpr = rhs parseState 3 SynIdent(ident(opNameCons, rhs parseState 2), Some(IdentTrivia.OriginalNotationWithParen(lpr, "::", rpr))) ) -//# 2463 "src/Compiler/pars.fsy" +//# 2733 "src/Compiler/pars.fsy" : 'gentype_unionCaseName)); -//# 7554 "pars.fs" +//# 8166 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _4 = parseState.GetInput(4) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 2468 "src/Compiler/pars.fsy" +//# 2738 "src/Compiler/pars.fsy" let lpr = rhs parseState 1 let rpr = rhs parseState 3 SynIdent(ident(opNameNil, rhs2 parseState 2 3), Some(IdentTrivia.OriginalNotationWithParen(lpr, "[]", rpr))) ) -//# 2468 "src/Compiler/pars.fsy" +//# 2738 "src/Compiler/pars.fsy" : 'gentype_unionCaseName)); -//# 7567 "pars.fs" +//# 8179 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Ident in let _2 = parseState.GetInput(2) :?> 'gentype_opt_OBLOCKSEP in Microsoft.FSharp.Core.Operators.box ( ( -//# 2474 "src/Compiler/pars.fsy" +//# 2744 "src/Compiler/pars.fsy" let trivia: SynUnionCaseTrivia = { BarRange = None } let xmlDoc = grabXmlDoc(parseState, [], 1) let mDecl = (rhs parseState 1) |> unionRangeWithXmlDoc xmlDoc Choice2Of2 (SynUnionCase ([], (SynIdent(_1, None)), SynUnionCaseKind.Fields [], xmlDoc, None, mDecl, trivia)) ) -//# 2474 "src/Compiler/pars.fsy" +//# 2744 "src/Compiler/pars.fsy" : 'gentype_firstUnionCaseDeclOfMany)); -//# 7582 "pars.fs" +//# 8194 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Ident in let _3 = parseState.GetInput(3) :?> SynExpr * bool in @@ -7587,64 +8199,64 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2480 "src/Compiler/pars.fsy" +//# 2750 "src/Compiler/pars.fsy" let mEquals = rhs parseState 2 let trivia: SynEnumCaseTrivia = { BarRange = None; EqualsRange = mEquals } let xmlDoc = grabXmlDoc(parseState, [], 1) let mDecl = (rhs2 parseState 1 3) |> unionRangeWithXmlDoc xmlDoc Choice1Of2 (SynEnumCase ([], SynIdent(_1, None), fst _3, xmlDoc, mDecl, trivia)) ) -//# 2480 "src/Compiler/pars.fsy" +//# 2750 "src/Compiler/pars.fsy" : 'gentype_firstUnionCaseDeclOfMany)); -//# 7599 "pars.fs" +//# 8211 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_firstUnionCaseDecl in let _2 = parseState.GetInput(2) :?> 'gentype_opt_OBLOCKSEP in Microsoft.FSharp.Core.Operators.box ( ( -//# 2487 "src/Compiler/pars.fsy" +//# 2757 "src/Compiler/pars.fsy" _1 ) -//# 2487 "src/Compiler/pars.fsy" +//# 2757 "src/Compiler/pars.fsy" : 'gentype_firstUnionCaseDeclOfMany)); -//# 7611 "pars.fs" +//# 8223 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Ident in let _3 = parseState.GetInput(3) :?> 'gentype_unionCaseRepr in Microsoft.FSharp.Core.Operators.box ( ( -//# 2491 "src/Compiler/pars.fsy" +//# 2761 "src/Compiler/pars.fsy" let trivia: SynUnionCaseTrivia = { BarRange = None } let xmlDoc = grabXmlDoc (parseState, [], 1) let mDecl = rhs2 parseState 1 3 |> unionRangeWithXmlDoc xmlDoc Choice2Of2(SynUnionCase([], SynIdent(_1, None), SynUnionCaseKind.Fields _3, xmlDoc, None, mDecl, trivia)) ) -//# 2491 "src/Compiler/pars.fsy" +//# 2761 "src/Compiler/pars.fsy" : 'gentype_firstUnionCaseDecl)); -//# 7626 "pars.fs" +//# 8238 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Ident in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 2497 "src/Compiler/pars.fsy" +//# 2767 "src/Compiler/pars.fsy" let trivia: SynUnionCaseTrivia = { BarRange = None } let xmlDoc = grabXmlDoc (parseState, [], 1) let mDecl = rhs2 parseState 1 2 |> unionRangeWithXmlDoc xmlDoc Choice2Of2(SynUnionCase([], SynIdent(_1, None), SynUnionCaseKind.Fields [], xmlDoc, None, mDecl, trivia)) ) -//# 2497 "src/Compiler/pars.fsy" +//# 2767 "src/Compiler/pars.fsy" : 'gentype_firstUnionCaseDecl)); -//# 7641 "pars.fs" +//# 8253 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_unionCaseRepr in Microsoft.FSharp.Core.Operators.box ( ( -//# 2503 "src/Compiler/pars.fsy" +//# 2773 "src/Compiler/pars.fsy" let mOf = rhs parseState 1 let mId = mOf.StartRange errorR (Error(FSComp.SR.parsMissingUnionCaseName(), mOf)) @@ -7654,9 +8266,9 @@ let _fsyacc_reductions = lazy [| let mDecl = rhs2 parseState 1 2 |> unionRangeWithXmlDoc xmlDoc Choice2Of2(SynUnionCase([], id, SynUnionCaseKind.Fields _2, xmlDoc, None, mDecl, trivia)) ) -//# 2503 "src/Compiler/pars.fsy" +//# 2773 "src/Compiler/pars.fsy" : 'gentype_firstUnionCaseDecl)); -//# 7659 "pars.fs" +//# 8271 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Ident in let _3 = parseState.GetInput(3) :?> SynExpr * bool in @@ -7664,88 +8276,116 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2513 "src/Compiler/pars.fsy" +//# 2783 "src/Compiler/pars.fsy" let mEquals = rhs parseState 2 let trivia: SynEnumCaseTrivia = { BarRange = None; EqualsRange = mEquals } let xmlDoc = grabXmlDoc (parseState, [], 1) let mDecl = rhs2 parseState 1 3 |> unionRangeWithXmlDoc xmlDoc Choice1Of2(SynEnumCase([], SynIdent(_1, None), fst _3, xmlDoc, mDecl, trivia)) ) -//# 2513 "src/Compiler/pars.fsy" +//# 2783 "src/Compiler/pars.fsy" : 'gentype_firstUnionCaseDecl)); -//# 7676 "pars.fs" +//# 8288 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_unionCaseReprElement in let _3 = parseState.GetInput(3) :?> 'gentype_unionCaseReprElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 2521 "src/Compiler/pars.fsy" +//# 2791 "src/Compiler/pars.fsy" _1 :: _3 ) -//# 2521 "src/Compiler/pars.fsy" +//# 2791 "src/Compiler/pars.fsy" : 'gentype_unionCaseReprElements)); -//# 7688 "pars.fs" +//# 8300 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_unionCaseReprElement in Microsoft.FSharp.Core.Operators.box ( ( -//# 2524 "src/Compiler/pars.fsy" +//# 2794 "src/Compiler/pars.fsy" [_1] ) -//# 2524 "src/Compiler/pars.fsy" +//# 2794 "src/Compiler/pars.fsy" : 'gentype_unionCaseReprElements)); -//# 7699 "pars.fs" +//# 8311 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Ident in let _3 = parseState.GetInput(3) :?> 'gentype_appType in Microsoft.FSharp.Core.Operators.box ( ( -//# 2528 "src/Compiler/pars.fsy" +//# 2798 "src/Compiler/pars.fsy" let xmlDoc = grabXmlDoc(parseState, [], 1) let mWhole = rhs2 parseState 1 3 |> unionRangeWithXmlDoc xmlDoc mkSynNamedField (_1, _3, xmlDoc, mWhole) ) -//# 2528 "src/Compiler/pars.fsy" +//# 2798 "src/Compiler/pars.fsy" : 'gentype_unionCaseReprElement)); -//# 7713 "pars.fs" +//# 8325 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in Microsoft.FSharp.Core.Operators.box ( ( -//# 2533 "src/Compiler/pars.fsy" +//# 2803 "src/Compiler/pars.fsy" let xmlDoc = grabXmlDoc(parseState, [], 1) mkSynAnonField (_1, xmlDoc) ) -//# 2533 "src/Compiler/pars.fsy" +//# 2803 "src/Compiler/pars.fsy" + : 'gentype_unionCaseReprElement)); +//# 8337 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> Ident in + let _3 = parseState.GetInput(3) :?> 'gentype_invalidUseOfAppTypeFunction in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 2807 "src/Compiler/pars.fsy" + let xmlDoc = grabXmlDoc(parseState, [], 1) + let mWhole = rhs2 parseState 1 3 |> unionRangeWithXmlDoc xmlDoc + reportParseErrorAt (_3 : SynType).Range (FSComp.SR.tcUnexpectedFunTypeInUnionCaseField()) + mkSynNamedField (_1, _3, xmlDoc, mWhole) + ) +//# 2807 "src/Compiler/pars.fsy" + : 'gentype_unionCaseReprElement)); +//# 8352 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> 'gentype_invalidUseOfAppTypeFunction in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 2813 "src/Compiler/pars.fsy" + let xmlDoc = grabXmlDoc(parseState, [], 1) + reportParseErrorAt (_1 : SynType).Range (FSComp.SR.tcUnexpectedFunTypeInUnionCaseField()) + mkSynAnonField (_1, xmlDoc) + ) +//# 2813 "src/Compiler/pars.fsy" : 'gentype_unionCaseReprElement)); -//# 7725 "pars.fs" +//# 8365 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_braceFieldDeclList in Microsoft.FSharp.Core.Operators.box ( ( -//# 2538 "src/Compiler/pars.fsy" +//# 2819 "src/Compiler/pars.fsy" errorR(Deprecated(FSComp.SR.parsConsiderUsingSeparateRecordType(), lhs parseState)) _1 ) -//# 2538 "src/Compiler/pars.fsy" +//# 2819 "src/Compiler/pars.fsy" : 'gentype_unionCaseRepr)); -//# 7737 "pars.fs" +//# 8377 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_unionCaseReprElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 2542 "src/Compiler/pars.fsy" +//# 2823 "src/Compiler/pars.fsy" _1 ) -//# 2542 "src/Compiler/pars.fsy" +//# 2823 "src/Compiler/pars.fsy" : 'gentype_unionCaseRepr)); -//# 7748 "pars.fs" +//# 8388 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_recdFieldDecl in let _2 = parseState.GetInput(2) :?> 'gentype_seps in @@ -7753,31 +8393,31 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2547 "src/Compiler/pars.fsy" +//# 2828 "src/Compiler/pars.fsy" _1 :: _3 ) -//# 2547 "src/Compiler/pars.fsy" +//# 2828 "src/Compiler/pars.fsy" : 'gentype_recdFieldDeclList)); -//# 7761 "pars.fs" +//# 8401 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_recdFieldDecl in let _2 = parseState.GetInput(2) :?> 'gentype_opt_seps in Microsoft.FSharp.Core.Operators.box ( ( -//# 2550 "src/Compiler/pars.fsy" +//# 2831 "src/Compiler/pars.fsy" [_1] ) -//# 2550 "src/Compiler/pars.fsy" +//# 2831 "src/Compiler/pars.fsy" : 'gentype_recdFieldDeclList)); -//# 7773 "pars.fs" +//# 8413 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_fieldDecl in Microsoft.FSharp.Core.Operators.box ( ( -//# 2555 "src/Compiler/pars.fsy" +//# 2836 "src/Compiler/pars.fsy" let mWhole = rhs2 parseState 1 2 let fld = _2 _1 false mWhole None let (SynField (a, b, c, d, e, xmlDoc, vis, mWhole, trivia)) = fld @@ -7785,9 +8425,9 @@ let _fsyacc_reductions = lazy [| let mWhole = unionRangeWithXmlDoc xmlDoc mWhole SynField (a, b, c, d, e, xmlDoc, None, mWhole, trivia) ) -//# 2555 "src/Compiler/pars.fsy" +//# 2836 "src/Compiler/pars.fsy" : 'gentype_recdFieldDecl)); -//# 7790 "pars.fs" +//# 8430 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_mutable in let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in @@ -7796,27 +8436,56 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2565 "src/Compiler/pars.fsy" - fun attrs stat mWhole leadingKeyword -> - let xmlDoc = grabXmlDocAtRangeStart(parseState, attrs, mWhole) - SynField(attrs, stat, Some _3, _5, _1, xmlDoc, _2, mWhole, { LeadingKeyword = leadingKeyword }) +//# 2846 "src/Compiler/pars.fsy" + mkSynField parseState (Some _3) _5 _1 _2 + ) +//# 2846 "src/Compiler/pars.fsy" + : 'gentype_fieldDecl)); +//# 8444 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> 'gentype_opt_mutable in + let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in + let _3 = parseState.GetInput(3) :?> Ident in + let _5 = parseState.GetInput(5) :?> 'gentype_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 2848 "src/Compiler/pars.fsy" + let mColon = rhs parseState 4 + let t = SynType.FromParseError(mColon.EndRange) + mkSynField parseState (Some _3) t _1 _2 + ) +//# 2848 "src/Compiler/pars.fsy" + : 'gentype_fieldDecl)); +//# 8460 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> 'gentype_opt_mutable in + let _2 = parseState.GetInput(2) :?> 'gentype_opt_access in + let _3 = parseState.GetInput(3) :?> Ident in + let _4 = parseState.GetInput(4) :?> 'gentype_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 2852 "src/Compiler/pars.fsy" + let t = SynType.FromParseError(_3.idRange.EndRange) + mkSynField parseState (Some _3) t _1 _2 ) -//# 2565 "src/Compiler/pars.fsy" +//# 2852 "src/Compiler/pars.fsy" : 'gentype_fieldDecl)); -//# 7806 "pars.fs" +//# 8475 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExceptionDefnRepr in let _2 = parseState.GetInput(2) :?> 'gentype_opt_classDefn in Microsoft.FSharp.Core.Operators.box ( ( -//# 2572 "src/Compiler/pars.fsy" +//# 2858 "src/Compiler/pars.fsy" let mWith, optClassDefn = _2 SynExceptionDefn(_1, mWith, optClassDefn, (_1.Range, optClassDefn) ||> unionRangeWithListBy (fun cd -> cd.Range)) ) -//# 2572 "src/Compiler/pars.fsy" +//# 2858 "src/Compiler/pars.fsy" : SynExceptionDefn)); -//# 7819 "pars.fs" +//# 8488 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_opt_attributes in let _3 = parseState.GetInput(3) :?> 'gentype_opt_access in @@ -7825,16 +8494,16 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2578 "src/Compiler/pars.fsy" +//# 2864 "src/Compiler/pars.fsy" let m = match _5 with | None -> rhs2 parseState 1 4 | Some p -> unionRanges (rangeOfLongIdent p) (rhs2 parseState 1 4) SynExceptionDefnRepr(_2, _4, _5, PreXmlDoc.Empty, _3, m) ) -//# 2578 "src/Compiler/pars.fsy" +//# 2864 "src/Compiler/pars.fsy" : SynExceptionDefnRepr)); -//# 7837 "pars.fs" +//# 8506 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_opt_attributes in let _3 = parseState.GetInput(3) :?> 'gentype_opt_access in @@ -7842,7 +8511,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2585 "src/Compiler/pars.fsy" +//# 2871 "src/Compiler/pars.fsy" let m = match _3 with | Some access -> unionRanges (rhs parseState 1) access.Range @@ -7854,65 +8523,65 @@ let _fsyacc_reductions = lazy [| let unionCase = SynUnionCase([], id, SynUnionCaseKind.Fields [], PreXmlDoc.Empty, None, m, { BarRange = None }) SynExceptionDefnRepr(_2, unionCase, None, PreXmlDoc.Empty, _3, m) ) -//# 2585 "src/Compiler/pars.fsy" +//# 2871 "src/Compiler/pars.fsy" : SynExceptionDefnRepr)); -//# 7859 "pars.fs" +//# 8528 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Ident in Microsoft.FSharp.Core.Operators.box ( ( -//# 2602 "src/Compiler/pars.fsy" +//# 2888 "src/Compiler/pars.fsy" SynUnionCase([], SynIdent(_1, None), SynUnionCaseKind.Fields [], PreXmlDoc.Empty, None, lhs parseState, { BarRange = None }) ) -//# 2602 "src/Compiler/pars.fsy" +//# 2888 "src/Compiler/pars.fsy" : 'gentype_exconIntro)); -//# 7870 "pars.fs" +//# 8539 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Ident in let _3 = parseState.GetInput(3) :?> 'gentype_unionCaseRepr in Microsoft.FSharp.Core.Operators.box ( ( -//# 2605 "src/Compiler/pars.fsy" +//# 2891 "src/Compiler/pars.fsy" SynUnionCase([], SynIdent(_1, None), SynUnionCaseKind.Fields _3, PreXmlDoc.Empty, None, lhs parseState, { BarRange = None }) ) -//# 2605 "src/Compiler/pars.fsy" +//# 2891 "src/Compiler/pars.fsy" : 'gentype_exconIntro)); -//# 7882 "pars.fs" +//# 8551 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Ident in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 2608 "src/Compiler/pars.fsy" +//# 2894 "src/Compiler/pars.fsy" SynUnionCase([], SynIdent(_1, None), SynUnionCaseKind.Fields [], PreXmlDoc.Empty, None, lhs parseState, { BarRange = None }) ) -//# 2608 "src/Compiler/pars.fsy" +//# 2894 "src/Compiler/pars.fsy" : 'gentype_exconIntro)); -//# 7894 "pars.fs" +//# 8563 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2612 "src/Compiler/pars.fsy" +//# 2898 "src/Compiler/pars.fsy" None ) -//# 2612 "src/Compiler/pars.fsy" +//# 2898 "src/Compiler/pars.fsy" : 'gentype_exconRepr)); -//# 7904 "pars.fs" +//# 8573 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynLongIdent in Microsoft.FSharp.Core.Operators.box ( ( -//# 2615 "src/Compiler/pars.fsy" +//# 2901 "src/Compiler/pars.fsy" Some(_2.LongIdent) ) -//# 2615 "src/Compiler/pars.fsy" +//# 2901 "src/Compiler/pars.fsy" : 'gentype_exconRepr)); -//# 7915 "pars.fs" +//# 8584 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in let _2 = parseState.GetInput(2) :?> 'gentype_opt_rec in @@ -7920,7 +8589,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2623 "src/Compiler/pars.fsy" +//# 2909 "src/Compiler/pars.fsy" let mLetKwd = rhs parseState 1 let isUse = _1 let isRec = _2 @@ -7946,36 +8615,36 @@ let _fsyacc_reductions = lazy [| [], binds), bindingSetRange) ) -//# 2623 "src/Compiler/pars.fsy" +//# 2909 "src/Compiler/pars.fsy" : 'gentype_defnBindings)); -//# 7951 "pars.fs" +//# 8620 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_cPrototype in Microsoft.FSharp.Core.Operators.box ( ( -//# 2652 "src/Compiler/pars.fsy" +//# 2938 "src/Compiler/pars.fsy" let bindRange = lhs parseState BindingSetPreAttrs(bindRange, false, false, _1, bindRange) ) -//# 2652 "src/Compiler/pars.fsy" +//# 2938 "src/Compiler/pars.fsy" : 'gentype_defnBindings)); -//# 7963 "pars.fs" +//# 8632 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 2659 "src/Compiler/pars.fsy" +//# 2945 "src/Compiler/pars.fsy" let mDoKwd = rhs parseState 1 let mWhole = unionRanges mDoKwd _2.Range // any attributes prior to the 'let' are left free, e.g. become top-level attributes // associated with the module, 'main' function or assembly depending on their target BindingSetPreAttrs(mDoKwd, false, false, (fun attrs vis -> attrs, [mkSynDoBinding (vis, mDoKwd, _2, mWhole)]), mWhole) ) -//# 2659 "src/Compiler/pars.fsy" +//# 2945 "src/Compiler/pars.fsy" : 'gentype_doBinding)); -//# 7978 "pars.fs" +//# 8647 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in let _2 = parseState.GetInput(2) :?> 'gentype_opt_rec in @@ -7984,7 +8653,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2669 "src/Compiler/pars.fsy" +//# 2955 "src/Compiler/pars.fsy" let mLetKwd = rhs parseState 1 let isUse = _1 let isRec = _2 @@ -7997,7 +8666,7 @@ let _fsyacc_reductions = lazy [| SynLeadingKeyword.UseRec(mLetKwd, rhs parseState 2) else SynLeadingKeyword.Let(mLetKwd) - let report, mIn = _4 + let report, mIn, _ = _4 report (if isUse then "use" else "let") mLetKwd // report unterminated error let localBindingsLastRangeOpt, localBindingsBuilder = _3 // Calculate the precise range of the binding set, up to the end of the last r.h.s. expression @@ -8017,90 +8686,107 @@ let _fsyacc_reductions = lazy [| (unionRanges mLetKwd bindingSetRange), mIn ) -//# 2669 "src/Compiler/pars.fsy" +//# 2955 "src/Compiler/pars.fsy" : 'gentype_hardwhiteLetBindings)); -//# 8022 "pars.fs" +//# 8691 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in let _3 = parseState.GetInput(3) :?> 'gentype_hardwhiteDefnBindingsTerminator in Microsoft.FSharp.Core.Operators.box ( ( -//# 2709 "src/Compiler/pars.fsy" - let mDoKwd = rhs parseState 1 - let bindingSetRange = unionRanges mDoKwd _2.Range +//# 2995 "src/Compiler/pars.fsy" + let mDo = rhs parseState 1 + let _, _, mDone = _3 + let mAll = unionRanges mDo _2.Range let seqPt = DebugPointAtBinding.NoneAtDo // any attributes prior to the 'let' are left free, e.g. become top-level attributes // associated with the module, 'main' function or assembly depending on their target - BindingSetPreAttrs(mDoKwd, false, false, (fun attrs vis -> attrs, [mkSynDoBinding (vis, mDoKwd, _2, bindingSetRange)]), bindingSetRange), _2 + BindingSetPreAttrs(mDo, false, false, (fun attrs vis -> attrs, [mkSynDoBinding (vis, mDo, _2, mAll)]), mAll), _2 + ) +//# 2995 "src/Compiler/pars.fsy" + : 'gentype_hardwhiteDoBinding)); +//# 8709 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = parseState.GetInput(2) :?> range in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 3004 "src/Compiler/pars.fsy" + let mDo = rhs parseState 1 + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectingExpression ()) + let seqPt = DebugPointAtBinding.NoneAtDo + let expr = arbExpr ("hardwhiteDoBinding1", mDo.EndRange) + BindingSetPreAttrs(mDo, false, false, (fun attrs vis -> attrs, [mkSynDoBinding (vis, mDo, expr, mDo)]), mDo), expr ) -//# 2709 "src/Compiler/pars.fsy" +//# 3004 "src/Compiler/pars.fsy" : 'gentype_hardwhiteDoBinding)); -//# 8039 "pars.fs" +//# 8724 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_defnBindings in Microsoft.FSharp.Core.Operators.box ( ( -//# 2720 "src/Compiler/pars.fsy" +//# 3013 "src/Compiler/pars.fsy" _1 ) -//# 2720 "src/Compiler/pars.fsy" +//# 3013 "src/Compiler/pars.fsy" : 'gentype_classDefnBindings)); -//# 8050 "pars.fs" +//# 8735 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_doBinding in Microsoft.FSharp.Core.Operators.box ( ( -//# 2723 "src/Compiler/pars.fsy" +//# 3016 "src/Compiler/pars.fsy" _1 ) -//# 2723 "src/Compiler/pars.fsy" +//# 3016 "src/Compiler/pars.fsy" : 'gentype_classDefnBindings)); -//# 8061 "pars.fs" +//# 8746 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_hardwhiteLetBindings in Microsoft.FSharp.Core.Operators.box ( ( -//# 2726 "src/Compiler/pars.fsy" +//# 3019 "src/Compiler/pars.fsy" let b, m, _ = _1 b ) -//# 2726 "src/Compiler/pars.fsy" +//# 3019 "src/Compiler/pars.fsy" : 'gentype_classDefnBindings)); -//# 8073 "pars.fs" +//# 8758 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_hardwhiteDoBinding in Microsoft.FSharp.Core.Operators.box ( ( -//# 2730 "src/Compiler/pars.fsy" +//# 3023 "src/Compiler/pars.fsy" fst _1 ) -//# 2730 "src/Compiler/pars.fsy" +//# 3023 "src/Compiler/pars.fsy" : 'gentype_classDefnBindings)); -//# 8084 "pars.fs" +//# 8769 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> range in Microsoft.FSharp.Core.Operators.box ( ( -//# 2736 "src/Compiler/pars.fsy" +//# 3029 "src/Compiler/pars.fsy" let mToken = rhs parseState 1 // In LexFilter.fs the IN token could have been transformed to an ODECLEND one. let mIn = if (mToken.EndColumn - mToken.StartColumn) = 2 then Some mToken else None - (fun _ m -> ()), mIn + (fun _ m -> ()), mIn, Some _1 ) -//# 2736 "src/Compiler/pars.fsy" +//# 3029 "src/Compiler/pars.fsy" : 'gentype_hardwhiteDefnBindingsTerminator)); -//# 8097 "pars.fs" +//# 8783 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 2742 "src/Compiler/pars.fsy" +//# 3035 "src/Compiler/pars.fsy" (fun kwd m -> let msg = match kwd with @@ -8108,11 +8794,11 @@ let _fsyacc_reductions = lazy [| | "use!" -> FSComp.SR.parsUnmatchedUseBang() | "use" -> FSComp.SR.parsUnmatchedUse() | _ (*"let" *) -> FSComp.SR.parsUnmatchedLet() - reportParseErrorAt m msg), None + reportParseErrorAt m msg), None, None ) -//# 2742 "src/Compiler/pars.fsy" +//# 3035 "src/Compiler/pars.fsy" : 'gentype_hardwhiteDefnBindingsTerminator)); -//# 8115 "pars.fs" +//# 8801 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_cRetType in let _3 = parseState.GetInput(3) :?> 'gentype_opt_access in @@ -8123,9 +8809,9 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2754 "src/Compiler/pars.fsy" +//# 3047 "src/Compiler/pars.fsy" let mExtern = rhs parseState 1 - let rty, vis, nm, args = _2, _3, _4, _7 + let rty, vis, nm, (args, commas) = _2, _3, _4, _7 let nmm = rhs parseState 3 let argsm = rhs parseState 6 let mBindLhs = lhs parseState @@ -8139,7 +8825,7 @@ let _fsyacc_reductions = lazy [| SynExpr.Const(SynConst.String("extern was not given a DllImport attribute", SynStringKind.Regular, rhs parseState 8), rhs parseState 8), mRhs) (fun attrs _ -> - let bindingPat = SynPat.LongIdent(SynLongIdent([nm], [], [None]), None, Some noInferredTypars, SynArgPats.Pats [SynPat.Tuple(false, args, argsm)], vis, nmm) + let bindingPat = SynPat.LongIdent(SynLongIdent([nm], [], [None]), None, Some noInferredTypars, SynArgPats.Pats [SynPat.Tuple(false, args, commas, argsm)], vis, nmm) let mWholeBindLhs = (mBindLhs, attrs) ||> unionRangeWithListBy (fun (a: SynAttributeList) -> a.Range) let xmlDoc = grabXmlDoc(parseState, attrs, 1) let trivia = { LeadingKeyword = SynLeadingKeyword.Extern mExtern; InlineKeyword = None; EqualsRange = None } @@ -8149,78 +8835,82 @@ let _fsyacc_reductions = lazy [| (vis, false, false, mWholeBindLhs, DebugPointAtBinding.NoneAtInvisible, Some(None, rty), rhsExpr, mRhs, [], attrs, None, trivia) [], [binding]) ) -//# 2754 "src/Compiler/pars.fsy" +//# 3047 "src/Compiler/pars.fsy" : 'gentype_cPrototype)); -//# 8154 "pars.fs" +//# 8840 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_externMoreArgs in Microsoft.FSharp.Core.Operators.box ( ( -//# 2782 "src/Compiler/pars.fsy" - List.rev _1 +//# 3075 "src/Compiler/pars.fsy" + let args, commas = _1 + List.rev args, (List.rev commas) ) -//# 2782 "src/Compiler/pars.fsy" +//# 3075 "src/Compiler/pars.fsy" : 'gentype_externArgs)); -//# 8165 "pars.fs" +//# 8852 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_externArg in Microsoft.FSharp.Core.Operators.box ( ( -//# 2785 "src/Compiler/pars.fsy" - [_1] +//# 3079 "src/Compiler/pars.fsy" + [_1], [] ) -//# 2785 "src/Compiler/pars.fsy" +//# 3079 "src/Compiler/pars.fsy" : 'gentype_externArgs)); -//# 8176 "pars.fs" +//# 8863 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2787 "src/Compiler/pars.fsy" - [] +//# 3081 "src/Compiler/pars.fsy" + [], [] ) -//# 2787 "src/Compiler/pars.fsy" +//# 3081 "src/Compiler/pars.fsy" : 'gentype_externArgs)); -//# 8186 "pars.fs" +//# 8873 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_externMoreArgs in let _3 = parseState.GetInput(3) :?> 'gentype_externArg in Microsoft.FSharp.Core.Operators.box ( ( -//# 2793 "src/Compiler/pars.fsy" - _3 :: _1 +//# 3087 "src/Compiler/pars.fsy" + let args, commas = _1 + let mComma = rhs parseState 2 + _3 :: args, (mComma :: commas) ) -//# 2793 "src/Compiler/pars.fsy" +//# 3087 "src/Compiler/pars.fsy" : 'gentype_externMoreArgs)); -//# 8198 "pars.fs" +//# 8887 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_externArg in let _3 = parseState.GetInput(3) :?> 'gentype_externArg in Microsoft.FSharp.Core.Operators.box ( ( -//# 2796 "src/Compiler/pars.fsy" - [_3; _1] +//# 3092 "src/Compiler/pars.fsy" + let mComma = rhs parseState 2 + [_3; _1], [mComma] ) -//# 2796 "src/Compiler/pars.fsy" +//# 3092 "src/Compiler/pars.fsy" : 'gentype_externMoreArgs)); -//# 8210 "pars.fs" +//# 8900 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_cType in Microsoft.FSharp.Core.Operators.box ( ( -//# 2802 "src/Compiler/pars.fsy" +//# 3099 "src/Compiler/pars.fsy" let m = lhs parseState SynPat.Typed(SynPat.Wild m, _2, m) |> addAttribs _1 ) -//# 2802 "src/Compiler/pars.fsy" +//# 3099 "src/Compiler/pars.fsy" : 'gentype_externArg)); -//# 8223 "pars.fs" +//# 8913 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_cType in @@ -8228,104 +8918,104 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2806 "src/Compiler/pars.fsy" +//# 3103 "src/Compiler/pars.fsy" let m = lhs parseState SynPat.Typed(SynPat.Named(SynIdent(_3, None), false, None, m), _2, m) |> addAttribs _1 ) -//# 2806 "src/Compiler/pars.fsy" +//# 3103 "src/Compiler/pars.fsy" : 'gentype_externArg)); -//# 8237 "pars.fs" +//# 8927 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynLongIdent in Microsoft.FSharp.Core.Operators.box ( ( -//# 2812 "src/Compiler/pars.fsy" +//# 3109 "src/Compiler/pars.fsy" let m = _1.Range SynType.App(SynType.LongIdent(_1), None, [], [], None, false, m) ) -//# 2812 "src/Compiler/pars.fsy" +//# 3109 "src/Compiler/pars.fsy" : 'gentype_cType)); -//# 8249 "pars.fs" +//# 8939 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_cType in let _2 = parseState.GetInput(2) :?> 'gentype_opt_HIGH_PRECEDENCE_APP in Microsoft.FSharp.Core.Operators.box ( ( -//# 2816 "src/Compiler/pars.fsy" +//# 3113 "src/Compiler/pars.fsy" let m = lhs parseState SynType.App(SynType.LongIdent(SynLongIdent([ident("[]", m)], [], [None])), None, [_1], [], None, true, m) ) -//# 2816 "src/Compiler/pars.fsy" +//# 3113 "src/Compiler/pars.fsy" : 'gentype_cType)); -//# 8262 "pars.fs" +//# 8952 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_cType in Microsoft.FSharp.Core.Operators.box ( ( -//# 2820 "src/Compiler/pars.fsy" +//# 3117 "src/Compiler/pars.fsy" let m = lhs parseState SynType.App(SynType.LongIdent(SynLongIdent([ident("nativeptr", m)], [], [ Some(IdentTrivia.OriginalNotation "*") ])), None, [_1], [], None, true, m) ) -//# 2820 "src/Compiler/pars.fsy" +//# 3117 "src/Compiler/pars.fsy" : 'gentype_cType)); -//# 8274 "pars.fs" +//# 8964 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_cType in Microsoft.FSharp.Core.Operators.box ( ( -//# 2824 "src/Compiler/pars.fsy" +//# 3121 "src/Compiler/pars.fsy" let m = lhs parseState SynType.App(SynType.LongIdent(SynLongIdent([ident("byref", m)], [], [ Some(IdentTrivia.OriginalNotation "&") ])), None, [_1], [], None, true, m) ) -//# 2824 "src/Compiler/pars.fsy" +//# 3121 "src/Compiler/pars.fsy" : 'gentype_cType)); -//# 8286 "pars.fs" +//# 8976 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2828 "src/Compiler/pars.fsy" +//# 3125 "src/Compiler/pars.fsy" let m = lhs parseState SynType.App(SynType.LongIdent(SynLongIdent([ident("nativeint", m)], [], [ Some(IdentTrivia.OriginalNotation "void*") ])), None, [], [], None, true, m) ) -//# 2828 "src/Compiler/pars.fsy" +//# 3125 "src/Compiler/pars.fsy" : 'gentype_cType)); -//# 8297 "pars.fs" +//# 8987 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_cType in Microsoft.FSharp.Core.Operators.box ( ( -//# 2835 "src/Compiler/pars.fsy" +//# 3132 "src/Compiler/pars.fsy" SynReturnInfo((_2, SynArgInfo(_1, false, None)), rhs parseState 2) ) -//# 2835 "src/Compiler/pars.fsy" +//# 3132 "src/Compiler/pars.fsy" : 'gentype_cRetType)); -//# 8309 "pars.fs" +//# 8999 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in Microsoft.FSharp.Core.Operators.box ( ( -//# 2838 "src/Compiler/pars.fsy" +//# 3135 "src/Compiler/pars.fsy" let m = rhs parseState 2 SynReturnInfo((SynType.App(SynType.LongIdent(SynLongIdent([ident("unit", m)], [], [ Some(IdentTrivia.OriginalNotation "void") ])), None, [], [], None, false, m), SynArgInfo(_1, false, None)), m) ) -//# 2838 "src/Compiler/pars.fsy" +//# 3135 "src/Compiler/pars.fsy" : 'gentype_cRetType)); -//# 8321 "pars.fs" +//# 9011 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_attr_localBinding in let _2 = parseState.GetInput(2) :?> 'gentype_moreLocalBindings in Microsoft.FSharp.Core.Operators.box ( ( -//# 2844 "src/Compiler/pars.fsy" +//# 3141 "src/Compiler/pars.fsy" let (moreBindings, moreBindingRanges) = List.unzip _2 let moreLocalBindingsLastRange = if moreBindingRanges.IsEmpty then None else Some(List.last moreBindingRanges) match _1 with @@ -8338,16 +9028,16 @@ let _fsyacc_reductions = lazy [| | None -> moreLocalBindingsLastRange, (fun _xmlDoc _attrs _vis _leadingKeyword -> moreBindings) ) -//# 2844 "src/Compiler/pars.fsy" +//# 3141 "src/Compiler/pars.fsy" : 'gentype_localBindings)); -//# 8343 "pars.fs" +//# 9033 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_attr_localBinding in let _3 = parseState.GetInput(3) :?> 'gentype_moreLocalBindings in Microsoft.FSharp.Core.Operators.box ( ( -//# 2859 "src/Compiler/pars.fsy" +//# 3156 "src/Compiler/pars.fsy" let leadingKeyword = SynLeadingKeyword.And(rhs parseState 1) (match _2 with | Some(localBindingRange, attrLocalBindingBuilder) -> @@ -8356,44 +9046,44 @@ let _fsyacc_reductions = lazy [| (attrLocalBindingBuilder xmlDoc [] None leadingKeyword false, localBindingRange) :: _3 | None -> _3) ) -//# 2859 "src/Compiler/pars.fsy" +//# 3156 "src/Compiler/pars.fsy" : 'gentype_moreLocalBindings)); -//# 8361 "pars.fs" +//# 9051 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2868 "src/Compiler/pars.fsy" +//# 3165 "src/Compiler/pars.fsy" [] ) -//# 2868 "src/Compiler/pars.fsy" +//# 3165 "src/Compiler/pars.fsy" : 'gentype_moreLocalBindings)); -//# 8371 "pars.fs" +//# 9061 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_localBinding in Microsoft.FSharp.Core.Operators.box ( ( -//# 2874 "src/Compiler/pars.fsy" +//# 3171 "src/Compiler/pars.fsy" let attrs2 = _1 let localBindingRange, localBindingBuilder = _2 let attrLocalBindingBuilder = (fun xmlDoc attrs vis leadingKeyword _ -> localBindingBuilder xmlDoc (attrs@attrs2) vis leadingKeyword) Some(localBindingRange, attrLocalBindingBuilder) ) -//# 2874 "src/Compiler/pars.fsy" +//# 3171 "src/Compiler/pars.fsy" : 'gentype_attr_localBinding)); -//# 8386 "pars.fs" +//# 9076 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2880 "src/Compiler/pars.fsy" +//# 3177 "src/Compiler/pars.fsy" None ) -//# 2880 "src/Compiler/pars.fsy" +//# 3177 "src/Compiler/pars.fsy" : 'gentype_attr_localBinding)); -//# 8396 "pars.fs" +//# 9086 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_inline in let _2 = parseState.GetInput(2) :?> 'gentype_opt_mutable in @@ -8403,7 +9093,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2886 "src/Compiler/pars.fsy" +//# 3183 "src/Compiler/pars.fsy" let (expr: SynExpr), opts = _6 let mEquals = rhs parseState 5 let mRhs = expr.Range @@ -8419,9 +9109,9 @@ let _fsyacc_reductions = lazy [| mkSynBinding (xmlDoc, bindingPat) (vis, Option.isSome _1, _2, mWholeBindLhs, spBind, optReturnType, expr, mRhs, opts, attrs, None, trivia)) localBindingRange, localBindingBuilder ) -//# 2886 "src/Compiler/pars.fsy" +//# 3183 "src/Compiler/pars.fsy" : 'gentype_localBinding)); -//# 8424 "pars.fs" +//# 9114 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_inline in let _2 = parseState.GetInput(2) :?> 'gentype_opt_mutable in @@ -8430,7 +9120,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2902 "src/Compiler/pars.fsy" +//# 3199 "src/Compiler/pars.fsy" let mWhole = rhs2 parseState 1 5 let mRhs = rhs parseState 5 let optReturnType = _4 @@ -8445,9 +9135,9 @@ let _fsyacc_reductions = lazy [| mkSynBinding (xmlDoc, bindingPat) (vis, Option.isSome _1, _2, mBindLhs, spBind, optReturnType, rhsExpr, mRhs, [], attrs, None, trivia)) mWhole, localBindingBuilder ) -//# 2902 "src/Compiler/pars.fsy" +//# 3199 "src/Compiler/pars.fsy" : 'gentype_localBinding)); -//# 8450 "pars.fs" +//# 9140 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_inline in let _2 = parseState.GetInput(2) :?> 'gentype_opt_mutable in @@ -8457,7 +9147,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 2917 "src/Compiler/pars.fsy" +//# 3214 "src/Compiler/pars.fsy" if not _5 then reportParseErrorAt (rhs parseState 5) (FSComp.SR.parsUnexpectedEndOfFileDefinition()) let optReturnType = _4 let mWhole = rhs2 parseState 1 (match optReturnType with None -> 3 | _ -> 4) @@ -8471,344 +9161,344 @@ let _fsyacc_reductions = lazy [| mkSynBinding (xmlDoc, bindingPat) (vis, Option.isSome _1, _2, mBindLhs, spBind, optReturnType, rhsExpr, mRhs, [], attrs, None, trivia)) mWhole, localBindingBuilder ) -//# 2917 "src/Compiler/pars.fsy" +//# 3214 "src/Compiler/pars.fsy" : 'gentype_localBinding)); -//# 8476 "pars.fs" +//# 9166 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typedExprWithStaticOptimizations in let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in Microsoft.FSharp.Core.Operators.box ( ( -//# 2933 "src/Compiler/pars.fsy" +//# 3230 "src/Compiler/pars.fsy" _2 ) -//# 2933 "src/Compiler/pars.fsy" +//# 3230 "src/Compiler/pars.fsy" : 'gentype_typedExprWithStaticOptimizationsBlock)); -//# 8488 "pars.fs" +//# 9178 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typedExprWithStaticOptimizations in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 2936 "src/Compiler/pars.fsy" +//# 3233 "src/Compiler/pars.fsy" if not _3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFile()) let a, b = _2 (exprFromParseError a, b) ) -//# 2936 "src/Compiler/pars.fsy" +//# 3233 "src/Compiler/pars.fsy" : 'gentype_typedExprWithStaticOptimizationsBlock)); -//# 8502 "pars.fs" +//# 9192 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typedExprWithStaticOptimizations in Microsoft.FSharp.Core.Operators.box ( ( -//# 2941 "src/Compiler/pars.fsy" +//# 3238 "src/Compiler/pars.fsy" _1 ) -//# 2941 "src/Compiler/pars.fsy" +//# 3238 "src/Compiler/pars.fsy" : 'gentype_typedExprWithStaticOptimizationsBlock)); -//# 8513 "pars.fs" +//# 9203 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typedSequentialExpr in let _2 = parseState.GetInput(2) :?> 'gentype_opt_staticOptimizations in Microsoft.FSharp.Core.Operators.box ( ( -//# 2945 "src/Compiler/pars.fsy" +//# 3242 "src/Compiler/pars.fsy" _1, List.rev _2 ) -//# 2945 "src/Compiler/pars.fsy" +//# 3242 "src/Compiler/pars.fsy" : 'gentype_typedExprWithStaticOptimizations)); -//# 8525 "pars.fs" +//# 9215 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opt_staticOptimizations in let _2 = parseState.GetInput(2) :?> 'gentype_staticOptimization in Microsoft.FSharp.Core.Operators.box ( ( -//# 2949 "src/Compiler/pars.fsy" +//# 3246 "src/Compiler/pars.fsy" _2 :: _1 ) -//# 2949 "src/Compiler/pars.fsy" +//# 3246 "src/Compiler/pars.fsy" : 'gentype_opt_staticOptimizations)); -//# 8537 "pars.fs" +//# 9227 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 2952 "src/Compiler/pars.fsy" +//# 3249 "src/Compiler/pars.fsy" [] ) -//# 2952 "src/Compiler/pars.fsy" +//# 3249 "src/Compiler/pars.fsy" : 'gentype_opt_staticOptimizations)); -//# 8547 "pars.fs" +//# 9237 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_staticOptimizationConditions in let _4 = parseState.GetInput(4) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 2956 "src/Compiler/pars.fsy" +//# 3253 "src/Compiler/pars.fsy" (_2, _4) ) -//# 2956 "src/Compiler/pars.fsy" +//# 3253 "src/Compiler/pars.fsy" : 'gentype_staticOptimization)); -//# 8559 "pars.fs" +//# 9249 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_staticOptimizationConditions in let _3 = parseState.GetInput(3) :?> 'gentype_staticOptimizationCondition in Microsoft.FSharp.Core.Operators.box ( ( -//# 2960 "src/Compiler/pars.fsy" +//# 3257 "src/Compiler/pars.fsy" _3 :: _1 ) -//# 2960 "src/Compiler/pars.fsy" +//# 3257 "src/Compiler/pars.fsy" : 'gentype_staticOptimizationConditions)); -//# 8571 "pars.fs" +//# 9261 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_staticOptimizationCondition in Microsoft.FSharp.Core.Operators.box ( ( -//# 2963 "src/Compiler/pars.fsy" +//# 3260 "src/Compiler/pars.fsy" [_1 ] ) -//# 2963 "src/Compiler/pars.fsy" +//# 3260 "src/Compiler/pars.fsy" : 'gentype_staticOptimizationConditions)); -//# 8582 "pars.fs" +//# 9272 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynTypar in let _3 = parseState.GetInput(3) :?> SynType in Microsoft.FSharp.Core.Operators.box ( ( -//# 2967 "src/Compiler/pars.fsy" +//# 3264 "src/Compiler/pars.fsy" SynStaticOptimizationConstraint.WhenTyparTyconEqualsTycon(_1, _3, lhs parseState) ) -//# 2967 "src/Compiler/pars.fsy" +//# 3264 "src/Compiler/pars.fsy" : 'gentype_staticOptimizationCondition)); -//# 8594 "pars.fs" +//# 9284 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynTypar in Microsoft.FSharp.Core.Operators.box ( ( -//# 2970 "src/Compiler/pars.fsy" +//# 3267 "src/Compiler/pars.fsy" SynStaticOptimizationConstraint.WhenTyparIsStruct(_1, lhs parseState) ) -//# 2970 "src/Compiler/pars.fsy" +//# 3267 "src/Compiler/pars.fsy" : 'gentype_staticOptimizationCondition)); -//# 8605 "pars.fs" +//# 9295 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> sbyte * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 2974 "src/Compiler/pars.fsy" +//# 3271 "src/Compiler/pars.fsy" if snd _1 then errorR(Error(FSComp.SR.lexOutsideEightBitSigned(), lhs parseState)) SynConst.SByte(fst _1) ) -//# 2974 "src/Compiler/pars.fsy" +//# 3271 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 8617 "pars.fs" +//# 9307 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> byte in Microsoft.FSharp.Core.Operators.box ( ( -//# 2978 "src/Compiler/pars.fsy" +//# 3275 "src/Compiler/pars.fsy" SynConst.Byte _1 ) -//# 2978 "src/Compiler/pars.fsy" +//# 3275 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 8628 "pars.fs" +//# 9318 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> int16 * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 2981 "src/Compiler/pars.fsy" +//# 3278 "src/Compiler/pars.fsy" if snd _1 then errorR(Error(FSComp.SR.lexOutsideSixteenBitSigned(), lhs parseState)) SynConst.Int16 (fst _1) ) -//# 2981 "src/Compiler/pars.fsy" +//# 3278 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 8640 "pars.fs" +//# 9330 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> uint16 in Microsoft.FSharp.Core.Operators.box ( ( -//# 2985 "src/Compiler/pars.fsy" +//# 3282 "src/Compiler/pars.fsy" SynConst.UInt16 _1 ) -//# 2985 "src/Compiler/pars.fsy" +//# 3282 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 8651 "pars.fs" +//# 9341 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> int32 * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 2988 "src/Compiler/pars.fsy" +//# 3285 "src/Compiler/pars.fsy" if snd _1 then errorR(Error(FSComp.SR.lexOutsideThirtyTwoBitSigned(), lhs parseState)) SynConst.Int32 (fst _1) ) -//# 2988 "src/Compiler/pars.fsy" +//# 3285 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 8663 "pars.fs" +//# 9353 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> uint32 in Microsoft.FSharp.Core.Operators.box ( ( -//# 2992 "src/Compiler/pars.fsy" +//# 3289 "src/Compiler/pars.fsy" SynConst.UInt32 _1 ) -//# 2992 "src/Compiler/pars.fsy" +//# 3289 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 8674 "pars.fs" +//# 9364 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> int64 * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 2995 "src/Compiler/pars.fsy" +//# 3292 "src/Compiler/pars.fsy" if snd _1 then errorR(Error(FSComp.SR.lexOutsideSixtyFourBitSigned(), lhs parseState)) SynConst.Int64 (fst _1) ) -//# 2995 "src/Compiler/pars.fsy" +//# 3292 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 8686 "pars.fs" +//# 9376 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> uint64 in Microsoft.FSharp.Core.Operators.box ( ( -//# 2999 "src/Compiler/pars.fsy" +//# 3296 "src/Compiler/pars.fsy" SynConst.UInt64 _1 ) -//# 2999 "src/Compiler/pars.fsy" +//# 3296 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 8697 "pars.fs" +//# 9387 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> int64 * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 3002 "src/Compiler/pars.fsy" +//# 3299 "src/Compiler/pars.fsy" if snd _1 then errorR(Error(FSComp.SR.lexOutsideNativeSigned(), lhs parseState)) SynConst.IntPtr(fst _1) ) -//# 3002 "src/Compiler/pars.fsy" +//# 3299 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 8709 "pars.fs" +//# 9399 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> uint64 in Microsoft.FSharp.Core.Operators.box ( ( -//# 3006 "src/Compiler/pars.fsy" +//# 3303 "src/Compiler/pars.fsy" SynConst.UIntPtr _1 ) -//# 3006 "src/Compiler/pars.fsy" +//# 3303 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 8720 "pars.fs" +//# 9410 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> single in Microsoft.FSharp.Core.Operators.box ( ( -//# 3009 "src/Compiler/pars.fsy" +//# 3306 "src/Compiler/pars.fsy" SynConst.Single _1 ) -//# 3009 "src/Compiler/pars.fsy" +//# 3306 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 8731 "pars.fs" +//# 9421 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> double in Microsoft.FSharp.Core.Operators.box ( ( -//# 3012 "src/Compiler/pars.fsy" +//# 3309 "src/Compiler/pars.fsy" SynConst.Double _1 ) -//# 3012 "src/Compiler/pars.fsy" +//# 3309 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 8742 "pars.fs" +//# 9432 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> char in Microsoft.FSharp.Core.Operators.box ( ( -//# 3015 "src/Compiler/pars.fsy" +//# 3312 "src/Compiler/pars.fsy" SynConst.Char _1 ) -//# 3015 "src/Compiler/pars.fsy" +//# 3312 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 8753 "pars.fs" +//# 9443 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> System.Decimal in Microsoft.FSharp.Core.Operators.box ( ( -//# 3018 "src/Compiler/pars.fsy" +//# 3315 "src/Compiler/pars.fsy" SynConst.Decimal _1 ) -//# 3018 "src/Compiler/pars.fsy" +//# 3315 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 8764 "pars.fs" +//# 9454 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> (string * string) in Microsoft.FSharp.Core.Operators.box ( ( -//# 3021 "src/Compiler/pars.fsy" +//# 3318 "src/Compiler/pars.fsy" SynConst.UserNum _1 ) -//# 3021 "src/Compiler/pars.fsy" +//# 3318 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 8775 "pars.fs" +//# 9465 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_string in Microsoft.FSharp.Core.Operators.box ( ( -//# 3024 "src/Compiler/pars.fsy" +//# 3321 "src/Compiler/pars.fsy" let s, synStringKind = _1 SynConst.String(s, synStringKind, lhs parseState) ) -//# 3024 "src/Compiler/pars.fsy" +//# 3321 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 8787 "pars.fs" +//# 9477 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_sourceIdentifier in Microsoft.FSharp.Core.Operators.box ( ( -//# 3028 "src/Compiler/pars.fsy" +//# 3325 "src/Compiler/pars.fsy" let c, v = _1 SynConst.SourceIdentifier(c, v, lhs parseState) ) -//# 3028 "src/Compiler/pars.fsy" +//# 3325 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 8799 "pars.fs" +//# 9489 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> byte[] * SynByteStringKind * ParseHelpers.LexerContinuation in Microsoft.FSharp.Core.Operators.box ( ( -//# 3032 "src/Compiler/pars.fsy" +//# 3329 "src/Compiler/pars.fsy" let (v, synByteStringKind, _) = _1 SynConst.Bytes(v, synByteStringKind, lhs parseState) ) -//# 3032 "src/Compiler/pars.fsy" +//# 3329 "src/Compiler/pars.fsy" : 'gentype_rawConstant)); -//# 8811 "pars.fs" +//# 9501 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> int32 * bool in let _2 = parseState.GetInput(2) :?> string in @@ -8816,15 +9506,15 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3037 "src/Compiler/pars.fsy" +//# 3334 "src/Compiler/pars.fsy" if _2 <> "/" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedOperatorForUnitOfMeasure()) if fst _3 = 0 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsIllegalDenominatorForMeasureExponent()) if (snd _1) || (snd _3) then errorR(Error(FSComp.SR.lexOutsideThirtyTwoBitSigned(), lhs parseState)) - SynRationalConst.Rational(fst _1, fst _3, lhs parseState) + SynRationalConst.Rational(fst _1, rhs parseState 1, rhs parseState 2, fst _3, rhs parseState 3, lhs parseState) ) -//# 3037 "src/Compiler/pars.fsy" +//# 3334 "src/Compiler/pars.fsy" : 'gentype_rationalConstant)); -//# 8827 "pars.fs" +//# 9517 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> int32 * bool in let _3 = parseState.GetInput(3) :?> string in @@ -8832,466 +9522,494 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3043 "src/Compiler/pars.fsy" +//# 3340 "src/Compiler/pars.fsy" if _3 <> "/" then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedOperatorForUnitOfMeasure()) if fst _4 = 0 then reportParseErrorAt (rhs parseState 4) (FSComp.SR.parsIllegalDenominatorForMeasureExponent()) if (snd _2) || (snd _4) then errorR(Error(FSComp.SR.lexOutsideThirtyTwoBitSigned(), lhs parseState)) - SynRationalConst.Negate(SynRationalConst.Rational(fst _2, fst _4, lhs parseState)) + SynRationalConst.Negate(SynRationalConst.Rational(fst _2, rhs parseState 2, rhs parseState 3, fst _4, rhs parseState 4, lhs parseState), lhs parseState) ) -//# 3043 "src/Compiler/pars.fsy" +//# 3340 "src/Compiler/pars.fsy" : 'gentype_rationalConstant)); -//# 8843 "pars.fs" +//# 9533 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> int32 * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 3049 "src/Compiler/pars.fsy" +//# 3346 "src/Compiler/pars.fsy" if snd _1 then errorR(Error(FSComp.SR.lexOutsideThirtyTwoBitSigned(), lhs parseState)) - SynRationalConst.Integer(fst _1) + SynRationalConst.Integer(fst _1, lhs parseState) ) -//# 3049 "src/Compiler/pars.fsy" +//# 3346 "src/Compiler/pars.fsy" : 'gentype_rationalConstant)); -//# 8855 "pars.fs" +//# 9545 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> int32 * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 3053 "src/Compiler/pars.fsy" +//# 3350 "src/Compiler/pars.fsy" if snd _2 then errorR(Error(FSComp.SR.lexOutsideThirtyTwoBitSigned(), lhs parseState)) - SynRationalConst.Negate(SynRationalConst.Integer(fst _2)) + SynRationalConst.Negate(SynRationalConst.Integer(fst _2, rhs parseState 2), lhs parseState) ) -//# 3053 "src/Compiler/pars.fsy" +//# 3350 "src/Compiler/pars.fsy" : 'gentype_rationalConstant)); -//# 8867 "pars.fs" +//# 9557 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> int32 * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 3057 "src/Compiler/pars.fsy" +//# 3354 "src/Compiler/pars.fsy" if snd _1 then errorR(Error(FSComp.SR.lexOutsideThirtyTwoBitSigned(), lhs parseState)) - SynRationalConst.Integer(fst _1) + SynRationalConst.Integer(fst _1, lhs parseState) ) -//# 3057 "src/Compiler/pars.fsy" +//# 3354 "src/Compiler/pars.fsy" : 'gentype_atomicUnsignedRationalConstant)); -//# 8879 "pars.fs" +//# 9569 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_rationalConstant in let _3 = parseState.GetInput(3) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 3061 "src/Compiler/pars.fsy" - _2 +//# 3358 "src/Compiler/pars.fsy" + SynRationalConst.Paren(_2, rhs2 parseState 1 3) ) -//# 3061 "src/Compiler/pars.fsy" +//# 3358 "src/Compiler/pars.fsy" : 'gentype_atomicUnsignedRationalConstant)); -//# 8891 "pars.fs" +//# 9581 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomicUnsignedRationalConstant in Microsoft.FSharp.Core.Operators.box ( ( -//# 3064 "src/Compiler/pars.fsy" +//# 3361 "src/Compiler/pars.fsy" _1 ) -//# 3064 "src/Compiler/pars.fsy" +//# 3361 "src/Compiler/pars.fsy" : 'gentype_atomicRationalConstant)); -//# 8902 "pars.fs" +//# 9592 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_atomicUnsignedRationalConstant in Microsoft.FSharp.Core.Operators.box ( ( -//# 3067 "src/Compiler/pars.fsy" - SynRationalConst.Negate(_2) +//# 3364 "src/Compiler/pars.fsy" + SynRationalConst.Negate(_2, lhs parseState) ) -//# 3067 "src/Compiler/pars.fsy" +//# 3364 "src/Compiler/pars.fsy" : 'gentype_atomicRationalConstant)); -//# 8913 "pars.fs" +//# 9603 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_rawConstant in Microsoft.FSharp.Core.Operators.box ( ( -//# 3071 "src/Compiler/pars.fsy" +//# 3368 "src/Compiler/pars.fsy" _1, rhs parseState 1 ) -//# 3071 "src/Compiler/pars.fsy" +//# 3368 "src/Compiler/pars.fsy" : 'gentype_constant)); -//# 8924 "pars.fs" +//# 9614 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_rawConstant in let _3 = parseState.GetInput(3) :?> 'gentype_measureTypeArg in Microsoft.FSharp.Core.Operators.box ( ( -//# 3074 "src/Compiler/pars.fsy" - SynConst.Measure(_1, rhs parseState 1, _3), lhs parseState +//# 3371 "src/Compiler/pars.fsy" + let synMeasure, trivia = _3 + let mConstant = rhs parseState 1 + let m = unionRanges mConstant trivia.GreaterRange + SynConst.Measure(_1, rhs parseState 1, synMeasure, trivia), m ) -//# 3074 "src/Compiler/pars.fsy" +//# 3371 "src/Compiler/pars.fsy" : 'gentype_constant)); -//# 8936 "pars.fs" +//# 9629 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynPat in Microsoft.FSharp.Core.Operators.box ( ( -//# 3078 "src/Compiler/pars.fsy" +//# 3378 "src/Compiler/pars.fsy" _1, rhs parseState 1 ) -//# 3078 "src/Compiler/pars.fsy" +//# 3378 "src/Compiler/pars.fsy" : 'gentype_bindingPattern)); -//# 8947 "pars.fs" +//# 9640 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Ident in Microsoft.FSharp.Core.Operators.box ( ( -//# 3085 "src/Compiler/pars.fsy" +//# 3385 "src/Compiler/pars.fsy" let m = rhs parseState 1 SynPat.Named(SynIdent(_1, None), false, None, m) ) -//# 3085 "src/Compiler/pars.fsy" +//# 3385 "src/Compiler/pars.fsy" : 'gentype_simplePattern)); -//# 8959 "pars.fs" +//# 9652 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> Ident in Microsoft.FSharp.Core.Operators.box ( ( -//# 3089 "src/Compiler/pars.fsy" +//# 3389 "src/Compiler/pars.fsy" SynPat.OptionalVal(_2, rhs parseState 2) ) -//# 3089 "src/Compiler/pars.fsy" +//# 3389 "src/Compiler/pars.fsy" : 'gentype_simplePattern)); -//# 8970 "pars.fs" +//# 9663 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_simplePattern in let _3 = parseState.GetInput(3) :?> 'gentype_typeWithTypeConstraints in Microsoft.FSharp.Core.Operators.box ( ( -//# 3092 "src/Compiler/pars.fsy" +//# 3392 "src/Compiler/pars.fsy" SynPat.Typed(_1, _3, lhs parseState) ) -//# 3092 "src/Compiler/pars.fsy" +//# 3392 "src/Compiler/pars.fsy" : 'gentype_simplePattern)); -//# 8982 "pars.fs" +//# 9675 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_simplePattern in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3095 "src/Compiler/pars.fsy" +//# 3395 "src/Compiler/pars.fsy" let mColon = rhs parseState 2 let ty = SynType.FromParseError(mColon.EndRange) SynPat.Typed(_1, ty, unionRanges _1.Range mColon) ) -//# 3095 "src/Compiler/pars.fsy" +//# 3395 "src/Compiler/pars.fsy" : 'gentype_simplePattern)); -//# 8996 "pars.fs" +//# 9689 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_simplePattern in Microsoft.FSharp.Core.Operators.box ( ( -//# 3100 "src/Compiler/pars.fsy" +//# 3400 "src/Compiler/pars.fsy" SynPat.Attrib(_2, _1, lhs parseState) ) -//# 3100 "src/Compiler/pars.fsy" +//# 3400 "src/Compiler/pars.fsy" : 'gentype_simplePattern)); -//# 9008 "pars.fs" +//# 9701 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_simplePattern in Microsoft.FSharp.Core.Operators.box ( ( -//# 3104 "src/Compiler/pars.fsy" +//# 3404 "src/Compiler/pars.fsy" _1 ) -//# 3104 "src/Compiler/pars.fsy" +//# 3404 "src/Compiler/pars.fsy" : 'gentype_simplePatternCommaList)); -//# 9019 "pars.fs" +//# 9712 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_simplePattern in let _3 = parseState.GetInput(3) :?> 'gentype_simplePatternCommaList in Microsoft.FSharp.Core.Operators.box ( ( -//# 3107 "src/Compiler/pars.fsy" +//# 3407 "src/Compiler/pars.fsy" + let mComma = rhs parseState 2 match _3 with - | SynPat.Tuple(_, pats, _) -> SynPat.Tuple(false, _1 :: pats, rhs2 parseState 1 3) - | _ -> SynPat.Tuple(false, [_1; _3], rhs2 parseState 1 3) + | SynPat.Tuple(_, pats, commas, _) -> SynPat.Tuple(false, _1 :: pats, mComma :: commas, rhs2 parseState 1 3) + | _ -> SynPat.Tuple(false, [_1; _3], [mComma], rhs2 parseState 1 3) ) -//# 3107 "src/Compiler/pars.fsy" +//# 3407 "src/Compiler/pars.fsy" : 'gentype_simplePatternCommaList)); -//# 9033 "pars.fs" +//# 9727 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _2 = parseState.GetInput(2) :?> 'gentype_simplePatternCommaList in - let _3 = parseState.GetInput(3) :?> 'gentype_rparen in + let _1 = parseState.GetInput(1) :?> 'gentype_simplePatterns in Microsoft.FSharp.Core.Operators.box ( ( -//# 3113 "src/Compiler/pars.fsy" +//# 3414 "src/Compiler/pars.fsy" + Some _1 + ) +//# 3414 "src/Compiler/pars.fsy" + : 'gentype_opt_simplePatterns)); +//# 9738 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 3416 "src/Compiler/pars.fsy" + None + ) +//# 3416 "src/Compiler/pars.fsy" + : 'gentype_opt_simplePatterns)); +//# 9748 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = parseState.GetInput(2) :?> 'gentype_simplePatternCommaList in + let _3 = parseState.GetInput(3) :?> 'gentype_rparen in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 3420 "src/Compiler/pars.fsy" let parenPat = SynPat.Paren(_2, rhs2 parseState 1 3) let simplePats, _ = SimplePatsOfPat parseState.SynArgNameGenerator parenPat simplePats ) -//# 3113 "src/Compiler/pars.fsy" +//# 3420 "src/Compiler/pars.fsy" : 'gentype_simplePatterns)); -//# 9047 "pars.fs" +//# 9762 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 3118 "src/Compiler/pars.fsy" +//# 3425 "src/Compiler/pars.fsy" let pat = SynPat.Const(SynConst.Unit, rhs2 parseState 1 2) let simplePats, _ = SimplePatsOfPat parseState.SynArgNameGenerator pat simplePats ) -//# 3118 "src/Compiler/pars.fsy" +//# 3425 "src/Compiler/pars.fsy" : 'gentype_simplePatterns)); -//# 9060 "pars.fs" +//# 9775 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_simplePatternCommaList in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3123 "src/Compiler/pars.fsy" +//# 3430 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen()) - let parenPat = SynPat.Paren(SynPat.Tuple(false, [], rhs2 parseState 1 2), rhs2 parseState 1 2) // todo: report parsed pats anyway? + let parenPat = SynPat.Paren(SynPat.Tuple(false, [], [], rhs2 parseState 1 2), rhs2 parseState 1 2) // todo: report parsed pats anyway? let simplePats, _ = SimplePatsOfPat parseState.SynArgNameGenerator parenPat simplePats ) -//# 3123 "src/Compiler/pars.fsy" +//# 3430 "src/Compiler/pars.fsy" : 'gentype_simplePatterns)); -//# 9075 "pars.fs" +//# 9790 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 3129 "src/Compiler/pars.fsy" +//# 3436 "src/Compiler/pars.fsy" let parenPat = SynPat.Paren(SynPat.Wild(rhs parseState 2), rhs2 parseState 1 3) // silent recovery let simplePats, _ = SimplePatsOfPat parseState.SynArgNameGenerator parenPat simplePats ) -//# 3129 "src/Compiler/pars.fsy" +//# 3436 "src/Compiler/pars.fsy" : 'gentype_simplePatterns)); -//# 9088 "pars.fs" +//# 9803 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3134 "src/Compiler/pars.fsy" +//# 3441 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen()) let pat = SynPat.Wild(lhs parseState) let simplePats, _ = SimplePatsOfPat parseState.SynArgNameGenerator pat simplePats ) -//# 3134 "src/Compiler/pars.fsy" +//# 3441 "src/Compiler/pars.fsy" : 'gentype_simplePatterns)); -//# 9102 "pars.fs" +//# 9817 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynPat in let _3 = parseState.GetInput(3) :?> 'gentype_constrPattern in Microsoft.FSharp.Core.Operators.box ( ( -//# 3142 "src/Compiler/pars.fsy" +//# 3449 "src/Compiler/pars.fsy" SynPat.As(_1, _3, rhs2 parseState 1 3) ) -//# 3142 "src/Compiler/pars.fsy" +//# 3449 "src/Compiler/pars.fsy" : SynPat)); -//# 9114 "pars.fs" +//# 9829 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynPat in let _3 = parseState.GetInput(3) :?> SynPat in Microsoft.FSharp.Core.Operators.box ( ( -//# 3145 "src/Compiler/pars.fsy" +//# 3452 "src/Compiler/pars.fsy" let mBar = rhs parseState 2 SynPat.Or(_1, _3, rhs2 parseState 1 3, { BarRange = mBar }) ) -//# 3145 "src/Compiler/pars.fsy" +//# 3452 "src/Compiler/pars.fsy" : SynPat)); -//# 9127 "pars.fs" +//# 9842 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynPat in let _3 = parseState.GetInput(3) :?> SynPat in Microsoft.FSharp.Core.Operators.box ( ( -//# 3149 "src/Compiler/pars.fsy" +//# 3456 "src/Compiler/pars.fsy" let mColonColon = rhs parseState 2 SynPat.ListCons(_1, _3, rhs2 parseState 1 3, { ColonColonRange = mColonColon }) ) -//# 3149 "src/Compiler/pars.fsy" +//# 3456 "src/Compiler/pars.fsy" : SynPat)); -//# 9140 "pars.fs" +//# 9855 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_tuplePatternElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 3153 "src/Compiler/pars.fsy" - let pats = normalizeTuplePat _1 +//# 3460 "src/Compiler/pars.fsy" + let pats, commas = _1 + let pats, commas = normalizeTuplePat pats commas let m = (rhs parseState 1, pats) ||> unionRangeWithListBy (fun p -> p.Range) - SynPat.Tuple(false, List.rev pats, m) + SynPat.Tuple(false, List.rev pats, List.rev commas, m) ) -//# 3153 "src/Compiler/pars.fsy" +//# 3460 "src/Compiler/pars.fsy" : SynPat)); -//# 9153 "pars.fs" +//# 9869 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_conjPatternElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 3158 "src/Compiler/pars.fsy" +//# 3466 "src/Compiler/pars.fsy" SynPat.Ands(List.rev _1, lhs parseState) ) -//# 3158 "src/Compiler/pars.fsy" +//# 3466 "src/Compiler/pars.fsy" : SynPat)); -//# 9164 "pars.fs" +//# 9880 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_constrPattern in Microsoft.FSharp.Core.Operators.box ( ( -//# 3161 "src/Compiler/pars.fsy" +//# 3469 "src/Compiler/pars.fsy" _1 ) -//# 3161 "src/Compiler/pars.fsy" +//# 3469 "src/Compiler/pars.fsy" : SynPat)); -//# 9175 "pars.fs" +//# 9891 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_tuplePatternElements in let _3 = parseState.GetInput(3) :?> SynPat in Microsoft.FSharp.Core.Operators.box ( ( -//# 3165 "src/Compiler/pars.fsy" - _3 :: _1 +//# 3473 "src/Compiler/pars.fsy" + let pats, commas = _1 + _3 :: pats, (rhs parseState 2 :: commas) ) -//# 3165 "src/Compiler/pars.fsy" +//# 3473 "src/Compiler/pars.fsy" : 'gentype_tuplePatternElements)); -//# 9187 "pars.fs" +//# 9904 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynPat in let _3 = parseState.GetInput(3) :?> SynPat in Microsoft.FSharp.Core.Operators.box ( ( -//# 3168 "src/Compiler/pars.fsy" - [_3; _1] +//# 3477 "src/Compiler/pars.fsy" + [_3; _1], [rhs parseState 2] ) -//# 3168 "src/Compiler/pars.fsy" +//# 3477 "src/Compiler/pars.fsy" : 'gentype_tuplePatternElements)); -//# 9199 "pars.fs" +//# 9916 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_tuplePatternElements in let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3171 "src/Compiler/pars.fsy" +//# 3480 "src/Compiler/pars.fsy" + let pats, commas = _1 let commaRange = rhs parseState 2 - reportParseErrorAt commaRange (FSComp.SR.parsExpectingPatternInTuple ()) + reportParseErrorAt commaRange (FSComp.SR.parsExpectingPattern ()) let pat2 = SynPat.Wild(commaRange.EndRange) - pat2 :: _1 + pat2 :: pats, (commaRange :: commas) ) -//# 3171 "src/Compiler/pars.fsy" +//# 3480 "src/Compiler/pars.fsy" : 'gentype_tuplePatternElements)); -//# 9214 "pars.fs" +//# 9932 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynPat in let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3177 "src/Compiler/pars.fsy" +//# 3487 "src/Compiler/pars.fsy" let commaRange = rhs parseState 2 - reportParseErrorAt commaRange (FSComp.SR.parsExpectingPatternInTuple ()) + reportParseErrorAt commaRange (FSComp.SR.parsExpectingPattern ()) let pat2 = SynPat.Wild(commaRange.EndRange) - [pat2; _1] + [pat2; _1], [commaRange] ) -//# 3177 "src/Compiler/pars.fsy" +//# 3487 "src/Compiler/pars.fsy" : 'gentype_tuplePatternElements)); -//# 9229 "pars.fs" +//# 9947 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynPat in Microsoft.FSharp.Core.Operators.box ( ( -//# 3183 "src/Compiler/pars.fsy" +//# 3493 "src/Compiler/pars.fsy" let commaRange = rhs parseState 1 - reportParseErrorAt commaRange (FSComp.SR.parsExpectingPatternInTuple ()) + reportParseErrorAt commaRange (FSComp.SR.parsExpectingPattern ()) let pat1 = SynPat.Wild(commaRange.StartRange) - [_2; pat1] + [_2; pat1], [commaRange] ) -//# 3183 "src/Compiler/pars.fsy" +//# 3493 "src/Compiler/pars.fsy" : 'gentype_tuplePatternElements)); -//# 9243 "pars.fs" +//# 9961 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3189 "src/Compiler/pars.fsy" +//# 3499 "src/Compiler/pars.fsy" let commaRange = rhs parseState 1 if not _2 then reportParseErrorAt commaRange (FSComp.SR.parsExpectedPatternAfterToken ()) let pat1 = SynPat.Wild(commaRange.StartRange) let pat2 = SynPat.Wild(commaRange.EndRange) - [pat2; pat1] + [pat2; pat1], [commaRange] ) -//# 3189 "src/Compiler/pars.fsy" +//# 3499 "src/Compiler/pars.fsy" : 'gentype_tuplePatternElements)); -//# 9258 "pars.fs" +//# 9976 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_conjPatternElements in let _3 = parseState.GetInput(3) :?> SynPat in Microsoft.FSharp.Core.Operators.box ( ( -//# 3197 "src/Compiler/pars.fsy" +//# 3507 "src/Compiler/pars.fsy" _3 :: _1 ) -//# 3197 "src/Compiler/pars.fsy" +//# 3507 "src/Compiler/pars.fsy" : 'gentype_conjPatternElements)); -//# 9270 "pars.fs" +//# 9988 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynPat in let _3 = parseState.GetInput(3) :?> SynPat in Microsoft.FSharp.Core.Operators.box ( ( -//# 3200 "src/Compiler/pars.fsy" +//# 3510 "src/Compiler/pars.fsy" _3 :: _1 :: [] ) -//# 3200 "src/Compiler/pars.fsy" +//# 3510 "src/Compiler/pars.fsy" : 'gentype_conjPatternElements)); -//# 9282 "pars.fs" +//# 10000 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_namePatPair in let _2 = parseState.GetInput(2) :?> 'gentype_opt_seps in Microsoft.FSharp.Core.Operators.box ( ( -//# 3204 "src/Compiler/pars.fsy" - [_1], lhs parseState +//# 3514 "src/Compiler/pars.fsy" + [_1] ) -//# 3204 "src/Compiler/pars.fsy" +//# 3514 "src/Compiler/pars.fsy" : 'gentype_namePatPairs)); -//# 9294 "pars.fs" +//# 10012 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_namePatPair in let _2 = parseState.GetInput(2) :?> 'gentype_seps in @@ -9299,342 +10017,354 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3207 "src/Compiler/pars.fsy" - let (rs, _) = _3 - (_1 :: rs), lhs parseState +//# 3517 "src/Compiler/pars.fsy" + _1 :: _3 + ) +//# 3517 "src/Compiler/pars.fsy" + : 'gentype_namePatPairs)); +//# 10025 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> 'gentype_namePatPair in + let _2 = parseState.GetInput(2) :?> 'gentype_seps in + let _3 = parseState.GetInput(3) :?> 'gentype_seps in + let _4 = parseState.GetInput(4) :?> 'gentype_namePatPairs in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 3520 "src/Compiler/pars.fsy" + reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsExpectingPattern ()) + (_1 :: _4) ) -//# 3207 "src/Compiler/pars.fsy" +//# 3520 "src/Compiler/pars.fsy" : 'gentype_namePatPairs)); -//# 9308 "pars.fs" +//# 10040 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Ident in let _3 = parseState.GetInput(3) :?> 'gentype_parenPattern in Microsoft.FSharp.Core.Operators.box ( ( -//# 3212 "src/Compiler/pars.fsy" +//# 3525 "src/Compiler/pars.fsy" let mEquals = rhs parseState 2 - (_1, Some mEquals, _3) + _1, Some mEquals, _3 ) -//# 3212 "src/Compiler/pars.fsy" +//# 3525 "src/Compiler/pars.fsy" : 'gentype_namePatPair)); -//# 9321 "pars.fs" +//# 10053 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Ident in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3215 "src/Compiler/pars.fsy" +//# 3529 "src/Compiler/pars.fsy" let mEquals = rhs parseState 2 - (_1, Some mEquals, patFromParseError (SynPat.Wild mEquals.EndRange)) + _1, Some mEquals, patFromParseError (SynPat.Wild mEquals.EndRange) ) -//# 3215 "src/Compiler/pars.fsy" +//# 3529 "src/Compiler/pars.fsy" : 'gentype_namePatPair)); -//# 9334 "pars.fs" +//# 10066 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Ident in let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3218 "src/Compiler/pars.fsy" - (_1, None, patFromParseError (SynPat.Wild _1.idRange.EndRange)) +//# 3533 "src/Compiler/pars.fsy" + _1, None, patFromParseError (SynPat.Wild _1.idRange.EndRange) ) -//# 3218 "src/Compiler/pars.fsy" +//# 3533 "src/Compiler/pars.fsy" : 'gentype_namePatPair)); -//# 9346 "pars.fs" +//# 10078 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomicPatternLongIdent in let _2 = parseState.GetInput(2) :?> 'gentype_explicitValTyparDecls in Microsoft.FSharp.Core.Operators.box ( ( -//# 3222 "src/Compiler/pars.fsy" +//# 3537 "src/Compiler/pars.fsy" let vis, lid = _1 SynPat.LongIdent(lid, None, Some _2, SynArgPats.Pats [], vis, lhs parseState) ) -//# 3222 "src/Compiler/pars.fsy" +//# 3537 "src/Compiler/pars.fsy" : 'gentype_constrPattern)); -//# 9359 "pars.fs" +//# 10091 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomicPatternLongIdent in let _2 = parseState.GetInput(2) :?> 'gentype_explicitValTyparDecls in - let _3 = parseState.GetInput(3) :?> SynArgPats * Range in + let _3 = parseState.GetInput(3) :?> SynArgPats * range in Microsoft.FSharp.Core.Operators.box ( ( -//# 3226 "src/Compiler/pars.fsy" +//# 3541 "src/Compiler/pars.fsy" let vis, lid = _1 let args, argsM = _3 let m = unionRanges (rhs2 parseState 1 2) argsM SynPat.LongIdent(lid, None, Some _2, args, vis, m) ) -//# 3226 "src/Compiler/pars.fsy" +//# 3541 "src/Compiler/pars.fsy" : 'gentype_constrPattern)); -//# 9375 "pars.fs" +//# 10107 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomicPatternLongIdent in let _2 = parseState.GetInput(2) :?> 'gentype_explicitValTyparDecls in - let _4 = parseState.GetInput(4) :?> SynArgPats * Range in + let _4 = parseState.GetInput(4) :?> SynArgPats * range in Microsoft.FSharp.Core.Operators.box ( ( -//# 3232 "src/Compiler/pars.fsy" +//# 3547 "src/Compiler/pars.fsy" let vis, lid = _1 let args, argsM = _4 let m = unionRanges (rhs2 parseState 1 2) argsM SynPat.LongIdent(lid, None, Some _2, args, vis, m) ) -//# 3232 "src/Compiler/pars.fsy" +//# 3547 "src/Compiler/pars.fsy" : 'gentype_constrPattern)); -//# 9391 "pars.fs" +//# 10123 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomicPatternLongIdent in let _2 = parseState.GetInput(2) :?> 'gentype_explicitValTyparDecls in - let _4 = parseState.GetInput(4) :?> SynArgPats * Range in + let _4 = parseState.GetInput(4) :?> SynArgPats * range in Microsoft.FSharp.Core.Operators.box ( ( -//# 3238 "src/Compiler/pars.fsy" +//# 3553 "src/Compiler/pars.fsy" let vis, lid = _1 let args, argsM = _4 let m = unionRanges (rhs2 parseState 1 2) argsM SynPat.LongIdent(lid, None, Some _2, args, vis, m) ) -//# 3238 "src/Compiler/pars.fsy" +//# 3553 "src/Compiler/pars.fsy" : 'gentype_constrPattern)); -//# 9407 "pars.fs" +//# 10139 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomicPatternLongIdent in - let _2 = parseState.GetInput(2) :?> SynArgPats * Range in + let _2 = parseState.GetInput(2) :?> SynArgPats * range in Microsoft.FSharp.Core.Operators.box ( ( -//# 3244 "src/Compiler/pars.fsy" +//# 3559 "src/Compiler/pars.fsy" let vis, lid = _1 let args, argsM = _2 let m = unionRanges (rhs parseState 1) argsM SynPat.LongIdent(lid, None, None, args, vis, m) ) -//# 3244 "src/Compiler/pars.fsy" +//# 3559 "src/Compiler/pars.fsy" : 'gentype_constrPattern)); -//# 9422 "pars.fs" +//# 10154 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomicPatternLongIdent in - let _3 = parseState.GetInput(3) :?> SynArgPats * Range in + let _3 = parseState.GetInput(3) :?> SynArgPats * range in Microsoft.FSharp.Core.Operators.box ( ( -//# 3250 "src/Compiler/pars.fsy" +//# 3565 "src/Compiler/pars.fsy" let vis, lid = _1 let args, argsM = _3 let m = unionRanges (rhs parseState 1) argsM SynPat.LongIdent(lid, None, None, args, vis, m) ) -//# 3250 "src/Compiler/pars.fsy" +//# 3565 "src/Compiler/pars.fsy" : 'gentype_constrPattern)); -//# 9437 "pars.fs" +//# 10169 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomicPatternLongIdent in - let _3 = parseState.GetInput(3) :?> SynArgPats * Range in + let _3 = parseState.GetInput(3) :?> SynArgPats * range in Microsoft.FSharp.Core.Operators.box ( ( -//# 3256 "src/Compiler/pars.fsy" +//# 3571 "src/Compiler/pars.fsy" let vis, lid = _1 let args, argsM = _3 let m = unionRanges (rhs parseState 1) argsM SynPat.LongIdent(lid, None, None, args, vis, m) ) -//# 3256 "src/Compiler/pars.fsy" +//# 3571 "src/Compiler/pars.fsy" : 'gentype_constrPattern)); -//# 9452 "pars.fs" +//# 10184 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_atomTypeOrAnonRecdType in Microsoft.FSharp.Core.Operators.box ( ( -//# 3262 "src/Compiler/pars.fsy" +//# 3577 "src/Compiler/pars.fsy" SynPat.IsInst(_2, lhs parseState) ) -//# 3262 "src/Compiler/pars.fsy" +//# 3577 "src/Compiler/pars.fsy" : 'gentype_constrPattern)); -//# 9463 "pars.fs" +//# 10195 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomicPattern in Microsoft.FSharp.Core.Operators.box ( ( -//# 3265 "src/Compiler/pars.fsy" +//# 3580 "src/Compiler/pars.fsy" _1 ) -//# 3265 "src/Compiler/pars.fsy" +//# 3580 "src/Compiler/pars.fsy" : 'gentype_constrPattern)); -//# 9474 "pars.fs" +//# 10206 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_namePatPairs in let _3 = parseState.GetInput(3) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 3269 "src/Compiler/pars.fsy" +//# 3584 "src/Compiler/pars.fsy" let mParen = rhs2 parseState 1 3 - let pats, m = _2 let trivia = { ParenRange = mParen } - SynArgPats.NamePatPairs(pats, m, trivia), snd _2 + SynArgPats.NamePatPairs(_2, rhs parseState 2, trivia), mParen ) -//# 3269 "src/Compiler/pars.fsy" - : SynArgPats * Range)); -//# 9489 "pars.fs" +//# 3584 "src/Compiler/pars.fsy" + : SynArgPats * range)); +//# 10220 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynPat list in Microsoft.FSharp.Core.Operators.box ( ( -//# 3275 "src/Compiler/pars.fsy" +//# 3589 "src/Compiler/pars.fsy" let mParsed = rhs parseState 1 let mAll = (mParsed.StartRange, _1) ||> unionRangeWithListBy (fun p -> p.Range) SynArgPats.Pats _1, mAll ) -//# 3275 "src/Compiler/pars.fsy" - : SynArgPats * Range)); -//# 9502 "pars.fs" +//# 3589 "src/Compiler/pars.fsy" + : SynArgPats * range)); +//# 10233 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomicPattern in let _2 = parseState.GetInput(2) :?> SynPat list in Microsoft.FSharp.Core.Operators.box ( ( -//# 3281 "src/Compiler/pars.fsy" +//# 3595 "src/Compiler/pars.fsy" _1 :: _2 ) -//# 3281 "src/Compiler/pars.fsy" +//# 3595 "src/Compiler/pars.fsy" : SynPat list)); -//# 9514 "pars.fs" +//# 10245 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomicPattern in let _3 = parseState.GetInput(3) :?> SynPat list in Microsoft.FSharp.Core.Operators.box ( ( -//# 3284 "src/Compiler/pars.fsy" +//# 3598 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsSuccessivePatternsShouldBeSpacedOrTupled()) _1 :: _3 ) -//# 3284 "src/Compiler/pars.fsy" +//# 3598 "src/Compiler/pars.fsy" : SynPat list)); -//# 9527 "pars.fs" +//# 10258 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomicPattern in let _3 = parseState.GetInput(3) :?> SynPat list in Microsoft.FSharp.Core.Operators.box ( ( -//# 3288 "src/Compiler/pars.fsy" +//# 3602 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsSuccessivePatternsShouldBeSpacedOrTupled()) _1 :: _3 ) -//# 3288 "src/Compiler/pars.fsy" +//# 3602 "src/Compiler/pars.fsy" : SynPat list)); -//# 9540 "pars.fs" +//# 10271 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomicPattern in Microsoft.FSharp.Core.Operators.box ( ( -//# 3292 "src/Compiler/pars.fsy" +//# 3606 "src/Compiler/pars.fsy" [_1] ) -//# 3292 "src/Compiler/pars.fsy" +//# 3606 "src/Compiler/pars.fsy" : SynPat list)); -//# 9551 "pars.fs" +//# 10282 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_quoteExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 3297 "src/Compiler/pars.fsy" +//# 3611 "src/Compiler/pars.fsy" SynPat.QuoteExpr(_1, lhs parseState) ) -//# 3297 "src/Compiler/pars.fsy" +//# 3611 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 9562 "pars.fs" +//# 10293 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _1 = parseState.GetInput(1) :?> char in - let _3 = parseState.GetInput(3) :?> char in + let _1 = parseState.GetInput(1) :?> ParseHelpers.LexerContinuation in + let _2 = parseState.GetInput(2) :?> 'gentype_recordPatternElementsAux in + let _3 = parseState.GetInput(3) :?> 'gentype_rbrace in Microsoft.FSharp.Core.Operators.box ( ( -//# 3300 "src/Compiler/pars.fsy" - SynPat.DeprecatedCharRange(_1, _3, rhs2 parseState 1 3) +//# 3614 "src/Compiler/pars.fsy" + SynPat.Record(_2, rhs2 parseState 1 3) ) -//# 3300 "src/Compiler/pars.fsy" +//# 3614 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 9574 "pars.fs" +//# 10306 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> ParseHelpers.LexerContinuation in - let _2 = parseState.GetInput(2) :?> 'gentype_recordPatternElementsAux in let _3 = parseState.GetInput(3) :?> 'gentype_rbrace in Microsoft.FSharp.Core.Operators.box ( ( -//# 3303 "src/Compiler/pars.fsy" - let rs, m = _2 - SynPat.Record(rs, rhs2 parseState 1 3) +//# 3617 "src/Compiler/pars.fsy" + SynPat.Record([], rhs2 parseState 1 3) ) -//# 3303 "src/Compiler/pars.fsy" +//# 3617 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 9588 "pars.fs" +//# 10318 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_listPatternElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 3307 "src/Compiler/pars.fsy" +//# 3620 "src/Compiler/pars.fsy" SynPat.ArrayOrList(false, _2, lhs parseState) ) -//# 3307 "src/Compiler/pars.fsy" +//# 3620 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 9599 "pars.fs" +//# 10329 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_listPatternElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 3310 "src/Compiler/pars.fsy" +//# 3623 "src/Compiler/pars.fsy" SynPat.ArrayOrList(true, _2, lhs parseState) ) -//# 3310 "src/Compiler/pars.fsy" +//# 3623 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 9610 "pars.fs" +//# 10340 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 3313 "src/Compiler/pars.fsy" +//# 3626 "src/Compiler/pars.fsy" SynPat.Wild(lhs parseState) ) -//# 3313 "src/Compiler/pars.fsy" +//# 3626 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 9620 "pars.fs" +//# 10350 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> Ident in Microsoft.FSharp.Core.Operators.box ( ( -//# 3316 "src/Compiler/pars.fsy" +//# 3629 "src/Compiler/pars.fsy" SynPat.OptionalVal(_2, lhs parseState) ) -//# 3316 "src/Compiler/pars.fsy" +//# 3629 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 9631 "pars.fs" +//# 10361 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomicPatternLongIdent in Microsoft.FSharp.Core.Operators.box ( ( -//# 3319 "src/Compiler/pars.fsy" +//# 3632 "src/Compiler/pars.fsy" let vis, lidwd = _1 if not (isNilOrSingleton lidwd.LongIdent) || String.isLeadingIdentifierCharacterUpperCase (List.head lidwd.LongIdent).idText then mkSynPatMaybeVar lidwd vis (lhs parseState) @@ -9643,406 +10373,413 @@ let _fsyacc_reductions = lazy [| let (SynIdent(id, _)) = synIdent SynPat.Named(synIdent, false, vis, id.idRange) ) -//# 3319 "src/Compiler/pars.fsy" +//# 3632 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 9648 "pars.fs" +//# 10378 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_constant in Microsoft.FSharp.Core.Operators.box ( ( -//# 3328 "src/Compiler/pars.fsy" +//# 3641 "src/Compiler/pars.fsy" SynPat.Const(fst _1, snd _1) ) -//# 3328 "src/Compiler/pars.fsy" +//# 3641 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 9659 "pars.fs" +//# 10389 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 3331 "src/Compiler/pars.fsy" +//# 3644 "src/Compiler/pars.fsy" SynPat.Const(SynConst.Bool false, lhs parseState) ) -//# 3331 "src/Compiler/pars.fsy" +//# 3644 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 9669 "pars.fs" +//# 10399 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 3334 "src/Compiler/pars.fsy" +//# 3647 "src/Compiler/pars.fsy" SynPat.Const(SynConst.Bool true, lhs parseState) ) -//# 3334 "src/Compiler/pars.fsy" +//# 3647 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 9679 "pars.fs" +//# 10409 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 3337 "src/Compiler/pars.fsy" +//# 3650 "src/Compiler/pars.fsy" SynPat.Null(lhs parseState) ) -//# 3337 "src/Compiler/pars.fsy" +//# 3650 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 9689 "pars.fs" +//# 10419 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_parenPatternBody in let _3 = parseState.GetInput(3) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 3340 "src/Compiler/pars.fsy" +//# 3653 "src/Compiler/pars.fsy" let m = lhs parseState SynPat.Paren(_2 m, m) ) -//# 3340 "src/Compiler/pars.fsy" +//# 3653 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 9702 "pars.fs" +//# 10432 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_parenPatternBody in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3344 "src/Compiler/pars.fsy" +//# 3657 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen()) let m = rhs2 parseState 1 2 let parenPat = SynPat.Paren(_2 m, m) patFromParseError parenPat ) -//# 3344 "src/Compiler/pars.fsy" +//# 3657 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 9717 "pars.fs" +//# 10447 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 3350 "src/Compiler/pars.fsy" +//# 3663 "src/Compiler/pars.fsy" let innerPat = patFromParseError (SynPat.Wild(rhs parseState 2)) SynPat.Paren(innerPat, lhs parseState) ) -//# 3350 "src/Compiler/pars.fsy" +//# 3663 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 9729 "pars.fs" +//# 10459 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3354 "src/Compiler/pars.fsy" +//# 3667 "src/Compiler/pars.fsy" let parenM = rhs parseState 1 reportParseErrorAt parenM (FSComp.SR.parsUnmatchedParen()) let innerPat = patFromParseError (SynPat.Wild parenM.EndRange) let parenPat = SynPat.Paren(innerPat, parenM) patFromParseError parenPat ) -//# 3354 "src/Compiler/pars.fsy" +//# 3667 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 9744 "pars.fs" +//# 10474 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_tupleParenPatternElements in let _4 = parseState.GetInput(4) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 3361 "src/Compiler/pars.fsy" - SynPat.Tuple(true, List.rev _3, lhs parseState) +//# 3674 "src/Compiler/pars.fsy" + let pats, commas = _3 + SynPat.Tuple(true, List.rev pats, List.rev commas, lhs parseState) ) -//# 3361 "src/Compiler/pars.fsy" +//# 3674 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 9756 "pars.fs" +//# 10487 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_tupleParenPatternElements in let _4 = parseState.GetInput(4) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3364 "src/Compiler/pars.fsy" +//# 3678 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnmatchedParen()) - SynPat.Tuple(true, List.rev _3, lhs parseState) + let pats, commas = _3 + SynPat.Tuple(true, List.rev pats, List.rev commas, lhs parseState) ) -//# 3364 "src/Compiler/pars.fsy" +//# 3678 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 9769 "pars.fs" +//# 10501 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _4 = parseState.GetInput(4) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 3368 "src/Compiler/pars.fsy" +//# 3683 "src/Compiler/pars.fsy" (* silent recovery *) SynPat.Wild(lhs parseState) ) -//# 3368 "src/Compiler/pars.fsy" +//# 3683 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 9780 "pars.fs" +//# 10512 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3371 "src/Compiler/pars.fsy" +//# 3686 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnmatchedParen()) SynPat.Wild(lhs parseState) ) -//# 3371 "src/Compiler/pars.fsy" +//# 3686 "src/Compiler/pars.fsy" : 'gentype_atomicPattern)); -//# 9792 "pars.fs" +//# 10524 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in Microsoft.FSharp.Core.Operators.box ( ( -//# 3376 "src/Compiler/pars.fsy" +//# 3691 "src/Compiler/pars.fsy" (fun m -> _1) ) -//# 3376 "src/Compiler/pars.fsy" +//# 3691 "src/Compiler/pars.fsy" : 'gentype_parenPatternBody)); -//# 9803 "pars.fs" +//# 10535 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 3379 "src/Compiler/pars.fsy" +//# 3694 "src/Compiler/pars.fsy" (fun m -> SynPat.Const(SynConst.Unit, m)) ) -//# 3379 "src/Compiler/pars.fsy" +//# 3694 "src/Compiler/pars.fsy" : 'gentype_parenPatternBody)); -//# 9813 "pars.fs" +//# 10545 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in let _3 = parseState.GetInput(3) :?> 'gentype_constrPattern in Microsoft.FSharp.Core.Operators.box ( ( -//# 3408 "src/Compiler/pars.fsy" +//# 3723 "src/Compiler/pars.fsy" SynPat.As(_1, _3, rhs2 parseState 1 3) ) -//# 3408 "src/Compiler/pars.fsy" +//# 3723 "src/Compiler/pars.fsy" : 'gentype_parenPattern)); -//# 9825 "pars.fs" +//# 10557 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in let _3 = parseState.GetInput(3) :?> 'gentype_parenPattern in Microsoft.FSharp.Core.Operators.box ( ( -//# 3411 "src/Compiler/pars.fsy" +//# 3726 "src/Compiler/pars.fsy" let mBar = rhs parseState 2 SynPat.Or(_1, _3, rhs2 parseState 1 3, { BarRange = mBar }) ) -//# 3411 "src/Compiler/pars.fsy" +//# 3726 "src/Compiler/pars.fsy" : 'gentype_parenPattern)); -//# 9838 "pars.fs" +//# 10570 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_tupleParenPatternElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 3415 "src/Compiler/pars.fsy" - let pats = normalizeTuplePat _1 +//# 3730 "src/Compiler/pars.fsy" + let pats, commas = _1 + let pats, commas = normalizeTuplePat pats commas let m = (rhs parseState 1, pats) ||> unionRangeWithListBy (fun p -> p.Range) - SynPat.Tuple(false, List.rev pats, m) + SynPat.Tuple(false, List.rev pats, List.rev commas, m) ) -//# 3415 "src/Compiler/pars.fsy" +//# 3730 "src/Compiler/pars.fsy" : 'gentype_parenPattern)); -//# 9851 "pars.fs" +//# 10584 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_conjParenPatternElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 3420 "src/Compiler/pars.fsy" +//# 3736 "src/Compiler/pars.fsy" SynPat.Ands(List.rev _1, rhs2 parseState 1 3) ) -//# 3420 "src/Compiler/pars.fsy" +//# 3736 "src/Compiler/pars.fsy" : 'gentype_parenPattern)); -//# 9862 "pars.fs" +//# 10595 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in let _3 = parseState.GetInput(3) :?> 'gentype_typeWithTypeConstraints in Microsoft.FSharp.Core.Operators.box ( ( -//# 3423 "src/Compiler/pars.fsy" +//# 3739 "src/Compiler/pars.fsy" let mLhs = lhs parseState SynPat.Typed(_1, _3, mLhs) ) -//# 3423 "src/Compiler/pars.fsy" +//# 3739 "src/Compiler/pars.fsy" : 'gentype_parenPattern)); -//# 9875 "pars.fs" +//# 10608 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3427 "src/Compiler/pars.fsy" +//# 3743 "src/Compiler/pars.fsy" let mColon = rhs parseState 2 let ty = SynType.FromParseError(mColon.EndRange) SynPat.Typed(_1, ty, unionRanges _1.Range mColon) ) -//# 3427 "src/Compiler/pars.fsy" +//# 3743 "src/Compiler/pars.fsy" : 'gentype_parenPattern)); -//# 9889 "pars.fs" +//# 10622 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_parenPattern in Microsoft.FSharp.Core.Operators.box ( ( -//# 3432 "src/Compiler/pars.fsy" +//# 3748 "src/Compiler/pars.fsy" let mLhs = lhs parseState SynPat.Attrib(_2, _1, mLhs) ) -//# 3432 "src/Compiler/pars.fsy" +//# 3748 "src/Compiler/pars.fsy" : 'gentype_parenPattern)); -//# 9902 "pars.fs" +//# 10635 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in let _3 = parseState.GetInput(3) :?> 'gentype_parenPattern in Microsoft.FSharp.Core.Operators.box ( ( -//# 3436 "src/Compiler/pars.fsy" +//# 3752 "src/Compiler/pars.fsy" let mColonColon = rhs parseState 2 SynPat.ListCons(_1, _3, rhs2 parseState 1 3, { ColonColonRange = mColonColon }) ) -//# 3436 "src/Compiler/pars.fsy" +//# 3752 "src/Compiler/pars.fsy" : 'gentype_parenPattern)); -//# 9915 "pars.fs" +//# 10648 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_constrPattern in Microsoft.FSharp.Core.Operators.box ( ( -//# 3439 "src/Compiler/pars.fsy" +//# 3755 "src/Compiler/pars.fsy" _1 ) -//# 3439 "src/Compiler/pars.fsy" +//# 3755 "src/Compiler/pars.fsy" : 'gentype_parenPattern)); -//# 9926 "pars.fs" +//# 10659 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_tupleParenPatternElements in let _3 = parseState.GetInput(3) :?> 'gentype_parenPattern in Microsoft.FSharp.Core.Operators.box ( ( -//# 3443 "src/Compiler/pars.fsy" - _3 :: _1 +//# 3759 "src/Compiler/pars.fsy" + let pats, commas = _1 + let mComma = rhs parseState 2 + _3 :: pats, (mComma :: commas) ) -//# 3443 "src/Compiler/pars.fsy" +//# 3759 "src/Compiler/pars.fsy" : 'gentype_tupleParenPatternElements)); -//# 9938 "pars.fs" +//# 10673 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in let _3 = parseState.GetInput(3) :?> 'gentype_parenPattern in Microsoft.FSharp.Core.Operators.box ( ( -//# 3446 "src/Compiler/pars.fsy" - [_3; _1] +//# 3764 "src/Compiler/pars.fsy" + let mComma = rhs parseState 2 + [_3; _1], [mComma] ) -//# 3446 "src/Compiler/pars.fsy" +//# 3764 "src/Compiler/pars.fsy" : 'gentype_tupleParenPatternElements)); -//# 9950 "pars.fs" +//# 10686 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_tupleParenPatternElements in let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3449 "src/Compiler/pars.fsy" +//# 3768 "src/Compiler/pars.fsy" + let pats, commas = _1 let commaRange = rhs parseState 2 - reportParseErrorAt commaRange (FSComp.SR.parsExpectingPatternInTuple()) + reportParseErrorAt commaRange (FSComp.SR.parsExpectingPattern()) let pat2 = SynPat.Wild(commaRange.EndRange) - pat2 :: _1 + pat2 :: pats, (commaRange :: commas) ) -//# 3449 "src/Compiler/pars.fsy" +//# 3768 "src/Compiler/pars.fsy" : 'gentype_tupleParenPatternElements)); -//# 9965 "pars.fs" +//# 10702 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3455 "src/Compiler/pars.fsy" +//# 3775 "src/Compiler/pars.fsy" let commaRange = rhs parseState 2 - reportParseErrorAt commaRange (FSComp.SR.parsExpectingPatternInTuple()) + reportParseErrorAt commaRange (FSComp.SR.parsExpectingPattern()) let pat2 = SynPat.Wild(commaRange.EndRange) - [pat2; _1] + [pat2; _1], [commaRange] ) -//# 3455 "src/Compiler/pars.fsy" +//# 3775 "src/Compiler/pars.fsy" : 'gentype_tupleParenPatternElements)); -//# 9980 "pars.fs" +//# 10717 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_parenPattern in Microsoft.FSharp.Core.Operators.box ( ( -//# 3461 "src/Compiler/pars.fsy" +//# 3781 "src/Compiler/pars.fsy" let commaRange = rhs parseState 1 - reportParseErrorAt commaRange (FSComp.SR.parsExpectingPatternInTuple()) + reportParseErrorAt commaRange (FSComp.SR.parsExpectingPattern()) let pat1 = SynPat.Wild(commaRange.StartRange) - [_2; pat1] + [_2; pat1], [commaRange] ) -//# 3461 "src/Compiler/pars.fsy" +//# 3781 "src/Compiler/pars.fsy" : 'gentype_tupleParenPatternElements)); -//# 9994 "pars.fs" +//# 10731 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3467 "src/Compiler/pars.fsy" +//# 3787 "src/Compiler/pars.fsy" let commaRange = rhs parseState 1 if not _2 then reportParseErrorAt commaRange (FSComp.SR.parsExpectedPatternAfterToken ()) let pat1 = SynPat.Wild(commaRange.StartRange) let pat2 = SynPat.Wild(commaRange.EndRange) - [pat2; pat1] + [pat2; pat1], [commaRange] ) -//# 3467 "src/Compiler/pars.fsy" +//# 3787 "src/Compiler/pars.fsy" : 'gentype_tupleParenPatternElements)); -//# 10009 "pars.fs" +//# 10746 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_conjParenPatternElements in let _3 = parseState.GetInput(3) :?> 'gentype_parenPattern in Microsoft.FSharp.Core.Operators.box ( ( -//# 3475 "src/Compiler/pars.fsy" +//# 3795 "src/Compiler/pars.fsy" _3 :: _1 ) -//# 3475 "src/Compiler/pars.fsy" +//# 3795 "src/Compiler/pars.fsy" : 'gentype_conjParenPatternElements)); -//# 10021 "pars.fs" +//# 10758 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in let _3 = parseState.GetInput(3) :?> 'gentype_parenPattern in Microsoft.FSharp.Core.Operators.box ( ( -//# 3478 "src/Compiler/pars.fsy" +//# 3798 "src/Compiler/pars.fsy" _3 :: _1 :: [] ) -//# 3478 "src/Compiler/pars.fsy" +//# 3798 "src/Compiler/pars.fsy" : 'gentype_conjParenPatternElements)); -//# 10033 "pars.fs" +//# 10770 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_recordPatternElement in let _2 = parseState.GetInput(2) :?> 'gentype_opt_seps in Microsoft.FSharp.Core.Operators.box ( ( -//# 3482 "src/Compiler/pars.fsy" - [_1], lhs parseState +//# 3802 "src/Compiler/pars.fsy" + [_1] ) -//# 3482 "src/Compiler/pars.fsy" +//# 3802 "src/Compiler/pars.fsy" : 'gentype_recordPatternElementsAux)); -//# 10045 "pars.fs" +//# 10782 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_recordPatternElement in let _2 = parseState.GetInput(2) :?> 'gentype_seps in @@ -10050,49 +10787,77 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3485 "src/Compiler/pars.fsy" - let r = _1 - let (rs, dropMark) = _3 - (r :: rs), lhs parseState +//# 3805 "src/Compiler/pars.fsy" + _1 :: _3 ) -//# 3485 "src/Compiler/pars.fsy" +//# 3805 "src/Compiler/pars.fsy" : 'gentype_recordPatternElementsAux)); -//# 10060 "pars.fs" +//# 10795 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynLongIdent in let _3 = parseState.GetInput(3) :?> 'gentype_parenPattern in Microsoft.FSharp.Core.Operators.box ( ( -//# 3491 "src/Compiler/pars.fsy" +//# 3809 "src/Compiler/pars.fsy" + let mPath = _1.Range let mEquals = rhs parseState 2 - (List.frontAndBack _1.LongIdent, mEquals, _3) + let mPat = _3.Range + List.frontAndBack _1.LongIdent, Some mEquals, _3 + ) +//# 3809 "src/Compiler/pars.fsy" + : 'gentype_recordPatternElement)); +//# 10810 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> SynLongIdent in + let _3 = parseState.GetInput(3) :?> 'gentype_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 3815 "src/Compiler/pars.fsy" + let mPath = _1.Range + let mEquals = rhs parseState 2 + let pat = SynPat.Wild(mEquals.EndRange) + List.frontAndBack _1.LongIdent, Some mEquals, pat + ) +//# 3815 "src/Compiler/pars.fsy" + : 'gentype_recordPatternElement)); +//# 10825 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> SynLongIdent in + let _2 = parseState.GetInput(2) :?> 'gentype_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 3821 "src/Compiler/pars.fsy" + let pat = SynPat.Wild(_1.Range.EndRange) + List.frontAndBack _1.LongIdent, None, pat ) -//# 3491 "src/Compiler/pars.fsy" +//# 3821 "src/Compiler/pars.fsy" : 'gentype_recordPatternElement)); -//# 10073 "pars.fs" +//# 10838 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 3496 "src/Compiler/pars.fsy" +//# 3826 "src/Compiler/pars.fsy" [] ) -//# 3496 "src/Compiler/pars.fsy" +//# 3826 "src/Compiler/pars.fsy" : 'gentype_listPatternElements)); -//# 10083 "pars.fs" +//# 10848 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in let _2 = parseState.GetInput(2) :?> 'gentype_opt_seps in Microsoft.FSharp.Core.Operators.box ( ( -//# 3499 "src/Compiler/pars.fsy" +//# 3829 "src/Compiler/pars.fsy" [_1] ) -//# 3499 "src/Compiler/pars.fsy" +//# 3829 "src/Compiler/pars.fsy" : 'gentype_listPatternElements)); -//# 10095 "pars.fs" +//# 10860 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in let _2 = parseState.GetInput(2) :?> 'gentype_seps in @@ -10100,153 +10865,180 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3502 "src/Compiler/pars.fsy" +//# 3832 "src/Compiler/pars.fsy" _1 :: _3 ) -//# 3502 "src/Compiler/pars.fsy" +//# 3832 "src/Compiler/pars.fsy" : 'gentype_listPatternElements)); -//# 10108 "pars.fs" +//# 10873 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in Microsoft.FSharp.Core.Operators.box ( ( -//# 3507 "src/Compiler/pars.fsy" +//# 3837 "src/Compiler/pars.fsy" _2 ) -//# 3507 "src/Compiler/pars.fsy" +//# 3837 "src/Compiler/pars.fsy" : SynExpr)); -//# 10120 "pars.fs" +//# 10885 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3510 "src/Compiler/pars.fsy" +//# 3840 "src/Compiler/pars.fsy" if not _3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileExpression()) exprFromParseError _2 ) -//# 3510 "src/Compiler/pars.fsy" +//# 3840 "src/Compiler/pars.fsy" + : SynExpr)); +//# 10898 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = parseState.GetInput(2) :?> 'gentype_oblockend in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 3844 "src/Compiler/pars.fsy" + let m = rhs parseState 1 + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectingExpression ()) + arbExpr ("typedSequentialExprBlock1", m.EndRange) + ) +//# 3844 "src/Compiler/pars.fsy" : SynExpr)); -//# 10133 "pars.fs" +//# 10911 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typedSequentialExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 3514 "src/Compiler/pars.fsy" +//# 3849 "src/Compiler/pars.fsy" _1 ) -//# 3514 "src/Compiler/pars.fsy" +//# 3849 "src/Compiler/pars.fsy" : SynExpr)); -//# 10144 "pars.fs" +//# 10922 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in let _3 = parseState.GetInput(3) :?> 'gentype_oblockend in Microsoft.FSharp.Core.Operators.box ( ( -//# 3519 "src/Compiler/pars.fsy" +//# 3854 "src/Compiler/pars.fsy" _2 ) -//# 3519 "src/Compiler/pars.fsy" +//# 3854 "src/Compiler/pars.fsy" + : SynExpr)); +//# 10934 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = parseState.GetInput(2) :?> 'gentype_oblockend in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 3857 "src/Compiler/pars.fsy" + let m = rhs parseState 1 + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectingExpression ()) + arbExpr ("declExprBlock1", m.EndRange) + ) +//# 3857 "src/Compiler/pars.fsy" : SynExpr)); -//# 10156 "pars.fs" +//# 10947 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 3522 "src/Compiler/pars.fsy" +//# 3862 "src/Compiler/pars.fsy" _1 ) -//# 3522 "src/Compiler/pars.fsy" +//# 3862 "src/Compiler/pars.fsy" : SynExpr)); -//# 10167 "pars.fs" +//# 10958 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typedSequentialExpr in + let _2 = parseState.GetInput(2) :?> range in Microsoft.FSharp.Core.Operators.box ( ( -//# 3528 "src/Compiler/pars.fsy" +//# 3868 "src/Compiler/pars.fsy" fun _ -> _1 ) -//# 3528 "src/Compiler/pars.fsy" +//# 3868 "src/Compiler/pars.fsy" : 'gentype_typedSequentialExprBlockR)); -//# 10178 "pars.fs" +//# 10970 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typedSequentialExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 3531 "src/Compiler/pars.fsy" +//# 3871 "src/Compiler/pars.fsy" fun _ -> _1 ) -//# 3531 "src/Compiler/pars.fsy" +//# 3871 "src/Compiler/pars.fsy" : 'gentype_typedSequentialExprBlockR)); -//# 10189 "pars.fs" +//# 10981 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3534 "src/Compiler/pars.fsy" - fun mStart -> arbExpr ("typedSequentialExprBlockR", mStart) +//# 3874 "src/Compiler/pars.fsy" + fun (mStart: range) -> arbExpr ("typedSequentialExprBlockR1", mStart.EndRange) ) -//# 3534 "src/Compiler/pars.fsy" +//# 3874 "src/Compiler/pars.fsy" : 'gentype_typedSequentialExprBlockR)); -//# 10200 "pars.fs" +//# 10992 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_sequentialExpr in let _3 = parseState.GetInput(3) :?> 'gentype_typeWithTypeConstraints in Microsoft.FSharp.Core.Operators.box ( ( -//# 3538 "src/Compiler/pars.fsy" +//# 3878 "src/Compiler/pars.fsy" SynExpr.Typed(_1, _3, unionRanges _1.Range _3.Range) ) -//# 3538 "src/Compiler/pars.fsy" +//# 3878 "src/Compiler/pars.fsy" : 'gentype_typedSequentialExpr)); -//# 10212 "pars.fs" +//# 11004 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_sequentialExpr in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3541 "src/Compiler/pars.fsy" +//# 3881 "src/Compiler/pars.fsy" let mColon = rhs parseState 2 let ty = SynType.FromParseError(mColon.EndRange) SynExpr.Typed(_1, ty, unionRanges _1.Range mColon) ) -//# 3541 "src/Compiler/pars.fsy" +//# 3881 "src/Compiler/pars.fsy" : 'gentype_typedSequentialExpr)); -//# 10226 "pars.fs" +//# 11018 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_sequentialExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 3546 "src/Compiler/pars.fsy" +//# 3886 "src/Compiler/pars.fsy" _1 ) -//# 3546 "src/Compiler/pars.fsy" +//# 3886 "src/Compiler/pars.fsy" : 'gentype_typedSequentialExpr)); -//# 10237 "pars.fs" +//# 11029 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typedSequentialExpr in let _2 = parseState.GetInput(2) :?> ParseHelpers.LexerContinuation in Microsoft.FSharp.Core.Operators.box ( ( -//# 3550 "src/Compiler/pars.fsy" +//# 3890 "src/Compiler/pars.fsy" checkEndOfFileError _2; _1 ) -//# 3550 "src/Compiler/pars.fsy" +//# 3890 "src/Compiler/pars.fsy" : SynExpr)); -//# 10249 "pars.fs" +//# 11041 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> 'gentype_seps in @@ -10254,47 +11046,47 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3554 "src/Compiler/pars.fsy" +//# 3894 "src/Compiler/pars.fsy" SynExpr.Sequential(DebugPointAtSequential.SuppressNeither, true, _1, _3, unionRanges _1.Range _3.Range) ) -//# 3554 "src/Compiler/pars.fsy" +//# 3894 "src/Compiler/pars.fsy" : 'gentype_sequentialExpr)); -//# 10262 "pars.fs" +//# 11054 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> 'gentype_seps in Microsoft.FSharp.Core.Operators.box ( ( -//# 3557 "src/Compiler/pars.fsy" +//# 3897 "src/Compiler/pars.fsy" _1 ) -//# 3557 "src/Compiler/pars.fsy" +//# 3897 "src/Compiler/pars.fsy" : 'gentype_sequentialExpr)); -//# 10274 "pars.fs" +//# 11066 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 3560 "src/Compiler/pars.fsy" +//# 3900 "src/Compiler/pars.fsy" _1 ) -//# 3560 "src/Compiler/pars.fsy" +//# 3900 "src/Compiler/pars.fsy" : 'gentype_sequentialExpr)); -//# 10285 "pars.fs" +//# 11077 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _3 = parseState.GetInput(3) :?> 'gentype_sequentialExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 3563 "src/Compiler/pars.fsy" +//# 3903 "src/Compiler/pars.fsy" SynExpr.Sequential(DebugPointAtSequential.SuppressNeither, false, _1, _3, unionRanges _1.Range _3.Range) ) -//# 3563 "src/Compiler/pars.fsy" +//# 3903 "src/Compiler/pars.fsy" : 'gentype_sequentialExpr)); -//# 10297 "pars.fs" +//# 11089 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _4 = parseState.GetInput(4) :?> 'gentype_typedSequentialExpr in @@ -10302,18 +11094,18 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3566 "src/Compiler/pars.fsy" +//# 3906 "src/Compiler/pars.fsy" SynExpr.Sequential(DebugPointAtSequential.SuppressNeither, false, _1, _4, unionRanges _1.Range _4.Range) ) -//# 3566 "src/Compiler/pars.fsy" +//# 3906 "src/Compiler/pars.fsy" : 'gentype_sequentialExpr)); -//# 10310 "pars.fs" +//# 11102 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_hardwhiteLetBindings in Microsoft.FSharp.Core.Operators.box ( ( -//# 3569 "src/Compiler/pars.fsy" +//# 3909 "src/Compiler/pars.fsy" let hwlb, m, mIn = _1 let mLetKwd, isUse = match hwlb with (BindingSetPreAttrs(m, _, isUse, _, _)) -> m, isUse let usedKeyword = if isUse then "use" else "let" @@ -10321,30 +11113,30 @@ let _fsyacc_reductions = lazy [| let fauxRange = m.EndRange // zero width range at end of m mkLocalBindings (m, hwlb, mIn, arbExpr ("seqExpr", fauxRange)) ) -//# 3569 "src/Compiler/pars.fsy" +//# 3909 "src/Compiler/pars.fsy" : 'gentype_sequentialExpr)); -//# 10326 "pars.fs" +//# 11118 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 3582 "src/Compiler/pars.fsy" +//# 3922 "src/Compiler/pars.fsy" debugPrint("recovering via error"); true ) -//# 3582 "src/Compiler/pars.fsy" +//# 3922 "src/Compiler/pars.fsy" : 'gentype_recover)); -//# 10336 "pars.fs" +//# 11128 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> ParseHelpers.LexerContinuation in Microsoft.FSharp.Core.Operators.box ( ( -//# 3585 "src/Compiler/pars.fsy" +//# 3925 "src/Compiler/pars.fsy" debugPrint("recovering via EOF"); false ) -//# 3585 "src/Compiler/pars.fsy" +//# 3925 "src/Compiler/pars.fsy" : 'gentype_recover)); -//# 10347 "pars.fs" +//# 11139 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in let _2 = parseState.GetInput(2) :?> SynPat in @@ -10353,16 +11145,16 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3589 "src/Compiler/pars.fsy" +//# 3929 "src/Compiler/pars.fsy" let spBind = DebugPointAtBinding.Yes(rhs2 parseState 1 5) (* TODO Pretty sure this is wrong *) let mEquals = rhs parseState 3 let m = unionRanges (rhs parseState 1) _4.Range let mIn = rhs parseState 5 SynExprAndBang(spBind, _1, true, _2, _4, m, { EqualsRange = mEquals; InKeyword = Some mIn }) :: _6 ) -//# 3589 "src/Compiler/pars.fsy" +//# 3929 "src/Compiler/pars.fsy" : 'gentype_moreBinders)); -//# 10365 "pars.fs" +//# 11157 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in let _2 = parseState.GetInput(2) :?> SynPat in @@ -10373,205 +11165,205 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3596 "src/Compiler/pars.fsy" - let report, mIn = _5 +//# 3936 "src/Compiler/pars.fsy" + let report, mIn, _ = _5 report "and!" (rhs parseState 1) // report unterminated error let spBind = DebugPointAtBinding.Yes(rhs2 parseState 1 5) (* TODO Pretty sure this is wrong *) let mEquals = rhs parseState 3 let m = unionRanges (rhs parseState 1) _4.Range SynExprAndBang(spBind, _1, true, _2, _4, m, { EqualsRange = mEquals; InKeyword = mIn }) :: _7 ) -//# 3596 "src/Compiler/pars.fsy" +//# 3936 "src/Compiler/pars.fsy" : 'gentype_moreBinders)); -//# 10386 "pars.fs" +//# 11178 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 3604 "src/Compiler/pars.fsy" +//# 3944 "src/Compiler/pars.fsy" [] ) -//# 3604 "src/Compiler/pars.fsy" +//# 3944 "src/Compiler/pars.fsy" : 'gentype_moreBinders)); -//# 10396 "pars.fs" +//# 11188 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_defnBindings in let _3 = parseState.GetInput(3) :?> 'gentype_typedSequentialExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 3608 "src/Compiler/pars.fsy" +//# 3948 "src/Compiler/pars.fsy" let mIn = rhs parseState 2 |> Some mkLocalBindings (unionRanges (rhs2 parseState 1 2) _3.Range, _1, mIn, _3) ) -//# 3608 "src/Compiler/pars.fsy" +//# 3948 "src/Compiler/pars.fsy" : SynExpr)); -//# 10409 "pars.fs" +//# 11201 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_defnBindings in Microsoft.FSharp.Core.Operators.box ( ( -//# 3612 "src/Compiler/pars.fsy" +//# 3952 "src/Compiler/pars.fsy" let mIn = rhs parseState 2 |> Some mkLocalBindings (rhs2 parseState 1 2, _1, mIn, arbExpr ("declExpr1", (rhs parseState 3))) ) -//# 3612 "src/Compiler/pars.fsy" +//# 3952 "src/Compiler/pars.fsy" : SynExpr)); -//# 10421 "pars.fs" +//# 11213 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_hardwhiteLetBindings in let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 3619 "src/Compiler/pars.fsy" +//# 3959 "src/Compiler/pars.fsy" let hwlb, m, mIn = _1 mkLocalBindings (unionRanges m _2.Range, hwlb, mIn, _2) ) -//# 3619 "src/Compiler/pars.fsy" +//# 3959 "src/Compiler/pars.fsy" : SynExpr)); -//# 10434 "pars.fs" +//# 11226 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_hardwhiteLetBindings in Microsoft.FSharp.Core.Operators.box ( ( -//# 3623 "src/Compiler/pars.fsy" +//# 3963 "src/Compiler/pars.fsy" let hwlb, m, mIn = _1 reportParseErrorAt (match hwlb with (BindingSetPreAttrs(m, _, _, _, _)) -> m) (FSComp.SR.parsErrorInReturnForLetIncorrectIndentation()) mkLocalBindings (m, hwlb, mIn, arbExpr ("declExpr2", (rhs parseState 2))) ) -//# 3623 "src/Compiler/pars.fsy" +//# 3963 "src/Compiler/pars.fsy" : SynExpr)); -//# 10447 "pars.fs" +//# 11239 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_hardwhiteLetBindings in let _3 = parseState.GetInput(3) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 3628 "src/Compiler/pars.fsy" +//# 3968 "src/Compiler/pars.fsy" let hwlb, m, mIn = _1 mkLocalBindings (unionRanges m _3.Range, hwlb, mIn, _3) ) -//# 3628 "src/Compiler/pars.fsy" +//# 3968 "src/Compiler/pars.fsy" : SynExpr)); -//# 10460 "pars.fs" +//# 11252 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_hardwhiteLetBindings in Microsoft.FSharp.Core.Operators.box ( ( -//# 3632 "src/Compiler/pars.fsy" +//# 3972 "src/Compiler/pars.fsy" let hwlb, m, mIn = _1 //reportParseErrorAt (match hwlb with (BindingSetPreAttrs(m, _, _, _, _)) -> m) (FSComp.SR.parsErrorInReturnForLetIncorrectIndentation()) mkLocalBindings (unionRanges m (rhs parseState 3), hwlb, mIn, arbExpr ("declExpr3", (rhs parseState 3))) ) -//# 3632 "src/Compiler/pars.fsy" +//# 3972 "src/Compiler/pars.fsy" : SynExpr)); -//# 10473 "pars.fs" +//# 11265 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_hardwhiteDoBinding in Microsoft.FSharp.Core.Operators.box ( ( -//# 3637 "src/Compiler/pars.fsy" - let e = snd _1 +//# 3977 "src/Compiler/pars.fsy" + let (BindingSetPreAttrs(_, _, _, _, m)), e = _1 SynExpr.Do(e, unionRanges (rhs parseState 1).StartRange e.Range) ) -//# 3637 "src/Compiler/pars.fsy" +//# 3977 "src/Compiler/pars.fsy" : SynExpr)); -//# 10485 "pars.fs" +//# 11277 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_anonMatchingExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 3641 "src/Compiler/pars.fsy" +//# 3981 "src/Compiler/pars.fsy" _1 ) -//# 3641 "src/Compiler/pars.fsy" +//# 3981 "src/Compiler/pars.fsy" : SynExpr)); -//# 10496 "pars.fs" +//# 11288 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_anonLambdaExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 3644 "src/Compiler/pars.fsy" +//# 3984 "src/Compiler/pars.fsy" _1 ) -//# 3644 "src/Compiler/pars.fsy" +//# 3984 "src/Compiler/pars.fsy" : SynExpr)); -//# 10507 "pars.fs" +//# 11299 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in let _3 = parseState.GetInput(3) :?> 'gentype_withClauses in Microsoft.FSharp.Core.Operators.box ( ( -//# 3647 "src/Compiler/pars.fsy" +//# 3987 "src/Compiler/pars.fsy" let mMatch = rhs parseState 1 let mWith, (clauses, mLast) = _3 let spBind = DebugPointAtBinding.Yes(unionRanges mMatch mWith) let trivia = { MatchKeyword = mMatch; WithKeyword = mWith } SynExpr.Match(spBind, _2, clauses, unionRanges mMatch mLast, trivia) ) -//# 3647 "src/Compiler/pars.fsy" +//# 3987 "src/Compiler/pars.fsy" : SynExpr)); -//# 10523 "pars.fs" +//# 11315 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3654 "src/Compiler/pars.fsy" +//# 3994 "src/Compiler/pars.fsy" if not _3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileMatch()) // Produce approximate expression during error recovery exprFromParseError _2 ) -//# 3654 "src/Compiler/pars.fsy" +//# 3994 "src/Compiler/pars.fsy" : SynExpr)); -//# 10537 "pars.fs" +//# 11329 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in let _3 = parseState.GetInput(3) :?> 'gentype_withClauses in Microsoft.FSharp.Core.Operators.box ( ( -//# 3659 "src/Compiler/pars.fsy" +//# 3999 "src/Compiler/pars.fsy" let mMatch = (rhs parseState 1) let mWith, (clauses, mLast) = _3 let spBind = DebugPointAtBinding.Yes(unionRanges mMatch mWith) let trivia = { MatchBangKeyword = mMatch; WithKeyword = mWith } SynExpr.MatchBang(spBind, _2, clauses, unionRanges mMatch mLast, trivia) ) -//# 3659 "src/Compiler/pars.fsy" +//# 3999 "src/Compiler/pars.fsy" : SynExpr)); -//# 10553 "pars.fs" +//# 11345 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3666 "src/Compiler/pars.fsy" +//# 4006 "src/Compiler/pars.fsy" if not _3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileMatch()) // Produce approximate expression during error recovery exprFromParseError _2 ) -//# 3666 "src/Compiler/pars.fsy" +//# 4006 "src/Compiler/pars.fsy" : SynExpr)); -//# 10567 "pars.fs" +//# 11359 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExprBlockR in let _3 = parseState.GetInput(3) :?> 'gentype_withClauses in Microsoft.FSharp.Core.Operators.box ( ( -//# 3671 "src/Compiler/pars.fsy" +//# 4011 "src/Compiler/pars.fsy" let mTry = rhs parseState 1 let expr = _2 mTry let spTry = DebugPointAtTry.Yes mTry @@ -10587,16 +11379,16 @@ let _fsyacc_reductions = lazy [| WithToEndRange = mWithToLast } SynExpr.TryWith(expr, clauses, mTryToLast, spTry, spWith, trivia) ) -//# 3671 "src/Compiler/pars.fsy" +//# 4011 "src/Compiler/pars.fsy" : SynExpr)); -//# 10592 "pars.fs" +//# 11384 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExprBlockR in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3687 "src/Compiler/pars.fsy" +//# 4027 "src/Compiler/pars.fsy" let mTry = rhs parseState 1 let spTry = DebugPointAtTry.Yes mTry if not _3 then reportParseErrorAt mTry (FSComp.SR.parsUnexpectedEndOfFileTry ()) @@ -10612,16 +11404,69 @@ let _fsyacc_reductions = lazy [| WithToEndRange = mWhole } SynExpr.TryWith(expr, [], mWhole, spTry, spWith, trivia) ) -//# 3687 "src/Compiler/pars.fsy" +//# 4027 "src/Compiler/pars.fsy" + : SynExpr)); +//# 11409 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = parseState.GetInput(2) :?> range in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 4043 "src/Compiler/pars.fsy" + let mTry = rhs parseState 1 + let mExpr = mTry.EndRange + let expr = arbExpr ("try1", mExpr) + let spTry = DebugPointAtTry.Yes mTry + let mWith, (clauses, mLast) = mExpr, ([], mExpr) + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectingExpression ()) + let spWith = DebugPointAtWith.Yes mWith + let mTryToWith = unionRanges mTry mWith + let mWithToLast = unionRanges mWith mLast + let mTryToLast = unionRanges mTry mLast + let trivia: SynExprTryWithTrivia = + { TryKeyword = mTry + TryToWithRange = mTryToWith + WithKeyword = mWith + WithToEndRange = mWithToLast } + SynExpr.TryWith(expr, clauses, mTryToLast, spTry, spWith, trivia) + ) +//# 4043 "src/Compiler/pars.fsy" + : SynExpr)); +//# 11435 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = parseState.GetInput(2) :?> range in + let _3 = parseState.GetInput(3) :?> 'gentype_withClauses in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 4061 "src/Compiler/pars.fsy" + let mTry = rhs parseState 1 + let mExpr = mTry.EndRange + let expr = arbExpr ("try2", mExpr) + let spTry = DebugPointAtTry.Yes mTry + let mWith, (clauses, mLast) = _3 + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectingExpression ()) + let spWith = DebugPointAtWith.Yes mWith + let mTryToWith = unionRanges mTry mWith + let mWithToLast = unionRanges mWith mLast + let mTryToLast = unionRanges mTry mLast + let trivia: SynExprTryWithTrivia = + { TryKeyword = mTry + TryToWithRange = mTryToWith + WithKeyword = mWith + WithToEndRange = mWithToLast } + SynExpr.TryWith(expr, clauses, mTryToLast, spTry, spWith, trivia) + ) +//# 4061 "src/Compiler/pars.fsy" : SynExpr)); -//# 10617 "pars.fs" +//# 11462 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExprBlockR in let _4 = parseState.GetInput(4) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 3703 "src/Compiler/pars.fsy" +//# 4079 "src/Compiler/pars.fsy" let mTry = rhs parseState 1 let tryExpr = _2 mTry let spTry = DebugPointAtTry.Yes mTry @@ -10632,219 +11477,145 @@ let _fsyacc_reductions = lazy [| let trivia = { TryKeyword = mTry; FinallyKeyword = mFinally } SynExpr.TryFinally(tryExpr, finallyExpr, mTryToLast, spTry, spFinally, trivia) ) -//# 3703 "src/Compiler/pars.fsy" +//# 4079 "src/Compiler/pars.fsy" : SynExpr)); -//# 10637 "pars.fs" +//# 11482 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in let _3 = parseState.GetInput(3) :?> 'gentype_ifExprCases in Microsoft.FSharp.Core.Operators.box ( ( -//# 3714 "src/Compiler/pars.fsy" +//# 4090 "src/Compiler/pars.fsy" let mIf = rhs parseState 1 _3 _2 mIf false ) -//# 3714 "src/Compiler/pars.fsy" +//# 4090 "src/Compiler/pars.fsy" : SynExpr)); -//# 10650 "pars.fs" +//# 11495 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3718 "src/Compiler/pars.fsy" - reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsIncompleteIf()) - // Produce an approximate expression during error recovery. - // Include expressions to make sure they get type checked in case that generates useful results for intellisense. - // Generate a throwAway for the expression so it isn't forced to have a type 'bool' - // from the context it is used in. - exprFromParseError _2 +//# 4094 "src/Compiler/pars.fsy" + errorR (Error(FSComp.SR.parsIncompleteIf (), rhs parseState 1)) + let ifExpr = _2 + let mIf = rhs parseState 1 + let mThen = ifExpr.Range.EndRange + let m = unionRanges mIf mThen + let spIfToThen = DebugPointAtBinding.Yes m + let trivia = { IfKeyword = mIf; IsElif = false; ThenKeyword = mThen; ElseKeyword = None; IfToThenRange = m } + SynExpr.IfThenElse(_2, arbExpr ("if1", mThen), None, spIfToThen, true, m, trivia) ) -//# 3718 "src/Compiler/pars.fsy" +//# 4094 "src/Compiler/pars.fsy" : SynExpr)); -//# 10667 "pars.fs" +//# 11514 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3726 "src/Compiler/pars.fsy" - reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsIncompleteIf()) - // Produce an approximate expression during error recovery. There can still be value in doing this even - // for this pathological case. +//# 4104 "src/Compiler/pars.fsy" + errorR (Error(FSComp.SR.parsIncompleteIf (), rhs parseState 1)) let m = rhs parseState 1 let mEnd = m.EndRange let spIfToThen = DebugPointAtBinding.Yes mEnd let trivia = { IfKeyword = m; IsElif = false; ThenKeyword = m; ElseKeyword = None; IfToThenRange = m } - exprFromParseError (SynExpr.IfThenElse(arbExpr ("ifGuard1", mEnd), arbExpr ("thenBody1", mEnd), None, spIfToThen, true, m, trivia)) + SynExpr.IfThenElse(arbExpr ("if2", mEnd), arbExpr ("if3", mEnd), None, spIfToThen, true, m, trivia) ) -//# 3726 "src/Compiler/pars.fsy" +//# 4104 "src/Compiler/pars.fsy" : SynExpr)); -//# 10685 "pars.fs" +//# 11530 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 3736 "src/Compiler/pars.fsy" +//# 4112 "src/Compiler/pars.fsy" SynExpr.Lazy(_2, unionRanges (rhs parseState 1) _2.Range) ) -//# 3736 "src/Compiler/pars.fsy" +//# 4112 "src/Compiler/pars.fsy" : SynExpr)); -//# 10696 "pars.fs" +//# 11541 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 3739 "src/Compiler/pars.fsy" +//# 4115 "src/Compiler/pars.fsy" SynExpr.Assert(_2, unionRanges (rhs parseState 1) _2.Range) ) -//# 3739 "src/Compiler/pars.fsy" +//# 4115 "src/Compiler/pars.fsy" : SynExpr)); -//# 10707 "pars.fs" +//# 11552 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 3742 "src/Compiler/pars.fsy" +//# 4118 "src/Compiler/pars.fsy" raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsAssertIsNotFirstClassValue()) ) -//# 3742 "src/Compiler/pars.fsy" +//# 4118 "src/Compiler/pars.fsy" : SynExpr)); -//# 10717 "pars.fs" +//# 11562 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 3745 "src/Compiler/pars.fsy" +//# 4121 "src/Compiler/pars.fsy" SynExpr.Lazy(_2, unionRanges (rhs parseState 1) _2.Range) ) -//# 3745 "src/Compiler/pars.fsy" +//# 4121 "src/Compiler/pars.fsy" : SynExpr)); -//# 10728 "pars.fs" +//# 11573 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 3748 "src/Compiler/pars.fsy" +//# 4124 "src/Compiler/pars.fsy" SynExpr.Assert(_2, unionRanges (rhs parseState 1) _2.Range) ) -//# 3748 "src/Compiler/pars.fsy" +//# 4124 "src/Compiler/pars.fsy" : SynExpr)); -//# 10739 "pars.fs" +//# 11584 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 3751 "src/Compiler/pars.fsy" +//# 4127 "src/Compiler/pars.fsy" raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsAssertIsNotFirstClassValue()) ) -//# 3751 "src/Compiler/pars.fsy" - : SynExpr)); -//# 10749 "pars.fs" - (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _2 = parseState.GetInput(2) :?> SynExpr in - let _3 = parseState.GetInput(3) :?> 'gentype_doToken in - let _4 = parseState.GetInput(4) :?> SynExpr in - let _5 = parseState.GetInput(5) :?> 'gentype_doneDeclEnd in - Microsoft.FSharp.Core.Operators.box - ( - ( -//# 3754 "src/Compiler/pars.fsy" - let mWhileHeader = unionRanges (rhs parseState 1) _2.Range - let spWhile = DebugPointAtWhile.Yes mWhileHeader - let mWhileAll = unionRanges (rhs parseState 1) _4.Range - SynExpr.While(spWhile, _2, _4, mWhileAll) - ) -//# 3754 "src/Compiler/pars.fsy" - : SynExpr)); -//# 10766 "pars.fs" - (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _2 = parseState.GetInput(2) :?> SynExpr in - let _3 = parseState.GetInput(3) :?> 'gentype_doToken in - let _4 = parseState.GetInput(4) :?> SynExpr in - let _5 = parseState.GetInput(5) :?> 'gentype_recover in - Microsoft.FSharp.Core.Operators.box - ( - ( -//# 3760 "src/Compiler/pars.fsy" - if not _5 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileWhile()) - let mWhileHeader = unionRanges (rhs parseState 1) _2.Range - let spWhile = DebugPointAtWhile.Yes mWhileHeader - let mWhileAll = unionRanges (rhs parseState 1) _4.Range - exprFromParseError (SynExpr.While(spWhile, _2, _4, mWhileAll)) - ) -//# 3760 "src/Compiler/pars.fsy" - : SynExpr)); -//# 10784 "pars.fs" - (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _2 = parseState.GetInput(2) :?> SynExpr in - let _3 = parseState.GetInput(3) :?> 'gentype_doToken in - let _5 = parseState.GetInput(5) :?> 'gentype_doneDeclEnd in - Microsoft.FSharp.Core.Operators.box - ( - ( -//# 3767 "src/Compiler/pars.fsy" - // silent recovery - let mWhileHeader = unionRanges (rhs parseState 1) _2.Range - let spWhile = DebugPointAtWhile.Yes mWhileHeader - let mWhileBodyArb = unionRanges (rhs parseState 4) (rhs parseState 5) - let mWhileAll = unionRanges (rhs parseState 1) (rhs parseState 5) - SynExpr.While(spWhile, _2, arbExpr ("whileBody1", mWhileBodyArb), mWhileAll) - ) -//# 3767 "src/Compiler/pars.fsy" - : SynExpr)); -//# 10802 "pars.fs" - (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _2 = parseState.GetInput(2) :?> SynExpr in - let _3 = parseState.GetInput(3) :?> 'gentype_recover in - Microsoft.FSharp.Core.Operators.box - ( - ( -//# 3775 "src/Compiler/pars.fsy" - reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsWhileDoExpected()) - let mWhileHeader = unionRanges (rhs parseState 1) _2.Range - let spWhile = DebugPointAtWhile.Yes mWhileHeader - let mWhileBodyArb = rhs parseState 3 - let mWhileAll = unionRanges (rhs parseState 1) (rhs parseState 3) - exprFromParseError (SynExpr.While(spWhile, _2, arbExpr ("whileBody2", mWhileBodyArb), mWhileAll)) - ) -//# 3775 "src/Compiler/pars.fsy" +//# 4127 "src/Compiler/pars.fsy" : SynExpr)); -//# 10819 "pars.fs" +//# 11594 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _2 = parseState.GetInput(2) :?> 'gentype_recover in + let _2 = parseState.GetInput(2) :?> 'gentype_whileExprCore in Microsoft.FSharp.Core.Operators.box ( ( -//# 3783 "src/Compiler/pars.fsy" - if not _2 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileWhile()) - arbExpr ("whileLoop1", rhs parseState 1) +//# 4130 "src/Compiler/pars.fsy" + SynExpr.While (_2 (rhs parseState 1)) ) -//# 3783 "src/Compiler/pars.fsy" +//# 4130 "src/Compiler/pars.fsy" : SynExpr)); -//# 10831 "pars.fs" +//# 11605 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _3 = parseState.GetInput(3) :?> 'gentype_doneDeclEnd in + let _2 = parseState.GetInput(2) :?> 'gentype_whileExprCore in Microsoft.FSharp.Core.Operators.box ( ( -//# 3787 "src/Compiler/pars.fsy" - //silent recovery - let mWhileHeader = rhs parseState 1 - let spWhile = DebugPointAtWhile.Yes mWhileHeader - let mWhileBodyArb = rhs parseState 3 - let mWhileAll = unionRanges (rhs parseState 1) (rhs parseState 3) - exprFromParseError (SynExpr.While(spWhile, arbExpr ("whileGuard1", mWhileHeader), arbExpr ("whileBody3", mWhileBodyArb), mWhileAll)) +//# 4133 "src/Compiler/pars.fsy" + let mKeyword = rhs parseState 1 + parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.WhileBang mKeyword + SynExpr.WhileBang (_2 mKeyword) ) -//# 3787 "src/Compiler/pars.fsy" +//# 4133 "src/Compiler/pars.fsy" : SynExpr)); -//# 10847 "pars.fs" +//# 11618 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_forLoopBinder in let _3 = parseState.GetInput(3) :?> 'gentype_doToken in @@ -10853,16 +11624,16 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3795 "src/Compiler/pars.fsy" +//# 4138 "src/Compiler/pars.fsy" let mFor = rhs parseState 1 let mDo = rhs parseState 3 let spFor = DebugPointAtFor.Yes mFor - let (a, b, _, spIn) = _2 - SynExpr.ForEach(spFor, spIn, SeqExprOnly false, true, a, b, _4, unionRanges (rhs parseState 1) _4.Range) + let (pat, expr, _, spIn) = _2 + SynExpr.ForEach(spFor, spIn, SeqExprOnly false, true, pat, expr, _4, unionRanges mFor _5) ) -//# 3795 "src/Compiler/pars.fsy" +//# 4138 "src/Compiler/pars.fsy" : SynExpr)); -//# 10865 "pars.fs" +//# 11636 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_forLoopBinder in let _3 = parseState.GetInput(3) :?> 'gentype_doToken in @@ -10871,17 +11642,16 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3802 "src/Compiler/pars.fsy" - if not _5 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileFor()) +//# 4145 "src/Compiler/pars.fsy" let mFor = rhs parseState 1 + if not _5 then reportParseErrorAt mFor (FSComp.SR.parsUnexpectedEndOfFileFor ()) let spFor = DebugPointAtFor.Yes mFor - let (a, b, _, spIn) = _2 - let mForLoopAll = unionRanges (rhs parseState 1) _4.Range - SynExpr.ForEach(spFor, spIn, SeqExprOnly false, true, a, b, _4, mForLoopAll) + let (pat, expr, _, spIn) = _2 + SynExpr.ForEach(spFor, spIn, SeqExprOnly false, true, pat, expr, _4, unionRanges mFor _4.Range) ) -//# 3802 "src/Compiler/pars.fsy" +//# 4145 "src/Compiler/pars.fsy" : SynExpr)); -//# 10884 "pars.fs" +//# 11654 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_forLoopBinder in let _3 = parseState.GetInput(3) :?> 'gentype_doToken in @@ -10889,18 +11659,16 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3810 "src/Compiler/pars.fsy" - // Silent recovery +//# 4152 "src/Compiler/pars.fsy" let mFor = rhs parseState 1 let spFor = DebugPointAtFor.Yes mFor - let (a, b, _, spIn) = _2 - let mForLoopBodyArb = rhs parseState 5 - let mForLoopAll = rhs2 parseState 1 5 - SynExpr.ForEach(spFor, spIn, SeqExprOnly false, true, a, b, arbExpr ("forLoopBody2a", mForLoopBodyArb), mForLoopAll) + let (pat, expr, _, spIn) = _2 + let bodyExpr = arbExpr ("forLoopBody2a", rhs parseState 4) + SynExpr.ForEach(spFor, spIn, SeqExprOnly false, true, pat, expr, bodyExpr, unionRanges mFor _5) ) -//# 3810 "src/Compiler/pars.fsy" +//# 4152 "src/Compiler/pars.fsy" : SynExpr)); -//# 10903 "pars.fs" +//# 11671 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_forLoopBinder in let _3 = parseState.GetInput(3) :?> 'gentype_doToken in @@ -10908,36 +11676,37 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3819 "src/Compiler/pars.fsy" - if not _4 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsExpectedExpressionAfterToken()) +//# 4159 "src/Compiler/pars.fsy" let mFor = rhs parseState 1 + if not _4 then reportParseErrorAt mFor (FSComp.SR.parsExpectedExpressionAfterToken ()) let spFor = DebugPointAtFor.Yes mFor - let (a, b, _, spIn) = _2 - let mForLoopBodyArb = rhs parseState 3 - let mForLoopAll = rhs2 parseState 1 3 - SynExpr.ForEach(spFor, spIn, SeqExprOnly false, true, a, b, arbExpr ("forLoopBody2", mForLoopBodyArb), mForLoopAll) + let (pat, expr, _, spIn) = _2 + let mDo = rhs parseState 3 + let bodyExpr = arbExpr ("forLoopBody2", mDo.EndRange) + SynExpr.ForEach(spFor, spIn, SeqExprOnly false, true, pat, expr, bodyExpr, unionRanges mFor mDo) ) -//# 3819 "src/Compiler/pars.fsy" +//# 4159 "src/Compiler/pars.fsy" : SynExpr)); -//# 10922 "pars.fs" +//# 11690 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_forLoopBinder in let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3828 "src/Compiler/pars.fsy" - let (a, b, ok, spIn) = _2 - if not _3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsForDoExpected()) +//# 4168 "src/Compiler/pars.fsy" let mFor = rhs parseState 1 + let (pat, expr, ok, spIn) = _2 + if not _3 then reportParseErrorAt mFor (FSComp.SR.parsForDoExpected ()) let spFor = DebugPointAtFor.Yes mFor - let mForLoopBodyArb = rhs parseState 3 - let mForLoopAll = rhs2 parseState 1 3 - SynExpr.ForEach(spFor, spIn, SeqExprOnly false, true, a, b, arbExpr ("forLoopBody1", mForLoopBodyArb), mForLoopAll) + let mExpr = expr.Range + let mForLoopBodyArb = mExpr.EndRange + let bodyExpr = arbExpr ("forLoopBody1", mForLoopBodyArb) + SynExpr.ForEach(spFor, spIn, SeqExprOnly false, true, pat, expr, bodyExpr, unionRanges mFor mForLoopBodyArb) ) -//# 3828 "src/Compiler/pars.fsy" +//# 4168 "src/Compiler/pars.fsy" : SynExpr)); -//# 10940 "pars.fs" +//# 11709 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_forLoopBinder in let _3 = parseState.GetInput(3) :?> 'gentype_opt_OBLOCKSEP in @@ -10945,14 +11714,15 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3837 "src/Compiler/pars.fsy" - let spFor = DebugPointAtFor.Yes(rhs parseState 1) - let (a, b, _, spIn) = _2 - SynExpr.ForEach(spFor, spIn, SeqExprOnly true, true, a, b, _4, unionRanges (rhs parseState 1) _4.Range) +//# 4178 "src/Compiler/pars.fsy" + let mFor = rhs parseState 1 + let spFor = DebugPointAtFor.Yes mFor + let (pat, expr, _, spIn) = _2 + SynExpr.ForEach(spFor, spIn, SeqExprOnly true, true, pat, expr, _4, unionRanges mFor _4.Range) ) -//# 3837 "src/Compiler/pars.fsy" +//# 4178 "src/Compiler/pars.fsy" : SynExpr)); -//# 10955 "pars.fs" +//# 11725 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_forLoopRange in let _3 = parseState.GetInput(3) :?> 'gentype_doToken in @@ -10961,16 +11731,15 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3842 "src/Compiler/pars.fsy" +//# 4184 "src/Compiler/pars.fsy" let mFor = rhs parseState 1 let spFor = DebugPointAtFor.Yes mFor - let (a, b, c, d, e, spTo) = _2 - let mForLoopAll = unionRanges (rhs parseState 1) _4.Range - SynExpr.For(spFor, spTo, a, b, c, d, e, _4, mForLoopAll) + let (a, b, c, d, exprTo, spTo) = _2 + SynExpr.For(spFor, spTo, a, b, c, d, exprTo, _4, unionRanges mFor _5) ) -//# 3842 "src/Compiler/pars.fsy" +//# 4184 "src/Compiler/pars.fsy" : SynExpr)); -//# 10973 "pars.fs" +//# 11742 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_forLoopRange in let _3 = parseState.GetInput(3) :?> 'gentype_doToken in @@ -10979,18 +11748,16 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3849 "src/Compiler/pars.fsy" - if not _5 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileFor()) - // Still produce an expression +//# 4190 "src/Compiler/pars.fsy" let mFor = rhs parseState 1 + if not _5 then reportParseErrorAt mFor (FSComp.SR.parsUnexpectedEndOfFileFor ()) let spFor = DebugPointAtFor.Yes mFor - let (a, b, c, d, e, spTo) = _2 - let mForLoopAll = unionRanges (rhs parseState 1) _4.Range - exprFromParseError (SynExpr.For(spFor, spTo, a, b, c, d, e, _4, mForLoopAll)) + let (a, b, c, d, exprTo, spTo) = _2 + SynExpr.For(spFor, spTo, a, b, c, d, exprTo, _4, unionRanges mFor _4.Range) ) -//# 3849 "src/Compiler/pars.fsy" +//# 4190 "src/Compiler/pars.fsy" : SynExpr)); -//# 10993 "pars.fs" +//# 11760 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_forLoopRange in let _3 = parseState.GetInput(3) :?> 'gentype_doToken in @@ -10998,18 +11765,17 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3858 "src/Compiler/pars.fsy" - // silent recovery +//# 4197 "src/Compiler/pars.fsy" let mFor = rhs parseState 1 let spFor = DebugPointAtFor.Yes mFor - let (a, b, c, d, e, spTo) = _2 - let mForLoopBodyArb = rhs parseState 5 - let mForLoopAll = rhs2 parseState 1 5 - SynExpr.For(spFor, spTo, a, b, c, d, e, arbExpr ("declExpr11", mForLoopBodyArb), mForLoopAll) + let (a, b, c, d, exprTo, spTo) = _2 + let mForLoopBodyArb = rhs parseState 4 + let bodyExpr = arbExpr ("declExpr11", mForLoopBodyArb) + SynExpr.For(spFor, spTo, a, b, c, d, exprTo, bodyExpr, unionRanges mFor _5) ) -//# 3858 "src/Compiler/pars.fsy" +//# 4197 "src/Compiler/pars.fsy" : SynExpr)); -//# 11012 "pars.fs" +//# 11778 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_forLoopRange in let _3 = parseState.GetInput(3) :?> 'gentype_doToken in @@ -11017,36 +11783,36 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3867 "src/Compiler/pars.fsy" - if not _4 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileFor()) +//# 4205 "src/Compiler/pars.fsy" let mFor = rhs parseState 1 + if not _4 then reportParseErrorAt mFor (FSComp.SR.parsUnexpectedEndOfFileFor ()) let spFor = DebugPointAtFor.Yes mFor - let (a, b, c, d, e, spTo) = _2 - let mForLoopBodyArb = rhs parseState 3 - let mForLoopAll = rhs2 parseState 1 3 - exprFromParseError (SynExpr.For(spFor, spTo, a, b, c, d, e, arbExpr ("declExpr11", mForLoopBodyArb), mForLoopAll)) + let (a, b, c, d, exprTo, spTo) = _2 + let mDo = rhs parseState 3 + let bodyExpr = arbExpr ("declExpr11", mDo.EndRange) + SynExpr.For(spFor, spTo, a, b, c, d, exprTo, bodyExpr, rhs2 parseState 1 3) ) -//# 3867 "src/Compiler/pars.fsy" +//# 4205 "src/Compiler/pars.fsy" : SynExpr)); -//# 11031 "pars.fs" +//# 11797 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_forLoopRange in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3876 "src/Compiler/pars.fsy" - if not _3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileFor()) +//# 4214 "src/Compiler/pars.fsy" let mFor = rhs parseState 1 + if not _3 then reportParseErrorAt mFor (FSComp.SR.parsUnexpectedEndOfFileFor ()) let spFor = DebugPointAtFor.Yes mFor - let (a, b, c, d, e, spTo) = _2 - let mForLoopBodyArb = (rhs parseState 2).EndRange - let mForLoopAll = rhs2 parseState 1 2 - exprFromParseError (SynExpr.For(spFor, spTo, a, b, c, d, e, arbExpr ("declExpr11", mForLoopBodyArb), mForLoopAll)) + let (a, b, c, d, exprTo, spTo) = _2 + let mExpr = exprTo.Range + let bodyExpr = arbExpr ("declExpr11", mExpr.EndRange) + SynExpr.For(spFor, spTo, a, b, c, d, exprTo, bodyExpr, unionRanges mFor mExpr) ) -//# 3876 "src/Compiler/pars.fsy" +//# 4214 "src/Compiler/pars.fsy" : SynExpr)); -//# 11049 "pars.fs" +//# 11815 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_doToken in let _4 = parseState.GetInput(4) :?> SynExpr in @@ -11054,36 +11820,36 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3885 "src/Compiler/pars.fsy" - // silent recovery +//# 4223 "src/Compiler/pars.fsy" let mFor = rhs parseState 1 let spToFake = DebugPointAtInOrTo.Yes mFor - let mForLoopAll = unionRanges (rhs parseState 1) _4.Range let spFor = DebugPointAtFor.Yes mFor - SynExpr.For(spFor, spToFake, mkSynId mFor "_loopVar", None, arbExpr ("startLoopRange1", mFor), true, arbExpr ("endLoopRange1", rhs parseState 3), _4, mForLoopAll) + let expr1 = arbExpr ("startLoopRange1", mFor) + let expr2 = arbExpr ("endLoopRange1", rhs parseState 3) + SynExpr.For(spFor, spToFake, mkSynId mFor "_loopVar", None, expr1, true, expr2, _4, unionRanges mFor _4.Range) ) -//# 3885 "src/Compiler/pars.fsy" +//# 4223 "src/Compiler/pars.fsy" : SynExpr)); -//# 11067 "pars.fs" +//# 11833 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3893 "src/Compiler/pars.fsy" +//# 4231 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsIdentifierExpected()) arbExpr ("declExpr12", (rhs parseState 1)) ) -//# 3893 "src/Compiler/pars.fsy" +//# 4231 "src/Compiler/pars.fsy" : SynExpr)); -//# 11079 "pars.fs" +//# 11845 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_parenPattern in let _4 = parseState.GetInput(4) :?> 'gentype_doneDeclEnd in Microsoft.FSharp.Core.Operators.box ( ( -//# 3897 "src/Compiler/pars.fsy" +//# 4235 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsInOrEqualExpected()) let mFor = rhs parseState 1 let spFor = DebugPointAtFor.Yes mFor @@ -11092,16 +11858,16 @@ let _fsyacc_reductions = lazy [| let mForLoopAll = rhs2 parseState 1 4 SynExpr.ForEach(spFor, spInFake, SeqExprOnly false, true, _2, arbExpr ("forLoopCollection", mFor), arbExpr ("forLoopBody3", mForLoopBodyArb), mForLoopAll) ) -//# 3897 "src/Compiler/pars.fsy" +//# 4235 "src/Compiler/pars.fsy" : SynExpr)); -//# 11097 "pars.fs" +//# 11863 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_parenPattern in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3906 "src/Compiler/pars.fsy" +//# 4244 "src/Compiler/pars.fsy" if not _3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileFor()) let mFor = rhs parseState 1 let mIn = rhs parseState 1 @@ -11111,59 +11877,59 @@ let _fsyacc_reductions = lazy [| let mForLoopAll = rhs2 parseState 1 2 exprFromParseError (SynExpr.ForEach(spFor, spIn, SeqExprOnly false, true, _2, arbExpr ("forLoopCollection", mFor), arbExpr ("forLoopBody3", mForLoopBodyArb), mForLoopAll)) ) -//# 3906 "src/Compiler/pars.fsy" +//# 4244 "src/Compiler/pars.fsy" : SynExpr)); -//# 11116 "pars.fs" +//# 11882 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 3916 "src/Compiler/pars.fsy" +//# 4254 "src/Compiler/pars.fsy" SynExpr.YieldOrReturn((_1, not _1), _2, unionRanges (rhs parseState 1) _2.Range) ) -//# 3916 "src/Compiler/pars.fsy" +//# 4254 "src/Compiler/pars.fsy" : SynExpr)); -//# 11128 "pars.fs" +//# 11894 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 3919 "src/Compiler/pars.fsy" +//# 4257 "src/Compiler/pars.fsy" SynExpr.YieldOrReturnFrom((_1, not _1), _2, unionRanges (rhs parseState 1) _2.Range) ) -//# 3919 "src/Compiler/pars.fsy" +//# 4257 "src/Compiler/pars.fsy" : SynExpr)); -//# 11140 "pars.fs" +//# 11906 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3922 "src/Compiler/pars.fsy" +//# 4260 "src/Compiler/pars.fsy" let mYieldAll = rhs parseState 1 SynExpr.YieldOrReturn((_1, not _1), arbExpr ("yield", mYieldAll), mYieldAll) ) -//# 3922 "src/Compiler/pars.fsy" +//# 4260 "src/Compiler/pars.fsy" : SynExpr)); -//# 11153 "pars.fs" +//# 11919 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3926 "src/Compiler/pars.fsy" +//# 4264 "src/Compiler/pars.fsy" let mYieldAll = rhs parseState 1 SynExpr.YieldOrReturnFrom((_1, not _1), arbExpr ("yield!", mYieldAll), mYieldAll) ) -//# 3926 "src/Compiler/pars.fsy" +//# 4264 "src/Compiler/pars.fsy" : SynExpr)); -//# 11166 "pars.fs" +//# 11932 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in let _2 = parseState.GetInput(2) :?> SynPat in @@ -11174,16 +11940,16 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3930 "src/Compiler/pars.fsy" +//# 4268 "src/Compiler/pars.fsy" let spBind = DebugPointAtBinding.Yes(rhs2 parseState 1 5) let mEquals = rhs parseState 3 let m = unionRanges (rhs parseState 1) _8.Range let trivia: SynExprLetOrUseBangTrivia = { EqualsRange = Some mEquals } SynExpr.LetOrUseBang(spBind, (_1 = "use"), true, _2, _4, _7, _8, m, trivia) ) -//# 3930 "src/Compiler/pars.fsy" +//# 4268 "src/Compiler/pars.fsy" : SynExpr)); -//# 11186 "pars.fs" +//# 11952 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in let _2 = parseState.GetInput(2) :?> SynPat in @@ -11195,8 +11961,8 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3937 "src/Compiler/pars.fsy" - let report, mIn = _5 +//# 4275 "src/Compiler/pars.fsy" + let report, mIn, _ = _5 report (if _1 = "use" then "use!" else "let!") (rhs parseState 1) // report unterminated error let spBind = DebugPointAtBinding.Yes(unionRanges (rhs parseState 1) _4.Range) let mEquals = rhs parseState 3 @@ -11204,9 +11970,9 @@ let _fsyacc_reductions = lazy [| let trivia: SynExprLetOrUseBangTrivia = { EqualsRange = Some mEquals } SynExpr.LetOrUseBang(spBind, (_1 = "use"), true, _2, _4, _7, _8, m, trivia) ) -//# 3937 "src/Compiler/pars.fsy" +//# 4275 "src/Compiler/pars.fsy" : SynExpr)); -//# 11209 "pars.fs" +//# 11975 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in let _2 = parseState.GetInput(2) :?> SynPat in @@ -11216,7 +11982,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3946 "src/Compiler/pars.fsy" +//# 4284 "src/Compiler/pars.fsy" // error recovery that allows intellisense when writing incomplete computation expressions let spBind = DebugPointAtBinding.Yes(unionRanges (rhs parseState 1) _4.Range) let mEquals = rhs parseState 3 @@ -11225,9 +11991,9 @@ let _fsyacc_reductions = lazy [| let trivia: SynExprLetOrUseBangTrivia = { EqualsRange = Some mEquals } SynExpr.LetOrUseBang(spBind, (_1 = "use"), true, _2, _4, [], SynExpr.ImplicitZero m, mAll, trivia) ) -//# 3946 "src/Compiler/pars.fsy" +//# 4284 "src/Compiler/pars.fsy" : SynExpr)); -//# 11230 "pars.fs" +//# 11996 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in let _4 = parseState.GetInput(4) :?> 'gentype_opt_OBLOCKSEP in @@ -11235,195 +12001,218 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 3955 "src/Compiler/pars.fsy" +//# 4293 "src/Compiler/pars.fsy" let spBind = DebugPointAtBinding.NoneAtDo let trivia: SynExprLetOrUseBangTrivia = { EqualsRange = None } SynExpr.LetOrUseBang(spBind, false, true, SynPat.Const(SynConst.Unit, _2.Range), _2, [], _5, unionRanges (rhs parseState 1) _5.Range, trivia) ) -//# 3955 "src/Compiler/pars.fsy" +//# 4293 "src/Compiler/pars.fsy" : SynExpr)); -//# 11245 "pars.fs" +//# 12011 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in let _3 = parseState.GetInput(3) :?> 'gentype_hardwhiteDefnBindingsTerminator in Microsoft.FSharp.Core.Operators.box ( ( -//# 3960 "src/Compiler/pars.fsy" +//# 4298 "src/Compiler/pars.fsy" SynExpr.DoBang(_2, unionRanges (rhs parseState 1) _2.Range) ) -//# 3960 "src/Compiler/pars.fsy" +//# 4298 "src/Compiler/pars.fsy" : SynExpr)); -//# 11257 "pars.fs" +//# 12023 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 3963 "src/Compiler/pars.fsy" +//# 4301 "src/Compiler/pars.fsy" SynExpr.Fixed(_2, (unionRanges (rhs parseState 1) _2.Range)) ) -//# 3963 "src/Compiler/pars.fsy" +//# 4301 "src/Compiler/pars.fsy" : SynExpr)); -//# 11268 "pars.fs" +//# 12034 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExprBlockR in Microsoft.FSharp.Core.Operators.box ( ( -//# 3966 "src/Compiler/pars.fsy" +//# 4304 "src/Compiler/pars.fsy" errorR(Error(FSComp.SR.parsArrowUseIsLimited(), lhs parseState)) let mArrow = rhs parseState 1 let expr = _2 mArrow SynExpr.YieldOrReturn((true, true), expr, (unionRanges mArrow expr.Range)) ) -//# 3966 "src/Compiler/pars.fsy" +//# 4304 "src/Compiler/pars.fsy" : SynExpr)); -//# 11282 "pars.fs" +//# 12048 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _3 = parseState.GetInput(3) :?> SynType in Microsoft.FSharp.Core.Operators.box ( ( -//# 3972 "src/Compiler/pars.fsy" +//# 4310 "src/Compiler/pars.fsy" SynExpr.TypeTest(_1, _3, unionRanges _1.Range _3.Range) ) -//# 3972 "src/Compiler/pars.fsy" +//# 4310 "src/Compiler/pars.fsy" : SynExpr)); -//# 11294 "pars.fs" +//# 12060 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3975 "src/Compiler/pars.fsy" +//# 4313 "src/Compiler/pars.fsy" let mColon = rhs parseState 2 let ty = SynType.FromParseError(mColon.EndRange) SynExpr.TypeTest(_1, ty, unionRanges _1.Range mColon) ) -//# 3975 "src/Compiler/pars.fsy" +//# 4313 "src/Compiler/pars.fsy" : SynExpr)); -//# 11308 "pars.fs" +//# 12074 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _3 = parseState.GetInput(3) :?> SynType in Microsoft.FSharp.Core.Operators.box ( ( -//# 3980 "src/Compiler/pars.fsy" +//# 4318 "src/Compiler/pars.fsy" SynExpr.Upcast(_1, _3, unionRanges _1.Range _3.Range) ) -//# 3980 "src/Compiler/pars.fsy" +//# 4318 "src/Compiler/pars.fsy" : SynExpr)); -//# 11320 "pars.fs" +//# 12086 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3983 "src/Compiler/pars.fsy" +//# 4321 "src/Compiler/pars.fsy" let mOp = rhs parseState 2 let ty = SynType.FromParseError(mOp.EndRange) SynExpr.Upcast(_1, ty, unionRanges _1.Range mOp) ) -//# 3983 "src/Compiler/pars.fsy" +//# 4321 "src/Compiler/pars.fsy" : SynExpr)); -//# 11334 "pars.fs" +//# 12100 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _3 = parseState.GetInput(3) :?> SynType in Microsoft.FSharp.Core.Operators.box ( ( -//# 3988 "src/Compiler/pars.fsy" +//# 4326 "src/Compiler/pars.fsy" SynExpr.Downcast(_1, _3, unionRanges _1.Range _3.Range) ) -//# 3988 "src/Compiler/pars.fsy" +//# 4326 "src/Compiler/pars.fsy" : SynExpr)); -//# 11346 "pars.fs" +//# 12112 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 3991 "src/Compiler/pars.fsy" +//# 4329 "src/Compiler/pars.fsy" let mOp = rhs parseState 2 let ty = SynType.FromParseError(mOp.EndRange) SynExpr.Downcast(_1, ty, unionRanges _1.Range mOp) ) -//# 3991 "src/Compiler/pars.fsy" +//# 4329 "src/Compiler/pars.fsy" : SynExpr)); -//# 11360 "pars.fs" +//# 12126 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _3 = parseState.GetInput(3) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 3996 "src/Compiler/pars.fsy" +//# 4334 "src/Compiler/pars.fsy" mkSynInfix (rhs parseState 2) _1 ":=" _3 ) -//# 3996 "src/Compiler/pars.fsy" +//# 4334 "src/Compiler/pars.fsy" : SynExpr)); -//# 11372 "pars.fs" +//# 12138 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _3 = parseState.GetInput(3) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 3999 "src/Compiler/pars.fsy" +//# 4337 "src/Compiler/pars.fsy" mkSynAssign _1 _3 ) -//# 3999 "src/Compiler/pars.fsy" +//# 4337 "src/Compiler/pars.fsy" : SynExpr)); -//# 11384 "pars.fs" +//# 12150 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _1 = parseState.GetInput(1) :?> 'gentype_tupleExpr in + let _1 = parseState.GetInput(1) :?> SynExpr list * range list in Microsoft.FSharp.Core.Operators.box ( ( -//# 4002 "src/Compiler/pars.fsy" +//# 4340 "src/Compiler/pars.fsy" let exprs, commas = _1 - let exprs, commas = - // Nested non-struct tuple is only possible during error recovery, - // in other situations there are intermediate nodes. - match exprs with - | SynExpr.Tuple(false, _, _, _) :: _ -> normalizeTupleExpr exprs commas - | _ -> exprs, commas - SynExpr.Tuple(false, List.rev exprs, List.rev commas, (commas.Head, exprs) ||> unionRangeWithListBy (fun e -> e.Range)) - ) -//# 4002 "src/Compiler/pars.fsy" + let m = unionRanges exprs.Head.Range (List.last exprs).Range + SynExpr.Tuple(false, List.rev exprs, List.rev commas, m) + ) +//# 4340 "src/Compiler/pars.fsy" : SynExpr)); -//# 11402 "pars.fs" +//# 12163 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _3 = parseState.GetInput(3) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4013 "src/Compiler/pars.fsy" +//# 4345 "src/Compiler/pars.fsy" SynExpr.JoinIn(_1, rhs parseState 2, _3, unionRanges _1.Range _3.Range) ) -//# 4013 "src/Compiler/pars.fsy" +//# 4345 "src/Compiler/pars.fsy" + : SynExpr)); +//# 12175 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> SynExpr in + let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 4348 "src/Compiler/pars.fsy" + let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "in") + mkSynInfix mOp _1 "@in" (arbExpr ("declExprInfixJoinIn", mOp.EndRange)) + ) +//# 4348 "src/Compiler/pars.fsy" : SynExpr)); -//# 11414 "pars.fs" +//# 12189 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _3 = parseState.GetInput(3) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4016 "src/Compiler/pars.fsy" +//# 4353 "src/Compiler/pars.fsy" mkSynInfix (rhs parseState 2) _1 "||" _3 ) -//# 4016 "src/Compiler/pars.fsy" +//# 4353 "src/Compiler/pars.fsy" : SynExpr)); -//# 11426 "pars.fs" +//# 12201 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> SynExpr in + let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 4356 "src/Compiler/pars.fsy" + let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "||") + mkSynInfix mOp _1 "||" (arbExpr ("declExprInfixBarBar", mOp.EndRange)) + ) +//# 4356 "src/Compiler/pars.fsy" + : SynExpr)); +//# 12215 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> string in @@ -11431,73 +12220,104 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4019 "src/Compiler/pars.fsy" +//# 4361 "src/Compiler/pars.fsy" mkSynInfix (rhs parseState 2) _1 _2 _3 ) -//# 4019 "src/Compiler/pars.fsy" +//# 4361 "src/Compiler/pars.fsy" + : SynExpr)); +//# 12228 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> SynExpr in + let _2 = parseState.GetInput(2) :?> string in + let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 4364 "src/Compiler/pars.fsy" + let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression _2) + mkSynInfix mOp _1 _2 (arbExpr ("declExprInfixBarOp", mOp.EndRange)) + ) +//# 4364 "src/Compiler/pars.fsy" : SynExpr)); -//# 11439 "pars.fs" +//# 12243 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _3 = parseState.GetInput(3) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4022 "src/Compiler/pars.fsy" +//# 4369 "src/Compiler/pars.fsy" mkSynInfix (rhs parseState 2) _1 "or" _3 ) -//# 4022 "src/Compiler/pars.fsy" +//# 4369 "src/Compiler/pars.fsy" + : SynExpr)); +//# 12255 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> SynExpr in + let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 4372 "src/Compiler/pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression "or") + mkSynInfix (rhs parseState 2) _1 "or" (arbExpr ("declExprInfixOr", (rhs parseState 3).StartRange)) + ) +//# 4372 "src/Compiler/pars.fsy" : SynExpr)); -//# 11451 "pars.fs" +//# 12268 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _3 = parseState.GetInput(3) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4025 "src/Compiler/pars.fsy" +//# 4376 "src/Compiler/pars.fsy" mkSynInfix (rhs parseState 2) _1 "&" _3 ) -//# 4025 "src/Compiler/pars.fsy" +//# 4376 "src/Compiler/pars.fsy" : SynExpr)); -//# 11463 "pars.fs" +//# 12280 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in - let _3 = parseState.GetInput(3) :?> SynExpr in + let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4028 "src/Compiler/pars.fsy" - mkSynInfix (rhs parseState 2) _1 "&&" _3 +//# 4379 "src/Compiler/pars.fsy" + let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "&") + mkSynInfix mOp _1 "&" (arbExpr ("declExprInfixAmp", mOp.EndRange)) ) -//# 4028 "src/Compiler/pars.fsy" +//# 4379 "src/Compiler/pars.fsy" : SynExpr)); -//# 11475 "pars.fs" +//# 12294 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in - let _2 = parseState.GetInput(2) :?> string in let _3 = parseState.GetInput(3) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4031 "src/Compiler/pars.fsy" - mkSynInfix (rhs parseState 2) _1 _2 _3 +//# 4384 "src/Compiler/pars.fsy" + mkSynInfix (rhs parseState 2) _1 "&&" _3 ) -//# 4031 "src/Compiler/pars.fsy" +//# 4384 "src/Compiler/pars.fsy" : SynExpr)); -//# 11488 "pars.fs" +//# 12306 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in - let _3 = parseState.GetInput(3) :?> SynExpr in + let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4034 "src/Compiler/pars.fsy" - mkSynInfix (rhs parseState 2) _1 "=" _3 +//# 4387 "src/Compiler/pars.fsy" + let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "&&") + mkSynInfix mOp _1 "&&" (arbExpr ("declExprInfixAmpAmp", mOp.EndRange)) ) -//# 4034 "src/Compiler/pars.fsy" +//# 4387 "src/Compiler/pars.fsy" : SynExpr)); -//# 11500 "pars.fs" +//# 12320 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> string in @@ -11505,154 +12325,163 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4037 "src/Compiler/pars.fsy" +//# 4392 "src/Compiler/pars.fsy" mkSynInfix (rhs parseState 2) _1 _2 _3 ) -//# 4037 "src/Compiler/pars.fsy" +//# 4392 "src/Compiler/pars.fsy" : SynExpr)); -//# 11513 "pars.fs" +//# 12333 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in - let _3 = parseState.GetInput(3) :?> SynExpr in + let _2 = parseState.GetInput(2) :?> string in + let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4040 "src/Compiler/pars.fsy" - mkSynInfix (rhs parseState 2) _1 "$" _3 +//# 4395 "src/Compiler/pars.fsy" + let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression _2) + mkSynInfix mOp _1 _2 (arbExpr ("declExprInfixAmpOp", (rhs parseState 3).StartRange)) ) -//# 4040 "src/Compiler/pars.fsy" +//# 4395 "src/Compiler/pars.fsy" : SynExpr)); -//# 11525 "pars.fs" +//# 12348 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in - let _2 = parseState.GetInput(2) :?> bool in let _3 = parseState.GetInput(3) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4043 "src/Compiler/pars.fsy" - mkSynInfix (rhs parseState 2) _1 "<" _3 +//# 4400 "src/Compiler/pars.fsy" + mkSynInfix (rhs parseState 2) _1 "=" _3 ) -//# 4043 "src/Compiler/pars.fsy" +//# 4400 "src/Compiler/pars.fsy" : SynExpr)); -//# 11538 "pars.fs" +//# 12360 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in - let _2 = parseState.GetInput(2) :?> bool in - let _3 = parseState.GetInput(3) :?> 'gentype_recover in + let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4046 "src/Compiler/pars.fsy" - if not _3 then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("<")) - exprFromParseError (mkSynInfix (rhs parseState 2) _1 "<" (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) +//# 4403 "src/Compiler/pars.fsy" + let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "=") + mkSynInfix mOp _1 "=" (arbExpr ("declExprInfixEquals", mOp.EndRange)) ) -//# 4046 "src/Compiler/pars.fsy" +//# 4403 "src/Compiler/pars.fsy" : SynExpr)); -//# 11552 "pars.fs" +//# 12374 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in - let _2 = parseState.GetInput(2) :?> bool in + let _2 = parseState.GetInput(2) :?> string in let _3 = parseState.GetInput(3) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4050 "src/Compiler/pars.fsy" - mkSynInfix (rhs parseState 2) _1 ">" _3 +//# 4408 "src/Compiler/pars.fsy" + mkSynInfix (rhs parseState 2) _1 _2 _3 ) -//# 4050 "src/Compiler/pars.fsy" +//# 4408 "src/Compiler/pars.fsy" : SynExpr)); -//# 11565 "pars.fs" +//# 12387 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> string in - let _3 = parseState.GetInput(3) :?> SynExpr in + let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4053 "src/Compiler/pars.fsy" - mkSynInfix (rhs parseState 2) _1 _2 _3 +//# 4411 "src/Compiler/pars.fsy" + let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression _2) + mkSynInfix mOp _1 _2 (arbExpr ("declExprInfix", mOp.EndRange)) ) -//# 4053 "src/Compiler/pars.fsy" +//# 4411 "src/Compiler/pars.fsy" : SynExpr)); -//# 11578 "pars.fs" +//# 12402 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in - let _2 = parseState.GetInput(2) :?> string in let _3 = parseState.GetInput(3) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4056 "src/Compiler/pars.fsy" - mkSynInfix (rhs parseState 2) _1 _2 _3 +//# 4416 "src/Compiler/pars.fsy" + mkSynInfix (rhs parseState 2) _1 "$" _3 ) -//# 4056 "src/Compiler/pars.fsy" +//# 4416 "src/Compiler/pars.fsy" : SynExpr)); -//# 11591 "pars.fs" +//# 12414 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in - let _3 = parseState.GetInput(3) :?> SynExpr in + let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4059 "src/Compiler/pars.fsy" - let tupExpr = SynExpr.Tuple(false, [_1;_3], [rhs parseState 2], unionRanges _1.Range _3.Range) - let identExpr = mkSynOperator (rhs parseState 2) "::" - SynExpr.App(ExprAtomicFlag.NonAtomic, true, identExpr, tupExpr, unionRanges _1.Range _3.Range) +//# 4419 "src/Compiler/pars.fsy" + let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "$") + mkSynInfix mOp _1 "$" (arbExpr ("declExprInfixDollar", mOp.EndRange)) ) -//# 4059 "src/Compiler/pars.fsy" +//# 4419 "src/Compiler/pars.fsy" : SynExpr)); -//# 11605 "pars.fs" +//# 12428 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in - let _2 = parseState.GetInput(2) :?> string in + let _2 = parseState.GetInput(2) :?> bool in let _3 = parseState.GetInput(3) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4064 "src/Compiler/pars.fsy" - mkSynInfix (rhs parseState 2) _1 _2 _3 +//# 4424 "src/Compiler/pars.fsy" + mkSynInfix (rhs parseState 2) _1 "<" _3 ) -//# 4064 "src/Compiler/pars.fsy" +//# 4424 "src/Compiler/pars.fsy" : SynExpr)); -//# 11618 "pars.fs" +//# 12441 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in - let _3 = parseState.GetInput(3) :?> SynExpr in + let _2 = parseState.GetInput(2) :?> bool in + let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4067 "src/Compiler/pars.fsy" - mkSynInfix (rhs parseState 2) _1 "-" _3 +//# 4427 "src/Compiler/pars.fsy" + let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "<") + mkSynInfix mOp _1 "<" (arbExpr ("declExprInfixLess", mOp.EndRange)) ) -//# 4067 "src/Compiler/pars.fsy" +//# 4427 "src/Compiler/pars.fsy" : SynExpr)); -//# 11630 "pars.fs" +//# 12456 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in + let _2 = parseState.GetInput(2) :?> bool in let _3 = parseState.GetInput(3) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4070 "src/Compiler/pars.fsy" - mkSynInfix (rhs parseState 2) _1 "*" _3 +//# 4432 "src/Compiler/pars.fsy" + mkSynInfix (rhs parseState 2) _1 ">" _3 ) -//# 4070 "src/Compiler/pars.fsy" +//# 4432 "src/Compiler/pars.fsy" : SynExpr)); -//# 11642 "pars.fs" +//# 12469 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in - let _2 = parseState.GetInput(2) :?> string in - let _3 = parseState.GetInput(3) :?> SynExpr in + let _2 = parseState.GetInput(2) :?> bool in + let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4073 "src/Compiler/pars.fsy" - mkSynInfix (rhs parseState 2) _1 _2 _3 +//# 4435 "src/Compiler/pars.fsy" + let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression ">") + mkSynInfix mOp _1 ">" (arbExpr ("declExprInfixGreater", mOp.EndRange)) ) -//# 4073 "src/Compiler/pars.fsy" +//# 4435 "src/Compiler/pars.fsy" : SynExpr)); -//# 11655 "pars.fs" +//# 12484 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> string in @@ -11660,454 +12489,538 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4076 "src/Compiler/pars.fsy" +//# 4440 "src/Compiler/pars.fsy" mkSynInfix (rhs parseState 2) _1 _2 _3 ) -//# 4076 "src/Compiler/pars.fsy" +//# 4440 "src/Compiler/pars.fsy" : SynExpr)); -//# 11668 "pars.fs" +//# 12497 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in + let _2 = parseState.GetInput(2) :?> string in + let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4079 "src/Compiler/pars.fsy" - reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("in")) - exprFromParseError(mkSynInfix (rhs parseState 2) _1 "@in" (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) +//# 4443 "src/Compiler/pars.fsy" + let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression _2) + mkSynInfix mOp _1 _2 (arbExpr ("declExprInfix", mOp.EndRange)) ) -//# 4079 "src/Compiler/pars.fsy" +//# 4443 "src/Compiler/pars.fsy" : SynExpr)); -//# 11680 "pars.fs" +//# 12512 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in + let _2 = parseState.GetInput(2) :?> string in + let _3 = parseState.GetInput(3) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4083 "src/Compiler/pars.fsy" - reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("||")) - exprFromParseError(mkSynInfix (rhs parseState 2) _1 "||" (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) +//# 4448 "src/Compiler/pars.fsy" + mkSynInfix (rhs parseState 2) _1 _2 _3 ) -//# 4083 "src/Compiler/pars.fsy" +//# 4448 "src/Compiler/pars.fsy" : SynExpr)); -//# 11692 "pars.fs" +//# 12525 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> string in + let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4087 "src/Compiler/pars.fsy" - reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression(_2)) - exprFromParseError(mkSynInfix (rhs parseState 2) _1 _2 (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) +//# 4451 "src/Compiler/pars.fsy" + let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression _2) + mkSynInfix mOp _1 _2 (arbExpr ("declExprInfixPercent", mOp.EndRange)) ) -//# 4087 "src/Compiler/pars.fsy" +//# 4451 "src/Compiler/pars.fsy" : SynExpr)); -//# 11705 "pars.fs" +//# 12540 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in + let _3 = parseState.GetInput(3) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4091 "src/Compiler/pars.fsy" - reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("or")) - exprFromParseError(mkSynInfix (rhs parseState 2) _1 "or" (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) +//# 4456 "src/Compiler/pars.fsy" + let mOp = rhs parseState 2 + let m = unionRanges _1.Range _3.Range + let tupExpr = SynExpr.Tuple(false, [_1; _3], [mOp], m) + let identExpr = mkSynOperator mOp "::" + SynExpr.App(ExprAtomicFlag.NonAtomic, true, identExpr, tupExpr, m) ) -//# 4091 "src/Compiler/pars.fsy" +//# 4456 "src/Compiler/pars.fsy" : SynExpr)); -//# 11717 "pars.fs" +//# 12556 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in + let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4095 "src/Compiler/pars.fsy" - reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("&")) - exprFromParseError(mkSynInfix (rhs parseState 2) _1 "&" (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) +//# 4463 "src/Compiler/pars.fsy" + let mOp = rhs parseState 2 + let m = unionRanges _1.Range mOp + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "::") + let identExpr = mkSynOperator mOp "::" + let tupExpr = SynExpr.Tuple(false, [_1; (arbExpr ("declExprInfixColonColon", mOp.EndRange))], [mOp], m) + SynExpr.App(ExprAtomicFlag.NonAtomic, true, identExpr, tupExpr, m) + ) +//# 4463 "src/Compiler/pars.fsy" + : SynExpr)); +//# 12573 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> SynExpr in + let _2 = parseState.GetInput(2) :?> string in + let _3 = parseState.GetInput(3) :?> SynExpr in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 4471 "src/Compiler/pars.fsy" + mkSynInfix (rhs parseState 2) _1 _2 _3 ) -//# 4095 "src/Compiler/pars.fsy" +//# 4471 "src/Compiler/pars.fsy" : SynExpr)); -//# 11729 "pars.fs" +//# 12586 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in + let _2 = parseState.GetInput(2) :?> string in + let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4099 "src/Compiler/pars.fsy" - reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("&&")) - exprFromParseError(mkSynInfix (rhs parseState 2) _1 "&&" (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) +//# 4474 "src/Compiler/pars.fsy" + let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression _2) + mkSynInfix mOp _1 _2 (arbExpr ("declExprInfixPlusMinus", mOp.EndRange)) ) -//# 4099 "src/Compiler/pars.fsy" +//# 4474 "src/Compiler/pars.fsy" : SynExpr)); -//# 11741 "pars.fs" +//# 12601 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in - let _2 = parseState.GetInput(2) :?> string in + let _3 = parseState.GetInput(3) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4103 "src/Compiler/pars.fsy" - reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression(_2)) - exprFromParseError(mkSynInfix (rhs parseState 2) _1 _2 (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) +//# 4479 "src/Compiler/pars.fsy" + mkSynInfix (rhs parseState 2) _1 "-" _3 ) -//# 4103 "src/Compiler/pars.fsy" +//# 4479 "src/Compiler/pars.fsy" : SynExpr)); -//# 11754 "pars.fs" +//# 12613 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in + let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4107 "src/Compiler/pars.fsy" - reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("=")) - exprFromParseError(mkSynInfix (rhs parseState 2) _1 "=" (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) +//# 4482 "src/Compiler/pars.fsy" + let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "-") + mkSynInfix mOp _1 "-" (arbExpr ("declExprInfixMinus", mOp.EndRange)) ) -//# 4107 "src/Compiler/pars.fsy" +//# 4482 "src/Compiler/pars.fsy" : SynExpr)); -//# 11766 "pars.fs" +//# 12627 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in - let _2 = parseState.GetInput(2) :?> string in + let _3 = parseState.GetInput(3) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4111 "src/Compiler/pars.fsy" - reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression(_2)) - exprFromParseError(mkSynInfix (rhs parseState 2) _1 _2 (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) +//# 4487 "src/Compiler/pars.fsy" + mkSynInfix (rhs parseState 2) _1 "*" _3 ) -//# 4111 "src/Compiler/pars.fsy" +//# 4487 "src/Compiler/pars.fsy" : SynExpr)); -//# 11779 "pars.fs" +//# 12639 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in + let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4115 "src/Compiler/pars.fsy" - reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("$")) - exprFromParseError(mkSynInfix (rhs parseState 2) _1 "$" (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) +//# 4490 "src/Compiler/pars.fsy" + let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "*") + mkSynInfix mOp _1 "*" (arbExpr ("declExprInfixStar", mOp.EndRange)) ) -//# 4115 "src/Compiler/pars.fsy" +//# 4490 "src/Compiler/pars.fsy" : SynExpr)); -//# 11791 "pars.fs" +//# 12653 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in - let _2 = parseState.GetInput(2) :?> bool in + let _2 = parseState.GetInput(2) :?> string in + let _3 = parseState.GetInput(3) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4119 "src/Compiler/pars.fsy" - reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("<")) - exprFromParseError(mkSynInfix (rhs parseState 2) _1 "<" (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) +//# 4495 "src/Compiler/pars.fsy" + mkSynInfix (rhs parseState 2) _1 _2 _3 ) -//# 4119 "src/Compiler/pars.fsy" +//# 4495 "src/Compiler/pars.fsy" : SynExpr)); -//# 11804 "pars.fs" +//# 12666 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in - let _2 = parseState.GetInput(2) :?> bool in + let _2 = parseState.GetInput(2) :?> string in + let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4123 "src/Compiler/pars.fsy" - reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression(">")) - exprFromParseError(mkSynInfix (rhs parseState 2) _1 ">" (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) +//# 4498 "src/Compiler/pars.fsy" + let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression _2) + mkSynInfix mOp _1 _2 (arbExpr ("declExprInfixStarDivMod", mOp.EndRange)) ) -//# 4123 "src/Compiler/pars.fsy" +//# 4498 "src/Compiler/pars.fsy" : SynExpr)); -//# 11817 "pars.fs" +//# 12681 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> string in + let _3 = parseState.GetInput(3) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4127 "src/Compiler/pars.fsy" - reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression(_2)) - exprFromParseError(mkSynInfix (rhs parseState 2) _1 _2 (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) +//# 4503 "src/Compiler/pars.fsy" + mkSynInfix (rhs parseState 2) _1 _2 _3 ) -//# 4127 "src/Compiler/pars.fsy" +//# 4503 "src/Compiler/pars.fsy" : SynExpr)); -//# 11830 "pars.fs" +//# 12694 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> string in + let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4131 "src/Compiler/pars.fsy" - reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression(_2)) - exprFromParseError(mkSynInfix (rhs parseState 2) _1 _2 (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) +//# 4506 "src/Compiler/pars.fsy" + let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression _2) + mkSynInfix mOp _1 _2 (arbExpr ("declExprInfixStarStar", mOp.EndRange)) ) -//# 4131 "src/Compiler/pars.fsy" +//# 4506 "src/Compiler/pars.fsy" : SynExpr)); -//# 11843 "pars.fs" +//# 12709 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in + let _3 = parseState.GetInput(3) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4135 "src/Compiler/pars.fsy" - reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("::")) - let identExpr = mkSynOperator (rhs parseState 2) "::" - let tupExpr = SynExpr.Tuple(false, [_1;(arbExpr ("declExprInfix", (rhs parseState 3).StartRange))], [rhs parseState 2], unionRanges _1.Range (rhs parseState 3).StartRange) - SynExpr.App(ExprAtomicFlag.NonAtomic, true, identExpr, tupExpr, unionRanges _1.Range (rhs parseState 3).StartRange) +//# 4511 "src/Compiler/pars.fsy" + let wholem = rhs2 parseState 1 3 + let mOperator = rhs parseState 2 + SynExpr.IndexRange(Some _1, mOperator, Some _3, rhs parseState 1, rhs parseState 3, wholem) ) -//# 4135 "src/Compiler/pars.fsy" +//# 4511 "src/Compiler/pars.fsy" : SynExpr)); -//# 11857 "pars.fs" +//# 12723 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in - let _2 = parseState.GetInput(2) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 4141 "src/Compiler/pars.fsy" - reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression(_2)) - exprFromParseError(mkSynInfix (rhs parseState 2) _1 _2 (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) +//# 4516 "src/Compiler/pars.fsy" + let wholem = rhs2 parseState 1 2 + let mOperator = rhs parseState 2 + SynExpr.IndexRange(Some _1, mOperator, None, rhs parseState 1, mOperator, wholem) ) -//# 4141 "src/Compiler/pars.fsy" +//# 4516 "src/Compiler/pars.fsy" : SynExpr)); -//# 11870 "pars.fs" +//# 12736 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _1 = parseState.GetInput(1) :?> SynExpr in + let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4145 "src/Compiler/pars.fsy" - reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("-")) - exprFromParseError(mkSynInfix (rhs parseState 2) _1 "-" (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) +//# 4521 "src/Compiler/pars.fsy" + let wholem = rhs2 parseState 1 2 + let mOperator = rhs parseState 1 + SynExpr.IndexRange(None, mOperator, Some _2, mOperator, rhs parseState 2, wholem) ) -//# 4145 "src/Compiler/pars.fsy" +//# 4521 "src/Compiler/pars.fsy" : SynExpr)); -//# 11882 "pars.fs" +//# 12749 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _1 = parseState.GetInput(1) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4149 "src/Compiler/pars.fsy" - reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("*")) - exprFromParseError(mkSynInfix (rhs parseState 2) _1 "*" (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) +//# 4526 "src/Compiler/pars.fsy" + let m = rhs parseState 1 + SynExpr.IndexRange(None, m, None, m, m, m) ) -//# 4149 "src/Compiler/pars.fsy" +//# 4526 "src/Compiler/pars.fsy" : SynExpr)); -//# 11894 "pars.fs" +//# 12760 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in - let _2 = parseState.GetInput(2) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 4153 "src/Compiler/pars.fsy" - reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression(_2)) - exprFromParseError(mkSynInfix (rhs parseState 2) _1 _2 (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) +//# 4529 "src/Compiler/pars.fsy" + _1 ) -//# 4153 "src/Compiler/pars.fsy" +//# 4529 "src/Compiler/pars.fsy" : SynExpr)); -//# 11907 "pars.fs" +//# 12771 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in - let _2 = parseState.GetInput(2) :?> string in + let _2 = parseState.GetInput(2) :?> 'gentype_doToken in + let _3 = parseState.GetInput(3) :?> SynExpr in + let _4 = parseState.GetInput(4) :?> 'gentype_doneDeclEnd in Microsoft.FSharp.Core.Operators.box ( ( -//# 4157 "src/Compiler/pars.fsy" - reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression(_2)) - exprFromParseError(mkSynInfix (rhs parseState 2) _1 _2 (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) +//# 4533 "src/Compiler/pars.fsy" + fun mKeyword -> + let mWhileHeader = unionRanges mKeyword _1.Range + let spWhile = DebugPointAtWhile.Yes mWhileHeader + let mWhileAll = unionRanges mKeyword _4 + spWhile, _1, _3, mWhileAll ) -//# 4157 "src/Compiler/pars.fsy" - : SynExpr)); -//# 11920 "pars.fs" +//# 4533 "src/Compiler/pars.fsy" + : 'gentype_whileExprCore)); +//# 12789 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in + let _2 = parseState.GetInput(2) :?> 'gentype_doToken in let _3 = parseState.GetInput(3) :?> SynExpr in + let _4 = parseState.GetInput(4) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4161 "src/Compiler/pars.fsy" - let wholem = rhs2 parseState 1 3 - let mOperator = rhs parseState 2 - SynExpr.IndexRange(Some _1, mOperator, Some _3, rhs parseState 1, rhs parseState 3, wholem) +//# 4541 "src/Compiler/pars.fsy" + fun mKeyword -> + if not _4 then reportParseErrorAt mKeyword (FSComp.SR.parsUnexpectedEndOfFileWhile ()) + let mWhileHeader = unionRanges mKeyword _1.Range + let spWhile = DebugPointAtWhile.Yes mWhileHeader + let mWhileAll = unionRanges mKeyword _3.Range + spWhile, _1, _3, mWhileAll ) -//# 4161 "src/Compiler/pars.fsy" - : SynExpr)); -//# 11934 "pars.fs" +//# 4541 "src/Compiler/pars.fsy" + : 'gentype_whileExprCore)); +//# 12808 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in + let _2 = parseState.GetInput(2) :?> 'gentype_doToken in + let _4 = parseState.GetInput(4) :?> 'gentype_doneDeclEnd in Microsoft.FSharp.Core.Operators.box ( ( -//# 4166 "src/Compiler/pars.fsy" - let wholem = rhs2 parseState 1 2 - let mOperator = rhs parseState 2 - SynExpr.IndexRange(Some _1, mOperator, None, rhs parseState 1, mOperator, wholem) +//# 4550 "src/Compiler/pars.fsy" + let mWhileBodyArb = rhs parseState 3 + + fun mKeyword -> + let mWhileHeader = unionRanges mKeyword _1.Range + let spWhile = DebugPointAtWhile.Yes mWhileHeader + let mWhileAll = unionRanges mKeyword _4 + let bodyArb = arbExpr ("whileBody1", mWhileBodyArb) + spWhile, _1, bodyArb, mWhileAll ) -//# 4166 "src/Compiler/pars.fsy" - : SynExpr)); -//# 11947 "pars.fs" +//# 4550 "src/Compiler/pars.fsy" + : 'gentype_whileExprCore)); +//# 12828 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _2 = parseState.GetInput(2) :?> SynExpr in + let _1 = parseState.GetInput(1) :?> SynExpr in + let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4171 "src/Compiler/pars.fsy" - let wholem = rhs2 parseState 1 2 - let mOperator = rhs parseState 1 - SynExpr.IndexRange(None, mOperator, Some _2, mOperator, rhs parseState 2, wholem) +//# 4561 "src/Compiler/pars.fsy" + fun mKeyword -> + reportParseErrorAt mKeyword (FSComp.SR.parsWhileDoExpected()) + let mWhileHeader = unionRanges mKeyword _1.Range + let spWhile = DebugPointAtWhile.Yes mWhileHeader + let mWhileAll = mWhileHeader + let bodyArb = arbExpr ("whileBody2", _1.Range.EndRange) + spWhile, _1, bodyArb, mWhileAll ) -//# 4171 "src/Compiler/pars.fsy" - : SynExpr)); -//# 11960 "pars.fs" +//# 4561 "src/Compiler/pars.fsy" + : 'gentype_whileExprCore)); +//# 12846 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4176 "src/Compiler/pars.fsy" - let m = rhs parseState 1 - SynExpr.IndexRange(None, m, None, m, m, m) +//# 4571 "src/Compiler/pars.fsy" + fun mKeyword -> + if not _1 then reportParseErrorAt mKeyword (FSComp.SR.parsUnexpectedEndOfFileWhile ()) + let spWhile = DebugPointAtWhile.Yes mKeyword + let expr1 = arbExpr ("whileLoop1", mKeyword.EndRange) + let expr2 = arbExpr ("whileLoop2", mKeyword.EndRange) + + spWhile, expr1, expr2, mKeyword ) -//# 4176 "src/Compiler/pars.fsy" - : SynExpr)); -//# 11971 "pars.fs" +//# 4571 "src/Compiler/pars.fsy" + : 'gentype_whileExprCore)); +//# 12863 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _1 = parseState.GetInput(1) :?> SynExpr in + let _2 = parseState.GetInput(2) :?> 'gentype_doneDeclEnd in Microsoft.FSharp.Core.Operators.box ( ( -//# 4179 "src/Compiler/pars.fsy" - _1 +//# 4580 "src/Compiler/pars.fsy" + let mWhileBodyArb = rhs parseState 1 + + fun mKeyword -> + let spWhile = DebugPointAtWhile.Yes mKeyword + let expr1 = arbExpr ("whileGuard1", mKeyword.EndRange) + let expr2 = arbExpr ("whileBody3", mWhileBodyArb.EndRange) + let mWhileAll = unionRanges mKeyword _2 + + spWhile, expr1, expr2, mWhileAll ) -//# 4179 "src/Compiler/pars.fsy" - : SynExpr)); -//# 11982 "pars.fs" +//# 4580 "src/Compiler/pars.fsy" + : 'gentype_whileExprCore)); +//# 12882 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 4183 "src/Compiler/pars.fsy" +//# 4592 "src/Compiler/pars.fsy" let m = rhs parseState 1 SynExpr.Ident(Ident(_1, m)) ) -//# 4183 "src/Compiler/pars.fsy" +//# 4592 "src/Compiler/pars.fsy" : 'gentype_dynamicArg)); -//# 11994 "pars.fs" +//# 12894 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in let _3 = parseState.GetInput(3) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 4187 "src/Compiler/pars.fsy" +//# 4596 "src/Compiler/pars.fsy" let lpr = rhs parseState 1 let rpr = rhs parseState 3 let m = unionRanges lpr rpr SynExpr.Paren(_2, lpr, Some rpr, m) ) -//# 4187 "src/Compiler/pars.fsy" +//# 4596 "src/Compiler/pars.fsy" : 'gentype_dynamicArg)); -//# 12009 "pars.fs" +//# 12909 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_withPatternClauses in Microsoft.FSharp.Core.Operators.box ( ( -//# 4194 "src/Compiler/pars.fsy" +//# 4603 "src/Compiler/pars.fsy" rhs parseState 1, _2 ) -//# 4194 "src/Compiler/pars.fsy" +//# 4603 "src/Compiler/pars.fsy" : 'gentype_withClauses)); -//# 12020 "pars.fs" +//# 12920 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_withPatternClauses in Microsoft.FSharp.Core.Operators.box ( ( -//# 4197 "src/Compiler/pars.fsy" +//# 4606 "src/Compiler/pars.fsy" rhs parseState 1, _2 ) -//# 4197 "src/Compiler/pars.fsy" +//# 4606 "src/Compiler/pars.fsy" : 'gentype_withClauses)); -//# 12031 "pars.fs" +//# 12931 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_withPatternClauses in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4200 "src/Compiler/pars.fsy" +//# 4609 "src/Compiler/pars.fsy" if not _3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileWith()) rhs parseState 1, _2 ) -//# 4200 "src/Compiler/pars.fsy" +//# 4609 "src/Compiler/pars.fsy" + : 'gentype_withClauses)); +//# 12944 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = parseState.GetInput(2) :?> 'gentype_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 4613 "src/Compiler/pars.fsy" + let mWith = rhs parseState 1 + if not _2 then reportParseErrorAt mWith (FSComp.SR.parsUnexpectedEndOfFileWith ()) + mWith, ([], mWith.EndRange) + ) +//# 4613 "src/Compiler/pars.fsy" : 'gentype_withClauses)); -//# 12044 "pars.fs" +//# 12957 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_patternClauses in Microsoft.FSharp.Core.Operators.box ( ( -//# 4205 "src/Compiler/pars.fsy" +//# 4619 "src/Compiler/pars.fsy" _1 None ) -//# 4205 "src/Compiler/pars.fsy" +//# 4619 "src/Compiler/pars.fsy" : 'gentype_withPatternClauses)); -//# 12055 "pars.fs" +//# 12968 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_patternClauses in Microsoft.FSharp.Core.Operators.box ( ( -//# 4208 "src/Compiler/pars.fsy" +//# 4622 "src/Compiler/pars.fsy" let mBar = rhs parseState 1 |> Some _2 mBar ) -//# 4208 "src/Compiler/pars.fsy" +//# 4622 "src/Compiler/pars.fsy" : 'gentype_withPatternClauses)); -//# 12067 "pars.fs" +//# 12980 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4212 "src/Compiler/pars.fsy" +//# 4626 "src/Compiler/pars.fsy" // silent recovery let mLast = rhs parseState 1 [], mLast ) -//# 4212 "src/Compiler/pars.fsy" +//# 4626 "src/Compiler/pars.fsy" : 'gentype_withPatternClauses)); -//# 12079 "pars.fs" +//# 12992 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4217 "src/Compiler/pars.fsy" +//# 4631 "src/Compiler/pars.fsy" // silent recovery let mLast = rhs parseState 1 [], mLast ) -//# 4217 "src/Compiler/pars.fsy" +//# 4631 "src/Compiler/pars.fsy" : 'gentype_withPatternClauses)); -//# 12091 "pars.fs" +//# 13004 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in let _2 = parseState.GetInput(2) :?> 'gentype_patternGuard in Microsoft.FSharp.Core.Operators.box ( ( -//# 4224 "src/Compiler/pars.fsy" +//# 4638 "src/Compiler/pars.fsy" _1, _2 ) -//# 4224 "src/Compiler/pars.fsy" +//# 4638 "src/Compiler/pars.fsy" : 'gentype_patternAndGuard)); -//# 12103 "pars.fs" +//# 13016 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_patternAndGuard in - let _2 = parseState.GetInput(2) :?> Range * SynExpr in + let _2 = parseState.GetInput(2) :?> range * SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4228 "src/Compiler/pars.fsy" +//# 4642 "src/Compiler/pars.fsy" let pat, guard = _1 let mArrow, resultExpr = _2 let mLast = resultExpr.Range @@ -12115,17 +13028,17 @@ let _fsyacc_reductions = lazy [| fun mBar -> [SynMatchClause(pat, guard, resultExpr, m, DebugPointAtTarget.Yes, { ArrowRange = Some mArrow; BarRange = mBar })], mLast ) -//# 4228 "src/Compiler/pars.fsy" +//# 4642 "src/Compiler/pars.fsy" : 'gentype_patternClauses)); -//# 12120 "pars.fs" +//# 13033 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_patternAndGuard in - let _2 = parseState.GetInput(2) :?> Range * SynExpr in + let _2 = parseState.GetInput(2) :?> range * SynExpr in let _4 = parseState.GetInput(4) :?> 'gentype_patternClauses in Microsoft.FSharp.Core.Operators.box ( ( -//# 4236 "src/Compiler/pars.fsy" +//# 4650 "src/Compiler/pars.fsy" let pat, guard = _1 let mArrow, resultExpr = _2 let mNextBar = rhs parseState 3 |> Some @@ -12134,16 +13047,16 @@ let _fsyacc_reductions = lazy [| fun mBar -> (SynMatchClause(pat, guard, resultExpr, m, DebugPointAtTarget.Yes, { ArrowRange = Some mArrow; BarRange = mBar }) :: clauses), mLast ) -//# 4236 "src/Compiler/pars.fsy" +//# 4650 "src/Compiler/pars.fsy" : 'gentype_patternClauses)); -//# 12139 "pars.fs" +//# 13052 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_patternAndGuard in let _4 = parseState.GetInput(4) :?> 'gentype_patternClauses in Microsoft.FSharp.Core.Operators.box ( ( -//# 4245 "src/Compiler/pars.fsy" +//# 4659 "src/Compiler/pars.fsy" let pat, guard = _1 let mNextBar = rhs parseState 3 |> Some let clauses, mLast = _4 mNextBar @@ -12152,17 +13065,17 @@ let _fsyacc_reductions = lazy [| fun _mBar -> (SynMatchClause(pat, guard, arbExpr ("patternClauses1", m.EndRange), m, DebugPointAtTarget.Yes, SynMatchClauseTrivia.Zero) :: clauses), mLast ) -//# 4245 "src/Compiler/pars.fsy" +//# 4659 "src/Compiler/pars.fsy" : 'gentype_patternClauses)); -//# 12157 "pars.fs" +//# 13070 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_patternAndGuard in - let _2 = parseState.GetInput(2) :?> Range * SynExpr in + let _2 = parseState.GetInput(2) :?> range * SynExpr in let _4 = parseState.GetInput(4) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4254 "src/Compiler/pars.fsy" +//# 4668 "src/Compiler/pars.fsy" let pat, guard = _1 let mArrow, resultExpr = _2 let mLast = rhs parseState 3 @@ -12170,83 +13083,83 @@ let _fsyacc_reductions = lazy [| fun mBar -> [SynMatchClause(pat, guard, resultExpr, m, DebugPointAtTarget.Yes, { ArrowRange = Some mArrow; BarRange = mBar })], mLast ) -//# 4254 "src/Compiler/pars.fsy" +//# 4668 "src/Compiler/pars.fsy" : 'gentype_patternClauses)); -//# 12175 "pars.fs" +//# 13088 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_patternAndGuard in - let _2 = parseState.GetInput(2) :?> Range * SynExpr in + let _2 = parseState.GetInput(2) :?> range * SynExpr in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4262 "src/Compiler/pars.fsy" +//# 4676 "src/Compiler/pars.fsy" let pat, guard = _1 let mArrow, resultExpr = _2 let m = unionRanges resultExpr.Range pat.Range fun mBar -> [SynMatchClause(pat, guard, resultExpr, m, DebugPointAtTarget.Yes, { ArrowRange = Some mArrow; BarRange = mBar })], m ) -//# 4262 "src/Compiler/pars.fsy" +//# 4676 "src/Compiler/pars.fsy" : 'gentype_patternClauses)); -//# 12192 "pars.fs" +//# 13105 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_patternAndGuard in let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4269 "src/Compiler/pars.fsy" +//# 4683 "src/Compiler/pars.fsy" let pat, guard = _1 let patm = pat.Range let m = guard |> Option.map (fun e -> unionRanges patm e.Range) |> Option.defaultValue patm fun mBar -> [SynMatchClause(pat, guard, arbExpr ("patternClauses2", m.EndRange), m, DebugPointAtTarget.Yes, { ArrowRange = None; BarRange = mBar })], m ) -//# 4269 "src/Compiler/pars.fsy" +//# 4683 "src/Compiler/pars.fsy" : 'gentype_patternClauses)); -//# 12208 "pars.fs" +//# 13121 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4277 "src/Compiler/pars.fsy" +//# 4691 "src/Compiler/pars.fsy" Some _2 ) -//# 4277 "src/Compiler/pars.fsy" +//# 4691 "src/Compiler/pars.fsy" : 'gentype_patternGuard)); -//# 12219 "pars.fs" +//# 13132 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4280 "src/Compiler/pars.fsy" +//# 4694 "src/Compiler/pars.fsy" None ) -//# 4280 "src/Compiler/pars.fsy" +//# 4694 "src/Compiler/pars.fsy" : 'gentype_patternGuard)); -//# 12229 "pars.fs" +//# 13142 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExprBlockR in Microsoft.FSharp.Core.Operators.box ( ( -//# 4284 "src/Compiler/pars.fsy" +//# 4698 "src/Compiler/pars.fsy" let mArrow = rhs parseState 1 let expr = _2 mArrow mArrow, expr ) -//# 4284 "src/Compiler/pars.fsy" - : Range * SynExpr)); -//# 12242 "pars.fs" +//# 4698 "src/Compiler/pars.fsy" + : range * SynExpr)); +//# 13155 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_ifExprThen in let _2 = parseState.GetInput(2) :?> 'gentype_ifExprElifs in Microsoft.FSharp.Core.Operators.box ( ( -//# 4290 "src/Compiler/pars.fsy" +//# 4704 "src/Compiler/pars.fsy" let exprThen, mThen = _1 let mElse, elseExpr = _2 (fun exprGuard mIf isElif -> @@ -12257,101 +13170,96 @@ let _fsyacc_reductions = lazy [| let trivia = { IfKeyword = mIf; IsElif = isElif; ThenKeyword = mThen; ElseKeyword = mElse; IfToThenRange = mIfToThen } SynExpr.IfThenElse(exprGuard, exprThen, elseExpr, spIfToThen, false, mIfToEndOfLastBranch, trivia)) ) -//# 4290 "src/Compiler/pars.fsy" +//# 4704 "src/Compiler/pars.fsy" : 'gentype_ifExprCases)); -//# 12262 "pars.fs" +//# 13175 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4302 "src/Compiler/pars.fsy" +//# 4716 "src/Compiler/pars.fsy" _2, rhs parseState 1 ) -//# 4302 "src/Compiler/pars.fsy" +//# 4716 "src/Compiler/pars.fsy" : 'gentype_ifExprThen)); -//# 12273 "pars.fs" +//# 13186 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _3 = parseState.GetInput(3) :?> 'gentype_typedSequentialExpr in - let _4 = parseState.GetInput(4) :?> 'gentype_oblockend in + let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4305 "src/Compiler/pars.fsy" - _3, rhs parseState 1 +//# 4719 "src/Compiler/pars.fsy" + let mThen = rhs parseState 1 + arbExpr ("ifThen1", mThen.EndRange), mThen ) -//# 4305 "src/Compiler/pars.fsy" +//# 4719 "src/Compiler/pars.fsy" : 'gentype_ifExprThen)); -//# 12285 "pars.fs" +//# 13198 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _3 = parseState.GetInput(3) :?> 'gentype_typedSequentialExpr in - let _4 = parseState.GetInput(4) :?> 'gentype_recover in + let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4308 "src/Compiler/pars.fsy" - if not _4 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileThen()) - exprFromParseError _3, rhs parseState 1 +//# 4723 "src/Compiler/pars.fsy" + _2, rhs parseState 1 ) -//# 4308 "src/Compiler/pars.fsy" +//# 4723 "src/Compiler/pars.fsy" : 'gentype_ifExprThen)); -//# 12298 "pars.fs" +//# 13209 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4313 "src/Compiler/pars.fsy" - None, None +//# 4726 "src/Compiler/pars.fsy" + let mThen = rhs parseState 1 + arbExpr ("ifThen2", mThen.EndRange), mThen ) -//# 4313 "src/Compiler/pars.fsy" - : 'gentype_ifExprElifs)); -//# 12308 "pars.fs" +//# 4726 "src/Compiler/pars.fsy" + : 'gentype_ifExprThen)); +//# 13221 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4316 "src/Compiler/pars.fsy" - let mElse = rhs parseState 1 - Some mElse, Some _2 +//# 4731 "src/Compiler/pars.fsy" + None, None ) -//# 4316 "src/Compiler/pars.fsy" +//# 4731 "src/Compiler/pars.fsy" : 'gentype_ifExprElifs)); -//# 12320 "pars.fs" +//# 13231 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _3 = parseState.GetInput(3) :?> 'gentype_typedSequentialExpr in - let _4 = parseState.GetInput(4) :?> 'gentype_oblockend in + let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4320 "src/Compiler/pars.fsy" +//# 4734 "src/Compiler/pars.fsy" let mElse = rhs parseState 1 - Some mElse, Some _3 + Some mElse, Some _2 ) -//# 4320 "src/Compiler/pars.fsy" +//# 4734 "src/Compiler/pars.fsy" : 'gentype_ifExprElifs)); -//# 12333 "pars.fs" +//# 13243 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _3 = parseState.GetInput(3) :?> 'gentype_typedSequentialExpr in - let _4 = parseState.GetInput(4) :?> 'gentype_recover in + let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4324 "src/Compiler/pars.fsy" +//# 4738 "src/Compiler/pars.fsy" let mElse = rhs parseState 1 - if not _4 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileElse()) - Some mElse, Some(exprFromParseError _3) + Some mElse, Some _2 ) -//# 4324 "src/Compiler/pars.fsy" +//# 4738 "src/Compiler/pars.fsy" : 'gentype_ifExprElifs)); -//# 12347 "pars.fs" +//# 13255 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in let _3 = parseState.GetInput(3) :?> 'gentype_ifExprCases in Microsoft.FSharp.Core.Operators.box ( ( -//# 4329 "src/Compiler/pars.fsy" +//# 4742 "src/Compiler/pars.fsy" let mElif = rhs parseState 1 // verify if `ELIF` is not a merged token let length = mElif.EndColumn - mElif.StartColumn @@ -12362,642 +13270,720 @@ let _fsyacc_reductions = lazy [| else None, Some(_3 _2 mElif true) ) -//# 4329 "src/Compiler/pars.fsy" +//# 4742 "src/Compiler/pars.fsy" : 'gentype_ifExprElifs)); -//# 12367 "pars.fs" +//# 13275 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4340 "src/Compiler/pars.fsy" +//# 4753 "src/Compiler/pars.fsy" if not _3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileElif()) None, Some(exprFromParseError _2) ) -//# 4340 "src/Compiler/pars.fsy" +//# 4753 "src/Compiler/pars.fsy" : 'gentype_ifExprElifs)); -//# 12380 "pars.fs" +//# 13288 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _1 = parseState.GetInput(1) :?> 'gentype_tupleExpr in + let _1 = parseState.GetInput(1) :?> SynExpr list * range list in let _3 = parseState.GetInput(3) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4345 "src/Compiler/pars.fsy" +//# 4758 "src/Compiler/pars.fsy" let exprs, commas = _1 _3 :: exprs, (rhs parseState 2 :: commas) ) -//# 4345 "src/Compiler/pars.fsy" - : 'gentype_tupleExpr)); -//# 12393 "pars.fs" +//# 4758 "src/Compiler/pars.fsy" + : SynExpr list * range list)); +//# 13301 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _1 = parseState.GetInput(1) :?> 'gentype_tupleExpr in + let _1 = parseState.GetInput(1) :?> SynExpr list * range list in let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4349 "src/Compiler/pars.fsy" +//# 4762 "src/Compiler/pars.fsy" let commaRange = rhs parseState 2 if not _3 then reportParseErrorAt commaRange (FSComp.SR.parsExpectedExpressionAfterToken ()) let exprs, commas = _1 arbExpr ("tupleExpr1", commaRange.EndRange) :: exprs, commaRange :: commas ) -//# 4349 "src/Compiler/pars.fsy" - : 'gentype_tupleExpr)); -//# 12408 "pars.fs" +//# 4762 "src/Compiler/pars.fsy" + : SynExpr list * range list)); +//# 13316 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> SynExpr list * range list in + let _4 = parseState.GetInput(4) :?> SynExpr in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 4768 "src/Compiler/pars.fsy" + let exprs, commas = _1 + let mComma1 = rhs parseState 2 + let mComma2 = rhs parseState 3 + reportParseErrorAt mComma2 (FSComp.SR.parsExpectingExpression ()) + let expr = arbExpr ("tupleExpr2", mComma1.EndRange) + _4 :: expr :: exprs, (mComma2 :: mComma1 :: commas) + ) +//# 4768 "src/Compiler/pars.fsy" + : SynExpr list * range list)); +//# 13333 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> SynExpr list * range list in + let _4 = parseState.GetInput(4) :?> 'gentype_ends_coming_soon_or_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 4776 "src/Compiler/pars.fsy" + let exprs, commas = _1 + let mComma1 = rhs parseState 2 + let mComma2 = rhs parseState 3 + reportParseErrorAt mComma2 (FSComp.SR.parsExpectingExpression ()) + if not _4 then reportParseErrorAt mComma2 (FSComp.SR.parsExpectedExpressionAfterToken ()) + let expr1 = arbExpr ("tupleExpr3", mComma1.EndRange) + let expr2 = arbExpr ("tupleExpr4", mComma2.EndRange) + expr2 :: expr1 :: exprs, mComma2 :: mComma1 :: commas + ) +//# 4776 "src/Compiler/pars.fsy" + : SynExpr list * range list)); +//# 13352 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4355 "src/Compiler/pars.fsy" +//# 4786 "src/Compiler/pars.fsy" let commaRange = rhs parseState 2 if not _3 then reportParseErrorAt commaRange (FSComp.SR.parsExpectedExpressionAfterToken ()) - [arbExpr ("tupleExpr2", commaRange.EndRange); _1], [commaRange] + [arbExpr ("tupleExpr5", commaRange.EndRange); _1], [commaRange] ) -//# 4355 "src/Compiler/pars.fsy" - : 'gentype_tupleExpr)); -//# 12422 "pars.fs" +//# 4786 "src/Compiler/pars.fsy" + : SynExpr list * range list)); +//# 13366 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _3 = parseState.GetInput(3) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4360 "src/Compiler/pars.fsy" +//# 4791 "src/Compiler/pars.fsy" [_3; _1], [rhs parseState 2] ) -//# 4360 "src/Compiler/pars.fsy" - : 'gentype_tupleExpr)); -//# 12434 "pars.fs" +//# 4791 "src/Compiler/pars.fsy" + : SynExpr list * range list)); +//# 13378 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _2 = parseState.GetInput(2) :?> SynExpr in + let _1 = parseState.GetInput(1) :?> SynExpr in + let _4 = parseState.GetInput(4) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4363 "src/Compiler/pars.fsy" - let commaRange = rhs parseState 1 - reportParseErrorAt commaRange (FSComp.SR.parsExpectingExpressionInTuple ()) - [_2; arbExpr ("tupleExpr3", commaRange.StartRange)], [commaRange] +//# 4794 "src/Compiler/pars.fsy" + let mComma1 = rhs parseState 2 + let mComma2 = rhs parseState 3 + reportParseErrorAt mComma2 (FSComp.SR.parsExpectingExpression ()) + if not _4 then reportParseErrorAt mComma2 (FSComp.SR.parsExpectedExpressionAfterToken ()) + let expr1 = arbExpr ("tupleExpr6", mComma1.EndRange) + let expr2 = arbExpr ("tupleExpr7", mComma2.EndRange) + [expr2; expr1; _1], [mComma2; mComma1] ) -//# 4363 "src/Compiler/pars.fsy" - : 'gentype_tupleExpr)); -//# 12447 "pars.fs" +//# 4794 "src/Compiler/pars.fsy" + : SynExpr list * range list)); +//# 13396 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _2 = parseState.GetInput(2) :?> 'gentype_ends_coming_soon_or_recover in + let _1 = parseState.GetInput(1) :?> SynExpr in + let _4 = parseState.GetInput(4) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4368 "src/Compiler/pars.fsy" - let commaRange = rhs parseState 1 - if not _2 then reportParseErrorAt commaRange (FSComp.SR.parsExpectedExpressionAfterToken ()) - [arbExpr ("tupleExpr4", commaRange.EndRange); arbExpr ("tupleExpr5", commaRange.StartRange)], [commaRange] +//# 4803 "src/Compiler/pars.fsy" + let mComma1 = rhs parseState 2 + let mComma2 = rhs parseState 3 + reportParseErrorAt mComma2 (FSComp.SR.parsExpectingExpression ()) + let expr = arbExpr ("tupleExpr8", mComma1.EndRange) + [_4; expr; _1], [mComma2; mComma1] ) -//# 4368 "src/Compiler/pars.fsy" - : 'gentype_tupleExpr)); -//# 12460 "pars.fs" +//# 4803 "src/Compiler/pars.fsy" + : SynExpr list * range list)); +//# 13412 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4374 "src/Compiler/pars.fsy" +//# 4811 "src/Compiler/pars.fsy" if _1 <> "^" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsInvalidPrefixOperator()) let m = (rhs2 parseState 1 2) SynExpr.IndexFromEnd(_2, m) ) -//# 4374 "src/Compiler/pars.fsy" +//# 4811 "src/Compiler/pars.fsy" : SynExpr)); -//# 12474 "pars.fs" +//# 13426 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4379 "src/Compiler/pars.fsy" +//# 4816 "src/Compiler/pars.fsy" mkSynPrefix (rhs parseState 1) (unionRanges (rhs parseState 1) _2.Range) "~-" _2 ) -//# 4379 "src/Compiler/pars.fsy" +//# 4816 "src/Compiler/pars.fsy" : SynExpr)); -//# 12485 "pars.fs" +//# 13437 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4382 "src/Compiler/pars.fsy" +//# 4819 "src/Compiler/pars.fsy" if not (IsValidPrefixOperatorUse _1) then reportParseErrorAt _2.Range (FSComp.SR.parsInvalidPrefixOperator()) mkSynPrefix (rhs parseState 1) (unionRanges (rhs parseState 1) _2.Range) ("~" + (_1)) _2 ) -//# 4382 "src/Compiler/pars.fsy" +//# 4819 "src/Compiler/pars.fsy" : SynExpr)); -//# 12498 "pars.fs" +//# 13450 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4386 "src/Compiler/pars.fsy" +//# 4823 "src/Compiler/pars.fsy" if not (IsValidPrefixOperatorUse _1) then reportParseErrorAt _2.Range (FSComp.SR.parsInvalidPrefixOperator()) mkSynPrefix (rhs parseState 1) (unionRanges (rhs parseState 1) _2.Range) ("~" + (_1)) _2 ) -//# 4386 "src/Compiler/pars.fsy" +//# 4823 "src/Compiler/pars.fsy" : SynExpr)); -//# 12511 "pars.fs" +//# 13463 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4390 "src/Compiler/pars.fsy" +//# 4827 "src/Compiler/pars.fsy" if not (IsValidPrefixOperatorUse _1) then reportParseErrorAt _2.Range (FSComp.SR.parsInvalidPrefixOperator()) mkSynPrefix (rhs parseState 1) (unionRanges (rhs parseState 1) _2.Range) ("~" + (_1)) _2 ) -//# 4390 "src/Compiler/pars.fsy" +//# 4827 "src/Compiler/pars.fsy" : SynExpr)); -//# 12524 "pars.fs" +//# 13476 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4394 "src/Compiler/pars.fsy" +//# 4831 "src/Compiler/pars.fsy" SynExpr.AddressOf(true, _2, rhs parseState 1, unionRanges (rhs parseState 1) _2.Range) ) -//# 4394 "src/Compiler/pars.fsy" +//# 4831 "src/Compiler/pars.fsy" : SynExpr)); -//# 12535 "pars.fs" +//# 13487 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4397 "src/Compiler/pars.fsy" +//# 4834 "src/Compiler/pars.fsy" SynExpr.AddressOf(false, _2, rhs parseState 1, unionRanges (rhs parseState 1) _2.Range) ) -//# 4397 "src/Compiler/pars.fsy" +//# 4834 "src/Compiler/pars.fsy" : SynExpr)); -//# 12546 "pars.fs" +//# 13498 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _2 = parseState.GetInput(2) :?> 'gentype_atomTypeNonAtomicDeprecated in + let _2 = parseState.GetInput(2) :?> SynType in let _3 = parseState.GetInput(3) :?> 'gentype_opt_HIGH_PRECEDENCE_APP in let _4 = parseState.GetInput(4) :?> SynExpr in let _6 = parseState.GetInput(6) :?> 'gentype_atomicExprQualification in Microsoft.FSharp.Core.Operators.box ( ( -//# 4400 "src/Compiler/pars.fsy" +//# 4837 "src/Compiler/pars.fsy" errorR (Error (FSComp.SR.parsNewExprMemberAccess (), rhs parseState 6)) let newExpr = SynExpr.New(false, _2, _4, unionRanges (rhs parseState 1) _4.Range) _6 newExpr (lhs parseState) (rhs parseState 5) ) -//# 4400 "src/Compiler/pars.fsy" +//# 4837 "src/Compiler/pars.fsy" : SynExpr)); -//# 12562 "pars.fs" +//# 13514 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _2 = parseState.GetInput(2) :?> 'gentype_atomTypeNonAtomicDeprecated in + let _2 = parseState.GetInput(2) :?> SynType in let _3 = parseState.GetInput(3) :?> 'gentype_opt_HIGH_PRECEDENCE_APP in let _4 = parseState.GetInput(4) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4405 "src/Compiler/pars.fsy" +//# 4842 "src/Compiler/pars.fsy" SynExpr.New(false, _2, _4, unionRanges (rhs parseState 1) _4.Range) ) -//# 4405 "src/Compiler/pars.fsy" +//# 4842 "src/Compiler/pars.fsy" : SynExpr)); -//# 12575 "pars.fs" +//# 13527 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _2 = parseState.GetInput(2) :?> 'gentype_atomTypeNonAtomicDeprecated in + let _2 = parseState.GetInput(2) :?> SynType in let _3 = parseState.GetInput(3) :?> 'gentype_opt_HIGH_PRECEDENCE_APP in Microsoft.FSharp.Core.Operators.box ( ( -//# 4408 "src/Compiler/pars.fsy" +//# 4845 "src/Compiler/pars.fsy" SynExpr.New(false, _2, arbExpr ("minusExpr", (rhs parseState 4)), unionRanges (rhs parseState 1) (_2).Range) ) -//# 4408 "src/Compiler/pars.fsy" +//# 4845 "src/Compiler/pars.fsy" : SynExpr)); -//# 12587 "pars.fs" +//# 13539 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4411 "src/Compiler/pars.fsy" +//# 4848 "src/Compiler/pars.fsy" arbExpr ("minusExpr2", (rhs parseState 1)) ) -//# 4411 "src/Compiler/pars.fsy" +//# 4848 "src/Compiler/pars.fsy" : SynExpr)); -//# 12597 "pars.fs" +//# 13549 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4414 "src/Compiler/pars.fsy" +//# 4851 "src/Compiler/pars.fsy" SynExpr.InferredUpcast(_2, unionRanges (rhs parseState 1) _2.Range) ) -//# 4414 "src/Compiler/pars.fsy" +//# 4851 "src/Compiler/pars.fsy" : SynExpr)); -//# 12608 "pars.fs" +//# 13560 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4417 "src/Compiler/pars.fsy" +//# 4854 "src/Compiler/pars.fsy" SynExpr.InferredDowncast(_2, unionRanges (rhs parseState 1) _2.Range) ) -//# 4417 "src/Compiler/pars.fsy" +//# 4854 "src/Compiler/pars.fsy" : SynExpr)); -//# 12619 "pars.fs" +//# 13571 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4420 "src/Compiler/pars.fsy" +//# 4857 "src/Compiler/pars.fsy" _1 ) -//# 4420 "src/Compiler/pars.fsy" +//# 4857 "src/Compiler/pars.fsy" : SynExpr)); -//# 12630 "pars.fs" +//# 13582 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4424 "src/Compiler/pars.fsy" +//# 4861 "src/Compiler/pars.fsy" SynExpr.App(ExprAtomicFlag.NonAtomic, false, _1, _2, unionRanges _1.Range _2.Range) ) -//# 4424 "src/Compiler/pars.fsy" +//# 4861 "src/Compiler/pars.fsy" : SynExpr)); -//# 12642 "pars.fs" +//# 13594 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 4427 "src/Compiler/pars.fsy" +//# 4864 "src/Compiler/pars.fsy" let arg, _ = _1 arg ) -//# 4427 "src/Compiler/pars.fsy" +//# 4864 "src/Compiler/pars.fsy" : SynExpr)); -//# 12654 "pars.fs" +//# 13606 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in let _2 = parseState.GetInput(2) :?> SynExpr * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 4432 "src/Compiler/pars.fsy" +//# 4869 "src/Compiler/pars.fsy" let arg2, hpa2 = _2 if not (IsValidPrefixOperatorUse _1) then reportParseErrorAt arg2.Range (FSComp.SR.parsInvalidPrefixOperator()) if hpa2 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsSuccessiveArgsShouldBeSpacedOrTupled()) mkSynPrefix (rhs parseState 1) (unionRanges (rhs parseState 1) arg2.Range) ("~" + (_1)) arg2 ) -//# 4432 "src/Compiler/pars.fsy" +//# 4869 "src/Compiler/pars.fsy" : SynExpr)); -//# 12669 "pars.fs" +//# 13621 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 4438 "src/Compiler/pars.fsy" +//# 4875 "src/Compiler/pars.fsy" let arg, hpa = _1 if hpa then reportParseErrorAt arg.Range (FSComp.SR.parsSuccessiveArgsShouldBeSpacedOrTupled()) arg ) -//# 4438 "src/Compiler/pars.fsy" +//# 4875 "src/Compiler/pars.fsy" : SynExpr)); -//# 12682 "pars.fs" +//# 13634 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = parseState.GetInput(3) :?> SynExpr * bool in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 4881 "src/Compiler/pars.fsy" + let mUnderscore = rhs parseState 1 + let mDot = rhs parseState 2 + parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.AccessorFunctionShorthand (unionRanges mUnderscore mDot ) + let expr, hpa = _3 + let trivia: SynExprDotLambdaTrivia = { UnderscoreRange = mUnderscore ; DotRange = mDot } + SynExpr.DotLambda(expr, unionRanges mUnderscore expr.Range, trivia), false + ) +//# 4881 "src/Compiler/pars.fsy" + : SynExpr * bool)); +//# 13650 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = parseState.GetInput(3) :?> SynExpr in + let _4 = parseState.GetInput(4) :?> 'gentype_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 4889 "src/Compiler/pars.fsy" + let mUnderscore = rhs parseState 1 + let mDot = rhs parseState 2 + parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.AccessorFunctionShorthand (unionRanges mUnderscore mDot ) + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnderScoreDotLambdaNonAtomic()) + let expr = _3 + let trivia: SynExprDotLambdaTrivia = { UnderscoreRange = mUnderscore ; DotRange = mDot } + SynExpr.DotLambda(expr, unionRanges mUnderscore expr.Range, trivia), false + ) +//# 4889 "src/Compiler/pars.fsy" + : SynExpr * bool)); +//# 13668 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr * bool in let _3 = parseState.GetInput(3) :?> SynExpr * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 4444 "src/Compiler/pars.fsy" +//# 4898 "src/Compiler/pars.fsy" let arg1, _ = _1 let arg2, hpa = _3 SynExpr.App(ExprAtomicFlag.Atomic, false, arg1, arg2, unionRanges arg1.Range arg2.Range), hpa ) -//# 4444 "src/Compiler/pars.fsy" +//# 4898 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 12696 "pars.fs" +//# 13682 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr * bool in let _3 = parseState.GetInput(3) :?> SynExpr * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 4449 "src/Compiler/pars.fsy" +//# 4903 "src/Compiler/pars.fsy" let arg1, _ = _1 let arg2, _ = _3 SynExpr.App(ExprAtomicFlag.Atomic, false, arg1, arg2, unionRanges arg1.Range arg2.Range), true ) -//# 4449 "src/Compiler/pars.fsy" +//# 4903 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 12710 "pars.fs" +//# 13696 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr * bool in let _3 = parseState.GetInput(3) :?> range * range option * bool * SynType list * range list * range in Microsoft.FSharp.Core.Operators.box ( ( -//# 4454 "src/Compiler/pars.fsy" +//# 4908 "src/Compiler/pars.fsy" let arg1, _ = _1 let mLessThan, mGreaterThan, _, args, commas, mTypeArgs = _3 let mWholeExpr = unionRanges arg1.Range mTypeArgs SynExpr.TypeApp(arg1, mLessThan, args, commas, mGreaterThan, mTypeArgs, mWholeExpr), false ) -//# 4454 "src/Compiler/pars.fsy" +//# 4908 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 12725 "pars.fs" +//# 13711 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in let _2 = parseState.GetInput(2) :?> SynExpr * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 4460 "src/Compiler/pars.fsy" +//# 4914 "src/Compiler/pars.fsy" let arg2, hpa2 = _2 if not (IsValidPrefixOperatorUse _1) then reportParseErrorAt arg2.Range (FSComp.SR.parsInvalidPrefixOperator()) mkSynPrefixPrim (rhs parseState 1) (unionRanges (rhs parseState 1) arg2.Range) _1 arg2, hpa2 ) -//# 4460 "src/Compiler/pars.fsy" +//# 4914 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 12739 "pars.fs" +//# 13725 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> Ident in Microsoft.FSharp.Core.Operators.box ( ( -//# 4465 "src/Compiler/pars.fsy" +//# 4919 "src/Compiler/pars.fsy" let id = mkSynId (lhs parseState) (_2).idText let typar = SynTypar(id, TyparStaticReq.None, false) let lhsm = rhs2 parseState 1 2 SynExpr.Typar(typar, lhsm), false ) -//# 4465 "src/Compiler/pars.fsy" +//# 4919 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 12753 "pars.fs" +//# 13739 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4471 "src/Compiler/pars.fsy" +//# 4925 "src/Compiler/pars.fsy" arbExpr ("unfinished identifier", rhs parseState 1), false ) -//# 4471 "src/Compiler/pars.fsy" +//# 4925 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 12763 "pars.fs" +//# 13749 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr * bool in let _3 = parseState.GetInput(3) :?> 'gentype_atomicExprQualification in Microsoft.FSharp.Core.Operators.box ( ( -//# 4474 "src/Compiler/pars.fsy" +//# 4928 "src/Compiler/pars.fsy" let arg1, hpa1 = _1 _3 arg1 (lhs parseState) (rhs parseState 2), hpa1 ) -//# 4474 "src/Compiler/pars.fsy" +//# 4928 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 12776 "pars.fs" +//# 13762 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_atomicExprQualification in Microsoft.FSharp.Core.Operators.box ( ( -//# 4478 "src/Compiler/pars.fsy" +//# 4932 "src/Compiler/pars.fsy" let arg1 = SynExpr.Ident(ident("base", rhs parseState 1)) _3 arg1 (lhs parseState) (rhs parseState 2), false ) -//# 4478 "src/Compiler/pars.fsy" +//# 4932 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 12788 "pars.fs" +//# 13774 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_nameop in Microsoft.FSharp.Core.Operators.box ( ( -//# 4482 "src/Compiler/pars.fsy" +//# 4936 "src/Compiler/pars.fsy" let (SynIdent(ident, trivia)) = _2 SynExpr.LongIdent(true, SynLongIdent([ident], [], [trivia]), None, rhs parseState 2), false ) -//# 4482 "src/Compiler/pars.fsy" +//# 4936 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 12800 "pars.fs" +//# 13786 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr * bool in let _3 = parseState.GetInput(3) :?> 'gentype_dynamicArg in Microsoft.FSharp.Core.Operators.box ( ( -//# 4486 "src/Compiler/pars.fsy" +//# 4940 "src/Compiler/pars.fsy" let m = rhs2 parseState 1 3 let mQmark = rhs parseState 2 let arg1, hpa1 = _1 SynExpr.Dynamic(arg1, mQmark, _3, m), hpa1 ) -//# 4486 "src/Compiler/pars.fsy" +//# 4940 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 12815 "pars.fs" +//# 13801 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4492 "src/Compiler/pars.fsy" +//# 4946 "src/Compiler/pars.fsy" let m = rhs parseState 1 let ident = ident(MangledGlobalName, m) SynExpr.LongIdent(false, SynLongIdent([ident], [], [Some(IdentTrivia.OriginalNotation "global")]), None, m), false ) -//# 4492 "src/Compiler/pars.fsy" +//# 4946 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 12827 "pars.fs" +//# 13813 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_identExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4497 "src/Compiler/pars.fsy" +//# 4951 "src/Compiler/pars.fsy" _1, false ) -//# 4497 "src/Compiler/pars.fsy" +//# 4951 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 12838 "pars.fs" +//# 13824 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_listExprElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 4500 "src/Compiler/pars.fsy" +//# 4954 "src/Compiler/pars.fsy" _2 (lhs parseState), false ) -//# 4500 "src/Compiler/pars.fsy" +//# 4954 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 12849 "pars.fs" +//# 13835 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_listExprElements in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4503 "src/Compiler/pars.fsy" +//# 4957 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracket()) exprFromParseError (_2 (rhs2 parseState 1 2)), false ) -//# 4503 "src/Compiler/pars.fsy" +//# 4957 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 12862 "pars.fs" +//# 13848 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4507 "src/Compiler/pars.fsy" +//# 4961 "src/Compiler/pars.fsy" // silent recovery SynExpr.ArrayOrList(false, [ ], lhs parseState), false ) -//# 4507 "src/Compiler/pars.fsy" +//# 4961 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 12873 "pars.fs" +//# 13859 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4511 "src/Compiler/pars.fsy" +//# 4965 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracket()) // silent recovery exprFromParseError (SynExpr.ArrayOrList(false, [ ], rhs parseState 1)), false ) -//# 4511 "src/Compiler/pars.fsy" +//# 4965 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 12886 "pars.fs" +//# 13872 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _3 = parseState.GetInput(3) :?> 'gentype_tupleExpr in + let _3 = parseState.GetInput(3) :?> SynExpr list * range list in let _4 = parseState.GetInput(4) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 4516 "src/Compiler/pars.fsy" +//# 4970 "src/Compiler/pars.fsy" let exprs, commas = _3 let m = rhs2 parseState 1 4 SynExpr.Tuple(true, List.rev exprs, List.rev commas, m), false ) -//# 4516 "src/Compiler/pars.fsy" +//# 4970 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 12900 "pars.fs" +//# 13886 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _3 = parseState.GetInput(3) :?> 'gentype_tupleExpr in + let _3 = parseState.GetInput(3) :?> SynExpr list * range list in let _4 = parseState.GetInput(4) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4521 "src/Compiler/pars.fsy" +//# 4975 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnmatchedBracket()) let exprs, commas = _3 let m = (rhs parseState 1, exprs) ||> unionRangeWithListBy (fun e -> e.Range) SynExpr.Tuple(true, List.rev exprs, List.rev commas, m), false ) -//# 4521 "src/Compiler/pars.fsy" +//# 4975 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 12915 "pars.fs" +//# 13901 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4527 "src/Compiler/pars.fsy" +//# 4981 "src/Compiler/pars.fsy" _1, false ) -//# 4527 "src/Compiler/pars.fsy" +//# 4981 "src/Compiler/pars.fsy" : SynExpr * bool)); -//# 12926 "pars.fs" +//# 13912 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_identOrOp in Microsoft.FSharp.Core.Operators.box ( ( -//# 4531 "src/Compiler/pars.fsy" +//# 4985 "src/Compiler/pars.fsy" let idm = rhs parseState 1 (fun e mLhs mDot -> mkSynDot mDot mLhs e _1) ) -//# 4531 "src/Compiler/pars.fsy" +//# 4985 "src/Compiler/pars.fsy" : 'gentype_atomicExprQualification)); -//# 12938 "pars.fs" +//# 13924 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4535 "src/Compiler/pars.fsy" +//# 4989 "src/Compiler/pars.fsy" (fun e mLhs mDot -> reportParseErrorAt (rhs parseState 3) (FSComp.SR.nrGlobalUsedOnlyAsFirstName()) - let fixedLhsm = mkRange mLhs.FileName mLhs.Start mDot.End // previous mLhs is wrong after 'recover' + let fixedLhsm = withEnd mDot.End mLhs // previous mLhs is wrong after 'recover' mkSynDotMissing mDot fixedLhsm e) ) -//# 4535 "src/Compiler/pars.fsy" +//# 4989 "src/Compiler/pars.fsy" : 'gentype_atomicExprQualification)); -//# 12951 "pars.fs" +//# 13937 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4541 "src/Compiler/pars.fsy" +//# 4995 "src/Compiler/pars.fsy" (fun e mLhs mDot -> reportParseErrorAt mDot (FSComp.SR.parsMissingQualificationAfterDot()) - let fixedLhsm = mkRange mLhs.FileName mLhs.Start mDot.End // previous mLhs is wrong after 'recover' + let fixedLhsm = withEnd mDot.End mLhs // previous mLhs is wrong after 'recover' mkSynDotMissing mDot fixedLhsm e) ) -//# 4541 "src/Compiler/pars.fsy" +//# 4995 "src/Compiler/pars.fsy" : 'gentype_atomicExprQualification)); -//# 12964 "pars.fs" +//# 13950 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4546 "src/Compiler/pars.fsy" +//# 5000 "src/Compiler/pars.fsy" (fun e mLhs mDot -> reportParseErrorAt mDot (FSComp.SR.parsMissingQualificationAfterDot()) - let fixedLhsm = mkRange mLhs.FileName mLhs.Start mDot.End // previous mLhs is wrong after 'recover' + let fixedLhsm = withEnd mDot.End mLhs // previous mLhs is wrong after 'recover' // Include 'e' in the returned expression but throw it away mkSynDotMissing mDot fixedLhsm e) ) -//# 4546 "src/Compiler/pars.fsy" +//# 5000 "src/Compiler/pars.fsy" : 'gentype_atomicExprQualification)); -//# 12979 "pars.fs" +//# 13965 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_rparen in let _5 = parseState.GetInput(5) :?> int32 * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 4552 "src/Compiler/pars.fsy" +//# 5006 "src/Compiler/pars.fsy" (fun e mLhs mDot -> if parseState.LexBuffer.ReportLibraryOnlyFeatures then libraryOnlyError(lhs parseState) SynExpr.LibraryOnlyUnionCaseFieldGet(e, mkSynCaseName mLhs opNameCons, (fst _5), mLhs)) ) -//# 4552 "src/Compiler/pars.fsy" +//# 5006 "src/Compiler/pars.fsy" : 'gentype_atomicExprQualification)); -//# 12993 "pars.fs" +//# 13979 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in let _3 = parseState.GetInput(3) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 4557 "src/Compiler/pars.fsy" +//# 5011 "src/Compiler/pars.fsy" let lpr = rhs parseState 1 let rpr = rhs parseState 3 (fun e mLhs mDot -> @@ -13013,219 +13999,219 @@ let _fsyacc_reductions = lazy [| mlCompatWarning (FSComp.SR.parsParenFormIsForML()) (lhs parseState) mkSynDotParenGet mLhs mDot e _2) ) -//# 4557 "src/Compiler/pars.fsy" +//# 5011 "src/Compiler/pars.fsy" : 'gentype_atomicExprQualification)); -//# 13018 "pars.fs" +//# 14004 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4573 "src/Compiler/pars.fsy" +//# 5027 "src/Compiler/pars.fsy" (fun e mLhs mDot -> mkSynDotBrackGet mLhs mDot e _2) ) -//# 4573 "src/Compiler/pars.fsy" +//# 5027 "src/Compiler/pars.fsy" : 'gentype_atomicExprQualification)); -//# 13029 "pars.fs" +//# 14015 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4576 "src/Compiler/pars.fsy" +//# 5030 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracket()) (fun e mLhs mDot -> exprFromParseError (mkSynDotBrackGet mLhs mDot e _2)) ) -//# 4576 "src/Compiler/pars.fsy" +//# 5030 "src/Compiler/pars.fsy" : 'gentype_atomicExprQualification)); -//# 13042 "pars.fs" +//# 14028 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4580 "src/Compiler/pars.fsy" +//# 5034 "src/Compiler/pars.fsy" let mArg = rhs2 parseState 1 3 (fun e mLhs mDot -> mkSynDotBrackGet mLhs mDot e (arbExpr ("indexerExpr1", mArg))) ) -//# 4580 "src/Compiler/pars.fsy" +//# 5034 "src/Compiler/pars.fsy" : 'gentype_atomicExprQualification)); -//# 13053 "pars.fs" +//# 14039 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4584 "src/Compiler/pars.fsy" +//# 5038 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracket()) let mArg = (rhs parseState 1).EndRange (fun e mLhs mDot -> exprFromParseError (mkSynDotBrackGet mLhs mDot e (arbExpr ("indexerExpr2", mArg)))) ) -//# 4584 "src/Compiler/pars.fsy" +//# 5038 "src/Compiler/pars.fsy" : 'gentype_atomicExprQualification)); -//# 13066 "pars.fs" +//# 14052 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_constant in Microsoft.FSharp.Core.Operators.box ( ( -//# 4591 "src/Compiler/pars.fsy" +//# 5045 "src/Compiler/pars.fsy" SynExpr.Const(fst _1, snd _1) ) -//# 4591 "src/Compiler/pars.fsy" +//# 5045 "src/Compiler/pars.fsy" : SynExpr)); -//# 13077 "pars.fs" +//# 14063 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_parenExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4594 "src/Compiler/pars.fsy" +//# 5048 "src/Compiler/pars.fsy" _1 ) -//# 4594 "src/Compiler/pars.fsy" +//# 5048 "src/Compiler/pars.fsy" : SynExpr)); -//# 13088 "pars.fs" +//# 14074 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_braceExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4597 "src/Compiler/pars.fsy" +//# 5051 "src/Compiler/pars.fsy" _1 ) -//# 4597 "src/Compiler/pars.fsy" +//# 5051 "src/Compiler/pars.fsy" : SynExpr)); -//# 13099 "pars.fs" +//# 14085 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_braceBarExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4600 "src/Compiler/pars.fsy" +//# 5054 "src/Compiler/pars.fsy" _1 ) -//# 4600 "src/Compiler/pars.fsy" +//# 5054 "src/Compiler/pars.fsy" : SynExpr)); -//# 13110 "pars.fs" +//# 14096 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_interpolatedString in Microsoft.FSharp.Core.Operators.box ( ( -//# 4603 "src/Compiler/pars.fsy" +//# 5057 "src/Compiler/pars.fsy" let parts, synStringKind = _1 SynExpr.InterpolatedString(parts, synStringKind, rhs parseState 1) ) -//# 4603 "src/Compiler/pars.fsy" +//# 5057 "src/Compiler/pars.fsy" : SynExpr)); -//# 13122 "pars.fs" +//# 14108 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4607 "src/Compiler/pars.fsy" +//# 5061 "src/Compiler/pars.fsy" SynExpr.Null(lhs parseState) ) -//# 4607 "src/Compiler/pars.fsy" +//# 5061 "src/Compiler/pars.fsy" : SynExpr)); -//# 13132 "pars.fs" +//# 14118 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4610 "src/Compiler/pars.fsy" +//# 5064 "src/Compiler/pars.fsy" SynExpr.Const(SynConst.Bool false, lhs parseState) ) -//# 4610 "src/Compiler/pars.fsy" +//# 5064 "src/Compiler/pars.fsy" : SynExpr)); -//# 13142 "pars.fs" +//# 14128 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4613 "src/Compiler/pars.fsy" +//# 5067 "src/Compiler/pars.fsy" SynExpr.Const(SynConst.Bool true, lhs parseState) ) -//# 4613 "src/Compiler/pars.fsy" +//# 5067 "src/Compiler/pars.fsy" : SynExpr)); -//# 13152 "pars.fs" +//# 14138 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_quoteExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4616 "src/Compiler/pars.fsy" +//# 5070 "src/Compiler/pars.fsy" _1 ) -//# 4616 "src/Compiler/pars.fsy" +//# 5070 "src/Compiler/pars.fsy" : SynExpr)); -//# 13163 "pars.fs" +//# 14149 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_arrayExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4619 "src/Compiler/pars.fsy" +//# 5073 "src/Compiler/pars.fsy" _1 ) -//# 4619 "src/Compiler/pars.fsy" +//# 5073 "src/Compiler/pars.fsy" : SynExpr)); -//# 13174 "pars.fs" +//# 14160 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_beginEndExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4622 "src/Compiler/pars.fsy" +//# 5076 "src/Compiler/pars.fsy" _1 ) -//# 4622 "src/Compiler/pars.fsy" +//# 5076 "src/Compiler/pars.fsy" : SynExpr)); -//# 13185 "pars.fs" +//# 14171 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4626 "src/Compiler/pars.fsy" +//# 5080 "src/Compiler/pars.fsy" SynExpr.Paren(_2, rhs parseState 1, Some(rhs parseState 3), rhs2 parseState 1 3) ) -//# 4626 "src/Compiler/pars.fsy" +//# 5080 "src/Compiler/pars.fsy" : 'gentype_beginEndExpr)); -//# 13196 "pars.fs" +//# 14182 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4629 "src/Compiler/pars.fsy" +//# 5083 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBegin()); exprFromParseError _2 ) -//# 4629 "src/Compiler/pars.fsy" +//# 5083 "src/Compiler/pars.fsy" : 'gentype_beginEndExpr)); -//# 13208 "pars.fs" +//# 14194 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4632 "src/Compiler/pars.fsy" +//# 5086 "src/Compiler/pars.fsy" (* silent recovery *) arbExpr ("beginEndExpr", (lhs parseState)) ) -//# 4632 "src/Compiler/pars.fsy" +//# 5086 "src/Compiler/pars.fsy" : 'gentype_beginEndExpr)); -//# 13218 "pars.fs" +//# 14204 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4635 "src/Compiler/pars.fsy" +//# 5089 "src/Compiler/pars.fsy" mkSynUnit (lhs parseState) ) -//# 4635 "src/Compiler/pars.fsy" +//# 5089 "src/Compiler/pars.fsy" : 'gentype_beginEndExpr)); -//# 13228 "pars.fs" +//# 14214 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string * bool in let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in @@ -13233,13 +14219,13 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4639 "src/Compiler/pars.fsy" +//# 5093 "src/Compiler/pars.fsy" if _1 <> _3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsMismatchedQuote(fst _1)) (SynExpr.Quote(mkSynIdGet (lhs parseState) (CompileOpName (fst _1)), snd _1, _2, false, lhs parseState)) ) -//# 4639 "src/Compiler/pars.fsy" +//# 5093 "src/Compiler/pars.fsy" : 'gentype_quoteExpr)); -//# 13242 "pars.fs" +//# 14228 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string * bool in let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExpr in @@ -13247,196 +14233,219 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4643 "src/Compiler/pars.fsy" +//# 5097 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatched(fst _1)) let mExpr = rhs2 parseState 1 2 exprFromParseError (SynExpr.Quote(mkSynIdGet (lhs parseState) (CompileOpName (fst _1)), snd _1, _2, false, mExpr)) ) -//# 4643 "src/Compiler/pars.fsy" +//# 5097 "src/Compiler/pars.fsy" : 'gentype_quoteExpr)); -//# 13257 "pars.fs" +//# 14243 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string * bool in let _3 = parseState.GetInput(3) :?> string * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 4648 "src/Compiler/pars.fsy" +//# 5102 "src/Compiler/pars.fsy" (* silent recovery *) SynExpr.Quote(mkSynIdGet (lhs parseState) (CompileOpName (fst _1)), snd _1, arbExpr ("quoteExpr", (rhs parseState 2)), false, lhs parseState) ) -//# 4648 "src/Compiler/pars.fsy" +//# 5102 "src/Compiler/pars.fsy" : 'gentype_quoteExpr)); -//# 13269 "pars.fs" +//# 14255 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string * bool in let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4651 "src/Compiler/pars.fsy" +//# 5105 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatched(fst _1)) exprFromParseError (SynExpr.Quote(mkSynIdGet (lhs parseState) (CompileOpName (fst _1)), snd _1, arbExpr ("quoteExpr2", (rhs parseState 1).EndRange), false, rhs parseState 1)) ) -//# 4651 "src/Compiler/pars.fsy" +//# 5105 "src/Compiler/pars.fsy" : 'gentype_quoteExpr)); -//# 13282 "pars.fs" +//# 14268 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_arrayExprElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 4656 "src/Compiler/pars.fsy" +//# 5110 "src/Compiler/pars.fsy" _2 (lhs parseState) ) -//# 4656 "src/Compiler/pars.fsy" +//# 5110 "src/Compiler/pars.fsy" : 'gentype_arrayExpr)); -//# 13293 "pars.fs" +//# 14279 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_arrayExprElements in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4659 "src/Compiler/pars.fsy" +//# 5113 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracketBar()) exprFromParseError (_2 (rhs2 parseState 1 2)) ) -//# 4659 "src/Compiler/pars.fsy" +//# 5113 "src/Compiler/pars.fsy" : 'gentype_arrayExpr)); -//# 13306 "pars.fs" +//# 14292 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4663 "src/Compiler/pars.fsy" +//# 5117 "src/Compiler/pars.fsy" (* silent recovery *) SynExpr.ArrayOrList(true, [ ], lhs parseState) ) -//# 4663 "src/Compiler/pars.fsy" +//# 5117 "src/Compiler/pars.fsy" : 'gentype_arrayExpr)); -//# 13316 "pars.fs" +//# 14302 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4666 "src/Compiler/pars.fsy" +//# 5120 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracketBar()) (* silent recovery *) exprFromParseError (SynExpr.ArrayOrList(true, [ ], rhs parseState 1)) ) -//# 4666 "src/Compiler/pars.fsy" +//# 5120 "src/Compiler/pars.fsy" : 'gentype_arrayExpr)); -//# 13329 "pars.fs" +//# 14315 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 4672 "src/Compiler/pars.fsy" +//# 5126 "src/Compiler/pars.fsy" SynExpr.Const(SynConst.Unit, (rhs2 parseState 1 2)) ) -//# 4672 "src/Compiler/pars.fsy" +//# 5126 "src/Compiler/pars.fsy" : 'gentype_parenExpr)); -//# 13340 "pars.fs" +//# 14326 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_parenExprBody in let _3 = parseState.GetInput(3) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 4675 "src/Compiler/pars.fsy" +//# 5129 "src/Compiler/pars.fsy" let m = rhs2 parseState 1 3 SynExpr.Paren(_2 m, rhs parseState 1, Some(rhs parseState 3), m) ) -//# 4675 "src/Compiler/pars.fsy" +//# 5129 "src/Compiler/pars.fsy" : 'gentype_parenExpr)); -//# 13353 "pars.fs" +//# 14339 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_parenExprBody in let _3 = parseState.GetInput(3) :?> 'gentype_ends_other_than_rparen_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4679 "src/Compiler/pars.fsy" +//# 5133 "src/Compiler/pars.fsy" if not _3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen()) let mLhs = unionRangeWithPos (rhs parseState 1) (rhs parseState 2).End SynExpr.Paren(exprFromParseError (_2 mLhs), rhs parseState 1, None, mLhs) ) -//# 4679 "src/Compiler/pars.fsy" +//# 5133 "src/Compiler/pars.fsy" : 'gentype_parenExpr)); -//# 13367 "pars.fs" +//# 14353 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 4684 "src/Compiler/pars.fsy" +//# 5138 "src/Compiler/pars.fsy" // silent recovery SynExpr.Paren(arbExpr ("parenExpr1", (rhs parseState 1).EndRange), (rhs parseState 1), Some(rhs parseState 3), (rhs2 parseState 1 3)) ) -//# 4684 "src/Compiler/pars.fsy" +//# 5138 "src/Compiler/pars.fsy" : 'gentype_parenExpr)); -//# 13379 "pars.fs" +//# 14365 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4688 "src/Compiler/pars.fsy" +//# 5142 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen()) let mLhs = unionRangeWithPos (rhs parseState 1) (rhs parseState 2).Start arbExpr ("parenExpr2tcs", mLhs) ) -//# 4688 "src/Compiler/pars.fsy" +//# 5142 "src/Compiler/pars.fsy" : 'gentype_parenExpr)); -//# 13391 "pars.fs" +//# 14377 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4693 "src/Compiler/pars.fsy" +//# 5147 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen()) let mLhs = unionRangeWithPos (rhs parseState 1) (rhs parseState 2).Start arbExpr ("parenExpr2mcs", mLhs) ) -//# 4693 "src/Compiler/pars.fsy" +//# 5147 "src/Compiler/pars.fsy" : 'gentype_parenExpr)); -//# 13403 "pars.fs" +//# 14389 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4698 "src/Compiler/pars.fsy" +//# 5152 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen()) let mLhs = unionRangeWithPos (rhs parseState 1) (rhs parseState 2).Start arbExpr ("parenExpr2rbcs", mLhs) ) -//# 4698 "src/Compiler/pars.fsy" +//# 5152 "src/Compiler/pars.fsy" : 'gentype_parenExpr)); -//# 13415 "pars.fs" +//# 14401 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4703 "src/Compiler/pars.fsy" +//# 5157 "src/Compiler/pars.fsy" let lparenRange = (rhs parseState 1) reportParseErrorAt lparenRange (FSComp.SR.parsUnmatchedParen()) SynExpr.Paren(arbExpr ("parenExpr2obecs", lparenRange.EndRange), lparenRange, None, lparenRange) ) -//# 4703 "src/Compiler/pars.fsy" +//# 5157 "src/Compiler/pars.fsy" : 'gentype_parenExpr)); -//# 13427 "pars.fs" +//# 14413 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4708 "src/Compiler/pars.fsy" +//# 5162 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen()) arbExpr ("parenExpr2", (lhs parseState)) ) -//# 4708 "src/Compiler/pars.fsy" +//# 5162 "src/Compiler/pars.fsy" + : 'gentype_parenExpr)); +//# 14425 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = parseState.GetInput(3) :?> SynExpr in + let _4 = parseState.GetInput(4) :?> 'gentype_rparen in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 5173 "src/Compiler/pars.fsy" + let mComma = rhs parseState 2 + let mLparen = rhs parseState 1 + let mRparen = rhs parseState 3 + reportParseErrorAt mComma (FSComp.SR.parsExpectingExpression ()) + let errorExpr = arbExpr ("tupleExpr3", mComma.EndRange) + let mTuple = unionRanges mComma _3.Range + let tupleExpr = + match _3 with + | SynExpr.Tuple(false, exprs, commas, m) -> + SynExpr.Tuple(false, errorExpr :: exprs, mComma :: commas, mTuple) + | expr -> SynExpr.Tuple(false, [errorExpr; expr], [mComma], mTuple) + SynExpr.Paren(tupleExpr, mLparen, Some mRparen, rhs2 parseState 1 4) + ) +//# 5173 "src/Compiler/pars.fsy" : 'gentype_parenExpr)); -//# 13439 "pars.fs" +//# 14448 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typars in let _4 = parseState.GetInput(4) :?> 'gentype_classMemberSpfn in @@ -13445,83 +14454,83 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4720 "src/Compiler/pars.fsy" +//# 5188 "src/Compiler/pars.fsy" (fun m -> SynExpr.TraitCall(_1, _4, _6, m)) ) -//# 4720 "src/Compiler/pars.fsy" +//# 5188 "src/Compiler/pars.fsy" : 'gentype_parenExprBody)); -//# 13453 "pars.fs" +//# 14462 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typedSequentialExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4723 "src/Compiler/pars.fsy" +//# 5191 "src/Compiler/pars.fsy" (fun _m -> _1) ) -//# 4723 "src/Compiler/pars.fsy" +//# 5191 "src/Compiler/pars.fsy" : 'gentype_parenExprBody)); -//# 13464 "pars.fs" +//# 14473 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_inlineAssemblyExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4726 "src/Compiler/pars.fsy" +//# 5194 "src/Compiler/pars.fsy" _1 ) -//# 4726 "src/Compiler/pars.fsy" +//# 5194 "src/Compiler/pars.fsy" : 'gentype_parenExprBody)); -//# 13475 "pars.fs" +//# 14484 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynTypar in Microsoft.FSharp.Core.Operators.box ( ( -//# 4730 "src/Compiler/pars.fsy" +//# 5198 "src/Compiler/pars.fsy" SynType.Var(_1, rhs parseState 1) ) -//# 4730 "src/Compiler/pars.fsy" +//# 5198 "src/Compiler/pars.fsy" : 'gentype_typars)); -//# 13486 "pars.fs" +//# 14495 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typarAlts in let _3 = parseState.GetInput(3) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 4733 "src/Compiler/pars.fsy" +//# 5201 "src/Compiler/pars.fsy" let m = rhs2 parseState 1 3 SynType.Paren(_2, m) ) -//# 4733 "src/Compiler/pars.fsy" +//# 5201 "src/Compiler/pars.fsy" : 'gentype_typars)); -//# 13499 "pars.fs" +//# 14508 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typarAlts in let _3 = parseState.GetInput(3) :?> 'gentype_appType in Microsoft.FSharp.Core.Operators.box ( ( -//# 4738 "src/Compiler/pars.fsy" +//# 5206 "src/Compiler/pars.fsy" let mOr = rhs parseState 2 let m = unionRanges _1.Range _3.Range SynType.Or(_1, _3, m, { OrKeyword = mOr }) ) -//# 4738 "src/Compiler/pars.fsy" +//# 5206 "src/Compiler/pars.fsy" : 'gentype_typarAlts)); -//# 13513 "pars.fs" +//# 14522 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynTypar in Microsoft.FSharp.Core.Operators.box ( ( -//# 4743 "src/Compiler/pars.fsy" +//# 5211 "src/Compiler/pars.fsy" SynType.Var(_1, rhs parseState 1) ) -//# 4743 "src/Compiler/pars.fsy" +//# 5211 "src/Compiler/pars.fsy" : 'gentype_typarAlts)); -//# 13524 "pars.fs" +//# 14533 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> ParseHelpers.LexerContinuation in let _2 = parseState.GetInput(2) :?> 'gentype_braceExprBody in @@ -13529,13 +14538,13 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4747 "src/Compiler/pars.fsy" +//# 5215 "src/Compiler/pars.fsy" let m, r = _2 r (rhs2 parseState 1 3) ) -//# 4747 "src/Compiler/pars.fsy" +//# 5215 "src/Compiler/pars.fsy" : 'gentype_braceExpr)); -//# 13538 "pars.fs" +//# 14547 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> ParseHelpers.LexerContinuation in let _2 = parseState.GetInput(2) :?> 'gentype_braceExprBody in @@ -13543,192 +14552,194 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4751 "src/Compiler/pars.fsy" +//# 5219 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBrace()) let m, r = _2 // Note, we can't use 'exprFromParseError' because the extra syntax node interferes with some syntax-directed transformations for computation expressions r (unionRanges (rhs parseState 1) m) ) -//# 4751 "src/Compiler/pars.fsy" +//# 5219 "src/Compiler/pars.fsy" : 'gentype_braceExpr)); -//# 13554 "pars.fs" +//# 14563 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> ParseHelpers.LexerContinuation in let _3 = parseState.GetInput(3) :?> 'gentype_rbrace in Microsoft.FSharp.Core.Operators.box ( ( -//# 4757 "src/Compiler/pars.fsy" +//# 5225 "src/Compiler/pars.fsy" // silent recovery arbExpr ("braceExpr", rhs2 parseState 1 3) ) -//# 4757 "src/Compiler/pars.fsy" +//# 5225 "src/Compiler/pars.fsy" : 'gentype_braceExpr)); -//# 13567 "pars.fs" +//# 14576 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> ParseHelpers.LexerContinuation in let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4761 "src/Compiler/pars.fsy" +//# 5229 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBrace()) // Note, we can't use 'exprFromParseError' because the extra syntax node interferes with some syntax-directed transformations for computation expressions SynExpr.Record(None, None, [], rhs parseState 1) ) -//# 4761 "src/Compiler/pars.fsy" +//# 5229 "src/Compiler/pars.fsy" : 'gentype_braceExpr)); -//# 13581 "pars.fs" +//# 14590 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> ParseHelpers.LexerContinuation in let _2 = parseState.GetInput(2) :?> 'gentype_rbrace in Microsoft.FSharp.Core.Operators.box ( ( -//# 4766 "src/Compiler/pars.fsy" +//# 5234 "src/Compiler/pars.fsy" let m = rhs2 parseState 1 2 SynExpr.Record(None, None, [], m) ) -//# 4766 "src/Compiler/pars.fsy" +//# 5234 "src/Compiler/pars.fsy" : 'gentype_braceExpr)); -//# 13594 "pars.fs" +//# 14603 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_recdExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4771 "src/Compiler/pars.fsy" +//# 5239 "src/Compiler/pars.fsy" (lhs parseState), (fun m -> let a, b, c = _1 in SynExpr.Record(a, b, c, m)) ) -//# 4771 "src/Compiler/pars.fsy" +//# 5239 "src/Compiler/pars.fsy" : 'gentype_braceExprBody)); -//# 13605 "pars.fs" +//# 14614 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_objExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4774 "src/Compiler/pars.fsy" +//# 5242 "src/Compiler/pars.fsy" _1 ) -//# 4774 "src/Compiler/pars.fsy" +//# 5242 "src/Compiler/pars.fsy" : 'gentype_braceExprBody)); -//# 13616 "pars.fs" +//# 14625 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_computationExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4777 "src/Compiler/pars.fsy" +//# 5245 "src/Compiler/pars.fsy" _1 ) -//# 4777 "src/Compiler/pars.fsy" +//# 5245 "src/Compiler/pars.fsy" : 'gentype_braceExprBody)); -//# 13627 "pars.fs" +//# 14636 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_sequentialExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4781 "src/Compiler/pars.fsy" +//# 5249 "src/Compiler/pars.fsy" (fun mLhs -> SynExpr.ArrayOrListComputed(false, _1, mLhs)) ) -//# 4781 "src/Compiler/pars.fsy" +//# 5249 "src/Compiler/pars.fsy" : 'gentype_listExprElements)); -//# 13638 "pars.fs" +//# 14647 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4784 "src/Compiler/pars.fsy" +//# 5252 "src/Compiler/pars.fsy" (fun mLhs -> SynExpr.ArrayOrList(false, [ ], mLhs)) ) -//# 4784 "src/Compiler/pars.fsy" +//# 5252 "src/Compiler/pars.fsy" : 'gentype_listExprElements)); -//# 13648 "pars.fs" +//# 14657 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_sequentialExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4788 "src/Compiler/pars.fsy" +//# 5256 "src/Compiler/pars.fsy" (fun mLhs -> SynExpr.ArrayOrListComputed(true, _1, mLhs)) ) -//# 4788 "src/Compiler/pars.fsy" +//# 5256 "src/Compiler/pars.fsy" : 'gentype_arrayExprElements)); -//# 13659 "pars.fs" +//# 14668 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4791 "src/Compiler/pars.fsy" +//# 5259 "src/Compiler/pars.fsy" (fun mLhs -> SynExpr.ArrayOrList(true, [ ], mLhs)) ) -//# 4791 "src/Compiler/pars.fsy" +//# 5259 "src/Compiler/pars.fsy" : 'gentype_arrayExprElements)); -//# 13669 "pars.fs" +//# 14678 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_sequentialExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4795 "src/Compiler/pars.fsy" +//# 5263 "src/Compiler/pars.fsy" _1.Range, (fun mLhs -> SynExpr.ComputationExpr(false, _1, mLhs)) ) -//# 4795 "src/Compiler/pars.fsy" +//# 5263 "src/Compiler/pars.fsy" : 'gentype_computationExpr)); -//# 13680 "pars.fs" +//# 14689 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typedSequentialExprBlockR in Microsoft.FSharp.Core.Operators.box ( ( -//# 4799 "src/Compiler/pars.fsy" +//# 5267 "src/Compiler/pars.fsy" let mArrow = rhs parseState 1 let expr = _2 mArrow SynExpr.YieldOrReturn((true, false), expr, unionRanges mArrow expr.Range) ) -//# 4799 "src/Compiler/pars.fsy" +//# 5267 "src/Compiler/pars.fsy" : 'gentype_arrowThenExprR)); -//# 13693 "pars.fs" +//# 14702 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in let _3 = parseState.GetInput(3) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4805 "src/Compiler/pars.fsy" - (_1, _3, true, DebugPointAtInOrTo.Yes(rhs parseState 2)) +//# 5273 "src/Compiler/pars.fsy" + _1, _3, true, DebugPointAtInOrTo.Yes(rhs parseState 2) ) -//# 4805 "src/Compiler/pars.fsy" +//# 5273 "src/Compiler/pars.fsy" : 'gentype_forLoopBinder)); -//# 13705 "pars.fs" +//# 14714 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4808 "src/Compiler/pars.fsy" - if not _3 then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectedExpressionAfterToken()) - (_1, arbExpr ("forLoopBinder", (rhs parseState 2)), false, DebugPointAtInOrTo.Yes(rhs parseState 2)) +//# 5276 "src/Compiler/pars.fsy" + let mIn = rhs parseState 2 + if not _3 then reportParseErrorAt mIn (FSComp.SR.parsExpectedExpressionAfterToken ()) + _1, arbExpr ("forLoopBinder1", mIn.EndRange), false, DebugPointAtInOrTo.Yes mIn ) -//# 4808 "src/Compiler/pars.fsy" +//# 5276 "src/Compiler/pars.fsy" : 'gentype_forLoopBinder)); -//# 13718 "pars.fs" +//# 14728 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in let _2 = parseState.GetInput(2) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4812 "src/Compiler/pars.fsy" - if not _2 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsInOrEqualExpected()) - (_1, arbExpr ("forLoopBinder2", (rhs parseState 1).EndRange), false, DebugPointAtInOrTo.Yes(rhs parseState 2)) +//# 5281 "src/Compiler/pars.fsy" + let mPat = rhs parseState 1 + if not _2 then reportParseErrorAt mPat (FSComp.SR.parsInOrEqualExpected ()) + _1, arbExpr ("forLoopBinder2", mPat.EndRange), false, DebugPointAtInOrTo.Yes(rhs parseState 2) ) -//# 4812 "src/Compiler/pars.fsy" +//# 5281 "src/Compiler/pars.fsy" : 'gentype_forLoopBinder)); -//# 13731 "pars.fs" +//# 14742 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_parenPattern in let _3 = parseState.GetInput(3) :?> SynExpr in @@ -13737,34 +14748,34 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4817 "src/Compiler/pars.fsy" +//# 5287 "src/Compiler/pars.fsy" let mEquals = rhs parseState 2 let spTo = DebugPointAtInOrTo.Yes(rhs parseState 4) idOfPat parseState (rhs parseState 1) _1, Some mEquals, _3, _4, _5, spTo ) -//# 4817 "src/Compiler/pars.fsy" +//# 5287 "src/Compiler/pars.fsy" : 'gentype_forLoopRange)); -//# 13747 "pars.fs" +//# 14758 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4822 "src/Compiler/pars.fsy" +//# 5292 "src/Compiler/pars.fsy" true ) -//# 4822 "src/Compiler/pars.fsy" +//# 5292 "src/Compiler/pars.fsy" : 'gentype_forLoopDirection)); -//# 13757 "pars.fs" +//# 14768 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4824 "src/Compiler/pars.fsy" +//# 5294 "src/Compiler/pars.fsy" false ) -//# 4824 "src/Compiler/pars.fsy" +//# 5294 "src/Compiler/pars.fsy" : 'gentype_forLoopDirection)); -//# 13767 "pars.fs" +//# 14778 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_string in let _3 = parseState.GetInput(3) :?> 'gentype_opt_inlineAssemblyTypeArg in @@ -13773,69 +14784,69 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4828 "src/Compiler/pars.fsy" +//# 5298 "src/Compiler/pars.fsy" if parseState.LexBuffer.ReportLibraryOnlyFeatures then libraryOnlyWarning (lhs parseState) let (s, _), sm = _2, rhs parseState 2 (fun m -> - let ilInstrs = ParseAssemblyCodeInstructions s parseState.LexBuffer.ReportLibraryOnlyFeatures parseState.LexBuffer.LanguageVersion sm + let ilInstrs = ParseAssemblyCodeInstructions s parseState.LexBuffer.ReportLibraryOnlyFeatures parseState.LexBuffer.LanguageVersion parseState.LexBuffer.StrictIndentation sm SynExpr.LibraryOnlyILAssembly(box ilInstrs, _3, List.rev _4, _5, m)) ) -//# 4828 "src/Compiler/pars.fsy" +//# 5298 "src/Compiler/pars.fsy" : 'gentype_inlineAssemblyExpr)); -//# 13785 "pars.fs" +//# 14796 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_optCurriedArgExprs in let _2 = parseState.GetInput(2) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4836 "src/Compiler/pars.fsy" +//# 5306 "src/Compiler/pars.fsy" _2 :: _1 ) -//# 4836 "src/Compiler/pars.fsy" +//# 5306 "src/Compiler/pars.fsy" : 'gentype_optCurriedArgExprs)); -//# 13797 "pars.fs" +//# 14808 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4839 "src/Compiler/pars.fsy" +//# 5309 "src/Compiler/pars.fsy" [] ) -//# 4839 "src/Compiler/pars.fsy" +//# 5309 "src/Compiler/pars.fsy" : 'gentype_optCurriedArgExprs)); -//# 13807 "pars.fs" +//# 14818 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4843 "src/Compiler/pars.fsy" +//# 5313 "src/Compiler/pars.fsy" None ) -//# 4843 "src/Compiler/pars.fsy" +//# 5313 "src/Compiler/pars.fsy" : 'gentype_opt_atomicExprAfterType)); -//# 13817 "pars.fs" +//# 14828 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4846 "src/Compiler/pars.fsy" +//# 5316 "src/Compiler/pars.fsy" Some(_1) ) -//# 4846 "src/Compiler/pars.fsy" +//# 5316 "src/Compiler/pars.fsy" : 'gentype_opt_atomicExprAfterType)); -//# 13828 "pars.fs" +//# 14839 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4850 "src/Compiler/pars.fsy" +//# 5320 "src/Compiler/pars.fsy" [] ) -//# 4850 "src/Compiler/pars.fsy" +//# 5320 "src/Compiler/pars.fsy" : 'gentype_opt_inlineAssemblyTypeArg)); -//# 13838 "pars.fs" +//# 14849 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typeKeyword in let _3 = parseState.GetInput(3) :?> SynType in @@ -13843,46 +14854,46 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4853 "src/Compiler/pars.fsy" +//# 5323 "src/Compiler/pars.fsy" [_3] ) -//# 4853 "src/Compiler/pars.fsy" +//# 5323 "src/Compiler/pars.fsy" : 'gentype_opt_inlineAssemblyTypeArg)); -//# 13851 "pars.fs" +//# 14862 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4857 "src/Compiler/pars.fsy" +//# 5327 "src/Compiler/pars.fsy" [] ) -//# 4857 "src/Compiler/pars.fsy" +//# 5327 "src/Compiler/pars.fsy" : 'gentype_optInlineAssemblyReturnTypes)); -//# 13861 "pars.fs" +//# 14872 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynType in Microsoft.FSharp.Core.Operators.box ( ( -//# 4860 "src/Compiler/pars.fsy" +//# 5330 "src/Compiler/pars.fsy" [_2] ) -//# 4860 "src/Compiler/pars.fsy" +//# 5330 "src/Compiler/pars.fsy" : 'gentype_optInlineAssemblyReturnTypes)); -//# 13872 "pars.fs" +//# 14883 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 4863 "src/Compiler/pars.fsy" +//# 5333 "src/Compiler/pars.fsy" [] ) -//# 4863 "src/Compiler/pars.fsy" +//# 5333 "src/Compiler/pars.fsy" : 'gentype_optInlineAssemblyReturnTypes)); -//# 13883 "pars.fs" +//# 14894 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _2 = parseState.GetInput(2) :?> 'gentype_atomTypeNonAtomicDeprecated in + let _2 = parseState.GetInput(2) :?> SynType in let _3 = parseState.GetInput(3) :?> 'gentype_opt_HIGH_PRECEDENCE_APP in let _4 = parseState.GetInput(4) :?> 'gentype_opt_atomicExprAfterType in let _5 = parseState.GetInput(5) :?> 'gentype_recdExprBindings in @@ -13890,7 +14901,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4867 "src/Compiler/pars.fsy" +//# 5337 "src/Compiler/pars.fsy" let arg = match _4 with None -> mkSynUnit (lhs parseState) | Some e -> e let l = List.rev _5 let dummyField = mkRecdField (SynLongIdent([], [], [])) // dummy identifier, it will be discarded @@ -13899,21 +14910,21 @@ let _fsyacc_reductions = lazy [| let bindings = List.tail l (Some(_2, arg, rhs2 parseState 2 4, inheritsSep, rhs parseState 1), None, bindings) ) -//# 4867 "src/Compiler/pars.fsy" +//# 5337 "src/Compiler/pars.fsy" : 'gentype_recdExpr)); -//# 13904 "pars.fs" +//# 14915 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_recdExprCore in Microsoft.FSharp.Core.Operators.box ( ( -//# 4876 "src/Compiler/pars.fsy" +//# 5346 "src/Compiler/pars.fsy" let a, b = _1 None, a, b ) -//# 4876 "src/Compiler/pars.fsy" +//# 5346 "src/Compiler/pars.fsy" : 'gentype_recdExpr)); -//# 13916 "pars.fs" +//# 14927 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _3 = parseState.GetInput(3) :?> SynExpr in @@ -13922,7 +14933,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4881 "src/Compiler/pars.fsy" +//# 5351 "src/Compiler/pars.fsy" match _1 with | LongOrSingleIdent(false, (SynLongIdent _ as f), None, m) -> let f = mkRecdField f @@ -13932,28 +14943,59 @@ let _fsyacc_reductions = lazy [| (None, l) | _ -> raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsFieldBinding()) ) -//# 4881 "src/Compiler/pars.fsy" +//# 5351 "src/Compiler/pars.fsy" : 'gentype_recdExprCore)); -//# 13937 "pars.fs" +//# 14948 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> SynExpr in + let _3 = parseState.GetInput(3) :?> 'gentype_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 5361 "src/Compiler/pars.fsy" + match _1 with + | LongOrSingleIdent(false, (SynLongIdent _ as f), None, m) -> + let f = mkRecdField f + let mEquals = rhs parseState 2 + let l = rebindRanges (f, Some mEquals, None) [] None + None, l + | _ -> raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsFieldBinding ()) + ) +//# 5361 "src/Compiler/pars.fsy" + : 'gentype_recdExprCore)); +//# 14966 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> SynExpr in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 5370 "src/Compiler/pars.fsy" + let mExpr = rhs parseState 1 + reportParseErrorAt mExpr (FSComp.SR.parsFieldBinding ()) + Some(_1, (mExpr.EndRange, None)), [] + ) +//# 5370 "src/Compiler/pars.fsy" + : 'gentype_recdExprCore)); +//# 14979 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4895 "src/Compiler/pars.fsy" +//# 5379 "src/Compiler/pars.fsy" let m = rhs parseState 1 reportParseErrorAt m (FSComp.SR.parsUnderscoreInvalidFieldName()) reportParseErrorAt m (FSComp.SR.parsFieldBinding()) let f = mkUnderscoreRecdField m (None, [ SynExprRecordField(f, None, None, None) ]) ) -//# 4895 "src/Compiler/pars.fsy" +//# 5379 "src/Compiler/pars.fsy" : 'gentype_recdExprCore)); -//# 13951 "pars.fs" +//# 14993 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4902 "src/Compiler/pars.fsy" +//# 5386 "src/Compiler/pars.fsy" let m = rhs parseState 1 reportParseErrorAt m (FSComp.SR.parsUnderscoreInvalidFieldName()) let f = mkUnderscoreRecdField m @@ -13961,9 +15003,9 @@ let _fsyacc_reductions = lazy [| reportParseErrorAt (rhs2 parseState 1 2) (FSComp.SR.parsFieldBinding()) (None, [ SynExprRecordField(f, Some mEquals, None, None) ]) ) -//# 4902 "src/Compiler/pars.fsy" +//# 5386 "src/Compiler/pars.fsy" : 'gentype_recdExprCore)); -//# 13966 "pars.fs" +//# 15008 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> SynExpr in let _4 = parseState.GetInput(4) :?> 'gentype_recdExprBindings in @@ -13971,7 +15013,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4911 "src/Compiler/pars.fsy" +//# 5395 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnderscoreInvalidFieldName()) let f = mkUnderscoreRecdField (rhs parseState 1) let mEquals = rhs parseState 2 @@ -13979,9 +15021,9 @@ let _fsyacc_reductions = lazy [| let l = rebindRanges (f, Some mEquals, Some _3) l _5 (None, l) ) -//# 4911 "src/Compiler/pars.fsy" +//# 5395 "src/Compiler/pars.fsy" : 'gentype_recdExprCore)); -//# 13984 "pars.fs" +//# 15026 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _3 = parseState.GetInput(3) :?> 'gentype_recdBinding in @@ -13990,26 +15032,26 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4920 "src/Compiler/pars.fsy" +//# 5404 "src/Compiler/pars.fsy" let l = List.rev _4 let l = rebindRanges _3 l _5 (Some(_1, (rhs parseState 2, None)), l) ) -//# 4920 "src/Compiler/pars.fsy" +//# 5404 "src/Compiler/pars.fsy" : 'gentype_recdExprCore)); -//# 14000 "pars.fs" +//# 15042 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _3 = parseState.GetInput(3) :?> 'gentype_opt_seps_recd in Microsoft.FSharp.Core.Operators.box ( ( -//# 4925 "src/Compiler/pars.fsy" +//# 5409 "src/Compiler/pars.fsy" (Some(_1, (rhs parseState 2, None)), []) ) -//# 4925 "src/Compiler/pars.fsy" +//# 5409 "src/Compiler/pars.fsy" : 'gentype_recdExprCore)); -//# 14012 "pars.fs" +//# 15054 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _3 = parseState.GetInput(3) :?> 'gentype_recdBinding in @@ -14018,99 +15060,99 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4928 "src/Compiler/pars.fsy" +//# 5412 "src/Compiler/pars.fsy" let l = List.rev _4 let l = rebindRanges _3 l _5 (Some(_1, (rhs parseState 2, None)), l) ) -//# 4928 "src/Compiler/pars.fsy" +//# 5412 "src/Compiler/pars.fsy" : 'gentype_recdExprCore)); -//# 14028 "pars.fs" +//# 15070 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_seps_recd in Microsoft.FSharp.Core.Operators.box ( ( -//# 4934 "src/Compiler/pars.fsy" +//# 5418 "src/Compiler/pars.fsy" Some _1 ) -//# 4934 "src/Compiler/pars.fsy" +//# 5418 "src/Compiler/pars.fsy" : 'gentype_opt_seps_recd)); -//# 14039 "pars.fs" +//# 15081 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4937 "src/Compiler/pars.fsy" +//# 5421 "src/Compiler/pars.fsy" None ) -//# 4937 "src/Compiler/pars.fsy" +//# 5421 "src/Compiler/pars.fsy" : 'gentype_opt_seps_recd)); -//# 14049 "pars.fs" +//# 15091 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4941 "src/Compiler/pars.fsy" +//# 5425 "src/Compiler/pars.fsy" (rhs parseState 1), None ) -//# 4941 "src/Compiler/pars.fsy" +//# 5425 "src/Compiler/pars.fsy" : 'gentype_seps_recd)); -//# 14059 "pars.fs" +//# 15101 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4944 "src/Compiler/pars.fsy" +//# 5428 "src/Compiler/pars.fsy" let m = (rhs parseState 1) m, Some m.End ) -//# 4944 "src/Compiler/pars.fsy" +//# 5428 "src/Compiler/pars.fsy" : 'gentype_seps_recd)); -//# 14070 "pars.fs" +//# 15112 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4948 "src/Compiler/pars.fsy" +//# 5432 "src/Compiler/pars.fsy" (rhs2 parseState 1 2), Some (rhs parseState 1).End ) -//# 4948 "src/Compiler/pars.fsy" +//# 5432 "src/Compiler/pars.fsy" : 'gentype_seps_recd)); -//# 14080 "pars.fs" +//# 15122 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4951 "src/Compiler/pars.fsy" +//# 5435 "src/Compiler/pars.fsy" (rhs2 parseState 1 2), Some (rhs parseState 2).End ) -//# 4951 "src/Compiler/pars.fsy" +//# 5435 "src/Compiler/pars.fsy" : 'gentype_seps_recd)); -//# 14090 "pars.fs" +//# 15132 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynLongIdent in Microsoft.FSharp.Core.Operators.box ( ( -//# 4957 "src/Compiler/pars.fsy" +//# 5441 "src/Compiler/pars.fsy" mkRecdField _1 ) -//# 4957 "src/Compiler/pars.fsy" +//# 5441 "src/Compiler/pars.fsy" : 'gentype_pathOrUnderscore)); -//# 14101 "pars.fs" +//# 15143 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4960 "src/Compiler/pars.fsy" +//# 5444 "src/Compiler/pars.fsy" let m = rhs parseState 1 reportParseErrorAt m (FSComp.SR.parsUnderscoreInvalidFieldName()) mkUnderscoreRecdField m ) -//# 4960 "src/Compiler/pars.fsy" +//# 5444 "src/Compiler/pars.fsy" : 'gentype_pathOrUnderscore)); -//# 14113 "pars.fs" +//# 15155 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_recdExprBindings in let _2 = parseState.GetInput(2) :?> 'gentype_seps_recd in @@ -14118,87 +15160,87 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 4966 "src/Compiler/pars.fsy" +//# 5450 "src/Compiler/pars.fsy" (_3, Some _2) :: _1 ) -//# 4966 "src/Compiler/pars.fsy" +//# 5450 "src/Compiler/pars.fsy" : 'gentype_recdExprBindings)); -//# 14126 "pars.fs" +//# 15168 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 4969 "src/Compiler/pars.fsy" +//# 5453 "src/Compiler/pars.fsy" [] ) -//# 4969 "src/Compiler/pars.fsy" +//# 5453 "src/Compiler/pars.fsy" : 'gentype_recdExprBindings)); -//# 14136 "pars.fs" +//# 15178 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_pathOrUnderscore in let _3 = parseState.GetInput(3) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 4973 "src/Compiler/pars.fsy" +//# 5457 "src/Compiler/pars.fsy" let mEquals = rhs parseState 2 (_1, Some mEquals, Some _3) ) -//# 4973 "src/Compiler/pars.fsy" +//# 5457 "src/Compiler/pars.fsy" : 'gentype_recdBinding)); -//# 14149 "pars.fs" +//# 15191 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_pathOrUnderscore in Microsoft.FSharp.Core.Operators.box ( ( -//# 4977 "src/Compiler/pars.fsy" +//# 5461 "src/Compiler/pars.fsy" let mEquals = rhs parseState 2 reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsFieldBinding()) (_1, Some mEquals, None) ) -//# 4977 "src/Compiler/pars.fsy" +//# 5461 "src/Compiler/pars.fsy" : 'gentype_recdBinding)); -//# 14162 "pars.fs" +//# 15204 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_pathOrUnderscore in let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4982 "src/Compiler/pars.fsy" +//# 5466 "src/Compiler/pars.fsy" let mEquals = rhs parseState 2 reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsFieldBinding()) (_1, Some mEquals, None) ) -//# 4982 "src/Compiler/pars.fsy" +//# 5466 "src/Compiler/pars.fsy" : 'gentype_recdBinding)); -//# 14176 "pars.fs" +//# 15218 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_pathOrUnderscore in Microsoft.FSharp.Core.Operators.box ( ( -//# 4987 "src/Compiler/pars.fsy" +//# 5471 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsFieldBinding()) (_1, None, None) ) -//# 4987 "src/Compiler/pars.fsy" +//# 5471 "src/Compiler/pars.fsy" : 'gentype_recdBinding)); -//# 14188 "pars.fs" +//# 15230 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_pathOrUnderscore in let _2 = parseState.GetInput(2) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 4991 "src/Compiler/pars.fsy" +//# 5475 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsFieldBinding()) (_1, None, None) ) -//# 4991 "src/Compiler/pars.fsy" +//# 5475 "src/Compiler/pars.fsy" : 'gentype_recdBinding)); -//# 14201 "pars.fs" +//# 15243 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_objExprBaseCall in let _2 = parseState.GetInput(2) :?> 'gentype_objExprBindings in @@ -14207,15 +15249,15 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5002 "src/Compiler/pars.fsy" +//# 5486 "src/Compiler/pars.fsy" let mNewExpr = rhs parseState 1 let fullRange = match _4 with [] -> (rhs parseState 1) | _ -> (rhs2 parseState 1 4) let mWithKwd, bindings, members = _2 fullRange, (fun m -> let (a, b) = _1 in SynExpr.ObjExpr(a, b, Some mWithKwd, bindings, members, _4, mNewExpr, m)) ) -//# 5002 "src/Compiler/pars.fsy" +//# 5486 "src/Compiler/pars.fsy" : 'gentype_objExpr)); -//# 14218 "pars.fs" +//# 15260 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_objExprBaseCall in let _2 = parseState.GetInput(2) :?> 'gentype_opt_OBLOCKSEP in @@ -14223,119 +15265,119 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5008 "src/Compiler/pars.fsy" +//# 5492 "src/Compiler/pars.fsy" let mNewExpr = rhs parseState 1 let fullRange = match _3 with [] -> (rhs parseState 1) | _ -> (rhs2 parseState 1 3) fullRange, (fun m -> let (a, b) = _1 in SynExpr.ObjExpr(a, b, None, [], [], _3, mNewExpr, m)) ) -//# 5008 "src/Compiler/pars.fsy" +//# 5492 "src/Compiler/pars.fsy" : 'gentype_objExpr)); -//# 14233 "pars.fs" +//# 15275 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _2 = parseState.GetInput(2) :?> 'gentype_atomTypeNonAtomicDeprecated in + let _2 = parseState.GetInput(2) :?> SynType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5013 "src/Compiler/pars.fsy" +//# 5497 "src/Compiler/pars.fsy" let mNewExpr = rhs parseState 1 (rhs2 parseState 1 2), (fun m -> let (a, b) = _2, None in SynExpr.ObjExpr(a, b, None, [], [], [], mNewExpr, m)) ) -//# 5013 "src/Compiler/pars.fsy" +//# 5497 "src/Compiler/pars.fsy" : 'gentype_objExpr)); -//# 14245 "pars.fs" +//# 15287 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _2 = parseState.GetInput(2) :?> 'gentype_atomTypeNonAtomicDeprecated in + let _2 = parseState.GetInput(2) :?> SynType in let _3 = parseState.GetInput(3) :?> 'gentype_opt_HIGH_PRECEDENCE_APP in let _4 = parseState.GetInput(4) :?> SynExpr in let _5 = parseState.GetInput(5) :?> 'gentype_baseSpec in Microsoft.FSharp.Core.Operators.box ( ( -//# 5018 "src/Compiler/pars.fsy" +//# 5502 "src/Compiler/pars.fsy" (_2, Some(_4, Some(_5))) ) -//# 5018 "src/Compiler/pars.fsy" +//# 5502 "src/Compiler/pars.fsy" : 'gentype_objExprBaseCall)); -//# 14259 "pars.fs" +//# 15301 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _2 = parseState.GetInput(2) :?> 'gentype_atomTypeNonAtomicDeprecated in + let _2 = parseState.GetInput(2) :?> SynType in let _3 = parseState.GetInput(3) :?> 'gentype_opt_HIGH_PRECEDENCE_APP in let _4 = parseState.GetInput(4) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 5021 "src/Compiler/pars.fsy" +//# 5505 "src/Compiler/pars.fsy" (_2, Some(_4, None)) ) -//# 5021 "src/Compiler/pars.fsy" +//# 5505 "src/Compiler/pars.fsy" : 'gentype_objExprBaseCall)); -//# 14272 "pars.fs" +//# 15314 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> - let _2 = parseState.GetInput(2) :?> 'gentype_atomTypeNonAtomicDeprecated in + let _2 = parseState.GetInput(2) :?> SynType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5024 "src/Compiler/pars.fsy" +//# 5508 "src/Compiler/pars.fsy" _2, None ) -//# 5024 "src/Compiler/pars.fsy" +//# 5508 "src/Compiler/pars.fsy" : 'gentype_objExprBaseCall)); -//# 14283 "pars.fs" +//# 15325 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_objExprBindings in Microsoft.FSharp.Core.Operators.box ( ( -//# 5029 "src/Compiler/pars.fsy" +//# 5513 "src/Compiler/pars.fsy" let mWithKwd, bindings, members = _1 Some mWithKwd, bindings, members ) -//# 5029 "src/Compiler/pars.fsy" +//# 5513 "src/Compiler/pars.fsy" : 'gentype_opt_objExprBindings)); -//# 14295 "pars.fs" +//# 15337 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5033 "src/Compiler/pars.fsy" +//# 5517 "src/Compiler/pars.fsy" None, [], [] ) -//# 5033 "src/Compiler/pars.fsy" +//# 5517 "src/Compiler/pars.fsy" : 'gentype_opt_objExprBindings)); -//# 14305 "pars.fs" +//# 15347 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_localBindings in Microsoft.FSharp.Core.Operators.box ( ( -//# 5037 "src/Compiler/pars.fsy" +//# 5521 "src/Compiler/pars.fsy" let mWithKwd = (rhs parseState 1) let _localBindingsLastRange, localBindingsBuilder = _2 mWithKwd, (localBindingsBuilder PreXmlDoc.Empty [] None SynLeadingKeyword.Synthetic), [] ) -//# 5037 "src/Compiler/pars.fsy" +//# 5521 "src/Compiler/pars.fsy" : 'gentype_objExprBindings)); -//# 14318 "pars.fs" +//# 15360 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_localBindings in Microsoft.FSharp.Core.Operators.box ( ( -//# 5042 "src/Compiler/pars.fsy" +//# 5526 "src/Compiler/pars.fsy" let mWithKwd = (rhs parseState 1) let _localBindingsLastRange, localBindingsBuilder = _2 mWithKwd, (localBindingsBuilder PreXmlDoc.Empty [] None SynLeadingKeyword.Synthetic), [] ) -//# 5042 "src/Compiler/pars.fsy" +//# 5526 "src/Compiler/pars.fsy" : 'gentype_objExprBindings)); -//# 14331 "pars.fs" +//# 15373 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_objectImplementationBlock in let _3 = parseState.GetInput(3) :?> 'gentype_opt_declEnd in Microsoft.FSharp.Core.Operators.box ( ( -//# 5047 "src/Compiler/pars.fsy" +//# 5531 "src/Compiler/pars.fsy" let mWithKwd = rhs parseState 1 let memberDefns = _2 |> @@ -14345,54 +15387,54 @@ let _fsyacc_reductions = lazy [| | x -> errorR(Error(FSComp.SR.parsMemberIllegalInObjectImplementation(), x.Range)); None)) mWithKwd, [], memberDefns ) -//# 5047 "src/Compiler/pars.fsy" +//# 5531 "src/Compiler/pars.fsy" : 'gentype_objExprBindings)); -//# 14350 "pars.fs" +//# 15392 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_objExprInterface in let _2 = parseState.GetInput(2) :?> 'gentype_opt_objExprInterfaces in Microsoft.FSharp.Core.Operators.box ( ( -//# 5057 "src/Compiler/pars.fsy" +//# 5541 "src/Compiler/pars.fsy" _1 :: _2 ) -//# 5057 "src/Compiler/pars.fsy" +//# 5541 "src/Compiler/pars.fsy" : 'gentype_objExprInterfaces)); -//# 14362 "pars.fs" +//# 15404 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5061 "src/Compiler/pars.fsy" +//# 5545 "src/Compiler/pars.fsy" [] ) -//# 5061 "src/Compiler/pars.fsy" +//# 5545 "src/Compiler/pars.fsy" : 'gentype_opt_objExprInterfaces)); -//# 14372 "pars.fs" +//# 15414 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_objExprInterface in let _2 = parseState.GetInput(2) :?> 'gentype_opt_objExprInterfaces in Microsoft.FSharp.Core.Operators.box ( ( -//# 5064 "src/Compiler/pars.fsy" +//# 5548 "src/Compiler/pars.fsy" _1 :: _2 ) -//# 5064 "src/Compiler/pars.fsy" +//# 5548 "src/Compiler/pars.fsy" : 'gentype_opt_objExprInterfaces)); -//# 14384 "pars.fs" +//# 15426 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_opt_objExprInterfaces in Microsoft.FSharp.Core.Operators.box ( ( -//# 5067 "src/Compiler/pars.fsy" +//# 5551 "src/Compiler/pars.fsy" (* silent recovery *) _2 ) -//# 5067 "src/Compiler/pars.fsy" +//# 5551 "src/Compiler/pars.fsy" : 'gentype_opt_objExprInterfaces)); -//# 14395 "pars.fs" +//# 15437 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_interfaceMember in let _2 = parseState.GetInput(2) :?> 'gentype_appType in @@ -14402,43 +15444,49 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5071 "src/Compiler/pars.fsy" +//# 5555 "src/Compiler/pars.fsy" let mWithKwd, bindings, members = _3 - SynInterfaceImpl(_2, mWithKwd, bindings, members, lhs parseState) - ) -//# 5071 "src/Compiler/pars.fsy" + let m = + match List.tryLast members with + | None -> lhs parseState + | Some ms -> + let mInterface = rhs parseState 1 + mkFileIndexRange mInterface.FileIndex mInterface.Start ms.Range.End + SynInterfaceImpl(_2, mWithKwd, bindings, members, m) + ) +//# 5555 "src/Compiler/pars.fsy" : 'gentype_objExprInterface)); -//# 14411 "pars.fs" +//# 15459 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_braceBarExprCore in Microsoft.FSharp.Core.Operators.box ( ( -//# 5076 "src/Compiler/pars.fsy" +//# 5566 "src/Compiler/pars.fsy" let mStruct = rhs parseState 1 _2 (Some mStruct) ) -//# 5076 "src/Compiler/pars.fsy" +//# 5566 "src/Compiler/pars.fsy" : 'gentype_braceBarExpr)); -//# 14423 "pars.fs" +//# 15471 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_braceBarExprCore in Microsoft.FSharp.Core.Operators.box ( ( -//# 5080 "src/Compiler/pars.fsy" +//# 5570 "src/Compiler/pars.fsy" _1 None ) -//# 5080 "src/Compiler/pars.fsy" +//# 5570 "src/Compiler/pars.fsy" : 'gentype_braceBarExpr)); -//# 14434 "pars.fs" +//# 15482 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_recdExprCore in let _3 = parseState.GetInput(3) :?> 'gentype_bar_rbrace in Microsoft.FSharp.Core.Operators.box ( ( -//# 5084 "src/Compiler/pars.fsy" +//# 5574 "src/Compiler/pars.fsy" let orig, flds = _2 let flds = flds |> List.choose (function @@ -14452,16 +15500,16 @@ let _fsyacc_reductions = lazy [| let m = match mStruct with | None -> unionRanges mLeftBrace mRightBrace | Some mStruct -> unionRanges mStruct mRightBrace SynExpr.AnonRecd(mStruct.IsSome, orig, flds, m, { OpeningBraceRange = mLeftBrace })) ) -//# 5084 "src/Compiler/pars.fsy" +//# 5574 "src/Compiler/pars.fsy" : 'gentype_braceBarExprCore)); -//# 14457 "pars.fs" +//# 15505 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_recdExprCore in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 5098 "src/Compiler/pars.fsy" +//# 5588 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBraceBar()) let orig, flds = _2 let flds = @@ -14474,15 +15522,15 @@ let _fsyacc_reductions = lazy [| let m = match mStruct with | None -> unionRanges mLeftBrace mExpr | Some mStruct -> unionRanges mStruct mExpr SynExpr.AnonRecd(mStruct.IsSome, orig, flds, m, { OpeningBraceRange = mLeftBrace })) ) -//# 5098 "src/Compiler/pars.fsy" +//# 5588 "src/Compiler/pars.fsy" : 'gentype_braceBarExprCore)); -//# 14479 "pars.fs" +//# 15527 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_bar_rbrace in Microsoft.FSharp.Core.Operators.box ( ( -//# 5111 "src/Compiler/pars.fsy" +//# 5601 "src/Compiler/pars.fsy" // silent recovery let mLeftBrace = rhs parseState 1 let mRightBrace = rhs parseState 3 @@ -14490,81 +15538,81 @@ let _fsyacc_reductions = lazy [| let m = match mStruct with | None -> unionRanges mLeftBrace mRightBrace | Some mStruct -> unionRanges mStruct mRightBrace arbExpr ("braceBarExpr", m)) ) -//# 5111 "src/Compiler/pars.fsy" +//# 5601 "src/Compiler/pars.fsy" : 'gentype_braceBarExprCore)); -//# 14495 "pars.fs" +//# 15543 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 5119 "src/Compiler/pars.fsy" +//# 5609 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBraceBar()) let mLeftBrace = rhs parseState 1 (fun (mStruct: range option) -> let m = match mStruct with | None -> mLeftBrace | Some mStruct -> unionRanges mStruct mLeftBrace SynExpr.AnonRecd(mStruct.IsSome, None, [], m, { OpeningBraceRange = mLeftBrace })) ) -//# 5119 "src/Compiler/pars.fsy" +//# 5609 "src/Compiler/pars.fsy" : 'gentype_braceBarExprCore)); -//# 14510 "pars.fs" +//# 15558 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_bar_rbrace in Microsoft.FSharp.Core.Operators.box ( ( -//# 5126 "src/Compiler/pars.fsy" +//# 5616 "src/Compiler/pars.fsy" let mLeftBrace = rhs parseState 1 let mRightBrace = rhs parseState 2 (fun (mStruct: range option) -> let m = match mStruct with | None -> unionRanges mLeftBrace mRightBrace | Some mStruct -> unionRanges mStruct mRightBrace SynExpr.AnonRecd(mStruct.IsSome, None, [], m, { OpeningBraceRange = mLeftBrace })) ) -//# 5126 "src/Compiler/pars.fsy" +//# 5616 "src/Compiler/pars.fsy" : 'gentype_braceBarExprCore)); -//# 14525 "pars.fs" +//# 15573 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynPat list in let _4 = parseState.GetInput(4) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 5134 "src/Compiler/pars.fsy" +//# 5624 "src/Compiler/pars.fsy" let mAll = unionRanges (rhs parseState 1) _4.Range let mArrow = Some(rhs parseState 3) mkSynFunMatchLambdas parseState.SynArgNameGenerator false mAll _2 mArrow _4 ) -//# 5134 "src/Compiler/pars.fsy" +//# 5624 "src/Compiler/pars.fsy" : 'gentype_anonLambdaExpr)); -//# 14539 "pars.fs" +//# 15587 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynPat list in Microsoft.FSharp.Core.Operators.box ( ( -//# 5139 "src/Compiler/pars.fsy" +//# 5629 "src/Compiler/pars.fsy" let mAll = rhs2 parseState 1 3 let mArrow = Some(rhs parseState 3) mkSynFunMatchLambdas parseState.SynArgNameGenerator false mAll _2 mArrow (arbExpr ("anonLambdaExpr1", (rhs parseState 4))) ) -//# 5139 "src/Compiler/pars.fsy" +//# 5629 "src/Compiler/pars.fsy" : 'gentype_anonLambdaExpr)); -//# 14552 "pars.fs" +//# 15600 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynPat list in let _4 = parseState.GetInput(4) :?> 'gentype_typedSequentialExprBlockR in Microsoft.FSharp.Core.Operators.box ( ( -//# 5144 "src/Compiler/pars.fsy" +//# 5634 "src/Compiler/pars.fsy" let mArrow = rhs parseState 3 let expr = _4 mArrow let mAll = unionRanges (rhs parseState 1) expr.Range mkSynFunMatchLambdas parseState.SynArgNameGenerator false mAll _2 (Some mArrow) expr ) -//# 5144 "src/Compiler/pars.fsy" +//# 5634 "src/Compiler/pars.fsy" : 'gentype_anonLambdaExpr)); -//# 14567 "pars.fs" +//# 15615 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynPat list in let _4 = parseState.GetInput(4) :?> 'gentype_typedSequentialExprBlockR in @@ -14572,334 +15620,335 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5150 "src/Compiler/pars.fsy" +//# 5640 "src/Compiler/pars.fsy" if not _5 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileFunBody ()) let mArrow = rhs parseState 3 let expr = _4 mArrow let mAll = unionRanges (rhs parseState 1) expr.Range exprFromParseError (mkSynFunMatchLambdas parseState.SynArgNameGenerator false mAll _2 (Some mArrow) expr) ) -//# 5150 "src/Compiler/pars.fsy" +//# 5640 "src/Compiler/pars.fsy" : 'gentype_anonLambdaExpr)); -//# 14584 "pars.fs" +//# 15632 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynPat list in + let _4 = parseState.GetInput(4) :?> range in Microsoft.FSharp.Core.Operators.box ( ( -//# 5157 "src/Compiler/pars.fsy" +//# 5647 "src/Compiler/pars.fsy" let mLambda = rhs2 parseState 1 3 reportParseErrorAt mLambda (FSComp.SR.parsMissingFunctionBody()) let mArrow = Some(rhs parseState 3) mkSynFunMatchLambdas parseState.SynArgNameGenerator false mLambda _2 mArrow (arbExpr ("anonLambdaExpr2", mLambda.EndRange)) ) -//# 5157 "src/Compiler/pars.fsy" +//# 5647 "src/Compiler/pars.fsy" : 'gentype_anonLambdaExpr)); -//# 14598 "pars.fs" +//# 15647 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynPat list in let _4 = parseState.GetInput(4) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 5163 "src/Compiler/pars.fsy" +//# 5653 "src/Compiler/pars.fsy" if not _4 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileFunBody()) let mLambda = rhs2 parseState 1 3 let mArrow = Some(rhs parseState 3) exprFromParseError (mkSynFunMatchLambdas parseState.SynArgNameGenerator false mLambda _2 mArrow (arbExpr ("anonLambdaExpr3", mLambda.EndRange))) ) -//# 5163 "src/Compiler/pars.fsy" +//# 5653 "src/Compiler/pars.fsy" : 'gentype_anonLambdaExpr)); -//# 14613 "pars.fs" +//# 15662 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynPat list in Microsoft.FSharp.Core.Operators.box ( ( -//# 5169 "src/Compiler/pars.fsy" +//# 5659 "src/Compiler/pars.fsy" let mLambda = rhs2 parseState 1 2 exprFromParseError (mkSynFunMatchLambdas parseState.SynArgNameGenerator false mLambda _2 None (arbExpr ("anonLambdaExpr4", mLambda.EndRange))) ) -//# 5169 "src/Compiler/pars.fsy" +//# 5659 "src/Compiler/pars.fsy" : 'gentype_anonLambdaExpr)); -//# 14625 "pars.fs" +//# 15674 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5173 "src/Compiler/pars.fsy" +//# 5663 "src/Compiler/pars.fsy" exprFromParseError (mkSynFunMatchLambdas parseState.SynArgNameGenerator false (rhs parseState 1) [] None (arbExpr ("anonLambdaExpr5", (rhs parseState 2)))) ) -//# 5173 "src/Compiler/pars.fsy" +//# 5663 "src/Compiler/pars.fsy" : 'gentype_anonLambdaExpr)); -//# 14635 "pars.fs" +//# 15684 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_withPatternClauses in Microsoft.FSharp.Core.Operators.box ( ( -//# 5177 "src/Compiler/pars.fsy" +//# 5667 "src/Compiler/pars.fsy" let clauses, mLast = _2 let mAll = unionRanges (rhs parseState 1) mLast SynExpr.MatchLambda(false, (rhs parseState 1), clauses, DebugPointAtBinding.NoneAtInvisible, mAll) ) -//# 5177 "src/Compiler/pars.fsy" +//# 5667 "src/Compiler/pars.fsy" : 'gentype_anonMatchingExpr)); -//# 14648 "pars.fs" +//# 15697 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_withPatternClauses in Microsoft.FSharp.Core.Operators.box ( ( -//# 5182 "src/Compiler/pars.fsy" +//# 5672 "src/Compiler/pars.fsy" let clauses, mLast = _2 let mAll = unionRanges (rhs parseState 1) mLast SynExpr.MatchLambda(false, (rhs parseState 1), clauses, DebugPointAtBinding.NoneAtInvisible, mAll) ) -//# 5182 "src/Compiler/pars.fsy" +//# 5672 "src/Compiler/pars.fsy" : 'gentype_anonMatchingExpr)); -//# 14661 "pars.fs" +//# 15710 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5191 "src/Compiler/pars.fsy" +//# 5681 "src/Compiler/pars.fsy" _1 ) -//# 5191 "src/Compiler/pars.fsy" +//# 5681 "src/Compiler/pars.fsy" : 'gentype_typeWithTypeConstraints)); -//# 14672 "pars.fs" +//# 15721 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynType in let _3 = parseState.GetInput(3) :?> 'gentype_typeConstraints in Microsoft.FSharp.Core.Operators.box ( ( -//# 5194 "src/Compiler/pars.fsy" +//# 5684 "src/Compiler/pars.fsy" SynType.WithGlobalConstraints(_1, List.rev _3, lhs parseState) ) -//# 5194 "src/Compiler/pars.fsy" +//# 5684 "src/Compiler/pars.fsy" : 'gentype_typeWithTypeConstraints)); -//# 14684 "pars.fs" +//# 15733 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_topType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5198 "src/Compiler/pars.fsy" +//# 5688 "src/Compiler/pars.fsy" _1 ) -//# 5198 "src/Compiler/pars.fsy" +//# 5688 "src/Compiler/pars.fsy" : 'gentype_topTypeWithTypeConstraints)); -//# 14695 "pars.fs" +//# 15744 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_topType in let _3 = parseState.GetInput(3) :?> 'gentype_typeConstraints in Microsoft.FSharp.Core.Operators.box ( ( -//# 5201 "src/Compiler/pars.fsy" +//# 5691 "src/Compiler/pars.fsy" let ty, arity = _1 // nb. it doesn't matter where the constraints go in the structure of the type. SynType.WithGlobalConstraints(ty, List.rev _3, lhs parseState), arity ) -//# 5201 "src/Compiler/pars.fsy" +//# 5691 "src/Compiler/pars.fsy" : 'gentype_topTypeWithTypeConstraints)); -//# 14709 "pars.fs" +//# 15758 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5207 "src/Compiler/pars.fsy" +//# 5697 "src/Compiler/pars.fsy" None ) -//# 5207 "src/Compiler/pars.fsy" +//# 5697 "src/Compiler/pars.fsy" : 'gentype_opt_topReturnTypeWithTypeConstraints)); -//# 14719 "pars.fs" +//# 15768 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_topTypeWithTypeConstraints in Microsoft.FSharp.Core.Operators.box ( ( -//# 5210 "src/Compiler/pars.fsy" +//# 5700 "src/Compiler/pars.fsy" let mColon = rhs parseState 1 let ty, arity = _2 let arity = (match arity with SynValInfo([], rmdata)-> rmdata | _ -> SynInfo.unnamedRetVal) Some(Some mColon, SynReturnInfo((ty, arity), rhs parseState 2)) ) -//# 5210 "src/Compiler/pars.fsy" +//# 5700 "src/Compiler/pars.fsy" : 'gentype_opt_topReturnTypeWithTypeConstraints)); -//# 14733 "pars.fs" +//# 15782 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 5216 "src/Compiler/pars.fsy" +//# 5706 "src/Compiler/pars.fsy" let mColon = rhs parseState 1 let ty, arity = SynType.FromParseError(mColon.EndRange), SynInfo.unnamedRetVal Some(Some mColon, SynReturnInfo((ty, arity), mColon.EndRange)) ) -//# 5216 "src/Compiler/pars.fsy" +//# 5706 "src/Compiler/pars.fsy" : 'gentype_opt_topReturnTypeWithTypeConstraints)); -//# 14746 "pars.fs" +//# 15795 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_topTupleType in let _3 = parseState.GetInput(3) :?> 'gentype_topType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5222 "src/Compiler/pars.fsy" +//# 5712 "src/Compiler/pars.fsy" let dty, dmdata = _1 let rty, (SynValInfo(dmdatas, rmdata)) = _3 let mArrow = rhs parseState 2 SynType.Fun(dty, rty, lhs parseState, { ArrowRange = mArrow }), SynValInfo(dmdata :: dmdatas, rmdata) ) -//# 5222 "src/Compiler/pars.fsy" +//# 5712 "src/Compiler/pars.fsy" : 'gentype_topType)); -//# 14761 "pars.fs" +//# 15810 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_topTupleType in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 5228 "src/Compiler/pars.fsy" +//# 5718 "src/Compiler/pars.fsy" let dty, dmdata = _1 let mArrow = rhs parseState 2 let rty = SynType.FromParseError(mArrow.EndRange) SynType.Fun(dty, rty, lhs parseState, { ArrowRange = mArrow }), SynValInfo([dmdata], SynInfo.unnamedRetVal) ) -//# 5228 "src/Compiler/pars.fsy" +//# 5718 "src/Compiler/pars.fsy" : 'gentype_topType)); -//# 14776 "pars.fs" +//# 15825 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_topTupleType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5234 "src/Compiler/pars.fsy" +//# 5724 "src/Compiler/pars.fsy" let ty, rmdata = _1 ty, (SynValInfo([], (match rmdata with [md] -> md | _ -> SynInfo.unnamedRetVal))) ) -//# 5234 "src/Compiler/pars.fsy" +//# 5724 "src/Compiler/pars.fsy" : 'gentype_topType)); -//# 14788 "pars.fs" +//# 15837 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_topAppType in let _3 = parseState.GetInput(3) :?> 'gentype_topTupleTypeElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 5239 "src/Compiler/pars.fsy" +//# 5729 "src/Compiler/pars.fsy" let t, argInfo = _1 let mStar = rhs parseState 2 let path = SynTupleTypeSegment.Type t :: SynTupleTypeSegment.Star mStar :: (List.map fst _3) let mdata = argInfo :: (List.choose snd _3) mkSynTypeTuple path, mdata ) -//# 5239 "src/Compiler/pars.fsy" +//# 5729 "src/Compiler/pars.fsy" : 'gentype_topTupleType)); -//# 14804 "pars.fs" +//# 15853 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_topAppType in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 5246 "src/Compiler/pars.fsy" +//# 5736 "src/Compiler/pars.fsy" let ty1, argInfo = _1 let mStar = rhs parseState 2 let ty2 = SynType.FromParseError(mStar.EndRange) let path = [SynTupleTypeSegment.Type ty1; SynTupleTypeSegment.Star mStar; SynTupleTypeSegment.Type ty2] - mkSynTypeTuple path, [argInfo] + mkSynTypeTuple path, [argInfo; SynInfo.emptySynArgInfo] ) -//# 5246 "src/Compiler/pars.fsy" +//# 5736 "src/Compiler/pars.fsy" : 'gentype_topTupleType)); -//# 14820 "pars.fs" +//# 15869 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_topTupleTypeElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 5253 "src/Compiler/pars.fsy" +//# 5743 "src/Compiler/pars.fsy" let mStar = rhs parseState 1 let ty = SynType.FromParseError(mStar.EndRange) reportParseErrorAt mStar (FSComp.SR.parsExpectingType ()) let path = SynTupleTypeSegment.Type ty :: SynTupleTypeSegment.Star mStar :: (List.map fst _2) mkSynTypeTuple path, List.choose snd _2 ) -//# 5253 "src/Compiler/pars.fsy" +//# 5743 "src/Compiler/pars.fsy" : 'gentype_topTupleType)); -//# 14835 "pars.fs" +//# 15884 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_topAppType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5260 "src/Compiler/pars.fsy" +//# 5750 "src/Compiler/pars.fsy" let ty, mdata = _1 ty, [mdata] ) -//# 5260 "src/Compiler/pars.fsy" +//# 5750 "src/Compiler/pars.fsy" : 'gentype_topTupleType)); -//# 14847 "pars.fs" +//# 15896 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_topAppType in let _3 = parseState.GetInput(3) :?> 'gentype_topTupleTypeElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 5265 "src/Compiler/pars.fsy" +//# 5755 "src/Compiler/pars.fsy" let t, argInfo = _1 let mStar = rhs parseState 2 (SynTupleTypeSegment.Type t, Some argInfo) :: (SynTupleTypeSegment.Star mStar, None) :: _3 ) -//# 5265 "src/Compiler/pars.fsy" +//# 5755 "src/Compiler/pars.fsy" : 'gentype_topTupleTypeElements)); -//# 14861 "pars.fs" +//# 15910 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_topAppType in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 5270 "src/Compiler/pars.fsy" +//# 5760 "src/Compiler/pars.fsy" let ty1, argInfo = _1 let mStar = rhs parseState 2 let ty2 = SynType.FromParseError(mStar.EndRange) - [(SynTupleTypeSegment.Type ty1, Some argInfo); (SynTupleTypeSegment.Star mStar, None); (SynTupleTypeSegment.Type ty2, None)] + [SynTupleTypeSegment.Type ty1, Some argInfo; SynTupleTypeSegment.Star mStar, None; SynTupleTypeSegment.Type ty2, Some SynInfo.emptySynArgInfo] ) -//# 5270 "src/Compiler/pars.fsy" +//# 5760 "src/Compiler/pars.fsy" : 'gentype_topTupleTypeElements)); -//# 14876 "pars.fs" +//# 15925 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_topTupleTypeElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 5276 "src/Compiler/pars.fsy" +//# 5766 "src/Compiler/pars.fsy" let mStar = rhs parseState 1 let ty = SynType.FromParseError(mStar.EndRange) reportParseErrorAt mStar (FSComp.SR.parsExpectingType ()) (SynTupleTypeSegment.Type ty, None) :: (SynTupleTypeSegment.Star mStar, None) :: _2 ) -//# 5276 "src/Compiler/pars.fsy" +//# 5766 "src/Compiler/pars.fsy" : 'gentype_topTupleTypeElements)); -//# 14890 "pars.fs" +//# 15939 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_topAppType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5282 "src/Compiler/pars.fsy" +//# 5772 "src/Compiler/pars.fsy" let t, argInfo = _1 [ SynTupleTypeSegment.Type t, Some argInfo ] ) -//# 5282 "src/Compiler/pars.fsy" +//# 5772 "src/Compiler/pars.fsy" : 'gentype_topTupleTypeElements)); -//# 14902 "pars.fs" +//# 15951 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_appType in @@ -14907,16 +15956,16 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5287 "src/Compiler/pars.fsy" +//# 5777 "src/Compiler/pars.fsy" match _2 with | SynType.LongIdent(SynLongIdent([id], _, _)) -> let m = unionRanges (rhs parseState 1) _4.Range SynType.SignatureParameter(_1, false, Some id, _4, m), SynArgInfo(_1, false, Some id) | _ -> raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsSyntaxErrorInLabeledType()) ) -//# 5287 "src/Compiler/pars.fsy" +//# 5777 "src/Compiler/pars.fsy" : 'gentype_topAppType)); -//# 14919 "pars.fs" +//# 15968 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_appType in @@ -14924,7 +15973,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5294 "src/Compiler/pars.fsy" +//# 5784 "src/Compiler/pars.fsy" match _2 with | SynType.LongIdent(SynLongIdent([id], _, _)) -> let mColon = rhs parseState 2 @@ -14933,9 +15982,9 @@ let _fsyacc_reductions = lazy [| SynType.SignatureParameter(_1, false, Some id, ty, m), SynArgInfo(_1, false, Some id) | _ -> raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsSyntaxErrorInLabeledType()) ) -//# 5294 "src/Compiler/pars.fsy" +//# 5784 "src/Compiler/pars.fsy" : 'gentype_topAppType)); -//# 14938 "pars.fs" +//# 15987 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_attributes in let _3 = parseState.GetInput(3) :?> Ident in @@ -14943,13 +15992,13 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5303 "src/Compiler/pars.fsy" +//# 5793 "src/Compiler/pars.fsy" let m = unionRanges (rhs parseState 1) _5.Range SynType.SignatureParameter(_1, true, Some _3, _5, m), SynArgInfo(_1, true, Some _3) ) -//# 5303 "src/Compiler/pars.fsy" +//# 5793 "src/Compiler/pars.fsy" : 'gentype_topAppType)); -//# 14952 "pars.fs" +//# 16001 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_attributes in let _3 = parseState.GetInput(3) :?> Ident in @@ -14957,51 +16006,51 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5307 "src/Compiler/pars.fsy" +//# 5797 "src/Compiler/pars.fsy" let mColon = rhs parseState 4 let m = unionRanges (rhs parseState 1) mColon let ty = SynType.FromParseError(mColon.EndRange) SynType.SignatureParameter(_1, true, Some _3, ty, m), SynArgInfo(_1, true, Some _3) ) -//# 5307 "src/Compiler/pars.fsy" +//# 5797 "src/Compiler/pars.fsy" : 'gentype_topAppType)); -//# 14968 "pars.fs" +//# 16017 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_attributes in let _2 = parseState.GetInput(2) :?> 'gentype_appType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5313 "src/Compiler/pars.fsy" +//# 5803 "src/Compiler/pars.fsy" let m = unionRanges (rhs parseState 1) _2.Range SynType.SignatureParameter(_1, false, None, _2, m), SynArgInfo(_1, false, None) ) -//# 5313 "src/Compiler/pars.fsy" +//# 5803 "src/Compiler/pars.fsy" : 'gentype_topAppType)); -//# 14981 "pars.fs" +//# 16030 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in let _3 = parseState.GetInput(3) :?> 'gentype_appType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5317 "src/Compiler/pars.fsy" +//# 5807 "src/Compiler/pars.fsy" match _1 with | SynType.LongIdent(SynLongIdent([id], _, _)) -> let m = unionRanges (rhs parseState 1) _3.Range SynType.SignatureParameter([], false, Some id, _3, m), SynArgInfo([], false, Some id) | _ -> raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsSyntaxErrorInLabeledType()) ) -//# 5317 "src/Compiler/pars.fsy" +//# 5807 "src/Compiler/pars.fsy" : 'gentype_topAppType)); -//# 14997 "pars.fs" +//# 16046 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 5324 "src/Compiler/pars.fsy" +//# 5814 "src/Compiler/pars.fsy" match _1 with | SynType.LongIdent(SynLongIdent([id], _, _)) -> let mColon = rhs parseState 2 @@ -15010,84 +16059,145 @@ let _fsyacc_reductions = lazy [| SynType.SignatureParameter([], false, Some id, ty, m), SynArgInfo([], false, Some id) | _ -> raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsSyntaxErrorInLabeledType()) ) -//# 5324 "src/Compiler/pars.fsy" +//# 5814 "src/Compiler/pars.fsy" : 'gentype_topAppType)); -//# 15015 "pars.fs" +//# 16064 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> Ident in let _4 = parseState.GetInput(4) :?> 'gentype_appType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5333 "src/Compiler/pars.fsy" +//# 5823 "src/Compiler/pars.fsy" let m = unionRanges (rhs parseState 1) _4.Range SynType.SignatureParameter([], true, Some _2, _4, m), SynArgInfo([], true, Some _2) ) -//# 5333 "src/Compiler/pars.fsy" +//# 5823 "src/Compiler/pars.fsy" : 'gentype_topAppType)); -//# 15028 "pars.fs" +//# 16077 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> Ident in let _4 = parseState.GetInput(4) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 5337 "src/Compiler/pars.fsy" +//# 5827 "src/Compiler/pars.fsy" let mColon = rhs parseState 3 let m = unionRanges (rhs parseState 1) mColon let ty = SynType.FromParseError(mColon.EndRange) SynType.SignatureParameter([], true, Some _2, ty, m), SynArgInfo([], true, Some _2) ) -//# 5337 "src/Compiler/pars.fsy" +//# 5827 "src/Compiler/pars.fsy" : 'gentype_topAppType)); -//# 15043 "pars.fs" +//# 16092 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5343 "src/Compiler/pars.fsy" +//# 5833 "src/Compiler/pars.fsy" _1, SynArgInfo([], false, None) ) -//# 5343 "src/Compiler/pars.fsy" +//# 5833 "src/Compiler/pars.fsy" : 'gentype_topAppType)); -//# 15054 "pars.fs" +//# 16103 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> 'gentype_appType in + let _3 = parseState.GetInput(3) :?> 'gentype_invalidUseOfAppTypeFunction in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 5839 "src/Compiler/pars.fsy" + let mArrow = rhs parseState 2 + let m = unionRanges (rhs2 parseState 1 2) _3.Range + SynType.Fun(_1, _3, m, { ArrowRange = mArrow }) + ) +//# 5839 "src/Compiler/pars.fsy" + : 'gentype_invalidUseOfAppTypeFunction)); +//# 16117 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> 'gentype_appType in + let _3 = parseState.GetInput(3) :?> 'gentype_recover in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 5843 "src/Compiler/pars.fsy" + let mArrow = rhs parseState 2 + let ty = SynType.FromParseError(mArrow.EndRange) + let m = rhs2 parseState 1 2 + SynType.Fun(_1, ty, m, { ArrowRange = mArrow }) + ) +//# 5843 "src/Compiler/pars.fsy" + : 'gentype_invalidUseOfAppTypeFunction)); +//# 16132 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> 'gentype_appType in + let _4 = parseState.GetInput(4) :?> 'gentype_invalidUseOfAppTypeFunction in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 5848 "src/Compiler/pars.fsy" + let mArrow1 = rhs parseState 2 + let mArrow2 = rhs parseState 3 + reportParseErrorAt mArrow2 (FSComp.SR.parsExpectingType ()) + let ty = SynType.FromParseError(mArrow2.StartRange) + let m1 = unionRanges _1.Range _4.Range + let m2 = unionRanges mArrow2 _4.Range + SynType.Fun(_1, SynType.Fun(ty, _4, m2, { ArrowRange = mArrow2 }), m1, { ArrowRange = mArrow1 }) + ) +//# 5848 "src/Compiler/pars.fsy" + : 'gentype_invalidUseOfAppTypeFunction)); +//# 16150 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> 'gentype_appType in + let _3 = parseState.GetInput(3) :?> 'gentype_appType in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 5856 "src/Compiler/pars.fsy" + let mArrow = rhs parseState 2 + let m = rhs2 parseState 1 3 + SynType.Fun(_1, _3, m, { ArrowRange = mArrow }) + ) +//# 5856 "src/Compiler/pars.fsy" + : 'gentype_invalidUseOfAppTypeFunction)); +//# 16164 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_tupleType in let _3 = parseState.GetInput(3) :?> SynType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5349 "src/Compiler/pars.fsy" +//# 5864 "src/Compiler/pars.fsy" let mArrow = rhs parseState 2 let m = unionRanges (rhs2 parseState 1 2) _3.Range SynType.Fun(_1, _3, m, { ArrowRange = mArrow }) ) -//# 5349 "src/Compiler/pars.fsy" +//# 5864 "src/Compiler/pars.fsy" : SynType)); -//# 15068 "pars.fs" +//# 16178 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_tupleType in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 5354 "src/Compiler/pars.fsy" +//# 5869 "src/Compiler/pars.fsy" let mArrow = rhs parseState 2 let ty = SynType.FromParseError(mArrow.EndRange) let m = rhs2 parseState 1 2 SynType.Fun(_1, ty, m, { ArrowRange = mArrow }) ) -//# 5354 "src/Compiler/pars.fsy" +//# 5869 "src/Compiler/pars.fsy" : SynType)); -//# 15083 "pars.fs" +//# 16193 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_tupleType in let _4 = parseState.GetInput(4) :?> SynType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5360 "src/Compiler/pars.fsy" +//# 5875 "src/Compiler/pars.fsy" let mArrow1 = rhs parseState 2 let mArrow2 = rhs parseState 3 reportParseErrorAt mArrow2 (FSComp.SR.parsExpectingType ()) @@ -15096,107 +16206,107 @@ let _fsyacc_reductions = lazy [| let m2 = unionRanges mArrow2 _4.Range SynType.Fun(_1, SynType.Fun(ty, _4, m2, { ArrowRange = mArrow2 }), m1, { ArrowRange = mArrow1 }) ) -//# 5360 "src/Compiler/pars.fsy" +//# 5875 "src/Compiler/pars.fsy" : SynType)); -//# 15101 "pars.fs" +//# 16211 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_tupleType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5369 "src/Compiler/pars.fsy" +//# 5884 "src/Compiler/pars.fsy" _1 ) -//# 5369 "src/Compiler/pars.fsy" +//# 5884 "src/Compiler/pars.fsy" : SynType)); -//# 15112 "pars.fs" +//# 16222 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynType in let _2 = parseState.GetInput(2) :?> ParseHelpers.LexerContinuation in Microsoft.FSharp.Core.Operators.box ( ( -//# 5372 "src/Compiler/pars.fsy" +//# 5887 "src/Compiler/pars.fsy" checkEndOfFileError _2; _1 ) -//# 5372 "src/Compiler/pars.fsy" +//# 5887 "src/Compiler/pars.fsy" : SynType)); -//# 15124 "pars.fs" +//# 16234 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in let _3 = parseState.GetInput(3) :?> 'gentype_tupleOrQuotTypeElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 5377 "src/Compiler/pars.fsy" +//# 5892 "src/Compiler/pars.fsy" let mStar = rhs parseState 2 let path = SynTupleTypeSegment.Type _1 :: SynTupleTypeSegment.Star mStar :: _3 mkSynTypeTuple path ) -//# 5377 "src/Compiler/pars.fsy" +//# 5892 "src/Compiler/pars.fsy" : 'gentype_tupleType)); -//# 15138 "pars.fs" +//# 16248 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 5382 "src/Compiler/pars.fsy" +//# 5897 "src/Compiler/pars.fsy" let mStar = rhs parseState 2 let ty = SynType.FromParseError(mStar.EndRange) let path = [SynTupleTypeSegment.Type _1; SynTupleTypeSegment.Star mStar; SynTupleTypeSegment.Type ty] mkSynTypeTuple path ) -//# 5382 "src/Compiler/pars.fsy" +//# 5897 "src/Compiler/pars.fsy" : 'gentype_tupleType)); -//# 15153 "pars.fs" +//# 16263 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_tupleOrQuotTypeElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 5388 "src/Compiler/pars.fsy" +//# 5903 "src/Compiler/pars.fsy" let mStar = rhs parseState 1 let ty = SynType.FromParseError(mStar.EndRange) reportParseErrorAt mStar (FSComp.SR.parsExpectingType ()) let path = SynTupleTypeSegment.Type ty :: SynTupleTypeSegment.Star mStar :: _2 mkSynTypeTuple path ) -//# 5388 "src/Compiler/pars.fsy" +//# 5903 "src/Compiler/pars.fsy" : 'gentype_tupleType)); -//# 15168 "pars.fs" +//# 16278 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in let _2 = parseState.GetInput(2) :?> 'gentype_tupleOrQuotTypeElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 5395 "src/Compiler/pars.fsy" +//# 5910 "src/Compiler/pars.fsy" if _1 <> "/" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedInfixOperator ()) let mSlash = rhs parseState 1 let path = SynTupleTypeSegment.Slash mSlash :: _2 mkSynTypeTuple path ) -//# 5395 "src/Compiler/pars.fsy" +//# 5910 "src/Compiler/pars.fsy" : 'gentype_tupleType)); -//# 15183 "pars.fs" +//# 16293 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 5401 "src/Compiler/pars.fsy" +//# 5916 "src/Compiler/pars.fsy" if _1 <> "/" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedInfixOperator ()) let mSlash = rhs parseState 1 let ty = SynType.FromParseError(mSlash.EndRange) let path = [SynTupleTypeSegment.Slash mSlash; SynTupleTypeSegment.Type ty] mkSynTypeTuple path ) -//# 5401 "src/Compiler/pars.fsy" +//# 5916 "src/Compiler/pars.fsy" : 'gentype_tupleType)); -//# 15199 "pars.fs" +//# 16309 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in let _2 = parseState.GetInput(2) :?> string in @@ -15204,15 +16314,15 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5408 "src/Compiler/pars.fsy" +//# 5923 "src/Compiler/pars.fsy" if _2 <> "/" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedInfixOperator()) let mSlash = rhs parseState 2 let path = SynTupleTypeSegment.Type _1 :: SynTupleTypeSegment.Slash mSlash :: _3 mkSynTypeTuple path ) -//# 5408 "src/Compiler/pars.fsy" +//# 5923 "src/Compiler/pars.fsy" : 'gentype_tupleType)); -//# 15215 "pars.fs" +//# 16325 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in let _2 = parseState.GetInput(2) :?> string in @@ -15220,68 +16330,68 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5414 "src/Compiler/pars.fsy" +//# 5929 "src/Compiler/pars.fsy" if _2 <> "/" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedInfixOperator ()) let mSlash = rhs parseState 2 let ty = SynType.FromParseError(mSlash.EndRange) let path = [SynTupleTypeSegment.Type _1; SynTupleTypeSegment.Slash mSlash; SynTupleTypeSegment.Type ty] mkSynTypeTuple path ) -//# 5414 "src/Compiler/pars.fsy" +//# 5929 "src/Compiler/pars.fsy" : 'gentype_tupleType)); -//# 15232 "pars.fs" +//# 16342 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5421 "src/Compiler/pars.fsy" +//# 5936 "src/Compiler/pars.fsy" _1 ) -//# 5421 "src/Compiler/pars.fsy" +//# 5936 "src/Compiler/pars.fsy" : 'gentype_tupleType)); -//# 15243 "pars.fs" +//# 16353 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in let _3 = parseState.GetInput(3) :?> 'gentype_tupleOrQuotTypeElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 5425 "src/Compiler/pars.fsy" +//# 5940 "src/Compiler/pars.fsy" let mStar = rhs parseState 2 SynTupleTypeSegment.Type _1 :: SynTupleTypeSegment.Star mStar :: _3 ) -//# 5425 "src/Compiler/pars.fsy" +//# 5940 "src/Compiler/pars.fsy" : 'gentype_tupleOrQuotTypeElements)); -//# 15256 "pars.fs" +//# 16366 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 5429 "src/Compiler/pars.fsy" +//# 5944 "src/Compiler/pars.fsy" let mStar = rhs parseState 2 let ty = SynType.FromParseError(mStar.EndRange) [SynTupleTypeSegment.Type _1; SynTupleTypeSegment.Star mStar; SynTupleTypeSegment.Type ty] ) -//# 5429 "src/Compiler/pars.fsy" +//# 5944 "src/Compiler/pars.fsy" : 'gentype_tupleOrQuotTypeElements)); -//# 15270 "pars.fs" +//# 16380 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_tupleOrQuotTypeElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 5434 "src/Compiler/pars.fsy" +//# 5949 "src/Compiler/pars.fsy" let mStar = rhs parseState 1 let ty = SynType.FromParseError(mStar.EndRange) reportParseErrorAt mStar (FSComp.SR.parsExpectingType ()) SynTupleTypeSegment.Type ty :: SynTupleTypeSegment.Star mStar :: _2 ) -//# 5434 "src/Compiler/pars.fsy" +//# 5949 "src/Compiler/pars.fsy" : 'gentype_tupleOrQuotTypeElements)); -//# 15284 "pars.fs" +//# 16394 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in let _2 = parseState.GetInput(2) :?> string in @@ -15289,14 +16399,14 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5440 "src/Compiler/pars.fsy" +//# 5955 "src/Compiler/pars.fsy" if _2 <> "/" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedInfixOperator ()) let mSlash = rhs parseState 2 SynTupleTypeSegment.Type _1 :: SynTupleTypeSegment.Slash mSlash :: _3 ) -//# 5440 "src/Compiler/pars.fsy" +//# 5955 "src/Compiler/pars.fsy" : 'gentype_tupleOrQuotTypeElements)); -//# 15299 "pars.fs" +//# 16409 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in let _2 = parseState.GetInput(2) :?> string in @@ -15304,64 +16414,90 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5445 "src/Compiler/pars.fsy" +//# 5960 "src/Compiler/pars.fsy" if _2 <> "/" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedInfixOperator ()) let mSlash = rhs parseState 2 let ty = SynType.FromParseError(mSlash.EndRange) [SynTupleTypeSegment.Type _1; SynTupleTypeSegment.Slash mSlash; SynTupleTypeSegment.Type ty] ) -//# 5445 "src/Compiler/pars.fsy" +//# 5960 "src/Compiler/pars.fsy" : 'gentype_tupleOrQuotTypeElements)); -//# 15315 "pars.fs" +//# 16425 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in let _2 = parseState.GetInput(2) :?> 'gentype_tupleOrQuotTypeElements in Microsoft.FSharp.Core.Operators.box ( ( -//# 5451 "src/Compiler/pars.fsy" +//# 5966 "src/Compiler/pars.fsy" if _1 <> "/" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedInfixOperator ()) let mSlash = rhs parseState 1 let ty = SynType.FromParseError(mSlash.EndRange) reportParseErrorAt mSlash (FSComp.SR.parsExpectingType ()) SynTupleTypeSegment.Type ty :: SynTupleTypeSegment.Slash mSlash :: _2 ) -//# 5451 "src/Compiler/pars.fsy" +//# 5966 "src/Compiler/pars.fsy" : 'gentype_tupleOrQuotTypeElements)); -//# 15331 "pars.fs" +//# 16441 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5458 "src/Compiler/pars.fsy" +//# 5973 "src/Compiler/pars.fsy" [ SynTupleTypeSegment.Type _1 ] ) -//# 5458 "src/Compiler/pars.fsy" +//# 5973 "src/Compiler/pars.fsy" : 'gentype_tupleOrQuotTypeElements)); -//# 15342 "pars.fs" +//# 16452 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> SynTypar in + let _3 = parseState.GetInput(3) :?> 'gentype_intersectionConstraints in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 5977 "src/Compiler/pars.fsy" + let constraints, mAmpersands = _3 + SynType.Intersection(Some _1, List.rev constraints, lhs parseState, { AmpersandRanges = rhs parseState 2 :: List.rev mAmpersands }) + ) +//# 5977 "src/Compiler/pars.fsy" + : 'gentype_intersectionType)); +//# 16465 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> 'gentype_atomType in + let _3 = parseState.GetInput(3) :?> 'gentype_intersectionConstraints in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 5981 "src/Compiler/pars.fsy" + let constraints, mAmpersands = _3 + SynType.Intersection(None, _1 :: List.rev constraints, lhs parseState, { AmpersandRanges = rhs parseState 2 :: List.rev mAmpersands }) + ) +//# 5981 "src/Compiler/pars.fsy" + : 'gentype_intersectionType)); +//# 16478 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynLongIdent in Microsoft.FSharp.Core.Operators.box ( ( -//# 5462 "src/Compiler/pars.fsy" +//# 5986 "src/Compiler/pars.fsy" SynType.LongIdent(_1) ) -//# 5462 "src/Compiler/pars.fsy" +//# 5986 "src/Compiler/pars.fsy" : 'gentype_appTypeCon)); -//# 15353 "pars.fs" +//# 16489 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynTypar in Microsoft.FSharp.Core.Operators.box ( ( -//# 5465 "src/Compiler/pars.fsy" +//# 5989 "src/Compiler/pars.fsy" SynType.Var(_1, lhs parseState) ) -//# 5465 "src/Compiler/pars.fsy" +//# 5989 "src/Compiler/pars.fsy" : 'gentype_appTypeCon)); -//# 15364 "pars.fs" +//# 16500 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appTypeCon in let _2 = parseState.GetInput(2) :?> string in @@ -15369,61 +16505,65 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5469 "src/Compiler/pars.fsy" +//# 5993 "src/Compiler/pars.fsy" if _2 <> "^" && _2 <> "^-" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedInfixOperator()) - if _2 = "^-" then SynType.MeasurePower(_1, SynRationalConst.Negate(_3), lhs parseState) + if _2 = "^-" then + let afterMinus = (rhs parseState 2).EndRange + let beforeMinus = shiftStart 0 -1 afterMinus + let m = unionRanges beforeMinus (rhs parseState 3) // include MINUS in Negate range + SynType.MeasurePower(_1, SynRationalConst.Negate(_3, m), lhs parseState) else SynType.MeasurePower(_1, _3, lhs parseState) ) -//# 5469 "src/Compiler/pars.fsy" +//# 5993 "src/Compiler/pars.fsy" : 'gentype_appTypeConPower)); -//# 15379 "pars.fs" +//# 16519 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appTypeCon in Microsoft.FSharp.Core.Operators.box ( ( -//# 5474 "src/Compiler/pars.fsy" +//# 6002 "src/Compiler/pars.fsy" _1 ) -//# 5474 "src/Compiler/pars.fsy" +//# 6002 "src/Compiler/pars.fsy" : 'gentype_appTypeConPower)); -//# 15390 "pars.fs" +//# 16530 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in let _2 = parseState.GetInput(2) :?> 'gentype_arrayTypeSuffix in Microsoft.FSharp.Core.Operators.box ( ( -//# 5478 "src/Compiler/pars.fsy" +//# 6006 "src/Compiler/pars.fsy" SynType.Array(_2, _1, lhs parseState) ) -//# 5478 "src/Compiler/pars.fsy" +//# 6006 "src/Compiler/pars.fsy" : 'gentype_appType)); -//# 15402 "pars.fs" +//# 16542 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in let _3 = parseState.GetInput(3) :?> 'gentype_arrayTypeSuffix in Microsoft.FSharp.Core.Operators.box ( ( -//# 5481 "src/Compiler/pars.fsy" +//# 6009 "src/Compiler/pars.fsy" SynType.Array(_3, _1, lhs parseState) ) -//# 5481 "src/Compiler/pars.fsy" +//# 6009 "src/Compiler/pars.fsy" : 'gentype_appType)); -//# 15414 "pars.fs" +//# 16554 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appType in let _2 = parseState.GetInput(2) :?> 'gentype_appTypeConPower in Microsoft.FSharp.Core.Operators.box ( ( -//# 5485 "src/Compiler/pars.fsy" +//# 6013 "src/Compiler/pars.fsy" SynType.App(_2, None, [_1], [], None, true, unionRanges (rhs parseState 1) _2.Range) ) -//# 5485 "src/Compiler/pars.fsy" +//# 6013 "src/Compiler/pars.fsy" : 'gentype_appType)); -//# 15426 "pars.fs" +//# 16566 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_appTypePrefixArguments in let _3 = parseState.GetInput(3) :?> 'gentype_rparen in @@ -15431,7 +16571,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5488 "src/Compiler/pars.fsy" +//# 6016 "src/Compiler/pars.fsy" let args, commas = _2 if parseState.LexBuffer.SupportsFeature LanguageFeature.MLCompatRevisions then mlCompatError (FSComp.SR.mlCompatMultiPrefixTyparsNoLongerSupported()) (unionRanges (rhs parseState 1) _4.Range) @@ -15439,365 +16579,377 @@ let _fsyacc_reductions = lazy [| mlCompatWarning (FSComp.SR.parsMultiArgumentGenericTypeFormDeprecated()) (unionRanges (rhs parseState 1) _4.Range) SynType.App(_4, None, args, commas, None, true, unionRanges (rhs parseState 1) _4.Range) ) -//# 5488 "src/Compiler/pars.fsy" +//# 6016 "src/Compiler/pars.fsy" : 'gentype_appType)); -//# 15444 "pars.fs" +//# 16584 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_powerType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5496 "src/Compiler/pars.fsy" +//# 6024 "src/Compiler/pars.fsy" + _1 + ) +//# 6024 "src/Compiler/pars.fsy" + : 'gentype_appType)); +//# 16595 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> 'gentype_intersectionType in + Microsoft.FSharp.Core.Operators.box + ( + ( +//# 6027 "src/Compiler/pars.fsy" + parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.ConstraintIntersectionOnFlexibleTypes (lhs parseState) _1 ) -//# 5496 "src/Compiler/pars.fsy" +//# 6027 "src/Compiler/pars.fsy" : 'gentype_appType)); -//# 15455 "pars.fs" +//# 16607 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynTypar in let _3 = parseState.GetInput(3) :?> SynType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5499 "src/Compiler/pars.fsy" +//# 6031 "src/Compiler/pars.fsy" let tp, typ = _1, _3 let m = lhs parseState SynType.WithGlobalConstraints(SynType.Var(tp, rhs parseState 1), [SynTypeConstraint.WhereTyparSubtypeOfType(tp, typ, m)], m) ) -//# 5499 "src/Compiler/pars.fsy" +//# 6031 "src/Compiler/pars.fsy" : 'gentype_appType)); -//# 15469 "pars.fs" +//# 16621 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> SynType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5504 "src/Compiler/pars.fsy" +//# 6036 "src/Compiler/pars.fsy" SynType.HashConstraint(_3, lhs parseState) ) -//# 5504 "src/Compiler/pars.fsy" +//# 6036 "src/Compiler/pars.fsy" : 'gentype_appType)); -//# 15480 "pars.fs" +//# 16632 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5508 "src/Compiler/pars.fsy" +//# 6040 "src/Compiler/pars.fsy" 1 ) -//# 5508 "src/Compiler/pars.fsy" +//# 6040 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15490 "pars.fs" +//# 16642 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5511 "src/Compiler/pars.fsy" +//# 6043 "src/Compiler/pars.fsy" 2 ) -//# 5511 "src/Compiler/pars.fsy" +//# 6043 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15500 "pars.fs" +//# 16652 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5514 "src/Compiler/pars.fsy" +//# 6046 "src/Compiler/pars.fsy" 3 ) -//# 5514 "src/Compiler/pars.fsy" +//# 6046 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15510 "pars.fs" +//# 16662 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5517 "src/Compiler/pars.fsy" +//# 6049 "src/Compiler/pars.fsy" 4 ) -//# 5517 "src/Compiler/pars.fsy" +//# 6049 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15520 "pars.fs" +//# 16672 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5520 "src/Compiler/pars.fsy" +//# 6052 "src/Compiler/pars.fsy" 5 ) -//# 5520 "src/Compiler/pars.fsy" +//# 6052 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15530 "pars.fs" +//# 16682 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5523 "src/Compiler/pars.fsy" +//# 6055 "src/Compiler/pars.fsy" 6 ) -//# 5523 "src/Compiler/pars.fsy" +//# 6055 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15540 "pars.fs" +//# 16692 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5526 "src/Compiler/pars.fsy" +//# 6058 "src/Compiler/pars.fsy" 7 ) -//# 5526 "src/Compiler/pars.fsy" +//# 6058 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15550 "pars.fs" +//# 16702 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5529 "src/Compiler/pars.fsy" +//# 6061 "src/Compiler/pars.fsy" 8 ) -//# 5529 "src/Compiler/pars.fsy" +//# 6061 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15560 "pars.fs" +//# 16712 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5532 "src/Compiler/pars.fsy" +//# 6064 "src/Compiler/pars.fsy" 9 ) -//# 5532 "src/Compiler/pars.fsy" +//# 6064 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15570 "pars.fs" +//# 16722 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5535 "src/Compiler/pars.fsy" +//# 6067 "src/Compiler/pars.fsy" 10 ) -//# 5535 "src/Compiler/pars.fsy" +//# 6067 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15580 "pars.fs" +//# 16732 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5538 "src/Compiler/pars.fsy" +//# 6070 "src/Compiler/pars.fsy" 11 ) -//# 5538 "src/Compiler/pars.fsy" +//# 6070 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15590 "pars.fs" +//# 16742 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5541 "src/Compiler/pars.fsy" +//# 6073 "src/Compiler/pars.fsy" 12 ) -//# 5541 "src/Compiler/pars.fsy" +//# 6073 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15600 "pars.fs" +//# 16752 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5544 "src/Compiler/pars.fsy" +//# 6076 "src/Compiler/pars.fsy" 13 ) -//# 5544 "src/Compiler/pars.fsy" +//# 6076 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15610 "pars.fs" +//# 16762 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5547 "src/Compiler/pars.fsy" +//# 6079 "src/Compiler/pars.fsy" 14 ) -//# 5547 "src/Compiler/pars.fsy" +//# 6079 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15620 "pars.fs" +//# 16772 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5550 "src/Compiler/pars.fsy" +//# 6082 "src/Compiler/pars.fsy" 15 ) -//# 5550 "src/Compiler/pars.fsy" +//# 6082 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15630 "pars.fs" +//# 16782 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5553 "src/Compiler/pars.fsy" +//# 6085 "src/Compiler/pars.fsy" 16 ) -//# 5553 "src/Compiler/pars.fsy" +//# 6085 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15640 "pars.fs" +//# 16792 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5556 "src/Compiler/pars.fsy" +//# 6088 "src/Compiler/pars.fsy" 17 ) -//# 5556 "src/Compiler/pars.fsy" +//# 6088 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15650 "pars.fs" +//# 16802 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5559 "src/Compiler/pars.fsy" +//# 6091 "src/Compiler/pars.fsy" 18 ) -//# 5559 "src/Compiler/pars.fsy" +//# 6091 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15660 "pars.fs" +//# 16812 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5562 "src/Compiler/pars.fsy" +//# 6094 "src/Compiler/pars.fsy" 19 ) -//# 5562 "src/Compiler/pars.fsy" +//# 6094 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15670 "pars.fs" +//# 16822 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5565 "src/Compiler/pars.fsy" +//# 6097 "src/Compiler/pars.fsy" 20 ) -//# 5565 "src/Compiler/pars.fsy" +//# 6097 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15680 "pars.fs" +//# 16832 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5568 "src/Compiler/pars.fsy" +//# 6100 "src/Compiler/pars.fsy" 21 ) -//# 5568 "src/Compiler/pars.fsy" +//# 6100 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15690 "pars.fs" +//# 16842 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5571 "src/Compiler/pars.fsy" +//# 6103 "src/Compiler/pars.fsy" 22 ) -//# 5571 "src/Compiler/pars.fsy" +//# 6103 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15700 "pars.fs" +//# 16852 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5574 "src/Compiler/pars.fsy" +//# 6106 "src/Compiler/pars.fsy" 23 ) -//# 5574 "src/Compiler/pars.fsy" +//# 6106 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15710 "pars.fs" +//# 16862 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5577 "src/Compiler/pars.fsy" +//# 6109 "src/Compiler/pars.fsy" 24 ) -//# 5577 "src/Compiler/pars.fsy" +//# 6109 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15720 "pars.fs" +//# 16872 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5580 "src/Compiler/pars.fsy" +//# 6112 "src/Compiler/pars.fsy" 25 ) -//# 5580 "src/Compiler/pars.fsy" +//# 6112 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15730 "pars.fs" +//# 16882 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5583 "src/Compiler/pars.fsy" +//# 6115 "src/Compiler/pars.fsy" 26 ) -//# 5583 "src/Compiler/pars.fsy" +//# 6115 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15740 "pars.fs" +//# 16892 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5586 "src/Compiler/pars.fsy" +//# 6118 "src/Compiler/pars.fsy" 27 ) -//# 5586 "src/Compiler/pars.fsy" +//# 6118 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15750 "pars.fs" +//# 16902 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5589 "src/Compiler/pars.fsy" +//# 6121 "src/Compiler/pars.fsy" 28 ) -//# 5589 "src/Compiler/pars.fsy" +//# 6121 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15760 "pars.fs" +//# 16912 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5592 "src/Compiler/pars.fsy" +//# 6124 "src/Compiler/pars.fsy" 29 ) -//# 5592 "src/Compiler/pars.fsy" +//# 6124 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15770 "pars.fs" +//# 16922 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5595 "src/Compiler/pars.fsy" +//# 6127 "src/Compiler/pars.fsy" 30 ) -//# 5595 "src/Compiler/pars.fsy" +//# 6127 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15780 "pars.fs" +//# 16932 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5598 "src/Compiler/pars.fsy" +//# 6130 "src/Compiler/pars.fsy" 31 ) -//# 5598 "src/Compiler/pars.fsy" +//# 6130 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15790 "pars.fs" +//# 16942 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5601 "src/Compiler/pars.fsy" +//# 6133 "src/Compiler/pars.fsy" 32 ) -//# 5601 "src/Compiler/pars.fsy" +//# 6133 "src/Compiler/pars.fsy" : 'gentype_arrayTypeSuffix)); -//# 15800 "pars.fs" +//# 16952 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typeArgActual in let _3 = parseState.GetInput(3) :?> 'gentype_typeArgActual in @@ -15805,61 +16957,61 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5605 "src/Compiler/pars.fsy" +//# 6137 "src/Compiler/pars.fsy" let typeArgs, commas = _4 _1 :: _3 :: List.rev typeArgs, (rhs parseState 2) :: (List.rev commas) ) -//# 5605 "src/Compiler/pars.fsy" +//# 6137 "src/Compiler/pars.fsy" : 'gentype_appTypePrefixArguments)); -//# 15814 "pars.fs" +//# 16966 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typeArgListElements in let _3 = parseState.GetInput(3) :?> 'gentype_typeArgActual in Microsoft.FSharp.Core.Operators.box ( ( -//# 5610 "src/Compiler/pars.fsy" +//# 6142 "src/Compiler/pars.fsy" let typeArgs, commas = _1 _3 :: typeArgs, (rhs parseState 2) :: commas ) -//# 5610 "src/Compiler/pars.fsy" +//# 6142 "src/Compiler/pars.fsy" : 'gentype_typeArgListElements)); -//# 15827 "pars.fs" +//# 16979 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typeArgListElements in let _3 = parseState.GetInput(3) :?> 'gentype_dummyTypeArg in Microsoft.FSharp.Core.Operators.box ( ( -//# 5614 "src/Compiler/pars.fsy" +//# 6146 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsMissingTypeArgs()) let typeArgs, commas = _1 _3 :: typeArgs, (rhs parseState 2) :: commas ) -//# 5614 "src/Compiler/pars.fsy" +//# 6146 "src/Compiler/pars.fsy" : 'gentype_typeArgListElements)); -//# 15841 "pars.fs" +//# 16993 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5619 "src/Compiler/pars.fsy" +//# 6151 "src/Compiler/pars.fsy" [], [] ) -//# 5619 "src/Compiler/pars.fsy" +//# 6151 "src/Compiler/pars.fsy" : 'gentype_typeArgListElements)); -//# 15851 "pars.fs" +//# 17003 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomTypeOrAnonRecdType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5623 "src/Compiler/pars.fsy" +//# 6155 "src/Compiler/pars.fsy" _1 ) -//# 5623 "src/Compiler/pars.fsy" +//# 6155 "src/Compiler/pars.fsy" : 'gentype_powerType)); -//# 15862 "pars.fs" +//# 17014 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomTypeOrAnonRecdType in let _2 = parseState.GetInput(2) :?> string in @@ -15867,14 +17019,18 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5626 "src/Compiler/pars.fsy" +//# 6158 "src/Compiler/pars.fsy" if _2 <> "^" && _2 <> "^-" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedInfixOperator()) - if _2 = "^-" then SynType.MeasurePower(_1, SynRationalConst.Negate(_3), lhs parseState) + if _2 = "^-" then + let afterMinus = (rhs parseState 2).EndRange + let beforeMinus = shiftStart 0 -1 afterMinus + let m = unionRanges beforeMinus (rhs parseState 3) // include MINUS in Negate range + SynType.MeasurePower(_1, SynRationalConst.Negate(_3, m), lhs parseState) else SynType.MeasurePower(_1, _3, lhs parseState) ) -//# 5626 "src/Compiler/pars.fsy" +//# 6158 "src/Compiler/pars.fsy" : 'gentype_powerType)); -//# 15877 "pars.fs" +//# 17033 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_appTypePrefixArguments in let _3 = parseState.GetInput(3) :?> 'gentype_rparen in @@ -15882,7 +17038,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5635 "src/Compiler/pars.fsy" +//# 6171 "src/Compiler/pars.fsy" let args, commas = _2 if parseState.LexBuffer.SupportsFeature LanguageFeature.MLCompatRevisions then mlCompatError (FSComp.SR.mlCompatMultiPrefixTyparsNoLongerSupported()) (unionRanges (rhs parseState 1) _4.Range) @@ -15890,37 +17046,37 @@ let _fsyacc_reductions = lazy [| mlCompatWarning (FSComp.SR.parsMultiArgumentGenericTypeFormDeprecated()) (unionRanges (rhs parseState 1) _4.Range) SynType.App(_4, None, args, commas, None, true, unionRanges (rhs parseState 1) _4.Range) ) -//# 5635 "src/Compiler/pars.fsy" - : 'gentype_atomTypeNonAtomicDeprecated)); -//# 15895 "pars.fs" +//# 6171 "src/Compiler/pars.fsy" + : SynType)); +//# 17051 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5643 "src/Compiler/pars.fsy" +//# 6179 "src/Compiler/pars.fsy" _1 ) -//# 5643 "src/Compiler/pars.fsy" - : 'gentype_atomTypeNonAtomicDeprecated)); -//# 15906 "pars.fs" +//# 6179 "src/Compiler/pars.fsy" + : SynType)); +//# 17062 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5647 "src/Compiler/pars.fsy" +//# 6183 "src/Compiler/pars.fsy" _1 ) -//# 5647 "src/Compiler/pars.fsy" +//# 6183 "src/Compiler/pars.fsy" : 'gentype_atomTypeOrAnonRecdType)); -//# 15917 "pars.fs" +//# 17073 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_anonRecdType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5650 "src/Compiler/pars.fsy" +//# 6186 "src/Compiler/pars.fsy" let flds, isStruct = _1 let flds2 = flds |> List.choose (function @@ -15928,66 +17084,66 @@ let _fsyacc_reductions = lazy [| | _ -> reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsInvalidAnonRecdType()); None) SynType.AnonRecd(isStruct, flds2, rhs parseState 1) ) -//# 5650 "src/Compiler/pars.fsy" +//# 6186 "src/Compiler/pars.fsy" : 'gentype_atomTypeOrAnonRecdType)); -//# 15933 "pars.fs" +//# 17089 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_atomType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5661 "src/Compiler/pars.fsy" +//# 6197 "src/Compiler/pars.fsy" SynType.HashConstraint(_2, lhs parseState) ) -//# 5661 "src/Compiler/pars.fsy" +//# 6197 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 15944 "pars.fs" +//# 17100 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appTypeConPower in Microsoft.FSharp.Core.Operators.box ( ( -//# 5664 "src/Compiler/pars.fsy" +//# 6200 "src/Compiler/pars.fsy" _1 ) -//# 5664 "src/Compiler/pars.fsy" +//# 6200 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 15955 "pars.fs" +//# 17111 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5667 "src/Compiler/pars.fsy" +//# 6203 "src/Compiler/pars.fsy" SynType.Anon(lhs parseState) ) -//# 5667 "src/Compiler/pars.fsy" +//# 6203 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 15965 "pars.fs" +//# 17121 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynType in let _3 = parseState.GetInput(3) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 5670 "src/Compiler/pars.fsy" +//# 6206 "src/Compiler/pars.fsy" SynType.Paren(_2, lhs parseState) ) -//# 5670 "src/Compiler/pars.fsy" +//# 6206 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 15977 "pars.fs" +//# 17133 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynType in let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 5673 "src/Compiler/pars.fsy" +//# 6209 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen ()) SynType.Paren(_2, lhs parseState) ) -//# 5673 "src/Compiler/pars.fsy" +//# 6209 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 15990 "pars.fs" +//# 17146 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_appType in let _5 = parseState.GetInput(5) :?> 'gentype_tupleOrQuotTypeElements in @@ -15995,15 +17151,15 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5677 "src/Compiler/pars.fsy" +//# 6213 "src/Compiler/pars.fsy" let mStar = rhs parseState 4 let path = SynTupleTypeSegment.Type _3 :: SynTupleTypeSegment.Star mStar :: _5 let m = rhs2 parseState 1 6 SynType.Tuple(true, path, m) ) -//# 5677 "src/Compiler/pars.fsy" +//# 6213 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 16006 "pars.fs" +//# 17162 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_appType in let _5 = parseState.GetInput(5) :?> 'gentype_tupleOrQuotTypeElements in @@ -16011,144 +17167,144 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5683 "src/Compiler/pars.fsy" +//# 6219 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnmatchedParen()) let mStar = rhs parseState 4 let path = SynTupleTypeSegment.Type _3 :: SynTupleTypeSegment.Star mStar :: _5 let m = rhs2 parseState 1 5 SynType.Tuple(true, path, m) ) -//# 5683 "src/Compiler/pars.fsy" +//# 6219 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 16023 "pars.fs" +//# 17179 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_appType in let _5 = parseState.GetInput(5) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 5690 "src/Compiler/pars.fsy" +//# 6226 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnmatchedParen()) SynType.Anon(lhs parseState) ) -//# 5690 "src/Compiler/pars.fsy" +//# 6226 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 16036 "pars.fs" +//# 17192 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_appType in let _4 = parseState.GetInput(4) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 5694 "src/Compiler/pars.fsy" +//# 6230 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnmatchedParen()) SynType.Anon(lhs parseState) ) -//# 5694 "src/Compiler/pars.fsy" +//# 6230 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 16049 "pars.fs" +//# 17205 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 5698 "src/Compiler/pars.fsy" +//# 6234 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnmatchedParen()) SynType.Anon(lhs parseState) ) -//# 5698 "src/Compiler/pars.fsy" +//# 6234 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 16061 "pars.fs" +//# 17217 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_rawConstant in Microsoft.FSharp.Core.Operators.box ( ( -//# 5702 "src/Compiler/pars.fsy" +//# 6238 "src/Compiler/pars.fsy" SynType.StaticConstant(_1, rhs parseState 1) ) -//# 5702 "src/Compiler/pars.fsy" +//# 6238 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 16072 "pars.fs" +//# 17228 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5705 "src/Compiler/pars.fsy" +//# 6241 "src/Compiler/pars.fsy" let m = rhs parseState 1 SynType.StaticConstant(SynConst.String(null, SynStringKind.Regular, m), m) ) -//# 5705 "src/Compiler/pars.fsy" +//# 6241 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 16083 "pars.fs" +//# 17239 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> SynExpr * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 5709 "src/Compiler/pars.fsy" +//# 6245 "src/Compiler/pars.fsy" let e, _ = _2 SynType.StaticConstantExpr(e, lhs parseState) ) -//# 5709 "src/Compiler/pars.fsy" +//# 6245 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 16095 "pars.fs" +//# 17251 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5713 "src/Compiler/pars.fsy" +//# 6249 "src/Compiler/pars.fsy" SynType.StaticConstant(SynConst.Bool false, lhs parseState) ) -//# 5713 "src/Compiler/pars.fsy" +//# 6249 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 16105 "pars.fs" +//# 17261 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5716 "src/Compiler/pars.fsy" +//# 6252 "src/Compiler/pars.fsy" SynType.StaticConstant(SynConst.Bool true, lhs parseState) ) -//# 5716 "src/Compiler/pars.fsy" +//# 6252 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 16115 "pars.fs" +//# 17271 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 5719 "src/Compiler/pars.fsy" +//# 6255 "src/Compiler/pars.fsy" (* silent recovery *) SynType.Anon(lhs parseState) ) -//# 5719 "src/Compiler/pars.fsy" +//# 6255 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 16126 "pars.fs" +//# 17282 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appTypeCon in let _2 = parseState.GetInput(2) :?> range * range option * SynType list * range list * range in Microsoft.FSharp.Core.Operators.box ( ( -//# 5722 "src/Compiler/pars.fsy" +//# 6258 "src/Compiler/pars.fsy" let mLessThan, mGreaterThan, args, commas, mWhole = _2 SynType.App(_1, Some(mLessThan), args, commas, mGreaterThan, false, unionRanges _1.Range mWhole) ) -//# 5722 "src/Compiler/pars.fsy" +//# 6258 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 16139 "pars.fs" +//# 17295 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomType in let _3 = parseState.GetInput(3) :?> SynLongIdent in Microsoft.FSharp.Core.Operators.box ( ( -//# 5726 "src/Compiler/pars.fsy" +//# 6262 "src/Compiler/pars.fsy" SynType.LongIdentApp(_1, _3, None, [], [], None, unionRanges (rhs parseState 1) _3.Range) ) -//# 5726 "src/Compiler/pars.fsy" +//# 6262 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 16151 "pars.fs" +//# 17307 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_atomType in let _3 = parseState.GetInput(3) :?> SynLongIdent in @@ -16156,52 +17312,52 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5729 "src/Compiler/pars.fsy" +//# 6265 "src/Compiler/pars.fsy" let mLessThan, mGreaterThan, args, commas, mWhole = _4 SynType.LongIdentApp(_1, _3, Some(mLessThan), args, commas, mGreaterThan, unionRanges _1.Range mWhole) ) -//# 5729 "src/Compiler/pars.fsy" +//# 6265 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 16165 "pars.fs" +//# 17321 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_appTypeCon in let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 5733 "src/Compiler/pars.fsy" +//# 6269 "src/Compiler/pars.fsy" if not _3 then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectedNameAfterToken()) _1 ) -//# 5733 "src/Compiler/pars.fsy" +//# 6269 "src/Compiler/pars.fsy" : 'gentype_atomType)); -//# 16178 "pars.fs" +//# 17334 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> range * range option * bool * SynType list * range list * range in Microsoft.FSharp.Core.Operators.box ( ( -//# 5738 "src/Compiler/pars.fsy" +//# 6274 "src/Compiler/pars.fsy" let mLessThan, mGreaterThan, parsedOk, args, commas, mAll = _1 if parsedOk then // if someone has "foo let _2 = parseState.GetInput(2) :?> range * range option * bool * SynType list * range list * range in Microsoft.FSharp.Core.Operators.box ( ( -//# 5744 "src/Compiler/pars.fsy" +//# 6280 "src/Compiler/pars.fsy" let mLessThan, mGreaterThan, _, args, commas, mAll = _2 mLessThan, mGreaterThan, args, commas, mAll ) -//# 5744 "src/Compiler/pars.fsy" +//# 6280 "src/Compiler/pars.fsy" : range * range option * SynType list * range list * range)); -//# 16204 "pars.fs" +//# 17360 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in let _2 = parseState.GetInput(2) :?> 'gentype_typeArgActualOrDummyIfEmpty in @@ -16211,13 +17367,13 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5749 "src/Compiler/pars.fsy" +//# 6285 "src/Compiler/pars.fsy" let typeArgs, commas = _5 (rhs parseState 1), Some(rhs parseState 6), true, (_2 :: _4 :: List.rev typeArgs), (rhs parseState 3) :: (List.rev commas), lhs parseState ) -//# 5749 "src/Compiler/pars.fsy" +//# 6285 "src/Compiler/pars.fsy" : range * range option * bool * SynType list * range list * range)); -//# 16220 "pars.fs" +//# 17376 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in let _2 = parseState.GetInput(2) :?> 'gentype_typeArgActualOrDummyIfEmpty in @@ -16227,7 +17383,7 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5753 "src/Compiler/pars.fsy" +//# 6289 "src/Compiler/pars.fsy" if not _6 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileTypeArgs()) else @@ -16237,9 +17393,9 @@ let _fsyacc_reductions = lazy [| let zeroWidthAtStartOfNextToken = nextToken.StartRange (rhs parseState 1), None, false, (_2 :: _4 :: List.rev typeArgs), (rhs parseState 3) :: (List.rev commas), unionRanges (rhs parseState 1) zeroWidthAtStartOfNextToken ) -//# 5753 "src/Compiler/pars.fsy" +//# 6289 "src/Compiler/pars.fsy" : range * range option * bool * SynType list * range list * range)); -//# 16242 "pars.fs" +//# 17398 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in let _2 = parseState.GetInput(2) :?> 'gentype_typeArgActualOrDummyIfEmpty in @@ -16247,15 +17403,15 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5763 "src/Compiler/pars.fsy" +//# 6299 "src/Compiler/pars.fsy" if not _4 then reportParseErrorAt (rhs parseState 4) (FSComp.SR.parsMissingTypeArgs()) let nextToken = rhs parseState 4 let zeroWidthAtStartOfNextToken = nextToken.StartRange (rhs parseState 1), None, false, [_2], [rhs parseState 3], unionRanges (rhs parseState 1) zeroWidthAtStartOfNextToken ) -//# 5763 "src/Compiler/pars.fsy" +//# 6299 "src/Compiler/pars.fsy" : range * range option * bool * SynType list * range list * range)); -//# 16258 "pars.fs" +//# 17414 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in let _2 = parseState.GetInput(2) :?> 'gentype_typeArgActual in @@ -16263,12 +17419,12 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5769 "src/Compiler/pars.fsy" +//# 6305 "src/Compiler/pars.fsy" (rhs parseState 1), Some(rhs parseState 3), true, [_2], [], lhs parseState ) -//# 5769 "src/Compiler/pars.fsy" +//# 6305 "src/Compiler/pars.fsy" : range * range option * bool * SynType list * range list * range)); -//# 16271 "pars.fs" +//# 17427 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in let _2 = parseState.GetInput(2) :?> 'gentype_typeArgActual in @@ -16276,34 +17432,34 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5772 "src/Compiler/pars.fsy" +//# 6308 "src/Compiler/pars.fsy" let nextToken = rhs parseState 3 if not _3 then reportParseErrorAt nextToken (FSComp.SR.parsMissingTypeArgs()) let zeroWidthAtStartOfNextToken = nextToken.StartRange (rhs parseState 1), None, false, [_2], [], unionRanges (rhs parseState 1) zeroWidthAtStartOfNextToken ) -//# 5772 "src/Compiler/pars.fsy" +//# 6308 "src/Compiler/pars.fsy" : range * range option * bool * SynType list * range list * range)); -//# 16287 "pars.fs" +//# 17443 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in let _2 = parseState.GetInput(2) :?> bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 5778 "src/Compiler/pars.fsy" +//# 6314 "src/Compiler/pars.fsy" (rhs parseState 1), Some(rhs parseState 2), true, [], [], lhs parseState ) -//# 5778 "src/Compiler/pars.fsy" +//# 6314 "src/Compiler/pars.fsy" : range * range option * bool * SynType list * range list * range)); -//# 16299 "pars.fs" +//# 17455 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in let _2 = parseState.GetInput(2) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 5781 "src/Compiler/pars.fsy" +//# 6317 "src/Compiler/pars.fsy" if not _2 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsExpectedTypeAfterToken()) else @@ -16312,83 +17468,83 @@ let _fsyacc_reductions = lazy [| let zeroWidthAtStartOfNextToken = nextToken.StartRange (rhs parseState 1), None, false, [], [], unionRanges (rhs parseState 1) zeroWidthAtStartOfNextToken ) -//# 5781 "src/Compiler/pars.fsy" +//# 6317 "src/Compiler/pars.fsy" : range * range option * bool * SynType list * range list * range)); -//# 16317 "pars.fs" +//# 17473 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5791 "src/Compiler/pars.fsy" +//# 6327 "src/Compiler/pars.fsy" _1 ) -//# 5791 "src/Compiler/pars.fsy" +//# 6327 "src/Compiler/pars.fsy" : 'gentype_typeArgActual)); -//# 16328 "pars.fs" +//# 17484 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynType in let _3 = parseState.GetInput(3) :?> SynType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5794 "src/Compiler/pars.fsy" +//# 6330 "src/Compiler/pars.fsy" SynType.StaticConstantNamed(_1, _3, unionRanges _1.Range _3.Range) ) -//# 5794 "src/Compiler/pars.fsy" +//# 6330 "src/Compiler/pars.fsy" : 'gentype_typeArgActual)); -//# 16340 "pars.fs" +//# 17496 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynType in Microsoft.FSharp.Core.Operators.box ( ( -//# 5797 "src/Compiler/pars.fsy" +//# 6333 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsMissingTypeArgs()) let dummy = SynType.StaticConstant(SynConst.Int32(0), rhs parseState 2) SynType.StaticConstantNamed(_1, dummy, (rhs2 parseState 1 2)) ) -//# 5797 "src/Compiler/pars.fsy" +//# 6333 "src/Compiler/pars.fsy" : 'gentype_typeArgActual)); -//# 16354 "pars.fs" +//# 17510 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_typeArgActual in Microsoft.FSharp.Core.Operators.box ( ( -//# 5804 "src/Compiler/pars.fsy" +//# 6340 "src/Compiler/pars.fsy" _1 ) -//# 5804 "src/Compiler/pars.fsy" +//# 6340 "src/Compiler/pars.fsy" : 'gentype_typeArgActualOrDummyIfEmpty)); -//# 16365 "pars.fs" +//# 17521 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_dummyTypeArg in Microsoft.FSharp.Core.Operators.box ( ( -//# 5807 "src/Compiler/pars.fsy" +//# 6343 "src/Compiler/pars.fsy" reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsMissingTypeArgs()) _1 ) -//# 5807 "src/Compiler/pars.fsy" +//# 6343 "src/Compiler/pars.fsy" : 'gentype_typeArgActualOrDummyIfEmpty)); -//# 16377 "pars.fs" +//# 17533 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5812 "src/Compiler/pars.fsy" +//# 6348 "src/Compiler/pars.fsy" let m = rhs parseState 1 let dummyStatVal = SynType.StaticConstant(SynConst.Int32(0), m) let dummyName = SynType.LongIdent(SynLongIdent([ident("", m)], [], [None])) let dummyTypeArg = SynType.StaticConstantNamed(dummyName, dummyStatVal, m) dummyTypeArg ) -//# 5812 "src/Compiler/pars.fsy" +//# 6348 "src/Compiler/pars.fsy" : 'gentype_dummyTypeArg)); -//# 16391 "pars.fs" +//# 17547 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in let _2 = parseState.GetInput(2) :?> 'gentype_measureTypeExpr in @@ -16396,70 +17552,76 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5820 "src/Compiler/pars.fsy" - _2 +//# 6356 "src/Compiler/pars.fsy" + let mLess = rhs parseState 1 + let mGreater = rhs parseState 3 + let trivia = { LessRange = mLess; GreaterRange = mGreater } + _2, trivia ) -//# 5820 "src/Compiler/pars.fsy" +//# 6356 "src/Compiler/pars.fsy" : 'gentype_measureTypeArg)); -//# 16404 "pars.fs" +//# 17563 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in let _3 = parseState.GetInput(3) :?> bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 5823 "src/Compiler/pars.fsy" - SynMeasure.Anon(lhs parseState) +//# 6362 "src/Compiler/pars.fsy" + let mLess = rhs parseState 1 + let mGreater = rhs parseState 3 + let trivia = { LessRange = mLess; GreaterRange = mGreater } + SynMeasure.Anon(rhs parseState 2), trivia ) -//# 5823 "src/Compiler/pars.fsy" +//# 6362 "src/Compiler/pars.fsy" : 'gentype_measureTypeArg)); -//# 16416 "pars.fs" +//# 17578 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynLongIdent in Microsoft.FSharp.Core.Operators.box ( ( -//# 5827 "src/Compiler/pars.fsy" +//# 6369 "src/Compiler/pars.fsy" SynMeasure.Named(_1.LongIdent, _1.Range) ) -//# 5827 "src/Compiler/pars.fsy" +//# 6369 "src/Compiler/pars.fsy" : 'gentype_measureTypeAtom)); -//# 16427 "pars.fs" +//# 17589 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynTypar in Microsoft.FSharp.Core.Operators.box ( ( -//# 5830 "src/Compiler/pars.fsy" +//# 6372 "src/Compiler/pars.fsy" SynMeasure.Var(_1, lhs parseState) ) -//# 5830 "src/Compiler/pars.fsy" +//# 6372 "src/Compiler/pars.fsy" : 'gentype_measureTypeAtom)); -//# 16438 "pars.fs" +//# 17600 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_measureTypeExpr in let _3 = parseState.GetInput(3) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 5833 "src/Compiler/pars.fsy" +//# 6375 "src/Compiler/pars.fsy" let mParen = rhs2 parseState 1 3 SynMeasure.Paren(_2, mParen) ) -//# 5833 "src/Compiler/pars.fsy" +//# 6375 "src/Compiler/pars.fsy" : 'gentype_measureTypeAtom)); -//# 16451 "pars.fs" +//# 17613 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_measureTypeAtom in Microsoft.FSharp.Core.Operators.box ( ( -//# 5838 "src/Compiler/pars.fsy" +//# 6380 "src/Compiler/pars.fsy" _1 ) -//# 5838 "src/Compiler/pars.fsy" +//# 6380 "src/Compiler/pars.fsy" : 'gentype_measureTypePower)); -//# 16462 "pars.fs" +//# 17624 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_measureTypeAtom in let _2 = parseState.GetInput(2) :?> string in @@ -16467,72 +17629,79 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5841 "src/Compiler/pars.fsy" +//# 6383 "src/Compiler/pars.fsy" if _2 <> "^" && _2 <> "^-" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedOperatorForUnitOfMeasure()) - if _2 = "^-" then SynMeasure.Power(_1, SynRationalConst.Negate(_3), lhs parseState) - else SynMeasure.Power(_1, _3, lhs parseState) - ) -//# 5841 "src/Compiler/pars.fsy" + if _2 = "^-" then + let mOp = rhs parseState 2 + let afterMinus = mOp.EndRange + let beforeMinus = shiftStart 0 -1 afterMinus + let mNegate = unionRanges beforeMinus (rhs parseState 3) // include MINUS in Negate range + let mCaret = unionRanges mOp.StartRange mNegate.StartRange + SynMeasure.Power(_1, mCaret, SynRationalConst.Negate(_3, mNegate), lhs parseState) + else SynMeasure.Power(_1, rhs parseState 2, _3, lhs parseState) + ) +//# 6383 "src/Compiler/pars.fsy" : 'gentype_measureTypePower)); -//# 16477 "pars.fs" +//# 17645 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> int32 * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 5846 "src/Compiler/pars.fsy" +//# 6394 "src/Compiler/pars.fsy" if fst _1 <> 1 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedIntegerLiteralForUnitOfMeasure()) - SynMeasure.One + let m = rhs parseState 1 + SynMeasure.One(m) ) -//# 5846 "src/Compiler/pars.fsy" +//# 6394 "src/Compiler/pars.fsy" : 'gentype_measureTypePower)); -//# 16489 "pars.fs" +//# 17658 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_measureTypePower in Microsoft.FSharp.Core.Operators.box ( ( -//# 5851 "src/Compiler/pars.fsy" +//# 6400 "src/Compiler/pars.fsy" [_1] ) -//# 5851 "src/Compiler/pars.fsy" +//# 6400 "src/Compiler/pars.fsy" : 'gentype_measureTypeSeq)); -//# 16500 "pars.fs" +//# 17669 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_measureTypePower in let _2 = parseState.GetInput(2) :?> 'gentype_measureTypeSeq in Microsoft.FSharp.Core.Operators.box ( ( -//# 5854 "src/Compiler/pars.fsy" +//# 6403 "src/Compiler/pars.fsy" _1 :: _2 ) -//# 5854 "src/Compiler/pars.fsy" +//# 6403 "src/Compiler/pars.fsy" : 'gentype_measureTypeSeq)); -//# 16512 "pars.fs" +//# 17681 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_measureTypeSeq in Microsoft.FSharp.Core.Operators.box ( ( -//# 5858 "src/Compiler/pars.fsy" +//# 6407 "src/Compiler/pars.fsy" SynMeasure.Seq(_1, lhs parseState) ) -//# 5858 "src/Compiler/pars.fsy" +//# 6407 "src/Compiler/pars.fsy" : 'gentype_measureTypeExpr)); -//# 16523 "pars.fs" +//# 17692 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_measureTypeExpr in let _3 = parseState.GetInput(3) :?> 'gentype_measureTypeExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 5861 "src/Compiler/pars.fsy" - SynMeasure.Product(_1, _3, lhs parseState) +//# 6410 "src/Compiler/pars.fsy" + SynMeasure.Product(_1, rhs parseState 2, _3, lhs parseState) ) -//# 5861 "src/Compiler/pars.fsy" +//# 6410 "src/Compiler/pars.fsy" : 'gentype_measureTypeExpr)); -//# 16535 "pars.fs" +//# 17704 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_measureTypeExpr in let _2 = parseState.GetInput(2) :?> string in @@ -16540,1066 +17709,1072 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 5864 "src/Compiler/pars.fsy" +//# 6413 "src/Compiler/pars.fsy" if _2 <> "*" && _2 <> "/" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedOperatorForUnitOfMeasure()) - if _2 = "*" then SynMeasure.Product(_1, _3, lhs parseState) - else SynMeasure.Divide(_1, _3, lhs parseState) + if _2 = "*" then SynMeasure.Product(_1, rhs parseState 2, _3, lhs parseState) + else SynMeasure.Divide(Some _1, rhs parseState 2, _3, lhs parseState) ) -//# 5864 "src/Compiler/pars.fsy" +//# 6413 "src/Compiler/pars.fsy" : 'gentype_measureTypeExpr)); -//# 16550 "pars.fs" +//# 17719 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in let _2 = parseState.GetInput(2) :?> 'gentype_measureTypeExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 5869 "src/Compiler/pars.fsy" +//# 6418 "src/Compiler/pars.fsy" if _1 <> "/" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedOperatorForUnitOfMeasure()) - SynMeasure.Divide(SynMeasure.One, _2, lhs parseState) + SynMeasure.Divide(None, rhs parseState 1, _2, lhs parseState) ) -//# 5869 "src/Compiler/pars.fsy" +//# 6418 "src/Compiler/pars.fsy" : 'gentype_measureTypeExpr)); -//# 16563 "pars.fs" +//# 17732 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> Ident in Microsoft.FSharp.Core.Operators.box ( ( -//# 5874 "src/Compiler/pars.fsy" +//# 6423 "src/Compiler/pars.fsy" let id = mkSynId (lhs parseState) (_2).idText SynTypar(id, TyparStaticReq.None, false) ) -//# 5874 "src/Compiler/pars.fsy" +//# 6423 "src/Compiler/pars.fsy" : SynTypar)); -//# 16575 "pars.fs" +//# 17744 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in let _2 = parseState.GetInput(2) :?> Ident in Microsoft.FSharp.Core.Operators.box ( ( -//# 5878 "src/Compiler/pars.fsy" +//# 6427 "src/Compiler/pars.fsy" if _1 <> "^" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.tcUnexpectedSymbolInTypeExpression(_1)) let id = mkSynId (lhs parseState) (_2).idText SynTypar(id, TyparStaticReq.HeadType, false) ) -//# 5878 "src/Compiler/pars.fsy" +//# 6427 "src/Compiler/pars.fsy" : SynTypar)); -//# 16589 "pars.fs" +//# 17758 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 5884 "src/Compiler/pars.fsy" +//# 6433 "src/Compiler/pars.fsy" ident(_1, rhs parseState 1) ) -//# 5884 "src/Compiler/pars.fsy" +//# 6433 "src/Compiler/pars.fsy" : Ident)); -//# 16600 "pars.fs" +//# 17769 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5889 "src/Compiler/pars.fsy" +//# 6438 "src/Compiler/pars.fsy" SynLongIdent([ident(MangledGlobalName, rhs parseState 1)], [], [Some(IdentTrivia.OriginalNotation "global")]) ) -//# 5889 "src/Compiler/pars.fsy" +//# 6438 "src/Compiler/pars.fsy" : SynLongIdent)); -//# 16610 "pars.fs" +//# 17779 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Ident in Microsoft.FSharp.Core.Operators.box ( ( -//# 5892 "src/Compiler/pars.fsy" +//# 6441 "src/Compiler/pars.fsy" SynLongIdent([_1], [], [None]) ) -//# 5892 "src/Compiler/pars.fsy" +//# 6441 "src/Compiler/pars.fsy" : SynLongIdent)); -//# 16621 "pars.fs" +//# 17790 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynLongIdent in let _3 = parseState.GetInput(3) :?> Ident in Microsoft.FSharp.Core.Operators.box ( ( -//# 5895 "src/Compiler/pars.fsy" +//# 6444 "src/Compiler/pars.fsy" let (SynLongIdent(lid, dotms, trivia)) = _1 SynLongIdent(lid @ [_3], dotms @ [rhs parseState 2], trivia @ [None]) ) -//# 5895 "src/Compiler/pars.fsy" +//# 6444 "src/Compiler/pars.fsy" : SynLongIdent)); -//# 16634 "pars.fs" +//# 17803 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynLongIdent in let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 5899 "src/Compiler/pars.fsy" +//# 6448 "src/Compiler/pars.fsy" if not _3 then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectedNameAfterToken()) let (SynLongIdent(lid, dotms, trivia)) = _1 SynLongIdent(lid, dotms @ [rhs parseState 2], trivia) ) -//# 5899 "src/Compiler/pars.fsy" +//# 6448 "src/Compiler/pars.fsy" : SynLongIdent)); -//# 16648 "pars.fs" +//# 17817 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_operatorName in let _3 = parseState.GetInput(3) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 5907 "src/Compiler/pars.fsy" +//# 6456 "src/Compiler/pars.fsy" let lpr = rhs parseState 1 let rpr = rhs parseState 3 ident(CompileOpName _2, rhs parseState 2), IdentTrivia.OriginalNotationWithParen(lpr, _2, rpr) ) -//# 5907 "src/Compiler/pars.fsy" +//# 6456 "src/Compiler/pars.fsy" : 'gentype_opName)); -//# 16662 "pars.fs" +//# 17831 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _3 = parseState.GetInput(3) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 5912 "src/Compiler/pars.fsy" +//# 6461 "src/Compiler/pars.fsy" reportParseErrorAt (lhs parseState) (FSComp.SR.parsErrorParsingAsOperatorName()) let lpr = rhs parseState 1 let rpr = rhs parseState 3 ident(CompileOpName "****", rhs parseState 2), IdentTrivia.HasParenthesis(lpr, rpr) ) -//# 5912 "src/Compiler/pars.fsy" +//# 6461 "src/Compiler/pars.fsy" : 'gentype_opName)); -//# 16676 "pars.fs" +//# 17845 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5918 "src/Compiler/pars.fsy" +//# 6467 "src/Compiler/pars.fsy" let m = rhs parseState 1 let lpr = mkFileIndexRange m.FileIndex m.Start m.Start let rpr = mkFileIndexRange m.FileIndex m.End m.End ident(CompileOpName "*", rhs parseState 1), IdentTrivia.OriginalNotationWithParen(lpr, "*", rpr) ) -//# 5918 "src/Compiler/pars.fsy" +//# 6467 "src/Compiler/pars.fsy" : 'gentype_opName)); -//# 16689 "pars.fs" +//# 17858 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_activePatternCaseNames in let _4 = parseState.GetInput(4) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 5925 "src/Compiler/pars.fsy" +//# 6474 "src/Compiler/pars.fsy" let lpr = rhs parseState 1 let text = ("|" + String.concat "|" (List.rev _2) + "|") let rpr = rhs parseState 4 ident(text, rhs2 parseState 2 3), IdentTrivia.HasParenthesis(lpr, rpr) ) -//# 5925 "src/Compiler/pars.fsy" +//# 6474 "src/Compiler/pars.fsy" : 'gentype_opName)); -//# 16704 "pars.fs" +//# 17873 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_activePatternCaseNames in let _6 = parseState.GetInput(6) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 5932 "src/Compiler/pars.fsy" +//# 6481 "src/Compiler/pars.fsy" let lpr = rhs parseState 1 let text = ("|" + String.concat "|" (List.rev _2) + "|_|") let rpr = rhs parseState 6 ident(text, rhs2 parseState 2 5), IdentTrivia.HasParenthesis(lpr, rpr) ) -//# 5932 "src/Compiler/pars.fsy" +//# 6481 "src/Compiler/pars.fsy" : 'gentype_opName)); -//# 16719 "pars.fs" +//# 17888 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 5940 "src/Compiler/pars.fsy" +//# 6489 "src/Compiler/pars.fsy" if not (IsValidPrefixOperatorDefinitionName _1) then reportParseErrorAt (lhs parseState) (FSComp.SR.parsInvalidPrefixOperatorDefinition()) _1 ) -//# 5940 "src/Compiler/pars.fsy" +//# 6489 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 16732 "pars.fs" +//# 17901 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 5945 "src/Compiler/pars.fsy" +//# 6494 "src/Compiler/pars.fsy" _1 ) -//# 5945 "src/Compiler/pars.fsy" +//# 6494 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 16743 "pars.fs" +//# 17912 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 5948 "src/Compiler/pars.fsy" +//# 6497 "src/Compiler/pars.fsy" _1 ) -//# 5948 "src/Compiler/pars.fsy" +//# 6497 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 16754 "pars.fs" +//# 17923 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 5951 "src/Compiler/pars.fsy" +//# 6500 "src/Compiler/pars.fsy" _1 ) -//# 5951 "src/Compiler/pars.fsy" +//# 6500 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 16765 "pars.fs" +//# 17934 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 5954 "src/Compiler/pars.fsy" +//# 6503 "src/Compiler/pars.fsy" _1 ) -//# 5954 "src/Compiler/pars.fsy" +//# 6503 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 16776 "pars.fs" +//# 17945 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 5957 "src/Compiler/pars.fsy" +//# 6506 "src/Compiler/pars.fsy" _1 ) -//# 5957 "src/Compiler/pars.fsy" +//# 6506 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 16787 "pars.fs" +//# 17956 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 5960 "src/Compiler/pars.fsy" +//# 6509 "src/Compiler/pars.fsy" _1 ) -//# 5960 "src/Compiler/pars.fsy" +//# 6509 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 16798 "pars.fs" +//# 17967 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 5963 "src/Compiler/pars.fsy" +//# 6512 "src/Compiler/pars.fsy" _1 ) -//# 5963 "src/Compiler/pars.fsy" +//# 6512 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 16809 "pars.fs" +//# 17978 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5966 "src/Compiler/pars.fsy" +//# 6515 "src/Compiler/pars.fsy" "$" ) -//# 5966 "src/Compiler/pars.fsy" +//# 6515 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 16819 "pars.fs" +//# 17988 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 5969 "src/Compiler/pars.fsy" +//# 6518 "src/Compiler/pars.fsy" _1 ) -//# 5969 "src/Compiler/pars.fsy" +//# 6518 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 16830 "pars.fs" +//# 17999 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5972 "src/Compiler/pars.fsy" +//# 6521 "src/Compiler/pars.fsy" "-" ) -//# 5972 "src/Compiler/pars.fsy" +//# 6521 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 16840 "pars.fs" +//# 18009 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5975 "src/Compiler/pars.fsy" +//# 6524 "src/Compiler/pars.fsy" "*" ) -//# 5975 "src/Compiler/pars.fsy" +//# 6524 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 16850 "pars.fs" +//# 18019 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5978 "src/Compiler/pars.fsy" +//# 6527 "src/Compiler/pars.fsy" "=" ) -//# 5978 "src/Compiler/pars.fsy" +//# 6527 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 16860 "pars.fs" +//# 18029 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5981 "src/Compiler/pars.fsy" +//# 6530 "src/Compiler/pars.fsy" "or" ) -//# 5981 "src/Compiler/pars.fsy" +//# 6530 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 16870 "pars.fs" +//# 18039 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 5984 "src/Compiler/pars.fsy" +//# 6533 "src/Compiler/pars.fsy" "<" ) -//# 5984 "src/Compiler/pars.fsy" +//# 6533 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 16881 "pars.fs" +//# 18050 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 5987 "src/Compiler/pars.fsy" +//# 6536 "src/Compiler/pars.fsy" ">" ) -//# 5987 "src/Compiler/pars.fsy" +//# 6536 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 16892 "pars.fs" +//# 18061 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5990 "src/Compiler/pars.fsy" +//# 6539 "src/Compiler/pars.fsy" "?" ) -//# 5990 "src/Compiler/pars.fsy" +//# 6539 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 16902 "pars.fs" +//# 18071 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5993 "src/Compiler/pars.fsy" +//# 6542 "src/Compiler/pars.fsy" "&" ) -//# 5993 "src/Compiler/pars.fsy" +//# 6542 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 16912 "pars.fs" +//# 18081 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5996 "src/Compiler/pars.fsy" +//# 6545 "src/Compiler/pars.fsy" "&&" ) -//# 5996 "src/Compiler/pars.fsy" +//# 6545 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 16922 "pars.fs" +//# 18091 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 5999 "src/Compiler/pars.fsy" +//# 6548 "src/Compiler/pars.fsy" "||" ) -//# 5999 "src/Compiler/pars.fsy" +//# 6548 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 16932 "pars.fs" +//# 18101 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6002 "src/Compiler/pars.fsy" +//# 6551 "src/Compiler/pars.fsy" ":=" ) -//# 6002 "src/Compiler/pars.fsy" +//# 6551 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 16942 "pars.fs" +//# 18111 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 6005 "src/Compiler/pars.fsy" +//# 6554 "src/Compiler/pars.fsy" if _1 <> ".[]" && _1 <> ".()" && _1 <> ".()<-" then deprecatedOperator (lhs parseState) _1 ) -//# 6005 "src/Compiler/pars.fsy" +//# 6554 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 16955 "pars.fs" +//# 18124 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 6010 "src/Compiler/pars.fsy" +//# 6559 "src/Compiler/pars.fsy" _1 ) -//# 6010 "src/Compiler/pars.fsy" +//# 6559 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 16966 "pars.fs" +//# 18135 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6013 "src/Compiler/pars.fsy" +//# 6562 "src/Compiler/pars.fsy" ".." ) -//# 6013 "src/Compiler/pars.fsy" +//# 6562 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 16976 "pars.fs" +//# 18145 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6016 "src/Compiler/pars.fsy" +//# 6565 "src/Compiler/pars.fsy" ".. .." ) -//# 6016 "src/Compiler/pars.fsy" +//# 6565 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 16986 "pars.fs" +//# 18155 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string * bool in let _2 = parseState.GetInput(2) :?> string * bool in Microsoft.FSharp.Core.Operators.box ( ( -//# 6019 "src/Compiler/pars.fsy" +//# 6568 "src/Compiler/pars.fsy" if _1 <> _2 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsMismatchedQuotationName(fst _1)) fst _1 ) -//# 6019 "src/Compiler/pars.fsy" +//# 6568 "src/Compiler/pars.fsy" : 'gentype_operatorName)); -//# 16999 "pars.fs" +//# 18168 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 6025 "src/Compiler/pars.fsy" +//# 6574 "src/Compiler/pars.fsy" if not (String.isLeadingIdentifierCharacterUpperCase _1) then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsActivePatternCaseMustBeginWithUpperCase()) if (_1.IndexOf('|') <> -1) then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsActivePatternCaseContainsPipe()) _1 ) -//# 6025 "src/Compiler/pars.fsy" +//# 6574 "src/Compiler/pars.fsy" : 'gentype_activePatternCaseName)); -//# 17012 "pars.fs" +//# 18181 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_activePatternCaseName in Microsoft.FSharp.Core.Operators.box ( ( -//# 6032 "src/Compiler/pars.fsy" +//# 6581 "src/Compiler/pars.fsy" [_2] ) -//# 6032 "src/Compiler/pars.fsy" +//# 6581 "src/Compiler/pars.fsy" : 'gentype_activePatternCaseNames)); -//# 17023 "pars.fs" +//# 18192 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_activePatternCaseNames in let _3 = parseState.GetInput(3) :?> 'gentype_activePatternCaseName in Microsoft.FSharp.Core.Operators.box ( ( -//# 6035 "src/Compiler/pars.fsy" +//# 6584 "src/Compiler/pars.fsy" _3 :: _1 ) -//# 6035 "src/Compiler/pars.fsy" +//# 6584 "src/Compiler/pars.fsy" : 'gentype_activePatternCaseNames)); -//# 17035 "pars.fs" +//# 18204 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Ident in Microsoft.FSharp.Core.Operators.box ( ( -//# 6040 "src/Compiler/pars.fsy" +//# 6589 "src/Compiler/pars.fsy" SynIdent(_1, None) ) -//# 6040 "src/Compiler/pars.fsy" +//# 6589 "src/Compiler/pars.fsy" : 'gentype_identOrOp)); -//# 17046 "pars.fs" +//# 18215 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opName in Microsoft.FSharp.Core.Operators.box ( ( -//# 6043 "src/Compiler/pars.fsy" +//# 6592 "src/Compiler/pars.fsy" let ident, trivia = _1 SynIdent(ident, Some trivia) ) -//# 6043 "src/Compiler/pars.fsy" +//# 6592 "src/Compiler/pars.fsy" : 'gentype_identOrOp)); -//# 17058 "pars.fs" +//# 18227 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Ident in Microsoft.FSharp.Core.Operators.box ( ( -//# 6050 "src/Compiler/pars.fsy" +//# 6599 "src/Compiler/pars.fsy" SynLongIdent([_1], [], [None]) ) -//# 6050 "src/Compiler/pars.fsy" +//# 6599 "src/Compiler/pars.fsy" : SynLongIdent)); -//# 17069 "pars.fs" +//# 18238 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opName in Microsoft.FSharp.Core.Operators.box ( ( -//# 6053 "src/Compiler/pars.fsy" +//# 6602 "src/Compiler/pars.fsy" let ident, trivia = _1 SynLongIdent([ident], [], [Some trivia]) ) -//# 6053 "src/Compiler/pars.fsy" +//# 6602 "src/Compiler/pars.fsy" : SynLongIdent)); -//# 17081 "pars.fs" +//# 18250 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Ident in let _3 = parseState.GetInput(3) :?> SynLongIdent in Microsoft.FSharp.Core.Operators.box ( ( -//# 6057 "src/Compiler/pars.fsy" +//# 6606 "src/Compiler/pars.fsy" prependIdentInLongIdentWithTrivia (SynIdent(_1, None)) (rhs parseState 2) _3 ) -//# 6057 "src/Compiler/pars.fsy" +//# 6606 "src/Compiler/pars.fsy" : SynLongIdent)); -//# 17093 "pars.fs" +//# 18262 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Ident in + let _3 = parseState.GetInput(3) :?> 'gentype_ends_coming_soon_or_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 6060 "src/Compiler/pars.fsy" - (* silent recovery *) SynLongIdent([_1], [rhs parseState 2], [None]) +//# 6609 "src/Compiler/pars.fsy" + if not _3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsIdentifierExpected()) + SynLongIdent([_1], [rhs parseState 2], [None]) ) -//# 6060 "src/Compiler/pars.fsy" +//# 6609 "src/Compiler/pars.fsy" : SynLongIdent)); -//# 17104 "pars.fs" +//# 18275 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_identOrOp in Microsoft.FSharp.Core.Operators.box ( ( -//# 6065 "src/Compiler/pars.fsy" +//# 6615 "src/Compiler/pars.fsy" _1 ) -//# 6065 "src/Compiler/pars.fsy" +//# 6615 "src/Compiler/pars.fsy" : 'gentype_nameop)); -//# 17115 "pars.fs" +//# 18286 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> Ident in Microsoft.FSharp.Core.Operators.box ( ( -//# 6069 "src/Compiler/pars.fsy" +//# 6619 "src/Compiler/pars.fsy" if _1.idText = "" then SynExpr.FromParseError(SynExpr.Ident(_1), _1.idRange) else SynExpr.Ident(_1) ) -//# 6069 "src/Compiler/pars.fsy" +//# 6619 "src/Compiler/pars.fsy" : 'gentype_identExpr)); -//# 17129 "pars.fs" +//# 18300 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_opName in Microsoft.FSharp.Core.Operators.box ( ( -//# 6075 "src/Compiler/pars.fsy" +//# 6625 "src/Compiler/pars.fsy" let m = lhs parseState let ident, trivia = _1 SynExpr.LongIdent(false, SynLongIdent([ident], [], [Some trivia]), None, m) ) -//# 6075 "src/Compiler/pars.fsy" +//# 6625 "src/Compiler/pars.fsy" : 'gentype_identExpr)); -//# 17142 "pars.fs" +//# 18313 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6080 "src/Compiler/pars.fsy" +//# 6630 "src/Compiler/pars.fsy" ) -//# 6080 "src/Compiler/pars.fsy" +//# 6630 "src/Compiler/pars.fsy" : 'gentype_topSeparator)); -//# 17152 "pars.fs" +//# 18323 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6081 "src/Compiler/pars.fsy" +//# 6631 "src/Compiler/pars.fsy" ) -//# 6081 "src/Compiler/pars.fsy" +//# 6631 "src/Compiler/pars.fsy" : 'gentype_topSeparator)); -//# 17162 "pars.fs" +//# 18333 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6082 "src/Compiler/pars.fsy" +//# 6632 "src/Compiler/pars.fsy" ) -//# 6082 "src/Compiler/pars.fsy" +//# 6632 "src/Compiler/pars.fsy" : 'gentype_topSeparator)); -//# 17172 "pars.fs" +//# 18343 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_topSeparator in Microsoft.FSharp.Core.Operators.box ( ( -//# 6085 "src/Compiler/pars.fsy" +//# 6635 "src/Compiler/pars.fsy" ) -//# 6085 "src/Compiler/pars.fsy" +//# 6635 "src/Compiler/pars.fsy" : 'gentype_topSeparators)); -//# 17183 "pars.fs" +//# 18354 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_topSeparator in let _2 = parseState.GetInput(2) :?> 'gentype_topSeparators in Microsoft.FSharp.Core.Operators.box ( ( -//# 6086 "src/Compiler/pars.fsy" +//# 6636 "src/Compiler/pars.fsy" ) -//# 6086 "src/Compiler/pars.fsy" +//# 6636 "src/Compiler/pars.fsy" : 'gentype_topSeparators)); -//# 17195 "pars.fs" +//# 18366 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_topSeparator in let _2 = parseState.GetInput(2) :?> 'gentype_opt_topSeparators in Microsoft.FSharp.Core.Operators.box ( ( -//# 6089 "src/Compiler/pars.fsy" +//# 6639 "src/Compiler/pars.fsy" ) -//# 6089 "src/Compiler/pars.fsy" +//# 6639 "src/Compiler/pars.fsy" : 'gentype_opt_topSeparators)); -//# 17207 "pars.fs" +//# 18378 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6090 "src/Compiler/pars.fsy" +//# 6640 "src/Compiler/pars.fsy" ) -//# 6090 "src/Compiler/pars.fsy" +//# 6640 "src/Compiler/pars.fsy" : 'gentype_opt_topSeparators)); -//# 17217 "pars.fs" +//# 18388 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6094 "src/Compiler/pars.fsy" +//# 6644 "src/Compiler/pars.fsy" ) -//# 6094 "src/Compiler/pars.fsy" +//# 6644 "src/Compiler/pars.fsy" : 'gentype_seps)); -//# 17227 "pars.fs" +//# 18398 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6095 "src/Compiler/pars.fsy" +//# 6645 "src/Compiler/pars.fsy" ) -//# 6095 "src/Compiler/pars.fsy" +//# 6645 "src/Compiler/pars.fsy" : 'gentype_seps)); -//# 17237 "pars.fs" +//# 18408 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6096 "src/Compiler/pars.fsy" +//# 6646 "src/Compiler/pars.fsy" ) -//# 6096 "src/Compiler/pars.fsy" +//# 6646 "src/Compiler/pars.fsy" : 'gentype_seps)); -//# 17247 "pars.fs" +//# 18418 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6097 "src/Compiler/pars.fsy" +//# 6647 "src/Compiler/pars.fsy" ) -//# 6097 "src/Compiler/pars.fsy" +//# 6647 "src/Compiler/pars.fsy" : 'gentype_seps)); -//# 17257 "pars.fs" +//# 18428 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> range in Microsoft.FSharp.Core.Operators.box ( ( -//# 6102 "src/Compiler/pars.fsy" +//# 6652 "src/Compiler/pars.fsy" ) -//# 6102 "src/Compiler/pars.fsy" +//# 6652 "src/Compiler/pars.fsy" : 'gentype_declEnd)); -//# 17267 "pars.fs" +//# 18439 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6104 "src/Compiler/pars.fsy" +//# 6654 "src/Compiler/pars.fsy" ) -//# 6104 "src/Compiler/pars.fsy" +//# 6654 "src/Compiler/pars.fsy" : 'gentype_declEnd)); -//# 17277 "pars.fs" +//# 18449 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6106 "src/Compiler/pars.fsy" +//# 6656 "src/Compiler/pars.fsy" ) -//# 6106 "src/Compiler/pars.fsy" +//# 6656 "src/Compiler/pars.fsy" : 'gentype_declEnd)); -//# 17287 "pars.fs" +//# 18459 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> range in Microsoft.FSharp.Core.Operators.box ( ( -//# 6111 "src/Compiler/pars.fsy" +//# 6661 "src/Compiler/pars.fsy" ) -//# 6111 "src/Compiler/pars.fsy" +//# 6661 "src/Compiler/pars.fsy" : 'gentype_opt_declEnd)); -//# 17297 "pars.fs" +//# 18470 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6113 "src/Compiler/pars.fsy" +//# 6663 "src/Compiler/pars.fsy" ) -//# 6113 "src/Compiler/pars.fsy" +//# 6663 "src/Compiler/pars.fsy" : 'gentype_opt_declEnd)); -//# 17307 "pars.fs" +//# 18480 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6115 "src/Compiler/pars.fsy" +//# 6665 "src/Compiler/pars.fsy" ) -//# 6115 "src/Compiler/pars.fsy" +//# 6665 "src/Compiler/pars.fsy" : 'gentype_opt_declEnd)); -//# 17317 "pars.fs" +//# 18490 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6117 "src/Compiler/pars.fsy" +//# 6667 "src/Compiler/pars.fsy" ) -//# 6117 "src/Compiler/pars.fsy" +//# 6667 "src/Compiler/pars.fsy" : 'gentype_opt_declEnd)); -//# 17327 "pars.fs" +//# 18500 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> range in Microsoft.FSharp.Core.Operators.box ( ( -//# 6120 "src/Compiler/pars.fsy" +//# 6670 "src/Compiler/pars.fsy" ) -//# 6120 "src/Compiler/pars.fsy" +//# 6670 "src/Compiler/pars.fsy" : 'gentype_opt_ODECLEND)); -//# 17337 "pars.fs" +//# 18511 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6121 "src/Compiler/pars.fsy" +//# 6671 "src/Compiler/pars.fsy" ) -//# 6121 "src/Compiler/pars.fsy" +//# 6671 "src/Compiler/pars.fsy" : 'gentype_opt_ODECLEND)); -//# 17347 "pars.fs" +//# 18521 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6124 "src/Compiler/pars.fsy" +//# 6674 "src/Compiler/pars.fsy" deprecatedWithError (FSComp.SR.parsNoEqualShouldFollowNamespace()) (lhs parseState); () ) -//# 6124 "src/Compiler/pars.fsy" +//# 6674 "src/Compiler/pars.fsy" : 'gentype_deprecated_opt_equals)); -//# 17357 "pars.fs" +//# 18531 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6125 "src/Compiler/pars.fsy" +//# 6675 "src/Compiler/pars.fsy" ) -//# 6125 "src/Compiler/pars.fsy" +//# 6675 "src/Compiler/pars.fsy" : 'gentype_deprecated_opt_equals)); -//# 17367 "pars.fs" +//# 18541 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6129 "src/Compiler/pars.fsy" +//# 6679 "src/Compiler/pars.fsy" let mEquals = rhs parseState 1 Some mEquals ) -//# 6129 "src/Compiler/pars.fsy" +//# 6679 "src/Compiler/pars.fsy" : 'gentype_opt_equals)); -//# 17378 "pars.fs" +//# 18552 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6131 "src/Compiler/pars.fsy" +//# 6681 "src/Compiler/pars.fsy" None ) -//# 6131 "src/Compiler/pars.fsy" +//# 6681 "src/Compiler/pars.fsy" : 'gentype_opt_equals)); -//# 17388 "pars.fs" +//# 18562 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6134 "src/Compiler/pars.fsy" +//# 6684 "src/Compiler/pars.fsy" ) -//# 6134 "src/Compiler/pars.fsy" +//# 6684 "src/Compiler/pars.fsy" : 'gentype_opt_OBLOCKSEP)); -//# 17398 "pars.fs" +//# 18572 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6135 "src/Compiler/pars.fsy" +//# 6685 "src/Compiler/pars.fsy" ) -//# 6135 "src/Compiler/pars.fsy" +//# 6685 "src/Compiler/pars.fsy" : 'gentype_opt_OBLOCKSEP)); -//# 17408 "pars.fs" +//# 18582 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_seps in Microsoft.FSharp.Core.Operators.box ( ( -//# 6138 "src/Compiler/pars.fsy" +//# 6688 "src/Compiler/pars.fsy" ) -//# 6138 "src/Compiler/pars.fsy" +//# 6688 "src/Compiler/pars.fsy" : 'gentype_opt_seps)); -//# 17419 "pars.fs" +//# 18593 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6139 "src/Compiler/pars.fsy" +//# 6689 "src/Compiler/pars.fsy" ) -//# 6139 "src/Compiler/pars.fsy" +//# 6689 "src/Compiler/pars.fsy" : 'gentype_opt_seps)); -//# 17429 "pars.fs" +//# 18603 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6142 "src/Compiler/pars.fsy" +//# 6692 "src/Compiler/pars.fsy" true ) -//# 6142 "src/Compiler/pars.fsy" +//# 6692 "src/Compiler/pars.fsy" : 'gentype_opt_rec)); -//# 17439 "pars.fs" +//# 18613 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6143 "src/Compiler/pars.fsy" +//# 6693 "src/Compiler/pars.fsy" false ) -//# 6143 "src/Compiler/pars.fsy" +//# 6693 "src/Compiler/pars.fsy" : 'gentype_opt_rec)); -//# 17449 "pars.fs" +//# 18623 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6146 "src/Compiler/pars.fsy" +//# 6696 "src/Compiler/pars.fsy" ) -//# 6146 "src/Compiler/pars.fsy" +//# 6696 "src/Compiler/pars.fsy" : 'gentype_opt_bar)); -//# 17459 "pars.fs" +//# 18633 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6147 "src/Compiler/pars.fsy" +//# 6697 "src/Compiler/pars.fsy" ) -//# 6147 "src/Compiler/pars.fsy" +//# 6697 "src/Compiler/pars.fsy" : 'gentype_opt_bar)); -//# 17469 "pars.fs" +//# 18643 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6150 "src/Compiler/pars.fsy" +//# 6700 "src/Compiler/pars.fsy" Some(rhs parseState 1) ) -//# 6150 "src/Compiler/pars.fsy" +//# 6700 "src/Compiler/pars.fsy" : 'gentype_opt_inline)); -//# 17479 "pars.fs" +//# 18653 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6151 "src/Compiler/pars.fsy" +//# 6701 "src/Compiler/pars.fsy" None ) -//# 6151 "src/Compiler/pars.fsy" +//# 6701 "src/Compiler/pars.fsy" : 'gentype_opt_inline)); -//# 17489 "pars.fs" +//# 18663 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6154 "src/Compiler/pars.fsy" +//# 6704 "src/Compiler/pars.fsy" true ) -//# 6154 "src/Compiler/pars.fsy" +//# 6704 "src/Compiler/pars.fsy" : 'gentype_opt_mutable)); -//# 17499 "pars.fs" +//# 18673 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6155 "src/Compiler/pars.fsy" +//# 6705 "src/Compiler/pars.fsy" false ) -//# 6155 "src/Compiler/pars.fsy" +//# 6705 "src/Compiler/pars.fsy" : 'gentype_opt_mutable)); -//# 17509 "pars.fs" +//# 18683 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6159 "src/Compiler/pars.fsy" +//# 6709 "src/Compiler/pars.fsy" ) -//# 6159 "src/Compiler/pars.fsy" +//# 6709 "src/Compiler/pars.fsy" : 'gentype_doToken)); -//# 17519 "pars.fs" +//# 18693 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6160 "src/Compiler/pars.fsy" +//# 6710 "src/Compiler/pars.fsy" ) -//# 6160 "src/Compiler/pars.fsy" +//# 6710 "src/Compiler/pars.fsy" : 'gentype_doToken)); -//# 17529 "pars.fs" +//# 18703 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6163 "src/Compiler/pars.fsy" - +//# 6714 "src/Compiler/pars.fsy" + rhs parseState 1 ) -//# 6163 "src/Compiler/pars.fsy" +//# 6714 "src/Compiler/pars.fsy" : 'gentype_doneDeclEnd)); -//# 17539 "pars.fs" +//# 18713 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> range in Microsoft.FSharp.Core.Operators.box ( ( -//# 6164 "src/Compiler/pars.fsy" - +//# 6716 "src/Compiler/pars.fsy" + _1 ) -//# 6164 "src/Compiler/pars.fsy" +//# 6716 "src/Compiler/pars.fsy" : 'gentype_doneDeclEnd)); -//# 17549 "pars.fs" +//# 18724 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6168 "src/Compiler/pars.fsy" +//# 6720 "src/Compiler/pars.fsy" if parseState.LexBuffer.SupportsFeature LanguageFeature.MLCompatRevisions then mlCompatError (FSComp.SR.mlCompatStructEndNoLongerSupported()) (lhs parseState) else mlCompatWarning (FSComp.SR.parsSyntaxModuleStructEndDeprecated()) (lhs parseState) ) -//# 6168 "src/Compiler/pars.fsy" +//# 6720 "src/Compiler/pars.fsy" : 'gentype_structOrBegin)); -//# 17563 "pars.fs" +//# 18738 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6173 "src/Compiler/pars.fsy" +//# 6725 "src/Compiler/pars.fsy" ) -//# 6173 "src/Compiler/pars.fsy" +//# 6725 "src/Compiler/pars.fsy" : 'gentype_structOrBegin)); -//# 17573 "pars.fs" +//# 18748 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6177 "src/Compiler/pars.fsy" +//# 6729 "src/Compiler/pars.fsy" if parseState.LexBuffer.SupportsFeature LanguageFeature.MLCompatRevisions then mlCompatError (FSComp.SR.mlCompatSigEndNoLongerSupported())(lhs parseState) else mlCompatWarning (FSComp.SR.parsSyntaxModuleSigEndDeprecated()) (lhs parseState) ) -//# 6177 "src/Compiler/pars.fsy" +//# 6729 "src/Compiler/pars.fsy" : 'gentype_sigOrBegin)); -//# 17587 "pars.fs" +//# 18762 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6182 "src/Compiler/pars.fsy" +//# 6734 "src/Compiler/pars.fsy" ) -//# 6182 "src/Compiler/pars.fsy" +//# 6734 "src/Compiler/pars.fsy" : 'gentype_sigOrBegin)); -//# 17597 "pars.fs" +//# 18772 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6186 "src/Compiler/pars.fsy" +//# 6738 "src/Compiler/pars.fsy" if parseState.LexBuffer.SupportsFeature LanguageFeature.MLCompatRevisions then mlCompatError (FSComp.SR.mlCompatSigColonNoLongerSupported())(lhs parseState) else @@ -17607,77 +18782,77 @@ let _fsyacc_reductions = lazy [| None ) -//# 6186 "src/Compiler/pars.fsy" +//# 6738 "src/Compiler/pars.fsy" : 'gentype_colonOrEquals)); -//# 17612 "pars.fs" +//# 18787 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6193 "src/Compiler/pars.fsy" +//# 6745 "src/Compiler/pars.fsy" let mEquals = rhs parseState 1 Some mEquals ) -//# 6193 "src/Compiler/pars.fsy" +//# 6745 "src/Compiler/pars.fsy" : 'gentype_colonOrEquals)); -//# 17623 "pars.fs" +//# 18798 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string * SynStringKind * ParseHelpers.LexerContinuation in Microsoft.FSharp.Core.Operators.box ( ( -//# 6199 "src/Compiler/pars.fsy" +//# 6751 "src/Compiler/pars.fsy" let (s, synStringKind, _) = _1 s, synStringKind ) -//# 6199 "src/Compiler/pars.fsy" +//# 6751 "src/Compiler/pars.fsy" : 'gentype_string)); -//# 17635 "pars.fs" +//# 18810 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string * string in Microsoft.FSharp.Core.Operators.box ( ( -//# 6203 "src/Compiler/pars.fsy" +//# 6755 "src/Compiler/pars.fsy" _1 ) -//# 6203 "src/Compiler/pars.fsy" +//# 6755 "src/Compiler/pars.fsy" : 'gentype_sourceIdentifier)); -//# 17646 "pars.fs" +//# 18821 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in Microsoft.FSharp.Core.Operators.box ( ( -//# 6207 "src/Compiler/pars.fsy" +//# 6759 "src/Compiler/pars.fsy" (_1, None) ) -//# 6207 "src/Compiler/pars.fsy" +//# 6759 "src/Compiler/pars.fsy" : 'gentype_interpolatedStringFill)); -//# 17657 "pars.fs" +//# 18832 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> SynExpr in let _3 = parseState.GetInput(3) :?> Ident in Microsoft.FSharp.Core.Operators.box ( ( -//# 6210 "src/Compiler/pars.fsy" +//# 6762 "src/Compiler/pars.fsy" (_1, Some _3) ) -//# 6210 "src/Compiler/pars.fsy" +//# 6762 "src/Compiler/pars.fsy" : 'gentype_interpolatedStringFill)); -//# 17669 "pars.fs" +//# 18844 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string * ParseHelpers.LexerContinuation in Microsoft.FSharp.Core.Operators.box ( ( -//# 6214 "src/Compiler/pars.fsy" +//# 6766 "src/Compiler/pars.fsy" [ SynInterpolatedStringPart.String(fst _1, rhs parseState 1) ] ) -//# 6214 "src/Compiler/pars.fsy" +//# 6766 "src/Compiler/pars.fsy" : 'gentype_interpolatedStringParts)); -//# 17680 "pars.fs" +//# 18855 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string * ParseHelpers.LexerContinuation in let _2 = parseState.GetInput(2) :?> 'gentype_interpolatedStringFill in @@ -17685,27 +18860,27 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 6217 "src/Compiler/pars.fsy" +//# 6769 "src/Compiler/pars.fsy" SynInterpolatedStringPart.String(fst _1, rhs parseState 1) :: SynInterpolatedStringPart.FillExpr _2 :: _3 ) -//# 6217 "src/Compiler/pars.fsy" +//# 6769 "src/Compiler/pars.fsy" : 'gentype_interpolatedStringParts)); -//# 17693 "pars.fs" +//# 18868 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string * ParseHelpers.LexerContinuation in let _2 = parseState.GetInput(2) :?> 'gentype_interpolatedStringParts in Microsoft.FSharp.Core.Operators.box ( ( -//# 6220 "src/Compiler/pars.fsy" +//# 6772 "src/Compiler/pars.fsy" let rbrace = parseState.InputEndPosition 1 let lbrace = parseState.InputStartPosition 2 reportParseErrorAt (mkSynRange rbrace lbrace) (FSComp.SR.parsEmptyFillInInterpolatedString()) SynInterpolatedStringPart.String(fst _1, rhs parseState 1) :: _2 ) -//# 6220 "src/Compiler/pars.fsy" +//# 6772 "src/Compiler/pars.fsy" : 'gentype_interpolatedStringParts)); -//# 17708 "pars.fs" +//# 18883 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string * SynStringKind * ParseHelpers.LexerContinuation in let _2 = parseState.GetInput(2) :?> 'gentype_interpolatedStringFill in @@ -17713,370 +18888,371 @@ let _fsyacc_reductions = lazy [| Microsoft.FSharp.Core.Operators.box ( ( -//# 6230 "src/Compiler/pars.fsy" +//# 6782 "src/Compiler/pars.fsy" let s, synStringKind, _ = _1 SynInterpolatedStringPart.String(s, rhs parseState 1) :: SynInterpolatedStringPart.FillExpr _2 :: _3, synStringKind ) -//# 6230 "src/Compiler/pars.fsy" +//# 6782 "src/Compiler/pars.fsy" : 'gentype_interpolatedString)); -//# 17722 "pars.fs" +//# 18897 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string * SynStringKind * ParseHelpers.LexerContinuation in Microsoft.FSharp.Core.Operators.box ( ( -//# 6234 "src/Compiler/pars.fsy" +//# 6786 "src/Compiler/pars.fsy" let s, synStringKind, _ = _1 [ SynInterpolatedStringPart.String(s, rhs parseState 1) ], synStringKind ) -//# 6234 "src/Compiler/pars.fsy" +//# 6786 "src/Compiler/pars.fsy" : 'gentype_interpolatedString)); -//# 17734 "pars.fs" +//# 18909 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string * SynStringKind * ParseHelpers.LexerContinuation in let _2 = parseState.GetInput(2) :?> 'gentype_interpolatedStringParts in Microsoft.FSharp.Core.Operators.box ( ( -//# 6238 "src/Compiler/pars.fsy" +//# 6790 "src/Compiler/pars.fsy" let s, synStringKind, _ = _1 let rbrace = parseState.InputEndPosition 1 let lbrace = parseState.InputStartPosition 2 reportParseErrorAt (mkSynRange rbrace lbrace) (FSComp.SR.parsEmptyFillInInterpolatedString()) SynInterpolatedStringPart.String(s, rhs parseState 1) :: _2, synStringKind ) -//# 6238 "src/Compiler/pars.fsy" +//# 6790 "src/Compiler/pars.fsy" : 'gentype_interpolatedString)); -//# 17750 "pars.fs" +//# 18925 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6245 "src/Compiler/pars.fsy" +//# 6797 "src/Compiler/pars.fsy" ) -//# 6245 "src/Compiler/pars.fsy" +//# 6797 "src/Compiler/pars.fsy" : 'gentype_opt_HIGH_PRECEDENCE_APP)); -//# 17760 "pars.fs" +//# 18935 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6246 "src/Compiler/pars.fsy" +//# 6798 "src/Compiler/pars.fsy" ) -//# 6246 "src/Compiler/pars.fsy" +//# 6798 "src/Compiler/pars.fsy" : 'gentype_opt_HIGH_PRECEDENCE_APP)); -//# 17770 "pars.fs" +//# 18945 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6247 "src/Compiler/pars.fsy" +//# 6799 "src/Compiler/pars.fsy" ) -//# 6247 "src/Compiler/pars.fsy" +//# 6799 "src/Compiler/pars.fsy" : 'gentype_opt_HIGH_PRECEDENCE_APP)); -//# 17780 "pars.fs" +//# 18955 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6250 "src/Compiler/pars.fsy" +//# 6802 "src/Compiler/pars.fsy" ) -//# 6250 "src/Compiler/pars.fsy" +//# 6802 "src/Compiler/pars.fsy" : 'gentype_opt_HIGH_PRECEDENCE_TYAPP)); -//# 17790 "pars.fs" +//# 18965 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6251 "src/Compiler/pars.fsy" +//# 6803 "src/Compiler/pars.fsy" ) -//# 6251 "src/Compiler/pars.fsy" +//# 6803 "src/Compiler/pars.fsy" : 'gentype_opt_HIGH_PRECEDENCE_TYAPP)); -//# 17800 "pars.fs" +//# 18975 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_typeKeyword in Microsoft.FSharp.Core.Operators.box ( ( -//# 6255 "src/Compiler/pars.fsy" +//# 6807 "src/Compiler/pars.fsy" ) -//# 6255 "src/Compiler/pars.fsy" +//# 6807 "src/Compiler/pars.fsy" : 'gentype_typeKeyword)); -//# 17811 "pars.fs" +//# 18986 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6256 "src/Compiler/pars.fsy" +//# 6808 "src/Compiler/pars.fsy" ) -//# 6256 "src/Compiler/pars.fsy" +//# 6808 "src/Compiler/pars.fsy" : 'gentype_typeKeyword)); -//# 17821 "pars.fs" +//# 18996 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6257 "src/Compiler/pars.fsy" +//# 6809 "src/Compiler/pars.fsy" ) -//# 6257 "src/Compiler/pars.fsy" +//# 6809 "src/Compiler/pars.fsy" : 'gentype_typeKeyword)); -//# 17831 "pars.fs" +//# 19006 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_moduleKeyword in Microsoft.FSharp.Core.Operators.box ( ( -//# 6261 "src/Compiler/pars.fsy" +//# 6813 "src/Compiler/pars.fsy" ) -//# 6261 "src/Compiler/pars.fsy" +//# 6813 "src/Compiler/pars.fsy" : 'gentype_moduleKeyword)); -//# 17842 "pars.fs" +//# 19017 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6262 "src/Compiler/pars.fsy" +//# 6814 "src/Compiler/pars.fsy" ) -//# 6262 "src/Compiler/pars.fsy" +//# 6814 "src/Compiler/pars.fsy" : 'gentype_moduleKeyword)); -//# 17852 "pars.fs" +//# 19027 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6263 "src/Compiler/pars.fsy" +//# 6815 "src/Compiler/pars.fsy" ) -//# 6263 "src/Compiler/pars.fsy" +//# 6815 "src/Compiler/pars.fsy" : 'gentype_moduleKeyword)); -//# 17862 "pars.fs" +//# 19037 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_rbrace in Microsoft.FSharp.Core.Operators.box ( ( -//# 6266 "src/Compiler/pars.fsy" +//# 6818 "src/Compiler/pars.fsy" ) -//# 6266 "src/Compiler/pars.fsy" +//# 6818 "src/Compiler/pars.fsy" : 'gentype_rbrace)); -//# 17873 "pars.fs" +//# 19048 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6267 "src/Compiler/pars.fsy" +//# 6819 "src/Compiler/pars.fsy" ) -//# 6267 "src/Compiler/pars.fsy" +//# 6819 "src/Compiler/pars.fsy" : 'gentype_rbrace)); -//# 17883 "pars.fs" +//# 19058 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> ParseHelpers.LexerContinuation in Microsoft.FSharp.Core.Operators.box ( ( -//# 6268 "src/Compiler/pars.fsy" +//# 6820 "src/Compiler/pars.fsy" ) -//# 6268 "src/Compiler/pars.fsy" +//# 6820 "src/Compiler/pars.fsy" : 'gentype_rbrace)); -//# 17894 "pars.fs" +//# 19069 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6271 "src/Compiler/pars.fsy" +//# 6823 "src/Compiler/pars.fsy" ) -//# 6271 "src/Compiler/pars.fsy" +//# 6823 "src/Compiler/pars.fsy" : 'gentype_bar_rbrace)); -//# 17904 "pars.fs" +//# 19079 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_rparen in Microsoft.FSharp.Core.Operators.box ( ( -//# 6274 "src/Compiler/pars.fsy" +//# 6826 "src/Compiler/pars.fsy" ) -//# 6274 "src/Compiler/pars.fsy" +//# 6826 "src/Compiler/pars.fsy" : 'gentype_rparen)); -//# 17915 "pars.fs" +//# 19090 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6275 "src/Compiler/pars.fsy" +//# 6827 "src/Compiler/pars.fsy" ) -//# 6275 "src/Compiler/pars.fsy" +//# 6827 "src/Compiler/pars.fsy" : 'gentype_rparen)); -//# 17925 "pars.fs" +//# 19100 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6276 "src/Compiler/pars.fsy" +//# 6828 "src/Compiler/pars.fsy" ) -//# 6276 "src/Compiler/pars.fsy" +//# 6828 "src/Compiler/pars.fsy" : 'gentype_rparen)); -//# 17935 "pars.fs" +//# 19110 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_oblockend in Microsoft.FSharp.Core.Operators.box ( ( -//# 6279 "src/Compiler/pars.fsy" +//# 6831 "src/Compiler/pars.fsy" ) -//# 6279 "src/Compiler/pars.fsy" +//# 6831 "src/Compiler/pars.fsy" : 'gentype_oblockend)); -//# 17946 "pars.fs" +//# 19121 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6280 "src/Compiler/pars.fsy" +//# 6832 "src/Compiler/pars.fsy" ) -//# 6280 "src/Compiler/pars.fsy" +//# 6832 "src/Compiler/pars.fsy" : 'gentype_oblockend)); -//# 17956 "pars.fs" +//# 19131 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = parseState.GetInput(1) :?> range in Microsoft.FSharp.Core.Operators.box ( ( -//# 6281 "src/Compiler/pars.fsy" +//# 6833 "src/Compiler/pars.fsy" ) -//# 6281 "src/Compiler/pars.fsy" +//# 6833 "src/Compiler/pars.fsy" : 'gentype_oblockend)); -//# 17966 "pars.fs" +//# 19142 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6284 "src/Compiler/pars.fsy" +//# 6836 "src/Compiler/pars.fsy" false ) -//# 6284 "src/Compiler/pars.fsy" +//# 6836 "src/Compiler/pars.fsy" : 'gentype_ends_other_than_rparen_coming_soon_or_recover)); -//# 17976 "pars.fs" +//# 19152 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6285 "src/Compiler/pars.fsy" +//# 6837 "src/Compiler/pars.fsy" false ) -//# 6285 "src/Compiler/pars.fsy" +//# 6837 "src/Compiler/pars.fsy" : 'gentype_ends_other_than_rparen_coming_soon_or_recover)); -//# 17986 "pars.fs" +//# 19162 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6286 "src/Compiler/pars.fsy" +//# 6838 "src/Compiler/pars.fsy" false ) -//# 6286 "src/Compiler/pars.fsy" +//# 6838 "src/Compiler/pars.fsy" : 'gentype_ends_other_than_rparen_coming_soon_or_recover)); -//# 17996 "pars.fs" +//# 19172 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6287 "src/Compiler/pars.fsy" +//# 6839 "src/Compiler/pars.fsy" false ) -//# 6287 "src/Compiler/pars.fsy" +//# 6839 "src/Compiler/pars.fsy" : 'gentype_ends_other_than_rparen_coming_soon_or_recover)); -//# 18006 "pars.fs" +//# 19182 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 6288 "src/Compiler/pars.fsy" +//# 6840 "src/Compiler/pars.fsy" _1 ) -//# 6288 "src/Compiler/pars.fsy" +//# 6840 "src/Compiler/pars.fsy" : 'gentype_ends_other_than_rparen_coming_soon_or_recover)); -//# 18017 "pars.fs" +//# 19193 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6291 "src/Compiler/pars.fsy" +//# 6843 "src/Compiler/pars.fsy" false ) -//# 6291 "src/Compiler/pars.fsy" +//# 6843 "src/Compiler/pars.fsy" : 'gentype_ends_coming_soon_or_recover)); -//# 18027 "pars.fs" +//# 19203 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6292 "src/Compiler/pars.fsy" +//# 6844 "src/Compiler/pars.fsy" false ) -//# 6292 "src/Compiler/pars.fsy" +//# 6844 "src/Compiler/pars.fsy" : 'gentype_ends_coming_soon_or_recover)); -//# 18037 "pars.fs" +//# 19213 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6293 "src/Compiler/pars.fsy" +//# 6845 "src/Compiler/pars.fsy" false ) -//# 6293 "src/Compiler/pars.fsy" +//# 6845 "src/Compiler/pars.fsy" : 'gentype_ends_coming_soon_or_recover)); -//# 18047 "pars.fs" +//# 19223 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6294 "src/Compiler/pars.fsy" +//# 6846 "src/Compiler/pars.fsy" false ) -//# 6294 "src/Compiler/pars.fsy" +//# 6846 "src/Compiler/pars.fsy" : 'gentype_ends_coming_soon_or_recover)); -//# 18057 "pars.fs" +//# 19233 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 6295 "src/Compiler/pars.fsy" +//# 6847 "src/Compiler/pars.fsy" false ) -//# 6295 "src/Compiler/pars.fsy" +//# 6847 "src/Compiler/pars.fsy" : 'gentype_ends_coming_soon_or_recover)); -//# 18067 "pars.fs" +//# 19243 "pars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 6296 "src/Compiler/pars.fsy" +//# 6848 "src/Compiler/pars.fsy" _1 ) -//# 6296 "src/Compiler/pars.fsy" +//# 6848 "src/Compiler/pars.fsy" : 'gentype_ends_coming_soon_or_recover)); |] -//# 18079 "pars.fs" +//# 19255 "pars.fs" let tables : Internal.Utilities.Text.Parsing.Tables<_> = { reductions = _fsyacc_reductions.Value; endOfInputTag = _fsyacc_endOfInputTag; @@ -18095,7 +19271,7 @@ let tables : Internal.Utilities.Text.Parsing.Tables<_> = match parse_error_rich with | Some f -> f ctxt | None -> parse_error ctxt.Message); - numTerminals = 205; + numTerminals = 206; productionToNonTerminalTable = _fsyacc_productionToNonTerminalTable } let engine lexer lexbuf startState = tables.Interpret(lexer, lexbuf, startState) let signatureFile lexer lexbuf : ParsedSigFile = diff --git a/src/fcs-fable/codegen/pars.fsi b/src/fcs-fable/codegen/pars.fsi index 16928895bf..a3934b99e4 100644 --- a/src/fcs-fable/codegen/pars.fsi +++ b/src/fcs-fable/codegen/pars.fsi @@ -2,6 +2,7 @@ module internal FSharp.Compiler.Parser open FSharp.Compiler open FSharp.Compiler.Syntax +open FSharp.Compiler.Text type token = | HASH_IF of (range * string * ParseHelpers.LexerContinuation) | HASH_ELSE of (range * string * ParseHelpers.LexerContinuation) @@ -18,11 +19,11 @@ type token = | ODUMMY of (token) | FIXED | OINTERFACE_MEMBER - | OBLOCKEND | OBLOCKEND_COMING_SOON | OBLOCKEND_IS_HERE - | ORIGHT_BLOCK_END - | ODECLEND + | OBLOCKEND of (range) + | ORIGHT_BLOCK_END of (range) + | ODECLEND of (range) | OEND | OBLOCKSEP | OBLOCKBEGIN @@ -89,6 +90,7 @@ type token = | SEMICOLON | WHEN | WHILE + | WHILE_BANG | WITH | HASH | AMP @@ -221,9 +223,9 @@ type tokenId = | TOKEN_ODUMMY | TOKEN_FIXED | TOKEN_OINTERFACE_MEMBER - | TOKEN_OBLOCKEND | TOKEN_OBLOCKEND_COMING_SOON | TOKEN_OBLOCKEND_IS_HERE + | TOKEN_OBLOCKEND | TOKEN_ORIGHT_BLOCK_END | TOKEN_ODECLEND | TOKEN_OEND @@ -292,6 +294,7 @@ type tokenId = | TOKEN_SEMICOLON | TOKEN_WHEN | TOKEN_WHILE + | TOKEN_WHILE_BANG | TOKEN_WITH | TOKEN_HASH | TOKEN_AMP @@ -528,6 +531,7 @@ type nonTerminalId = | NONTERM_opt_explicitValTyparDecls | NONTERM_opt_typeConstraints | NONTERM_typeConstraints + | NONTERM_intersectionConstraints | NONTERM_typeConstraint | NONTERM_typeAlts | NONTERM_unionTypeRepr @@ -577,6 +581,7 @@ type nonTerminalId = | NONTERM_bindingPattern | NONTERM_simplePattern | NONTERM_simplePatternCommaList + | NONTERM_opt_simplePatterns | NONTERM_simplePatterns | NONTERM_headBindingPattern | NONTERM_tuplePatternElements @@ -603,6 +608,7 @@ type nonTerminalId = | NONTERM_recover | NONTERM_moreBinders | NONTERM_declExpr + | NONTERM_whileExprCore | NONTERM_dynamicArg | NONTERM_withClauses | NONTERM_withPatternClauses @@ -666,10 +672,12 @@ type nonTerminalId = | NONTERM_topTupleType | NONTERM_topTupleTypeElements | NONTERM_topAppType + | NONTERM_invalidUseOfAppTypeFunction | NONTERM_typ | NONTERM_typEOF | NONTERM_tupleType | NONTERM_tupleOrQuotTypeElements + | NONTERM_intersectionType | NONTERM_appTypeCon | NONTERM_appTypeConPower | NONTERM_appType @@ -747,8 +755,8 @@ val prodIdxToNonTerminal: int -> nonTerminalId /// This function gets the name of a token as a string val token_to_string: token -> string -val signatureFile : (Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> token) -> Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> (ParsedSigFile) -val implementationFile : (Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> token) -> Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> (ParsedImplFile) -val interaction : (Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> token) -> Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> (ParsedScriptInteraction) -val typedSequentialExprEOF : (Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> token) -> Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> (SynExpr) -val typEOF : (Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> token) -> Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> (SynType) +val signatureFile : (Internal.Utilities.Text.Lexing.LexBuffer -> token) -> Internal.Utilities.Text.Lexing.LexBuffer -> (ParsedSigFile) +val implementationFile : (Internal.Utilities.Text.Lexing.LexBuffer -> token) -> Internal.Utilities.Text.Lexing.LexBuffer -> (ParsedImplFile) +val interaction : (Internal.Utilities.Text.Lexing.LexBuffer -> token) -> Internal.Utilities.Text.Lexing.LexBuffer -> (ParsedScriptInteraction) +val typedSequentialExprEOF : (Internal.Utilities.Text.Lexing.LexBuffer -> token) -> Internal.Utilities.Text.Lexing.LexBuffer -> (SynExpr) +val typEOF : (Internal.Utilities.Text.Lexing.LexBuffer -> token) -> Internal.Utilities.Text.Lexing.LexBuffer -> (SynType) diff --git a/src/fcs-fable/codegen/pplex.fs b/src/fcs-fable/codegen/pplex.fs index 91d9d327d1..db417ce006 100644 --- a/src/fcs-fable/codegen/pplex.fs +++ b/src/fcs-fable/codegen/pplex.fs @@ -1,16 +1,13 @@ -//# 3 "src/Compiler/pplex.fsl" - - module internal FSharp.Compiler.PPLexer -open System +open FSharp.Compiler.Lexhelp +open Internal.Utilities.Text.Lexing +open FSharp.Compiler.PPParser +//# 3 "src/Compiler/pplex.fsl" + open FSharp.Compiler.DiagnosticsLogger -open FSharp.Compiler.Lexhelp open FSharp.Compiler.ParseHelpers -open FSharp.Compiler.Syntax - -open Internal.Utilities.Text.Lexing let lexeme (lexbuf : UnicodeLexing.Lexbuf) = UnicodeLexing.Lexbuf.LexemeString lexbuf @@ -19,7 +16,7 @@ let fail (args : LexArgs) (lexbuf:UnicodeLexing.Lexbuf) e = args.diagnosticsLogger.ErrorR(Error(e,m)) PPParser.EOF -//# 22 "pplex.fs" +//# 19 "pplex.fs" let trans : uint16[] array = [| (* State 0 *) @@ -83,90 +80,90 @@ let actions : uint16[] = [|65535us;0us;1us;65535us;11us;2us;3us;11us;11us;6us;7u let _fslex_tables = Internal.Utilities.Text.Lexing.UnicodeTables.Create(trans,actions) let rec _fslex_dummy () = _fslex_dummy() // Rule tokenstream -and tokenstream args lexbuf = +and tokenstream (args: LexArgs) lexbuf = match _fslex_tables.Interpret(3,lexbuf) with | 0 -> ( -//# 48 "src/Compiler/pplex.fsl" +//# 39 "src/Compiler/pplex.fsl" PPParser.PRELUDE -//# 91 "pplex.fs" +//# 88 "pplex.fs" ) | 1 -> ( -//# 49 "src/Compiler/pplex.fsl" +//# 40 "src/Compiler/pplex.fsl" PPParser.PRELUDE -//# 96 "pplex.fs" +//# 93 "pplex.fs" ) | 2 -> ( -//# 50 "src/Compiler/pplex.fsl" +//# 41 "src/Compiler/pplex.fsl" PPParser.ID(lexeme lexbuf) -//# 101 "pplex.fs" +//# 98 "pplex.fs" ) | 3 -> ( -//# 52 "src/Compiler/pplex.fsl" +//# 43 "src/Compiler/pplex.fsl" PPParser.OP_NOT -//# 106 "pplex.fs" +//# 103 "pplex.fs" ) | 4 -> ( -//# 53 "src/Compiler/pplex.fsl" +//# 44 "src/Compiler/pplex.fsl" PPParser.OP_AND -//# 111 "pplex.fs" +//# 108 "pplex.fs" ) | 5 -> ( -//# 54 "src/Compiler/pplex.fsl" +//# 45 "src/Compiler/pplex.fsl" PPParser.OP_OR -//# 116 "pplex.fs" +//# 113 "pplex.fs" ) | 6 -> ( -//# 55 "src/Compiler/pplex.fsl" +//# 46 "src/Compiler/pplex.fsl" PPParser.LPAREN -//# 121 "pplex.fs" +//# 118 "pplex.fs" ) | 7 -> ( -//# 56 "src/Compiler/pplex.fsl" +//# 47 "src/Compiler/pplex.fsl" PPParser.RPAREN -//# 126 "pplex.fs" +//# 123 "pplex.fs" ) | 8 -> ( -//# 58 "src/Compiler/pplex.fsl" +//# 49 "src/Compiler/pplex.fsl" tokenstream args lexbuf -//# 131 "pplex.fs" +//# 128 "pplex.fs" ) | 9 -> ( -//# 60 "src/Compiler/pplex.fsl" +//# 51 "src/Compiler/pplex.fsl" PPParser.EOF -//# 136 "pplex.fs" +//# 133 "pplex.fs" ) | 10 -> ( -//# 61 "src/Compiler/pplex.fsl" +//# 52 "src/Compiler/pplex.fsl" fail args lexbuf (FSComp.SR.pplexExpectedSingleLineComment()) -//# 141 "pplex.fs" +//# 138 "pplex.fs" ) | 11 -> ( -//# 62 "src/Compiler/pplex.fsl" +//# 53 "src/Compiler/pplex.fsl" let lex = lexeme lexbuf let _ = rest lexbuf fail args lexbuf (FSComp.SR.pplexUnexpectedChar(lex)) -//# 150 "pplex.fs" +//# 147 "pplex.fs" ) | 12 -> ( -//# 67 "src/Compiler/pplex.fsl" +//# 58 "src/Compiler/pplex.fsl" PPParser.EOF -//# 155 "pplex.fs" +//# 152 "pplex.fs" ) | _ -> failwith "tokenstream" // Rule rest and rest lexbuf = match _fslex_tables.Interpret(0,lexbuf) with | 0 -> ( -//# 70 "src/Compiler/pplex.fsl" +//# 61 "src/Compiler/pplex.fsl" rest lexbuf -//# 164 "pplex.fs" +//# 161 "pplex.fs" ) | 1 -> ( -//# 71 "src/Compiler/pplex.fsl" - () -//# 169 "pplex.fs" +//# 62 "src/Compiler/pplex.fsl" + PPParser.EOF +//# 166 "pplex.fs" ) | _ -> failwith "rest" diff --git a/src/fcs-fable/codegen/pplex.fsi b/src/fcs-fable/codegen/pplex.fsi new file mode 100644 index 0000000000..f15b455197 --- /dev/null +++ b/src/fcs-fable/codegen/pplex.fsi @@ -0,0 +1,10 @@ +module internal FSharp.Compiler.PPLexer + +open FSharp.Compiler.Lexhelp +open Internal.Utilities.Text.Lexing +open FSharp.Compiler.PPParser + +/// Rule tokenstream +val tokenstream: args: LexArgs -> lexbuf: LexBuffer -> token +/// Rule rest +val rest: lexbuf: LexBuffer -> token diff --git a/src/fcs-fable/codegen/pppars.fs b/src/fcs-fable/codegen/pppars.fs index 899f9baa55..3abdaac384 100644 --- a/src/fcs-fable/codegen/pppars.fs +++ b/src/fcs-fable/codegen/pppars.fs @@ -1,15 +1,12 @@ // Implementation file for parser generated by fsyacc module internal FSharp.Compiler.PPParser #nowarn "64";; // turn off warnings that type variables used in production annotations are instantiated to concrete type -open FSharp.Compiler -open FSharp.Compiler.Syntax +open FSharp.Compiler.ParseHelpers open Internal.Utilities.Text.Lexing open Internal.Utilities.Text.Parsing.ParseHelpers //# 3 "src/Compiler/pppars.fsy" open FSharp.Compiler.DiagnosticsLogger -open FSharp.Compiler.ParseHelpers -open FSharp.Compiler.Syntax let dummy = IfdefId("DUMMY") @@ -22,7 +19,7 @@ let fail (ps : Internal.Utilities.Text.Parsing.IParseState) i e = errorR(Error(e,m)) dummy -//# 25 "pppars.fs" +//# 22 "pppars.fs" // This type is the type of tokens accepted by the parser type token = | OP_NOT @@ -141,7 +138,7 @@ let _fsyacc_reductionSymbolCounts = [|1us;1us;1us;3us;1us;3us;1us;2us;3us;3us;2u let _fsyacc_productionToNonTerminalTable = [|0us;1us;2us;3us;3us;4us;4us;4us;4us;4us;4us;4us;4us;4us;4us;4us;4us;4us;4us;|] let _fsyacc_immediateActions = [|65535us;49152us;16385us;16386us;65535us;65535us;65535us;16387us;16388us;65535us;65535us;16389us;16390us;65535us;65535us;65535us;65535us;65535us;65535us;65535us;16394us;65535us;16395us;16396us;16397us;65535us;16399us;65535us;16400us;16401us;16402us;|] let _fsyacc_reductions = lazy [| -//# 144 "pppars.fs" +//# 141 "pppars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> LexerIfdefExpression in Microsoft.FSharp.Core.Operators.box @@ -150,207 +147,207 @@ let _fsyacc_reductions = lazy [| raise (Internal.Utilities.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1)) ) : 'gentype__startstart)); -//# 153 "pppars.fs" +//# 150 "pppars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_Full in Microsoft.FSharp.Core.Operators.box ( ( -//# 38 "src/Compiler/pppars.fsy" +//# 36 "src/Compiler/pppars.fsy" _1 ) -//# 38 "src/Compiler/pppars.fsy" +//# 36 "src/Compiler/pppars.fsy" : LexerIfdefExpression )); -//# 164 "pppars.fs" +//# 161 "pppars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 41 "src/Compiler/pppars.fsy" +//# 39 "src/Compiler/pppars.fsy" doNothing parseState () ) -//# 41 "src/Compiler/pppars.fsy" +//# 39 "src/Compiler/pppars.fsy" : 'gentype_Recover)); -//# 174 "pppars.fs" +//# 171 "pppars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_Expr in Microsoft.FSharp.Core.Operators.box ( ( -//# 44 "src/Compiler/pppars.fsy" +//# 42 "src/Compiler/pppars.fsy" _2 ) -//# 44 "src/Compiler/pppars.fsy" +//# 42 "src/Compiler/pppars.fsy" : 'gentype_Full)); -//# 185 "pppars.fs" +//# 182 "pppars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_Recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 45 "src/Compiler/pppars.fsy" +//# 43 "src/Compiler/pppars.fsy" fail parseState 1 (FSComp.SR.ppparsMissingToken("#if/#elif")) ) -//# 45 "src/Compiler/pppars.fsy" +//# 43 "src/Compiler/pppars.fsy" : 'gentype_Full)); -//# 196 "pppars.fs" +//# 193 "pppars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_Expr in Microsoft.FSharp.Core.Operators.box ( ( -//# 48 "src/Compiler/pppars.fsy" +//# 46 "src/Compiler/pppars.fsy" _2 ) -//# 48 "src/Compiler/pppars.fsy" +//# 46 "src/Compiler/pppars.fsy" : 'gentype_Expr)); -//# 207 "pppars.fs" +//# 204 "pppars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> string in Microsoft.FSharp.Core.Operators.box ( ( -//# 49 "src/Compiler/pppars.fsy" +//# 47 "src/Compiler/pppars.fsy" IfdefId(_1) ) -//# 49 "src/Compiler/pppars.fsy" +//# 47 "src/Compiler/pppars.fsy" : 'gentype_Expr)); -//# 218 "pppars.fs" +//# 215 "pppars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_Expr in Microsoft.FSharp.Core.Operators.box ( ( -//# 50 "src/Compiler/pppars.fsy" +//# 48 "src/Compiler/pppars.fsy" IfdefNot(_2) ) -//# 50 "src/Compiler/pppars.fsy" +//# 48 "src/Compiler/pppars.fsy" : 'gentype_Expr)); -//# 229 "pppars.fs" +//# 226 "pppars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_Expr in let _3 = parseState.GetInput(3) :?> 'gentype_Expr in Microsoft.FSharp.Core.Operators.box ( ( -//# 51 "src/Compiler/pppars.fsy" +//# 49 "src/Compiler/pppars.fsy" IfdefAnd(_1,_3) ) -//# 51 "src/Compiler/pppars.fsy" +//# 49 "src/Compiler/pppars.fsy" : 'gentype_Expr)); -//# 241 "pppars.fs" +//# 238 "pppars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_Expr in let _3 = parseState.GetInput(3) :?> 'gentype_Expr in Microsoft.FSharp.Core.Operators.box ( ( -//# 52 "src/Compiler/pppars.fsy" +//# 50 "src/Compiler/pppars.fsy" IfdefOr(_1,_3) ) -//# 52 "src/Compiler/pppars.fsy" +//# 50 "src/Compiler/pppars.fsy" : 'gentype_Expr)); -//# 253 "pppars.fs" +//# 250 "pppars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_Recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 54 "src/Compiler/pppars.fsy" +//# 52 "src/Compiler/pppars.fsy" fail parseState 1 (FSComp.SR.ppparsUnexpectedToken("&&")) ) -//# 54 "src/Compiler/pppars.fsy" +//# 52 "src/Compiler/pppars.fsy" : 'gentype_Expr)); -//# 264 "pppars.fs" +//# 261 "pppars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_Recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 55 "src/Compiler/pppars.fsy" +//# 53 "src/Compiler/pppars.fsy" fail parseState 1 (FSComp.SR.ppparsUnexpectedToken("||")) ) -//# 55 "src/Compiler/pppars.fsy" +//# 53 "src/Compiler/pppars.fsy" : 'gentype_Expr)); -//# 275 "pppars.fs" +//# 272 "pppars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_Recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 56 "src/Compiler/pppars.fsy" +//# 54 "src/Compiler/pppars.fsy" fail parseState 1 (FSComp.SR.ppparsUnexpectedToken("!")) ) -//# 56 "src/Compiler/pppars.fsy" +//# 54 "src/Compiler/pppars.fsy" : 'gentype_Expr)); -//# 286 "pppars.fs" +//# 283 "pppars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 57 "src/Compiler/pppars.fsy" +//# 55 "src/Compiler/pppars.fsy" doNothing parseState dummy ) -//# 57 "src/Compiler/pppars.fsy" +//# 55 "src/Compiler/pppars.fsy" : 'gentype_Expr)); -//# 296 "pppars.fs" +//# 293 "pppars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_Expr in let _3 = parseState.GetInput(3) :?> 'gentype_Recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 58 "src/Compiler/pppars.fsy" +//# 56 "src/Compiler/pppars.fsy" fail parseState 3 (FSComp.SR.ppparsMissingToken(")")) ) -//# 58 "src/Compiler/pppars.fsy" +//# 56 "src/Compiler/pppars.fsy" : 'gentype_Expr)); -//# 308 "pppars.fs" +//# 305 "pppars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_Recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 59 "src/Compiler/pppars.fsy" +//# 57 "src/Compiler/pppars.fsy" fail parseState 2 (FSComp.SR.ppparsIncompleteExpression()) ) -//# 59 "src/Compiler/pppars.fsy" +//# 57 "src/Compiler/pppars.fsy" : 'gentype_Expr)); -//# 319 "pppars.fs" +//# 316 "pppars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _2 = parseState.GetInput(2) :?> 'gentype_Recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 60 "src/Compiler/pppars.fsy" +//# 58 "src/Compiler/pppars.fsy" fail parseState 1 (FSComp.SR.ppparsUnexpectedToken(")")) ) -//# 60 "src/Compiler/pppars.fsy" +//# 58 "src/Compiler/pppars.fsy" : 'gentype_Expr)); -//# 330 "pppars.fs" +//# 327 "pppars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> let _1 = parseState.GetInput(1) :?> 'gentype_Expr in let _2 = parseState.GetInput(2) :?> 'gentype_Recover in Microsoft.FSharp.Core.Operators.box ( ( -//# 61 "src/Compiler/pppars.fsy" +//# 59 "src/Compiler/pppars.fsy" fail parseState 2 (FSComp.SR.ppparsIncompleteExpression()) ) -//# 61 "src/Compiler/pppars.fsy" +//# 59 "src/Compiler/pppars.fsy" : 'gentype_Expr)); -//# 342 "pppars.fs" +//# 339 "pppars.fs" (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> Microsoft.FSharp.Core.Operators.box ( ( -//# 62 "src/Compiler/pppars.fsy" +//# 60 "src/Compiler/pppars.fsy" fail parseState 1 (FSComp.SR.ppparsIncompleteExpression()) ) -//# 62 "src/Compiler/pppars.fsy" +//# 60 "src/Compiler/pppars.fsy" : 'gentype_Expr)); |] -//# 353 "pppars.fs" +//# 350 "pppars.fs" let tables : Internal.Utilities.Text.Parsing.Tables<_> = { reductions = _fsyacc_reductions.Value; endOfInputTag = _fsyacc_endOfInputTag; diff --git a/src/fcs-fable/codegen/pppars.fsi b/src/fcs-fable/codegen/pppars.fsi index a1153c8abe..04ae14e888 100644 --- a/src/fcs-fable/codegen/pppars.fsi +++ b/src/fcs-fable/codegen/pppars.fsi @@ -1,7 +1,6 @@ // Signature file for parser generated by fsyacc module internal FSharp.Compiler.PPParser -open FSharp.Compiler -open FSharp.Compiler.Syntax +open FSharp.Compiler.ParseHelpers type token = | OP_NOT | OP_AND @@ -39,4 +38,4 @@ val prodIdxToNonTerminal: int -> nonTerminalId /// This function gets the name of a token as a string val token_to_string: token -> string -val start : (Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> token) -> Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> ( LexerIfdefExpression ) +val start : (Internal.Utilities.Text.Lexing.LexBuffer -> token) -> Internal.Utilities.Text.Lexing.LexBuffer -> ( LexerIfdefExpression ) diff --git a/src/fcs-fable/fcs-fable.fsproj b/src/fcs-fable/fcs-fable.fsproj index 80d66af5e1..e9260e4063 100644 --- a/src/fcs-fable/fcs-fable.fsproj +++ b/src/fcs-fable/fcs-fable.fsproj @@ -12,7 +12,7 @@ $(DefineConstants);NO_TYPEPROVIDERS $(DefineConstants);NO_INLINE_IL_PARSER $(DefineConstants);FSHARPCORE_USE_PACKAGE - $(OtherFlags) --warnon:1182 --nowarn:57 + $(OtherFlags) --nowarn:57 @@ -101,7 +101,9 @@ + + @@ -145,11 +147,15 @@ + + + + @@ -210,6 +216,8 @@ + + @@ -224,6 +232,8 @@ + + @@ -240,6 +250,8 @@ + + @@ -274,8 +286,6 @@ - - @@ -297,12 +307,12 @@ - - + + @@ -367,7 +377,7 @@ - + diff --git a/src/fcs-fable/service_slim.fs b/src/fcs-fable/service_slim.fs index 6db4f97642..33643df0f4 100644 --- a/src/fcs-fable/service_slim.fs +++ b/src/fcs-fable/service_slim.fs @@ -177,12 +177,14 @@ module internal ParseAndCheck = // restore all cached typecheck entries above file cachedAbove |> Array.iter (fun (key, value) -> compilerState.checkCache.TryAdd(key, value) |> ignore) - let ParseFile (fileName: string, source: string, parsingOptions: FSharpParsingOptions, compilerState) = + let ParseFile (fileName: string, source: string, parsingOptions: FSharpParsingOptions, compilerState, ct) = let parseCacheKey = fileName, hash source compilerState.parseCache.GetOrAdd(parseCacheKey, fun _ -> ClearStaleCache(fileName, parsingOptions, compilerState) let sourceText = SourceText.ofString source - let parseErrors, parseTreeOpt, anyErrors = ParseAndCheckFile.parseFile (sourceText, fileName, parsingOptions, userOpName, suggestNamesForErrors, captureIdentifiersWhenParsing) + let flatErrors = compilerState.tcConfig.flatErrors + let parseErrors, parseTreeOpt, anyErrors = + ParseAndCheckFile.parseFile (sourceText, fileName, parsingOptions, userOpName, suggestNamesForErrors, flatErrors, captureIdentifiersWhenParsing, ct) let dependencyFiles = [||] // interactions have no dependencies FSharpParseFileResults (parseErrors, parseTreeOpt, anyErrors, dependencyFiles) ) @@ -202,7 +204,9 @@ module internal ParseAndCheck = |> Cancellable.runWithoutCancellation let fileName = parseResults.FileName - let tcErrors = DiagnosticHelpers.CreateDiagnostics (diagnosticsOptions, false, fileName, (capturingLogger.GetDiagnostics()), suggestNamesForErrors) + let flatErrors = compilerState.tcConfig.flatErrors + let parseDiagnostics = capturingLogger.GetDiagnostics() + let tcErrors = DiagnosticHelpers.CreateDiagnostics (diagnosticsOptions, false, fileName, parseDiagnostics, suggestNamesForErrors, flatErrors, None) (tcResult, tcErrors), (tcState, moduleNamesDict) let CheckFile (projectFileName: string, parseResults: FSharpParseFileResults, tcState: TcState, moduleNamesDict: ModuleNamesDict, compilerState) = @@ -294,10 +298,11 @@ type InteractiveChecker internal (compilerStateCache) = /// Does not retain name resolutions and symbol uses which are quite memory hungry (so no intellisense etc.). /// Already parsed files will be cached so subsequent compilations will be faster. member _.ParseAndCheckProject (projectFileName: string, fileNames: string[], sources: string[]) = + let cts = new CancellationTokenSource() let compilerState = compilerStateCache.Get() // parse files let parsingOptions = FSharpParsingOptions.FromTcConfig(compilerState.tcConfig, fileNames, false) - let parseFile (fileName, source) = ParseFile (fileName, source, parsingOptions, compilerState) + let parseFile (fileName, source) = ParseFile (fileName, source, parsingOptions, compilerState, cts.Token) let parseResults = Array.zip fileNames sources |> Array.map parseFile // type check files @@ -317,6 +322,7 @@ type InteractiveChecker internal (compilerStateCache) = /// up to and including the file requested. Returns parse and typecheck results containing /// name resolutions and symbol uses for the file requested only, so intellisense etc. works. member _.ParseAndCheckFileInProject (fileName: string, projectFileName: string, fileNames: string[], sources: string[]) = + let cts = new CancellationTokenSource() let compilerState = compilerStateCache.Get() // get files before file let fileIndex = fileNames |> Array.findIndex ((=) fileName) @@ -325,7 +331,7 @@ type InteractiveChecker internal (compilerStateCache) = // parse files before file let parsingOptions = FSharpParsingOptions.FromTcConfig(compilerState.tcConfig, fileNames, false) - let parseFile (fileName, source) = ParseFile (fileName, source, parsingOptions, compilerState) + let parseFile (fileName, source) = ParseFile (fileName, source, parsingOptions, compilerState, cts.Token) let parseResults = Array.zip fileNamesBeforeFile sourcesBeforeFile |> Array.map parseFile // type check files before file diff --git a/src/fcs-fable/src/Compiler/AbstractIL/il.fs b/src/fcs-fable/src/Compiler/AbstractIL/il.fs index 1c62fe1593..9091577216 100644 --- a/src/fcs-fable/src/Compiler/AbstractIL/il.fs +++ b/src/fcs-fable/src/Compiler/AbstractIL/il.fs @@ -186,20 +186,22 @@ type LazyOrderedMultiMap<'Key, 'Data when 'Key: equality>(keyf: 'Data -> 'Key, l t) - member self.Entries() = lazyItems.Force() + member _.Entries() = lazyItems.Force() - member self.Add y = + member _.Add y = new LazyOrderedMultiMap<'Key, 'Data>(keyf, lazyItems |> lazyMap (fun x -> y :: x)) - member self.Filter f = + member _.Filter f = new LazyOrderedMultiMap<'Key, 'Data>(keyf, lazyItems |> lazyMap (List.filter f)) - member self.Item + member _.Item with get x = match quickMap.Force().TryGetValue x with | true, v -> v | _ -> [] + override _.ToString() = "" + //--------------------------------------------------------------------- // SHA1 hash-signing algorithm. Used to get the public key token from // the public key. @@ -424,6 +426,8 @@ type AssemblyRefData = assemRefLocale: Locale option } + override x.ToString() = x.assemRefName + /// Global state: table of all assembly references keyed by AssemblyRefData. let AssemblyRefUniqueStampGenerator = UniqueStampGenerator() @@ -582,6 +586,8 @@ type ILModuleRef = member x.Hash = x.hash + override x.ToString() = x.Name + [] [] type ILScopeRef = @@ -671,6 +677,9 @@ type ILCallingConv = static member Static = ILCallingConvStatics.Static + override x.ToString() = + if x.IsStatic then "static" else "instance" + /// Static storage to amortize the allocation of ILCallingConv.Instance and ILCallingConv.Static. and ILCallingConvStatics() = @@ -990,7 +999,8 @@ type ILMethodRef = member x.ReturnType = x.mrefReturn - member x.CallingSignature = mkILCallSig (x.CallingConv, x.ArgTypes, x.ReturnType) + member x.GetCallingSignature() = + mkILCallSig (x.CallingConv, x.ArgTypes, x.ReturnType) static member Create(enclosingTypeRef, callingConv, name, genericArity, argTypes, returnType) = { @@ -1119,6 +1129,8 @@ type ILSourceDocument = member x.File = x.sourceFile + override x.ToString() = x.File + [] type ILDebugPoint = { @@ -1455,6 +1467,10 @@ type ILLocalDebugInfo = DebugMappings: ILLocalDebugMapping list } + override x.ToString() = + let firstLabel, secondLabel = x.Range + sprintf "%i-%i" firstLabel secondLabel + [] type ILCode = { @@ -1464,6 +1480,8 @@ type ILCode = Locals: ILLocalDebugInfo list } + override x.ToString() = "" + [] type ILLocal = { @@ -1472,6 +1490,8 @@ type ILLocal = DebugInfo: (string * int * int) option } + override x.ToString() = "" + type ILLocals = ILLocal list [] @@ -1488,6 +1508,8 @@ type ILDebugImports = Imports: ILDebugImport[] } + override x.ToString() = "" + [] type ILMethodBody = { @@ -1501,6 +1523,8 @@ type ILMethodBody = DebugImports: ILDebugImports option } + override x.ToString() = "" + [] type ILMemberAccess = | Assembly @@ -1741,6 +1765,8 @@ type PInvokeMethod = CharBestFit: PInvokeCharBestFit } + override x.ToString() = x.Name + [] type ILParameter = { @@ -1757,6 +1783,9 @@ type ILParameter = member x.CustomAttrs = x.CustomAttrsStored.GetCustomAttrs x.MetadataIndex + override x.ToString() = + x.Name |> Option.defaultValue "" + type ILParameters = ILParameter list [] @@ -1768,6 +1797,8 @@ type ILReturn = MetadataIndex: int32 } + override x.ToString() = "" + member x.CustomAttrs = x.CustomAttrsStored.GetCustomAttrs x.MetadataIndex member x.WithCustomAttrs(customAttrs) = @@ -1782,6 +1813,9 @@ type ILOverridesSpec = member x.DeclaringType = let (OverridesSpec (_mr, ty)) = x in ty + override x.ToString() = + "overrides " + x.DeclaringType.ToString() + "::" + x.MethodRef.ToString() + type ILMethodVirtualInfo = { IsFinal: bool @@ -1804,7 +1838,7 @@ type MethodCodeKind = | Native | Runtime -let typesOfILParams (ps: ILParameters) : ILTypes = ps |> List.map (fun p -> p.Type) +let typesOfILParams (ps: ILParameters) = ps |> List.map (fun p -> p.Type) [] type ILGenericVariance = @@ -1989,7 +2023,7 @@ type ILMethodDef member x.IsZeroInit = x.MethodBody.IsZeroInit - member md.CallingSignature = + member md.GetCallingSignature() = mkILCallSig (md.CallingConv, md.ParameterTypes, md.Return.Type) member x.IsClassInitializer = x.Name = ".cctor" @@ -2153,7 +2187,7 @@ type ILMethodDefs(f: unit -> ILMethodDef[]) = member x.TryFindInstanceByNameAndCallingSignature(nm, callingSig) = x.FindByName nm - |> List.tryFind (fun x -> not x.IsStatic && x.CallingSignature = callingSig) + |> List.tryFind (fun x -> not x.IsStatic && x.GetCallingSignature() = callingSig) [] type ILEventDef @@ -2236,6 +2270,8 @@ type ILEventDefs = member x.LookupByName s = let (ILEvents t) = x in t[s] + override x.ToString() = "" + [] type ILPropertyDef ( @@ -2314,6 +2350,8 @@ type ILPropertyDefs = member x.LookupByName s = let (ILProperties t) = x in t[s] + override x.ToString() = "" + let convertFieldAccess (ilMemberAccess: ILMemberAccess) = match ilMemberAccess with | ILMemberAccess.Assembly -> FieldAttributes.Assembly @@ -2428,6 +2466,8 @@ type ILFieldDefs = member x.LookupByName s = let (ILFields t) = x in t[s] + override x.ToString() = "" + type ILMethodImplDef = { Overrides: ILOverridesSpec @@ -2812,10 +2852,10 @@ and [] ILTypeDefs(f: unit -> ILPreTypeDef[]) = ReadOnlyDictionary t) #endif - member x.AsArray() = + member _.AsArray() = [| for pre in array.Value -> pre.GetTypeDef() |] - member x.AsList() = + member _.AsList() = [ for pre in array.Value -> pre.GetTypeDef() ] interface IEnumerable with @@ -2883,6 +2923,8 @@ type ILNestedExportedType = member x.CustomAttrs = x.CustomAttrsStored.GetCustomAttrs x.MetadataIndex + override x.ToString() = "exported type " + x.Name + and ILNestedExportedTypes = | ILNestedExportedTypes of Lazy> @@ -2905,6 +2947,8 @@ and [] ILExportedTypeOrForwarder = member x.CustomAttrs = x.CustomAttrsStored.GetCustomAttrs x.MetadataIndex + override x.ToString() = "exported type " + x.Name + and ILExportedTypesAndForwarders = | ILExportedTypesAndForwarders of Lazy> @@ -2951,6 +2995,8 @@ type ILResource = member x.CustomAttrs = x.CustomAttrsStored.GetCustomAttrs x.MetadataIndex + override x.ToString() = "resource " + x.Name + type ILResources = | ILResources of ILResource list @@ -2998,6 +3044,8 @@ type ILAssemblyManifest = member x.SecurityDecls = x.SecurityDeclsStored.GetSecurityDecls x.MetadataIndex + override x.ToString() = "assembly manifest " + x.Name + [] type ILNativeResource = | In of fileName: string * linkedResourceBase: int * linkedResourceStart: int * linkedResourceLength: int @@ -3041,6 +3089,8 @@ type ILModuleDef = member x.CustomAttrs = x.CustomAttrsStored.GetCustomAttrs x.MetadataIndex + override x.ToString() = "assembly " + x.Name + // -------------------------------------------------------------------- // Add fields and types to tables, with decent error messages // when clashes occur... diff --git a/src/fcs-fable/src/Compiler/AbstractIL/il.fsi b/src/fcs-fable/src/Compiler/AbstractIL/il.fsi index 6562007bc5..76774ef471 100644 --- a/src/fcs-fable/src/Compiler/AbstractIL/il.fsi +++ b/src/fcs-fable/src/Compiler/AbstractIL/il.fsi @@ -356,7 +356,7 @@ type ILMethodRef = member ReturnType: ILType - member CallingSignature: ILCallingSignature + member GetCallingSignature: unit -> ILCallingSignature interface System.IComparable @@ -1091,27 +1091,43 @@ type ILMethodDef = member IsVirtual: bool member IsFinal: bool + member IsNewSlot: bool + member IsCheckAccessOnOverride: bool + member IsAbstract: bool + member MethodBody: ILMethodBody - member CallingSignature: ILCallingSignature + + member GetCallingSignature: unit -> ILCallingSignature + member Access: ILMemberAccess + member IsHideBySig: bool + member IsSpecialName: bool /// The method is exported to unmanaged code using COM interop. member IsUnmanagedExport: bool + member IsReqSecObj: bool /// Some methods are marked "HasSecurity" even if there are no permissions attached, e.g. if they use SuppressUnmanagedCodeSecurityAttribute member HasSecurity: bool + member IsManaged: bool + member IsForwardRef: bool + member IsInternalCall: bool + member IsPreserveSig: bool + member IsSynchronized: bool + member IsNoInline: bool + member IsAggressiveInline: bool /// SafeHandle finalizer must be run. @@ -1131,20 +1147,35 @@ type ILMethodDef = ?genericParams: ILGenericParameterDefs * ?customAttrs: ILAttributes -> ILMethodDef + member internal WithSpecialName: ILMethodDef + member internal WithHideBySig: unit -> ILMethodDef + member internal WithHideBySig: bool -> ILMethodDef + member internal WithFinal: bool -> ILMethodDef + member internal WithAbstract: bool -> ILMethodDef + member internal WithVirtual: bool -> ILMethodDef + member internal WithAccess: ILMemberAccess -> ILMethodDef + member internal WithNewSlot: ILMethodDef + member internal WithSecurity: bool -> ILMethodDef + member internal WithPInvoke: bool -> ILMethodDef + member internal WithPreserveSig: bool -> ILMethodDef + member internal WithSynchronized: bool -> ILMethodDef + member internal WithNoInlining: bool -> ILMethodDef + member internal WithAggressiveInlining: bool -> ILMethodDef + member internal WithRuntime: bool -> ILMethodDef /// Tables of methods. Logically equivalent to a list of methods but @@ -1152,10 +1183,15 @@ type ILMethodDef = /// name and arity. [] type ILMethodDefs = + interface IEnumerable + member AsArray: unit -> ILMethodDef[] + member AsList: unit -> ILMethodDef list + member FindByName: string -> ILMethodDef list + member TryFindInstanceByNameAndCallingSignature: string * ILCallingSignature -> ILMethodDef option /// Field definitions. @@ -1188,20 +1224,32 @@ type ILFieldDef = ILFieldDef member Name: string + member FieldType: ILType + member Attributes: FieldAttributes + member Data: byte[] option + member LiteralValue: ILFieldInit option /// The explicit offset in bytes when explicit layout is used. member Offset: int32 option + member Marshal: ILNativeType option + member CustomAttrs: ILAttributes + member IsStatic: bool + member IsSpecialName: bool + member IsLiteral: bool + member NotSerialized: bool + member IsInitOnly: bool + member Access: ILMemberAccess /// Functional update of the value @@ -1215,12 +1263,19 @@ type ILFieldDef = ?marshal: ILNativeType option * ?customAttrs: ILAttributes -> ILFieldDef + member internal WithAccess: ILMemberAccess -> ILFieldDef + member internal WithInitOnly: bool -> ILFieldDef + member internal WithStatic: bool -> ILFieldDef + member internal WithSpecialName: bool -> ILFieldDef + member internal WithNotSerialized: bool -> ILFieldDef + member internal WithLiteralDefaultValue: ILFieldInit option -> ILFieldDef + member internal WithFieldMarshal: ILNativeType option -> ILFieldDef /// Tables of fields. Logically equivalent to a list of fields but the table is kept in diff --git a/src/fcs-fable/src/Compiler/AbstractIL/illex.fsl b/src/fcs-fable/src/Compiler/AbstractIL/illex.fsl index 50cb2ef72f..36429f0362 100644 --- a/src/fcs-fable/src/Compiler/AbstractIL/illex.fsl +++ b/src/fcs-fable/src/Compiler/AbstractIL/illex.fsl @@ -1,18 +1,11 @@ // Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. { - -module internal FSharp.Compiler.AbstractIL.AsciiLexer - open Internal.Utilities.Collections open Internal.Utilities.Text -open Internal.Utilities.Text.Lexing open Internal.Utilities.Library - -open FSharp.Compiler.AbstractIL -open FSharp.Compiler.AbstractIL.AsciiParser -open FSharp.Compiler.AbstractIL.AsciiConstants - +open FSharp.Compiler.AbstractIL +open FSharp.Compiler.AbstractIL.AsciiConstants #if FABLE_COMPILER diff --git a/src/fcs-fable/src/Compiler/AbstractIL/ilmorph.fs b/src/fcs-fable/src/Compiler/AbstractIL/ilmorph.fs index 99fcb9811b..5f8ceb6fc4 100644 --- a/src/fcs-fable/src/Compiler/AbstractIL/ilmorph.fs +++ b/src/fcs-fable/src/Compiler/AbstractIL/ilmorph.fs @@ -256,8 +256,21 @@ let morphILMethodDefs f (m: ILMethodDefs) = mkILMethods (List.map f (m.AsList()) let morphILFieldDefs f (fdefs: ILFieldDefs) = mkILFields (List.map f (fdefs.AsList())) -let morphILTypeDefs f (tdefs: ILTypeDefs) = - mkILTypeDefsFromArray (Array.map f (tdefs.AsArray())) +let morphILTypeDefs isInKnownSet f (tdefs: ILTypeDefs) = + let filtered (tdefs: ILTypeDef array) = + // The key ensures that items in the Known Set are not duplicated everything else may be. + let mkKey (i, (td: ILTypeDef)) = + if isInKnownSet td.Name then + struct (0, td.Name) + else + struct (i + 1, td.Name) + + tdefs + |> Array.indexed + |> Array.distinctBy mkKey + |> Array.map (fun (_, td) -> td) + + mkILTypeDefsFromArray (Array.map f (filtered (tdefs.AsArray()))) let morphILLocals f locals = List.map (morphILLocal f) locals @@ -349,7 +362,7 @@ let edefs_ty2ty f (edefs: ILEventDefs) = let mimpls_ty2ty f (mimpls: ILMethodImplDefs) = mkILMethodImpls (mimpls.AsList() |> List.map (mimpl_ty2ty f)) -let rec tdef_ty2ty_ilmbody2ilmbody_mdefs2mdefs enc fs (tdef: ILTypeDef) = +let rec tdef_ty2ty_ilmbody2ilmbody_mdefs2mdefs isInKnownSet enc fs (tdef: ILTypeDef) = let fTyInCtxt, fMethodDefs = fs let fTyInCtxtR = fTyInCtxt (Some(enc, tdef)) None let mdefsR = fMethodDefs (enc, tdef) tdef.Methods @@ -360,7 +373,7 @@ let rec tdef_ty2ty_ilmbody2ilmbody_mdefs2mdefs enc fs (tdef: ILTypeDef) = genericParams = gparams_ty2ty fTyInCtxtR tdef.GenericParams, extends = Option.map fTyInCtxtR tdef.Extends, methods = mdefsR, - nestedTypes = tdefs_ty2ty_ilmbody2ilmbody_mdefs2mdefs (enc @ [ tdef ]) fs tdef.NestedTypes, + nestedTypes = tdefs_ty2ty_ilmbody2ilmbody_mdefs2mdefs isInKnownSet (enc @ [ tdef ]) fs tdef.NestedTypes, fields = fdefsR, methodImpls = mimpls_ty2ty fTyInCtxtR tdef.MethodImpls, events = edefs_ty2ty fTyInCtxtR tdef.Events, @@ -368,8 +381,8 @@ let rec tdef_ty2ty_ilmbody2ilmbody_mdefs2mdefs enc fs (tdef: ILTypeDef) = customAttrs = cattrs_ty2ty fTyInCtxtR tdef.CustomAttrs ) -and tdefs_ty2ty_ilmbody2ilmbody_mdefs2mdefs enc fs tdefs = - morphILTypeDefs (tdef_ty2ty_ilmbody2ilmbody_mdefs2mdefs enc fs) tdefs +and tdefs_ty2ty_ilmbody2ilmbody_mdefs2mdefs isInKnownSet enc fs tdefs = + morphILTypeDefs isInKnownSet (tdef_ty2ty_ilmbody2ilmbody_mdefs2mdefs isInKnownSet enc fs) tdefs // -------------------------------------------------------------------- // Derived versions of the above, e.g. with defaults added @@ -381,12 +394,13 @@ let manifest_ty2ty f (m: ILAssemblyManifest) = } let morphILTypeInILModule_ilmbody2ilmbody_mdefs2mdefs + isInKnownSet (fTyInCtxt: ILModuleDef -> (ILTypeDef list * ILTypeDef) option -> ILMethodDef option -> ILType -> ILType, fMethodDefs) modul = let ftdefs = - tdefs_ty2ty_ilmbody2ilmbody_mdefs2mdefs [] (fTyInCtxt modul, fMethodDefs modul) + tdefs_ty2ty_ilmbody2ilmbody_mdefs2mdefs isInKnownSet [] (fTyInCtxt modul, fMethodDefs modul) { modul with TypeDefs = ftdefs modul.TypeDefs @@ -394,7 +408,7 @@ let morphILTypeInILModule_ilmbody2ilmbody_mdefs2mdefs Manifest = Option.map (manifest_ty2ty (fTyInCtxt modul None None)) modul.Manifest } -let morphILInstrsAndILTypesInILModule fs modul = +let morphILInstrsAndILTypesInILModule isInKnownSet fs modul = let fCode, fTyInCtxt = fs let fMethBody modCtxt tdefCtxt mdefCtxt = @@ -403,20 +417,20 @@ let morphILInstrsAndILTypesInILModule fs modul = let fMethodDefs modCtxt tdefCtxt = mdefs_ty2ty_ilmbody2ilmbody (fTyInCtxt modCtxt (Some tdefCtxt), fMethBody modCtxt tdefCtxt) - morphILTypeInILModule_ilmbody2ilmbody_mdefs2mdefs (fTyInCtxt, fMethodDefs) modul + morphILTypeInILModule_ilmbody2ilmbody_mdefs2mdefs isInKnownSet (fTyInCtxt, fMethodDefs) modul let morphILInstrsInILCode f ilcode = code_instr2instrs f ilcode -let morphILTypeInILModule fTyInCtxt modul = +let morphILTypeInILModule isInKnownSet fTyInCtxt modul = let finstr modCtxt tdefCtxt mdefCtxt = let fTy = fTyInCtxt modCtxt (Some tdefCtxt) mdefCtxt morphILTypesInILInstr ((fun _instrCtxt -> fTy), (fun _instrCtxt _formalCtxt -> fTy)) - morphILInstrsAndILTypesInILModule (finstr, fTyInCtxt) modul + morphILInstrsAndILTypesInILModule isInKnownSet (finstr, fTyInCtxt) modul -let morphILTypeRefsInILModuleMemoized f modul = +let morphILTypeRefsInILModuleMemoized isInKnownSet f modul = let fTy = Tables.memoize (morphILTypeRefsInILType f) - morphILTypeInILModule (fun _ _ _ ty -> fTy ty) modul + morphILTypeInILModule isInKnownSet (fun _ _ _ ty -> fTy ty) modul -let morphILScopeRefsInILModuleMemoized f modul = - morphILTypeRefsInILModuleMemoized (morphILScopeRefsInILTypeRef f) modul +let morphILScopeRefsInILModuleMemoized isInKnownSet f modul = + morphILTypeRefsInILModuleMemoized isInKnownSet (morphILScopeRefsInILTypeRef f) modul diff --git a/src/fcs-fable/src/Compiler/AbstractIL/ilmorph.fsi b/src/fcs-fable/src/Compiler/AbstractIL/ilmorph.fsi index eeff4ed56f..5ce3a38e40 100644 --- a/src/fcs-fable/src/Compiler/AbstractIL/ilmorph.fsi +++ b/src/fcs-fable/src/Compiler/AbstractIL/ilmorph.fsi @@ -17,9 +17,9 @@ val morphILScopeRefsInILTypeRef: (ILScopeRef -> ILScopeRef) -> ILTypeRef -> ILTy val morphILTypeRefsInILType: (ILTypeRef -> ILTypeRef) -> ILType -> ILType /// Morph all type references throughout an entire module. -val morphILTypeRefsInILModuleMemoized: (ILTypeRef -> ILTypeRef) -> ILModuleDef -> ILModuleDef +val morphILTypeRefsInILModuleMemoized: (string -> bool) -> (ILTypeRef -> ILTypeRef) -> ILModuleDef -> ILModuleDef -val morphILScopeRefsInILModuleMemoized: (ILScopeRef -> ILScopeRef) -> ILModuleDef -> ILModuleDef +val morphILScopeRefsInILModuleMemoized: (string -> bool) -> (ILScopeRef -> ILScopeRef) -> ILModuleDef -> ILModuleDef val morphILInstrsInILCode: (ILInstr -> ILInstr list) -> ILCode -> ILCode diff --git a/src/fcs-fable/src/Compiler/AbstractIL/ilpars.fsy b/src/fcs-fable/src/Compiler/AbstractIL/ilpars.fsy index 29b3dd9127..67c8e4d1fe 100644 --- a/src/fcs-fable/src/Compiler/AbstractIL/ilpars.fsy +++ b/src/fcs-fable/src/Compiler/AbstractIL/ilpars.fsy @@ -4,21 +4,7 @@ #nowarn "1182" // the generated code often has unused variable "parseState" -open Internal.Utilities open Internal.Utilities.Library -open Internal.Utilities.Text - -open FSharp.Compiler.AbstractIL -open FSharp.Compiler.AbstractIL -open FSharp.Compiler.AbstractIL.AsciiConstants -open FSharp.Compiler.AbstractIL.Diagnostics -open FSharp.Compiler.AbstractIL.ILX.Types -open FSharp.Compiler.AbstractIL.IL - - -let pfailwith s = - stderr.WriteLine ("*** error: "+s); - raise Parsing.RecoverableParseError type ResolvedAtMethodSpecScope<'T> = ResolvedAtMethodSpecScope of (ILGenericParameterDefs -> 'T) diff --git a/src/fcs-fable/src/Compiler/AbstractIL/ilread.fs b/src/fcs-fable/src/Compiler/AbstractIL/ilread.fs index 440dd3b303..893556851d 100644 --- a/src/fcs-fable/src/Compiler/AbstractIL/ilread.fs +++ b/src/fcs-fable/src/Compiler/AbstractIL/ilread.fs @@ -245,7 +245,7 @@ type WeakByteFile(fileName: string, chunk: (int * int) option) = let fileStamp = FileSystem.GetLastWriteTimeShim fileName /// The weak handle to the bytes for the file - let weakBytes = WeakReference(null) + let weakBytes = WeakReference(null) member _.FileName = fileName @@ -271,7 +271,7 @@ type WeakByteFile(fileName: string, chunk: (int * int) option) = weakBytes.SetTarget bytes - tg + nonNull tg ByteMemory.FromArray(strongBytes).AsReadOnly() @@ -960,10 +960,11 @@ let mkCacheInt32 lowMem _inbase _nm _sz = fun f (idx: int32) -> let cache = match cache with - | null -> cache <- ConcurrentDictionary(Environment.ProcessorCount, 11) - | _ -> () - - cache + | Null -> + let v = ConcurrentDictionary(Environment.ProcessorCount, 11) + cache <- v + v + | NonNull v -> v match cache.TryGetValue idx with | true, res -> @@ -988,10 +989,11 @@ let mkCacheGeneric lowMem _inbase _nm _sz = fun f (idx: 'T) -> let cache = match cache with - | null -> cache <- ConcurrentDictionary<_, _>(Environment.ProcessorCount, 11 (* sz: int *) ) - | _ -> () - - cache + | Null -> + let v = ConcurrentDictionary<_, _>(Environment.ProcessorCount, 11 (* sz: int *) ) + cache <- v + v + | NonNull v -> v match cache.TryGetValue idx with | true, v -> diff --git a/src/fcs-fable/src/Compiler/AbstractIL/ilreflect.fs b/src/fcs-fable/src/Compiler/AbstractIL/ilreflect.fs index f22d36e681..0d56377e36 100644 --- a/src/fcs-fable/src/Compiler/AbstractIL/ilreflect.fs +++ b/src/fcs-fable/src/Compiler/AbstractIL/ilreflect.fs @@ -265,7 +265,7 @@ type TypeBuilder with let t = typB.CreateTypeAndLog() let m = - if t <> null then + if box t <> null then t.GetMethod(nm, (args |> Seq.map (fun x -> x.GetType()) |> Seq.toArray)) else null @@ -546,10 +546,10 @@ let emEnv0 = delayedFieldInits = [] } -let envBindTypeRef emEnv (tref: ILTypeRef) (typT, typB, typeDef) = +let envBindTypeRef emEnv (tref: ILTypeRef) (typT: System.Type MaybeNull, typB, typeDef) = match typT with - | null -> failwithf "binding null type in envBindTypeRef: %s\n" tref.Name - | _ -> + | Null -> failwithf "binding null type in envBindTypeRef: %s\n" tref.Name + | NonNull typT -> { emEnv with emTypMap = Zmap.add tref (typT, typB, typeDef, None) emEnv.emTypMap } @@ -1018,7 +1018,7 @@ let queryableTypeGetMethod cenv emEnv parentT (mref: ILMethodRef) : MethodInfo = cconv ||| BindingFlags.Public ||| BindingFlags.NonPublic, null, argTs, - (null: ParameterModifier[]) + (null: ParameterModifier[] MaybeNull) ) // This can fail if there is an ambiguity w.r.t. return type with _ -> @@ -1102,14 +1102,14 @@ let queryableTypeGetConstructor cenv emEnv (parentT: Type) (mref: ILMethodRef) = parentT.GetConstructor(BindingFlags.Public ||| BindingFlags.NonPublic ||| BindingFlags.Instance, null, reqArgTs, null) match res with - | null -> + | Null -> error ( Error( FSComp.SR.itemNotFoundInTypeDuringDynamicCodeGen ("constructor", mref.Name, parentT.FullName, parentT.Assembly.FullName), range0 ) ) - | _ -> res + | NonNull res -> res let nonQueryableTypeGetConstructor (parentTI: Type) (consInfo: ConstructorInfo) : ConstructorInfo MaybeNull = if parentTI.IsGenericType then diff --git a/src/fcs-fable/src/Compiler/AbstractIL/ilwrite.fs b/src/fcs-fable/src/Compiler/AbstractIL/ilwrite.fs index 4582821e48..ecddf2460d 100644 --- a/src/fcs-fable/src/Compiler/AbstractIL/ilwrite.fs +++ b/src/fcs-fable/src/Compiler/AbstractIL/ilwrite.fs @@ -404,6 +404,8 @@ type MetadataTable<'T> = member tbl.GetTableEntry x = tbl.dict[x] + override x.ToString() = "table " + x.name + //--------------------------------------------------------------------- // Keys into some of the tables //--------------------------------------------------------------------- @@ -450,6 +452,8 @@ type MethodDefKey(ilg:ILGlobals, tidx: int, garity: int, nm: string, retTy: ILTy isStatic = y.IsStatic | _ -> false + override x.ToString() = nm + /// We use this key type to help find ILFieldDefs for FieldRefs type FieldDefKey(tidx: int, nm: string, ty: ILType) = // precompute the hash. hash doesn't include the type @@ -2486,6 +2490,7 @@ let rec GetGenericParamAsGenericParamRow cenv _env idx owner gp = (if gp.HasReferenceTypeConstraint then 0x0004 else 0x0000) ||| (if gp.HasNotNullableValueTypeConstraint then 0x0008 else 0x0000) ||| (if gp.HasDefaultConstructorConstraint then 0x0010 else 0x0000) + let mdVersionMajor, _ = metadataSchemaVersionSupportedByCLRVersion cenv.desiredMetadataVersion if (mdVersionMajor = 1) then @@ -3799,6 +3804,7 @@ type options = dumpDebugInfo: bool referenceAssemblyOnly: bool referenceAssemblyAttribOpt: ILAttribute option + referenceAssemblySignatureHash : int option pathMap: PathMap } let writeBinaryAux (stream: Stream, options: options, modul, normalizeAssemblyRefs) = @@ -4126,11 +4132,17 @@ let writeBinaryAux (stream: Stream, options: options, modul, normalizeAssemblyRe | HashAlgorithm.Sha256 -> System.Security.Cryptography.SHA256.Create() :> System.Security.Cryptography.HashAlgorithm let hCode = sha.ComputeHash code - let hData = sha.ComputeHash data - let hMeta = sha.ComputeHash metadata - - // Not yet suitable for the mvidsection optimization - let deterministicId = [| hCode; hData; hMeta |] |> Array.collect id |> sha.ComputeHash + let hData = sha.ComputeHash data + // Not yet suitable for the mvidsection optimization + + let deterministicId = + [| hCode + hData + match options.referenceAssemblyOnly, options.referenceAssemblySignatureHash with + | true, Some impliedSigHash -> System.BitConverter.GetBytes(impliedSigHash) + | _ -> sha.ComputeHash metadata |] + |> Array.collect id + |> sha.ComputeHash let deterministicMvid () = deterministicId[0..15] let pdbData = // Hash code, data and metadata @@ -4546,7 +4558,7 @@ let writeBinaryFiles (options: options, modul, normalizeAssemblyRefs) = let writeBinaryInMemory (options: options, modul, normalizeAssemblyRefs) = let stream = new MemoryStream() - let options = { options with referenceAssemblyOnly = false; referenceAssemblyAttribOpt = None } + let options = { options with referenceAssemblyOnly = false; referenceAssemblyAttribOpt = None; referenceAssemblySignatureHash = None } let pdbData, pdbInfoOpt, debugDirectoryChunk, debugDataChunk, debugChecksumPdbChunk, debugEmbeddedPdbChunk, debugDeterministicPdbChunk, textV2P, _mappings = writeBinaryAux(stream, options, modul, normalizeAssemblyRefs) diff --git a/src/fcs-fable/src/Compiler/AbstractIL/ilwrite.fsi b/src/fcs-fable/src/Compiler/AbstractIL/ilwrite.fsi index a5240473fb..986f79d53f 100644 --- a/src/fcs-fable/src/Compiler/AbstractIL/ilwrite.fsi +++ b/src/fcs-fable/src/Compiler/AbstractIL/ilwrite.fsi @@ -25,6 +25,7 @@ type options = dumpDebugInfo: bool referenceAssemblyOnly: bool referenceAssemblyAttribOpt: ILAttribute option + referenceAssemblySignatureHash: int option pathMap: PathMap } /// Write a binary to the file system. diff --git a/src/fcs-fable/src/Compiler/AbstractIL/ilx.fs b/src/fcs-fable/src/Compiler/AbstractIL/ilx.fs index 75447e06bc..94bfda1db5 100644 --- a/src/fcs-fable/src/Compiler/AbstractIL/ilx.fs +++ b/src/fcs-fable/src/Compiler/AbstractIL/ilx.fs @@ -15,10 +15,16 @@ let mkLowerName (nm: string) = [] type IlxUnionCaseField(fd: ILFieldDef) = let lowerName = mkLowerName fd.Name - member x.ILField = fd + + member _.ILField = fd + member x.Type = x.ILField.FieldType + member x.Name = x.ILField.Name - member x.LowerName = lowerName + + member _.LowerName = lowerName + + override x.ToString() = x.Name type IlxUnionCase = { @@ -28,11 +34,17 @@ type IlxUnionCase = } member x.FieldDefs = x.altFields + member x.FieldDef n = x.altFields[n] + member x.Name = x.altName + member x.IsNullary = (x.FieldDefs.Length = 0) + member x.FieldTypes = x.FieldDefs |> Array.map (fun fd -> fd.Type) + override x.ToString() = x.Name + type IlxUnionHasHelpers = | NoHelpers | AllHelpers @@ -48,7 +60,9 @@ type IlxUnionSpec = let (IlxUnionSpec (IlxUnionRef (bx, tref, _, _, _), inst)) = x in mkILNamedTy bx tref inst member x.Boxity = let (IlxUnionSpec (IlxUnionRef (bx, _, _, _, _), _)) = x in bx + member x.TypeRef = let (IlxUnionSpec (IlxUnionRef (_, tref, _, _, _), _)) = x in tref + member x.GenericArgs = let (IlxUnionSpec (_, inst)) = x in inst member x.AlternativesArray = @@ -58,10 +72,15 @@ type IlxUnionSpec = let (IlxUnionSpec (IlxUnionRef (_, _, _, np, _), _)) = x in np member x.HasHelpers = let (IlxUnionSpec (IlxUnionRef (_, _, _, _, b), _)) = x in b + member x.Alternatives = Array.toList x.AlternativesArray + member x.Alternative idx = x.AlternativesArray[idx] + member x.FieldDef idx fidx = x.Alternative(idx).FieldDef(fidx) + override x.ToString() = x.TypeRef.Name + type IlxClosureLambdas = | Lambdas_forall of ILGenericParameterDef * IlxClosureLambdas | Lambdas_lambda of ILParameter * IlxClosureLambdas @@ -97,6 +116,8 @@ type IlxClosureFreeVar = fvType: ILType } + override x.ToString() = x.fvName + let mkILFreeVar (name, compgen, ty) = { fvName = name @@ -139,6 +160,8 @@ type IlxClosureSpec = let formalCloTy = mkILFormalBoxedTy x.TypeRef (mkILFormalTypars x.GenericArgs) mkILFieldSpecInTy (x.ILType, "@_instance", formalCloTy) + override x.ToString() = x.TypeRef.ToString() + // Define an extension of the IL algebra of type definitions type IlxClosureInfo = { @@ -169,12 +192,14 @@ type IlxUnionInfo = DebugImports: ILDebugImports option } + override _.ToString() = "" + // -------------------------------------------------------------------- // Define these as extensions of the IL types // -------------------------------------------------------------------- -let destTyFuncApp = - function +let destTyFuncApp input = + match input with | Apps_tyapp (b, c) -> b, c | _ -> failwith "destTyFuncApp" diff --git a/src/fcs-fable/src/Compiler/Checking/AttributeChecking.fs b/src/fcs-fable/src/Compiler/Checking/AttributeChecking.fs index 9f06637c61..075023a2c2 100644 --- a/src/fcs-fable/src/Compiler/Checking/AttributeChecking.fs +++ b/src/fcs-fable/src/Compiler/Checking/AttributeChecking.fs @@ -267,66 +267,64 @@ let langVersionPrefix = "--langversion:preview" /// Check F# attributes for 'ObsoleteAttribute', 'CompilerMessageAttribute' and 'ExperimentalAttribute', /// returning errors and warnings as data let CheckFSharpAttributes (g:TcGlobals) attribs m = - let isExperimentalAttributeDisabled (s:string) = - if g.compilingFSharpCore then - true - else + if isNil attribs then CompleteD + else + trackErrors { + match TryFindFSharpAttribute g g.attrib_SystemObsolete attribs with + | Some(Attrib(_, _, [ AttribStringArg s ], _, _, _, _)) -> + do! WarnD(ObsoleteWarning(s, m)) + | Some(Attrib(_, _, [ AttribStringArg s; AttribBoolArg(isError) ], _, _, _, _)) -> + if isError then + do! ErrorD (ObsoleteError(s, m)) + else + do! WarnD (ObsoleteWarning(s, m)) + | Some _ -> + do! WarnD(ObsoleteWarning("", m)) + | None -> + () + + match TryFindFSharpAttribute g g.attrib_CompilerMessageAttribute attribs with + | Some(Attrib(_, _, [ AttribStringArg s ; AttribInt32Arg n ], namedArgs, _, _, _)) -> + let msg = UserCompilerMessage(s, n, m) + let isError = + match namedArgs with + | ExtractAttribNamedArg "IsError" (AttribBoolArg v) -> v + | _ -> false + // If we are using a compiler that supports nameof then error 3501 is always suppressed. + // See attribute on FSharp.Core 'nameof' + if n = 3501 then + () + elif isError && (not g.compilingFSharpCore || n <> 1204) then + do! ErrorD msg + else + do! WarnD msg + | _ -> + () + + match TryFindFSharpAttribute g g.attrib_ExperimentalAttribute attribs with + | Some(Attrib(_, _, [ AttribStringArg(s) ], _, _, _, _)) -> + let isExperimentalAttributeDisabled (s:string) = + if g.compilingFSharpCore then + true + else #if FABLE_COMPILER - g.langVersion.IsPreviewEnabled && (s.ToLowerInvariant().IndexOf(langVersionPrefix) >= 0) + g.langVersion.IsPreviewEnabled && (s.ToLower().IndexOf(langVersionPrefix.ToLower()) >= 0) #else - g.langVersion.IsPreviewEnabled && (s.IndexOf(langVersionPrefix, StringComparison.OrdinalIgnoreCase) >= 0) + g.langVersion.IsPreviewEnabled && (s.IndexOf(langVersionPrefix, StringComparison.OrdinalIgnoreCase) >= 0) #endif + if not (isExperimentalAttributeDisabled s) then + do! WarnD(Experimental(s, m)) + | Some _ -> + do! WarnD(Experimental(FSComp.SR.experimentalConstruct (), m)) + | _ -> + () - if isNil attribs then CompleteD - else - (match TryFindFSharpAttribute g g.attrib_SystemObsolete attribs with - | Some(Attrib(_, _, [ AttribStringArg s ], _, _, _, _)) -> - WarnD(ObsoleteWarning(s, m)) - | Some(Attrib(_, _, [ AttribStringArg s; AttribBoolArg(isError) ], _, _, _, _)) -> - if isError then - ErrorD (ObsoleteError(s, m)) - else - WarnD (ObsoleteWarning(s, m)) - | Some _ -> - WarnD(ObsoleteWarning("", m)) - | None -> - CompleteD - ) ++ (fun () -> - - match TryFindFSharpAttribute g g.attrib_CompilerMessageAttribute attribs with - | Some(Attrib(_, _, [ AttribStringArg s ; AttribInt32Arg n ], namedArgs, _, _, _)) -> - let msg = UserCompilerMessage(s, n, m) - let isError = - match namedArgs with - | ExtractAttribNamedArg "IsError" (AttribBoolArg v) -> v - | _ -> false - // If we are using a compiler that supports nameof then error 3501 is always suppressed. - // See attribute on FSharp.Core 'nameof' - if n = 3501 then CompleteD - elif isError && (not g.compilingFSharpCore || n <> 1204) then ErrorD msg - else WarnD msg - | _ -> - CompleteD - ) ++ (fun () -> - - match TryFindFSharpAttribute g g.attrib_ExperimentalAttribute attribs with - | Some(Attrib(_, _, [ AttribStringArg(s) ], _, _, _, _)) -> - if isExperimentalAttributeDisabled s then - CompleteD - else - WarnD(Experimental(s, m)) - | Some _ -> - WarnD(Experimental(FSComp.SR.experimentalConstruct (), m)) - | _ -> - CompleteD - ) ++ (fun () -> - - match TryFindFSharpAttribute g g.attrib_UnverifiableAttribute attribs with - | Some _ -> - WarnD(PossibleUnverifiableCode(m)) - | _ -> - CompleteD - ) + match TryFindFSharpAttribute g g.attrib_UnverifiableAttribute attribs with + | Some _ -> + do! WarnD(PossibleUnverifiableCode(m)) + | _ -> + () + } #if !NO_TYPEPROVIDERS /// Check a list of provided attributes for 'ObsoleteAttribute', returning errors and warnings as data @@ -421,21 +419,23 @@ let CheckILEventAttributes g (tcref: TyconRef) cattrs m = CheckILAttributes g (isByrefLikeTyconRef g m tcref) cattrs m /// Check the attributes associated with a method, returning warnings and errors as data. -let CheckMethInfoAttributes g m tyargsOpt (minfo: MethInfo) = - match stripTyEqns g minfo.ApparentEnclosingAppType with - | TType_app(tcref, _, _) -> CheckEntityAttributes g tcref m - | _ -> CompleteD - ++ (fun () -> +let CheckMethInfoAttributes g m tyargsOpt (minfo: MethInfo) = + trackErrors { + match stripTyEqns g minfo.ApparentEnclosingAppType with + | TType_app(tcref, _, _) -> do! CheckEntityAttributes g tcref m + | _ -> () + let search = BindMethInfoAttributes m minfo (fun ilAttribs -> Some(CheckILAttributes g false ilAttribs m)) (fun fsAttribs -> - let res = - CheckFSharpAttributes g fsAttribs m ++ (fun () -> - if Option.isNone tyargsOpt && HasFSharpAttribute g g.attrib_RequiresExplicitTypeArgumentsAttribute fsAttribs then - ErrorD(Error(FSComp.SR.tcFunctionRequiresExplicitTypeArguments(minfo.LogicalName), m)) - else - CompleteD) + let res = + trackErrors { + do! CheckFSharpAttributes g fsAttribs m + if Option.isNone tyargsOpt && HasFSharpAttribute g g.attrib_RequiresExplicitTypeArgumentsAttribute fsAttribs then + do! ErrorD(Error(FSComp.SR.tcFunctionRequiresExplicitTypeArguments(minfo.LogicalName), m)) + } + Some res) #if !NO_TYPEPROVIDERS (fun provAttribs -> Some (CheckProvidedAttributes g m provAttribs)) @@ -443,9 +443,9 @@ let CheckMethInfoAttributes g m tyargsOpt (minfo: MethInfo) = (fun _provAttribs -> None) #endif match search with - | Some res -> res - | None -> CompleteD // no attribute = no errors - ) + | Some res -> do! res + | None -> () // no attribute = no errors +} /// Indicate if a method has 'Obsolete', 'CompilerMessageAttribute' or 'TypeProviderEditorHideMethodsAttribute'. /// Used to suppress the item in intellisense. @@ -508,14 +508,18 @@ let PropInfoIsUnseen m pinfo = /// Check the attributes on a union case, returning errors and warnings as data. let CheckUnionCaseAttributes g (x:UnionCaseRef) m = - CheckEntityAttributes g x.TyconRef m ++ (fun () -> - CheckFSharpAttributes g x.Attribs m) + trackErrors { + do! CheckEntityAttributes g x.TyconRef m + do! CheckFSharpAttributes g x.Attribs m + } /// Check the attributes on a record field, returning errors and warnings as data. let CheckRecdFieldAttributes g (x:RecdFieldRef) m = - CheckEntityAttributes g x.TyconRef m ++ (fun () -> - CheckFSharpAttributes g x.PropertyAttribs m) ++ (fun () -> - CheckFSharpAttributes g x.RecdField.FieldAttribs m) + trackErrors { + do! CheckEntityAttributes g x.TyconRef m + do! CheckFSharpAttributes g x.PropertyAttribs m + do! CheckFSharpAttributes g x.RecdField.FieldAttribs m + } /// Check the attributes on an F# value, returning errors and warnings as data. let CheckValAttributes g (x:ValRef) m = diff --git a/src/fcs-fable/src/Compiler/Checking/CheckComputationExpressions.fs b/src/fcs-fable/src/Compiler/Checking/CheckComputationExpressions.fs index 0f32df6bc3..90ef6e35c9 100644 --- a/src/fcs-fable/src/Compiler/Checking/CheckComputationExpressions.fs +++ b/src/fcs-fable/src/Compiler/Checking/CheckComputationExpressions.fs @@ -42,10 +42,10 @@ let IgnoreAttribute _ = None let (|ExprAsPat|_|) (f: SynExpr) = match f with | SingleIdent v1 | SynExprParen(SingleIdent v1, _, _, _) -> Some (mkSynPatVar None v1) - | SynExprParen(SynExpr.Tuple (false, elems, _, _), _, _, _) -> + | SynExprParen(SynExpr.Tuple (false, elems, commas, _), _, _, _) -> let elems = elems |> List.map (|SingleIdent|_|) if elems |> List.forall (fun x -> x.IsSome) then - Some (SynPat.Tuple(false, (elems |> List.map (fun x -> mkSynPatVar None x.Value)), f.Range)) + Some (SynPat.Tuple(false, (elems |> List.map (fun x -> mkSynPatVar None x.Value)), commas, f.Range)) else None | _ -> None @@ -111,6 +111,7 @@ let YieldFree (cenv: cenv) expr = | SynExpr.TryFinally (tryExpr=body) | SynExpr.LetOrUse (body=body) | SynExpr.While (doExpr=body) + | SynExpr.WhileBang (doExpr=body) | SynExpr.ForEach (bodyExpr=body) -> YieldFree body @@ -142,6 +143,7 @@ let YieldFree (cenv: cenv) expr = | SynExpr.TryFinally (tryExpr=body) | SynExpr.LetOrUse (body=body) | SynExpr.While (doExpr=body) + | SynExpr.WhileBang (doExpr=body) | SynExpr.ForEach (bodyExpr=body) -> YieldFree body @@ -177,7 +179,8 @@ let (|SimpleSemicolonSequence|_|) cenv acceptDeprecated cexpr = | SynExpr.Do _ | SynExpr.MatchBang _ | SynExpr.LetOrUseBang _ - | SynExpr.While _ -> false + | SynExpr.While _ + | SynExpr.WhileBang _ -> false | _ -> true let rec TryGetSimpleSemicolonSequenceOfComprehension expr acc = @@ -226,7 +229,10 @@ let TcComputationExpression (cenv: cenv) env (overallTy: OverallTy) tpenv (mWhol // Give bespoke error messages for the FSharp.Core "query" builder let isQuery = match stripDebugPoints interpExpr with - | Expr.Val (vref, _, m) -> + // An unparameterized custom builder, e.g., `query`, `async`. + | Expr.Val (vref, _, m) + // A parameterized custom builder, e.g., `builder<…>`, `builder ()`. + | Expr.App (funcExpr = Expr.Val (vref, _, m)) -> let item = Item.CustomBuilder (vref.DisplayName, vref) CallNameResolutionSink cenv.tcSink (m, env.NameEnv, item, emptyTyparInst, ItemOccurence.Use, env.eAccessRights) valRefEq cenv.g vref cenv.g.query_value_vref @@ -696,13 +702,13 @@ let TcComputationExpression (cenv: cenv) env (overallTy: OverallTy) tpenv (mWhol | [] -> [] | [v] -> [mkSynSimplePatVar false v.Id] | vs -> vs |> List.map (fun v -> mkSynSimplePatVar false v.Id) - SynSimplePats.SimplePats (spats, m) + SynSimplePats.SimplePats (spats, [], m) let mkPatForVarSpace m (patvs: Val list) = match patvs with | [] -> SynPat.Const (SynConst.Unit, m) | [v] -> mkSynPatVar None v.Id - | vs -> SynPat.Tuple(false, (vs |> List.map (fun x -> mkSynPatVar None x.Id)), m) + | vs -> SynPat.Tuple(false, (vs |> List.map (fun x -> mkSynPatVar None x.Id)), [], m) let (|OptionalSequential|) e = match e with @@ -1027,6 +1033,36 @@ let TcComputationExpression (cenv: cenv) env (overallTy: OverallTy) tpenv (mWhol [ mkSynDelay2 guardExpr; mkSynCall "Delay" mWhile [mkSynDelay innerComp.Range holeFill]])) ) + | SynExpr.WhileBang (spWhile, guardExpr, innerComp, mOrig) -> + let mGuard = guardExpr.Range + let mWhile = match spWhile with DebugPointAtWhile.Yes m -> m.NoteSourceConstruct(NotedSourceConstruct.While) | _ -> mGuard + let mGuard = mGuard.MakeSynthetic() + + // 'while!' is hit just before each time the guard is called + let guardExpr = + match spWhile with + | DebugPointAtWhile.Yes _ -> + SynExpr.DebugPoint(DebugPointAtLeafExpr.Yes mWhile, false, guardExpr) + | DebugPointAtWhile.No -> guardExpr + + let rewrittenWhileExpr = + let idFirst = mkSynId mGuard (CompilerGeneratedName "first") + let patFirst = mkSynPatVar None idFirst + + let body = + let idCond = mkSynId mGuard (CompilerGeneratedName "cond") + let patCond = mkSynPatVar None idCond + let condBinding = mkSynBinding (Xml.PreXmlDoc.Empty, patCond) (None, false, true, mGuard, DebugPointAtBinding.NoneAtSticky, None, SynExpr.Ident idFirst, mGuard, [], [], None, SynBindingTrivia.Zero) + let setCondExpr = SynExpr.Set (SynExpr.Ident idCond, SynExpr.Ident idFirst, mGuard) + let bindCondExpr = SynExpr.LetOrUseBang (DebugPointAtBinding.NoneAtSticky, false, true, patFirst, guardExpr, [], setCondExpr, mGuard, SynExprLetOrUseBangTrivia.Zero) + + let whileExpr = SynExpr.While (DebugPointAtWhile.No, SynExpr.Ident idCond, SynExpr.Sequential (DebugPointAtSequential.SuppressBoth, true, innerComp, bindCondExpr, mWhile), mOrig) + SynExpr.LetOrUse (false, false, [ condBinding ], whileExpr, mGuard, SynExprLetOrUseTrivia.Zero) + + SynExpr.LetOrUseBang (DebugPointAtBinding.NoneAtSticky, false, true, patFirst, guardExpr, [], body, mGuard, SynExprLetOrUseBangTrivia.Zero) + + tryTrans CompExprTranslationPass.Initial q varSpace rewrittenWhileExpr translatedCtxt + | SynExpr.TryFinally (innerComp, unwindExpr, _mTryToLast, spTry, spFinally, trivia) -> let mTry = match spTry with DebugPointAtTry.Yes m -> m.NoteSourceConstruct(NotedSourceConstruct.Try) | _ -> trivia.TryKeyword @@ -1290,7 +1326,7 @@ let TcComputationExpression (cenv: cenv) env (overallTy: OverallTy) tpenv (mWhol // Check if this is a Bind2Return etc. let hasBindReturnN = not (isNil (TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env mBind ad bindReturnNName builderTy)) if hasBindReturnN && Option.isSome (convertSimpleReturnToExpr varSpace innerComp) then - let consumePat = SynPat.Tuple(false, pats, letPat.Range) + let consumePat = SynPat.Tuple(false, pats, [], letPat.Range) // Add the variables to the query variable space, on demand let varSpace = @@ -1306,7 +1342,7 @@ let TcComputationExpression (cenv: cenv) env (overallTy: OverallTy) tpenv (mWhol // Check if this is a Bind2 etc. let hasBindN = not (isNil (TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AtMostOneResult cenv env mBind ad bindNName builderTy)) if hasBindN then - let consumePat = SynPat.Tuple(false, pats, letPat.Range) + let consumePat = SynPat.Tuple(false, pats, [], letPat.Range) // Add the variables to the query variable space, on demand let varSpace = @@ -1347,7 +1383,7 @@ let TcComputationExpression (cenv: cenv) env (overallTy: OverallTy) tpenv (mWhol error(Error(FSComp.SR.tcRequireMergeSourcesOrBindN(bindNName), mBind)) let source = mkSynCall mergeSourcesName sourcesRange (List.map fst sourcesAndPats) - let pat = SynPat.Tuple(false, List.map snd sourcesAndPats, letPat.Range) + let pat = SynPat.Tuple(false, List.map snd sourcesAndPats, [], letPat.Range) source, pat else @@ -1361,7 +1397,7 @@ let TcComputationExpression (cenv: cenv) env (overallTy: OverallTy) tpenv (mWhol let laterSource, laterPat = mergeSources laterSourcesAndPats let source = mkSynCall mergeSourcesName sourcesRange (List.map fst nowSourcesAndPats @ [laterSource]) - let pat = SynPat.Tuple(false, List.map snd nowSourcesAndPats @ [laterPat], letPat.Range) + let pat = SynPat.Tuple(false, List.map snd nowSourcesAndPats @ [laterPat], [], letPat.Range) source, pat let mergedSources, consumePat = mergeSources (List.zip sources pats) @@ -1737,7 +1773,7 @@ let TcComputationExpression (cenv: cenv) env (overallTy: OverallTy) tpenv (mWhol | _ -> None - /// Check is an expression has no computation expression constructs + /// Check if an expression has no computation expression constructs and isSimpleExpr comp = match comp with @@ -1745,6 +1781,7 @@ let TcComputationExpression (cenv: cenv) env (overallTy: OverallTy) tpenv (mWhol | SynExpr.ForEach _ -> false | SynExpr.For _ -> false | SynExpr.While _ -> false + | SynExpr.WhileBang _ -> false | SynExpr.TryFinally _ -> false | SynExpr.ImplicitZero _ -> false | OptionalSequential (JoinOrGroupJoinOrZipClause _, _) -> false @@ -1790,7 +1827,7 @@ let TcComputationExpression (cenv: cenv) env (overallTy: OverallTy) tpenv (mWhol | _ -> mkSynCall "Run" mDelayOrQuoteOrRun [quotedSynExpr] let lambdaExpr = - SynExpr.Lambda (false, false, SynSimplePats.SimplePats ([mkSynSimplePatVar false (mkSynId mBuilderVal builderValName)], mBuilderVal), runExpr, None, mBuilderVal, SynExprLambdaTrivia.Zero) + SynExpr.Lambda (false, false, SynSimplePats.SimplePats ([mkSynSimplePatVar false (mkSynId mBuilderVal builderValName)], [], mBuilderVal), runExpr, None, mBuilderVal, SynExprLambdaTrivia.Zero) let env = match comp with @@ -2176,16 +2213,18 @@ let TcSequenceExpression (cenv: cenv) env tpenv comp (overallTy: OverallTy) m = let env = { env with eContextInfo = ContextInfo.SequenceExpression genOuterTy } - if enableImplicitYield then + if enableImplicitYield then let hasTypeUnit, expr, tpenv = TryTcStmt cenv env tpenv comp if hasTypeUnit then Choice2Of2 expr, tpenv else let genResultTy = NewInferenceType g - UnifyTypes cenv env m genOuterTy (mkSeqTy cenv.g genResultTy) + let mExpr = expr.Range + UnifyTypes cenv env mExpr genOuterTy (mkSeqTy cenv.g genResultTy) + let expr, tpenv = TcExprFlex cenv flex true genResultTy env tpenv comp let exprTy = tyOfExpr cenv.g expr - AddCxTypeMustSubsumeType env.eContextInfo env.DisplayEnv cenv.css m NoTrace genResultTy exprTy - let resExpr = mkCallSeqSingleton cenv.g m genResultTy (mkCoerceExpr(expr, genResultTy, m, exprTy)) + AddCxTypeMustSubsumeType env.eContextInfo env.DisplayEnv cenv.css mExpr NoTrace genResultTy exprTy + let resExpr = mkCallSeqSingleton cenv.g mExpr genResultTy (mkCoerceExpr(expr, genResultTy, mExpr, exprTy)) Choice1Of2 resExpr, tpenv else let stmt, tpenv = TcStmtThatCantBeCtorBody cenv env tpenv comp diff --git a/src/fcs-fable/src/Compiler/Checking/CheckDeclarations.fs b/src/fcs-fable/src/Compiler/Checking/CheckDeclarations.fs index 0699c35ae5..7cbc0358a2 100644 --- a/src/fcs-fable/src/Compiler/Checking/CheckDeclarations.fs +++ b/src/fcs-fable/src/Compiler/Checking/CheckDeclarations.fs @@ -178,14 +178,15 @@ module MutRecShapes = let iterTyconsWithEnv f1 env xs = iterWithEnv f1 (fun _env _x -> ()) (fun _env _x -> ()) (fun _env _x -> ()) env xs - /// Indicates a declaration is contained in the given module -let ModuleOrNamespaceContainerInfo modref = ContainerInfo(Parent modref, Some(MemberOrValContainerInfo(modref, None, None, NoSafeInitInfo, []))) +let ModuleOrNamespaceContainerInfo modref = + ContainerInfo(Parent modref, Some(MemberOrValContainerInfo(modref, None, None, NoSafeInitInfo, []))) /// Indicates a declaration is contained in the given type definition in the given module -let TyconContainerInfo (parent, tcref, declaredTyconTypars, safeInitInfo) = ContainerInfo(parent, Some(MemberOrValContainerInfo(tcref, None, None, safeInitInfo, declaredTyconTypars))) +let TyconContainerInfo (parent, tcref, declaredTyconTypars, safeInitInfo) = + ContainerInfo(parent, Some(MemberOrValContainerInfo(tcref, None, None, safeInitInfo, declaredTyconTypars))) -type TyconBindingDefn = TyconBindingDefn of ContainerInfo * NewSlotsOK * DeclKind * SynMemberDefn * range +type TyconBindingDefn = TyconBindingDefn of ContainerInfo * NewSlotsOK * DeclKind * SynMemberDefn option * range type MutRecSigsInitialData = MutRecShape list type MutRecDefnsInitialData = MutRecShape list @@ -258,7 +259,7 @@ let BuildRootModuleContents (isModule: bool) enclosingNamespacePath (cpath: Comp ||> List.foldBack (fun id (cpath, moduleContents) -> (cpath.ParentCompPath, wrapModuleOrNamespaceContentsInNamespace isModule id cpath.ParentCompPath moduleContents)) |> snd -/// Try to take the "FSINNN" prefix off a namespace path +/// Try to take the "FSI_NNN" prefix off a namespace path let TryStripPrefixPath (g: TcGlobals) (enclosingNamespacePath: Ident list) = match enclosingNamespacePath with | p :: rest when @@ -743,24 +744,30 @@ module MutRecBindingChecking = /// Represents one element in a type definition, after the first phase type TyconBindingPhase2A = - /// An entry corresponding to the definition of the implicit constructor for a class - | Phase2AIncrClassCtor of IncrClassCtorLhs + /// An entry corresponding to the definition of the static constructor of a class and optional of the incremental constructor (if one exists) + | Phase2AIncrClassCtor of StaticCtorInfo * IncrClassCtorInfo option + /// An 'inherit' declaration in an incremental class /// /// Phase2AInherit (ty, arg, baseValOpt, m) | Phase2AInherit of SynType * SynExpr * Val option * range + /// A set of value or function definitions in an incremental class /// /// Phase2AIncrClassBindings (tcref, letBinds, isStatic, isRec, m) | Phase2AIncrClassBindings of TyconRef * SynBinding list * bool * bool * range + /// A 'member' definition in a class | Phase2AMember of PreCheckingRecursiveBinding + #if OPEN_IN_TYPE_DECLARATIONS /// A dummy declaration, should we ever support 'open' in type definitions | Phase2AOpen of SynOpenDeclTarget * range #endif + /// Indicates the super init has just been called, 'this' may now be published | Phase2AIncrClassCtorJustAfterSuperInit + /// Indicates the last 'field' has been initialized, only 'do' comes after | Phase2AIncrClassCtorJustAfterLastLet @@ -773,14 +780,20 @@ module MutRecBindingChecking = /// Represents one element in a type definition, after the second phase type TyconBindingPhase2B = - | Phase2BIncrClassCtor of IncrClassCtorLhs * Binding option - | Phase2BInherit of Expr * Val option + | Phase2BIncrClassCtor of staticCtorInfo: StaticCtorInfo * incrCtorInfoOpt: IncrClassCtorInfo option * safeThisValBindOpt: Binding option + + | Phase2BInherit of inheritsExpr: Expr + /// A set of value of function definitions in a class definition with an implicit constructor. | Phase2BIncrClassBindings of IncrClassBindingGroup list + + /// A member, by index | Phase2BMember of int + /// An intermediate definition that represent the point in an implicit class definition where /// the super type has been initialized. | Phase2BIncrClassCtorJustAfterSuperInit + /// An intermediate definition that represent the point in an implicit class definition where /// the last 'field' has been initialized, i.e. only 'do' and 'member' definitions come after /// this point. @@ -792,12 +805,17 @@ module MutRecBindingChecking = /// Represents one element in a type definition, after the third phase type TyconBindingPhase2C = - | Phase2CIncrClassCtor of IncrClassCtorLhs * Binding option - | Phase2CInherit of Expr * Val option + | Phase2CIncrClassCtor of StaticCtorInfo * IncrClassCtorInfo option * Binding option + + | Phase2CInherit of Expr + | Phase2CIncrClassBindings of IncrClassBindingGroup list + | Phase2CMember of PreInitializationGraphEliminationBinding + // Indicates the last 'field' has been initialized, only 'do' comes after | Phase2CIncrClassCtorJustAfterSuperInit + | Phase2CIncrClassCtorJustAfterLastLet type TyconBindingsPhase2C = TyconBindingsPhase2C of Tycon option * TyconRef * TyconBindingPhase2C list @@ -852,49 +870,63 @@ module MutRecBindingChecking = // Make fresh version of the class type for type checking the members and lets * let _, copyOfTyconTypars, _, objTy, thisTy = FreshenObjectArgType cenv tcref.Range TyparRigidity.WillBeRigid tcref isExtrinsic declaredTyconTypars - // The basic iteration over the declarations in a single type definition let initialInnerState = (None, envForTycon, tpenv, recBindIdx, uncheckedBindsRev) - let defnAs, (_, _envForTycon, tpenv, recBindIdx, uncheckedBindsRev) = + let defnAs, (_, _envForTycon, tpenv, recBindIdx, uncheckedBindsRev) = (initialInnerState, binds) ||> List.collectFold (fun innerState defn -> let (TyconBindingDefn(containerInfo, newslotsOK, declKind, classMemberDef, m)) = defn - let incrClassCtorLhsOpt, envForTycon, tpenv, recBindIdx, uncheckedBindsRev = innerState + let incrCtorInfoOpt, envForTycon, tpenv, recBindIdx, uncheckedBindsRev = innerState if tcref.IsTypeAbbrev then // ideally we'd have the 'm' of the type declaration stored here, to avoid needing to trim to line to approx error(Error(FSComp.SR.tcTypeAbbreviationsMayNotHaveMembers(), (trimRangeToLine m))) - if tcref.IsEnumTycon && (declKind <> ExtrinsicExtensionBinding) then + if tcref.IsEnumTycon && (declKind <> ExtrinsicExtensionBinding) && classMemberDef.IsSome then // ideally we'd have the 'm' of the type declaration stored here, to avoid needing to trim to line to approx error(Error(FSComp.SR.tcEnumerationsMayNotHaveMembers(), (trimRangeToLine m))) match classMemberDef, containerInfo with - | SynMemberDefn.ImplicitCtor (vis, Attributes attrs, SynSimplePats.SimplePats(spats, _), thisIdOpt, xmlDoc, m, _), ContainerInfo(_, Some(MemberOrValContainerInfo(tcref, _, baseValOpt, safeInitInfo, _))) -> + + | None, ContainerInfo(_, Some memberContainerInfo) -> + + let (MemberOrValContainerInfo(tcref, _, _, _, _)) = memberContainerInfo + let staticCtorInfo = TcStaticImplicitCtorInfo_Phase2A(cenv, envForTycon, tcref, m, copyOfTyconTypars) + let envForTycon = AddDeclaredTypars CheckForDuplicateTypars staticCtorInfo.IncrCtorDeclaredTypars envForTycon + let innerState = (None, envForTycon, tpenv, recBindIdx, uncheckedBindsRev) + [Phase2AIncrClassCtor (staticCtorInfo, None)], innerState + + | Some (SynMemberDefn.ImplicitCtor (vis, Attributes attrs, SynSimplePats.SimplePats(pats=spats), thisIdOpt, xmlDoc, m,_)), ContainerInfo(_, Some memberContainerInfo) -> + + let (MemberOrValContainerInfo(tcref, _, baseValOpt, safeInitInfo, _)) = memberContainerInfo + if tcref.TypeOrMeasureKind = TyparKind.Measure then error(Error(FSComp.SR.tcMeasureDeclarationsRequireStaticMembers(), m)) - // Phase2A: make incrClassCtorLhs - ctorv, thisVal etc, type depends on argty(s) - let incrClassCtorLhs = TcImplicitCtorLhs_Phase2A(cenv, envForTycon, tpenv, tcref, vis, attrs, spats, thisIdOpt, baseValOpt, safeInitInfo, m, copyOfTyconTypars, objTy, thisTy, xmlDoc) + // Phase2A: make staticCtorInfo - ctorv, thisVal etc, type depends on argty(s) + let staticCtorInfo = TcStaticImplicitCtorInfo_Phase2A(cenv, envForTycon, tcref, m, copyOfTyconTypars) + + // Phase2A: make incrCtorInfo - ctorv, thisVal etc, type depends on argty(s) + let incrCtorInfo = TcImplicitCtorInfo_Phase2A(cenv, envForTycon, tpenv, tcref, vis, attrs, spats, thisIdOpt, baseValOpt, safeInitInfo, m, copyOfTyconTypars, objTy, thisTy, xmlDoc) - // Phase2A: Add copyOfTyconTypars from incrClassCtorLhs - or from tcref - let envForTycon = AddDeclaredTypars CheckForDuplicateTypars incrClassCtorLhs.InstanceCtorDeclaredTypars envForTycon - let innerState = (Some incrClassCtorLhs, envForTycon, tpenv, recBindIdx, uncheckedBindsRev) + // Phase2A: Add copyOfTyconTypars from incrCtorInfo - or from tcref + let envForTycon = AddDeclaredTypars CheckForDuplicateTypars staticCtorInfo.IncrCtorDeclaredTypars envForTycon + let innerState = (Some incrCtorInfo, envForTycon, tpenv, recBindIdx, uncheckedBindsRev) - [Phase2AIncrClassCtor incrClassCtorLhs], innerState + [Phase2AIncrClassCtor (staticCtorInfo, Some incrCtorInfo)], innerState - | SynMemberDefn.ImplicitInherit (ty, arg, _baseIdOpt, m), _ -> + | Some (SynMemberDefn.ImplicitInherit (ty, arg, _baseIdOpt, m)), _ -> if tcref.TypeOrMeasureKind = TyparKind.Measure then error(Error(FSComp.SR.tcMeasureDeclarationsRequireStaticMembers(), m)) // Phase2A: inherit ty(arg) as base - pass through // Phase2A: pick up baseValOpt! - let baseValOpt = incrClassCtorLhsOpt |> Option.bind (fun x -> x.InstanceCtorBaseValOpt) - let innerState = (incrClassCtorLhsOpt, envForTycon, tpenv, recBindIdx, uncheckedBindsRev) + let baseValOpt = incrCtorInfoOpt |> Option.bind (fun x -> x.InstanceCtorBaseValOpt) + let innerState = (incrCtorInfoOpt, envForTycon, tpenv, recBindIdx, uncheckedBindsRev) [Phase2AInherit (ty, arg, baseValOpt, m); Phase2AIncrClassCtorJustAfterSuperInit], innerState - | SynMemberDefn.LetBindings (letBinds, isStatic, isRec, m), _ -> + | Some (SynMemberDefn.LetBindings (letBinds, isStatic, isRec, m)), _ -> match tcref.TypeOrMeasureKind, isStatic with | TyparKind.Measure, false -> error(Error(FSComp.SR.tcMeasureDeclarationsRequireStaticMembers(), m)) | _ -> () @@ -908,17 +940,24 @@ module MutRecBindingChecking = // Code for potential future design change to allow functions-compiled-as-members in structs errorR(Error(FSComp.SR.tcStructsMayNotContainLetBindings(), (trimRangeToLine m))) - if isStatic && Option.isNone incrClassCtorLhsOpt then - errorR(Error(FSComp.SR.tcStaticLetBindingsRequireClassesWithImplicitConstructors(), m)) - + if isStatic && isExtrinsic then + errorR(Error(FSComp.SR.tcStaticBindingInExtrinsicAugmentation(), m)) + + elif isStatic && incrCtorInfoOpt.IsNone && not (g.langVersion.SupportsFeature(LanguageFeature.StaticLetInRecordsDusEmptyTypes)) then + errorR(Error(FSComp.SR.tcStaticLetBindingsRequireClassesWithImplicitConstructors(), m)) + // Phase2A: let-bindings - pass through - let innerState = (incrClassCtorLhsOpt, envForTycon, tpenv, recBindIdx, uncheckedBindsRev) + let innerState = (incrCtorInfoOpt, envForTycon, tpenv, recBindIdx, uncheckedBindsRev) [Phase2AIncrClassBindings (tcref, letBinds, isStatic, isRec, m)], innerState - - | SynMemberDefn.Member (bind, m), _ -> + + | Some (SynMemberDefn.Member(SynBinding(headPat = SynPat.Wild _; expr = SynExpr.ArbitraryAfterError _), _)), _ + | Some (SynMemberDefn.Member(SynBinding(headPat = SynPat.FromParseError(SynPat.Wild _, _)), _)), _ -> + [], innerState + + | Some (SynMemberDefn.Member (bind, m)), _ -> // Phase2A: member binding - create prelim valspec (for recursive reference) and RecursiveBindingInfo - let NormalizedBinding(_, _, _, _, _, _, _, valSynData, _, _, _, _) as bind = BindingNormalization.NormalizeBinding ValOrMemberBinding cenv envForTycon bind - let (SynValData(memberFlagsOpt, _, _)) = valSynData + let NormalizedBinding(valSynData = valSynData) as bind = BindingNormalization.NormalizeBinding ValOrMemberBinding cenv envForTycon bind + let (SynValData(memberFlags = memberFlagsOpt)) = valSynData match tcref.TypeOrMeasureKind with | TyparKind.Type -> () @@ -932,7 +971,7 @@ module MutRecBindingChecking = | _ -> () let envForMember = - match incrClassCtorLhsOpt with + match incrCtorInfoOpt with | None -> AddDeclaredTypars CheckForDuplicateTypars copyOfTyconTypars envForTycon | Some _ -> envForTycon @@ -941,18 +980,44 @@ module MutRecBindingChecking = let (binds, _values), (tpenv, recBindIdx) = AnalyzeAndMakeAndPublishRecursiveValue overridesOK false cenv envForMember (tpenv, recBindIdx) rbind let cbinds = [ for rbind in binds -> Phase2AMember rbind ] - let innerState = (incrClassCtorLhsOpt, envForTycon, tpenv, recBindIdx, List.rev binds @ uncheckedBindsRev) + let innerState = (incrCtorInfoOpt, envForTycon, tpenv, recBindIdx, List.rev binds @ uncheckedBindsRev) cbinds, innerState #if OPEN_IN_TYPE_DECLARATIONS - | SynMemberDefn.Open (target, m), _ -> - let innerState = (incrClassCtorLhsOpt, env, tpenv, recBindIdx, prelimRecValuesRev, uncheckedBindsRev) + | Some (SynMemberDefn.Open (target, m)), _ -> + let innerState = (incrCtorInfoOpt, env, tpenv, recBindIdx, prelimRecValuesRev, uncheckedBindsRev) [ Phase2AOpen (target, m) ], innerState #endif | definition -> error(InternalError(sprintf "Unexpected definition %A" definition, m))) + // Report any desugared properties + if defnAs.Length > 1 then + for b1, b2 in List.pairwise defnAs do + match b1, b2 with + | TyconBindingPhase2A.Phase2AMember { + SyntacticBinding = NormalizedBinding(valSynData = SynValData(transformedFromProperty = Some getPropertyIdent; memberFlags = Some mf)) + RecBindingInfo = RecursiveBindingInfo(vspec = vGet) + }, + TyconBindingPhase2A.Phase2AMember { + SyntacticBinding = NormalizedBinding(valSynData = SynValData(transformedFromProperty = Some setPropertyIdent)) + RecBindingInfo = RecursiveBindingInfo(vspec = vSet) + } when Range.equals getPropertyIdent.idRange setPropertyIdent.idRange -> + match vGet.ApparentEnclosingEntity with + | ParentNone -> () + | Parent parentRef -> + let apparentEnclosingType = generalizedTyconRef g parentRef + let vGet, vSet = if mf.MemberKind = SynMemberKind.PropertyGet then vGet, vSet else vSet, vGet + let item = + Item.Property( + getPropertyIdent.idText, + [ PropInfo.FSProp(g, apparentEnclosingType, Some (mkLocalValRef vGet), Some (mkLocalValRef vSet)) ], + Some getPropertyIdent.idRange + ) + CallNameResolutionSink cenv.tcSink (getPropertyIdent.idRange, envForTycon.NameEnv, item, emptyTyparInst, ItemOccurence.Binding, envForTycon.eAccessRights) + | _ -> () + // If no constructor call, insert Phase2AIncrClassCtorJustAfterSuperInit at start let defnAs = match defnAs with @@ -1090,18 +1155,33 @@ module MutRecBindingChecking = match defnA with // Phase2B for the definition of an implicit constructor. Enrich the instance environments // with the implicit ctor args. - | Phase2AIncrClassCtor incrClassCtorLhs -> - - let envInstance = AddDeclaredTypars CheckForDuplicateTypars incrClassCtorLhs.InstanceCtorDeclaredTypars envInstance - let envStatic = AddDeclaredTypars CheckForDuplicateTypars incrClassCtorLhs.InstanceCtorDeclaredTypars envStatic - let envInstance = match incrClassCtorLhs.InstanceCtorSafeThisValOpt with Some v -> AddLocalVal g cenv.tcSink scopem v envInstance | None -> envInstance - let envInstance = List.foldBack (AddLocalValPrimitive g) incrClassCtorLhs.InstanceCtorArgs envInstance - let envNonRec = match incrClassCtorLhs.InstanceCtorSafeThisValOpt with Some v -> AddLocalVal g cenv.tcSink scopem v envNonRec | None -> envNonRec - let envNonRec = List.foldBack (AddLocalValPrimitive g) incrClassCtorLhs.InstanceCtorArgs envNonRec - let safeThisValBindOpt = TcLetrecComputeCtorSafeThisValBind cenv incrClassCtorLhs.InstanceCtorSafeThisValOpt + | Phase2AIncrClassCtor (staticCtorInfo, incrCtorInfoOpt) -> + + let envInstance = AddDeclaredTypars CheckForDuplicateTypars staticCtorInfo.IncrCtorDeclaredTypars envInstance + let envStatic = AddDeclaredTypars CheckForDuplicateTypars staticCtorInfo.IncrCtorDeclaredTypars envStatic + let envInstance = + match incrCtorInfoOpt with + | None -> envInstance + | Some incrCtorInfo -> match incrCtorInfo.InstanceCtorSafeThisValOpt with Some v -> AddLocalVal g cenv.tcSink scopem v envInstance | None -> envInstance + let envInstance = + match incrCtorInfoOpt with + | None -> envInstance + | Some incrCtorInfo -> List.foldBack (AddLocalValPrimitive g) incrCtorInfo.InstanceCtorArgs envInstance + let envNonRec = + match incrCtorInfoOpt with + | None -> envNonRec + | Some incrCtorInfo -> match incrCtorInfo.InstanceCtorSafeThisValOpt with Some v -> AddLocalVal g cenv.tcSink scopem v envNonRec | None -> envNonRec + let envNonRec = + match incrCtorInfoOpt with + | None -> envNonRec + | Some incrCtorInfo -> List.foldBack (AddLocalValPrimitive g) incrCtorInfo.InstanceCtorArgs envNonRec + let safeThisValBindOpt = + match incrCtorInfoOpt with + | None -> None + | Some incrCtorInfo -> TcLetrecComputeCtorSafeThisValBind cenv incrCtorInfo.InstanceCtorSafeThisValOpt let innerState = (tpenv, envInstance, envStatic, envNonRec, generalizedRecBinds, preGeneralizationRecBinds, uncheckedRecBindsTable) - Phase2BIncrClassCtor (incrClassCtorLhs, safeThisValBindOpt), innerState + Phase2BIncrClassCtor (staticCtorInfo, incrCtorInfoOpt, safeThisValBindOpt), innerState // Phase2B: typecheck the argument to an 'inherits' call and build the new object expr for the inherit-call | Phase2AInherit (synBaseTy, arg, baseValOpt, m) -> @@ -1116,7 +1196,7 @@ module MutRecBindingChecking = let envInstance = match baseValOpt with Some baseVal -> AddLocalVal g cenv.tcSink scopem baseVal envInstance | None -> envInstance let envNonRec = match baseValOpt with Some baseVal -> AddLocalVal g cenv.tcSink scopem baseVal envNonRec | None -> envNonRec let innerState = (tpenv, envInstance, envStatic, envNonRec, generalizedRecBinds, preGeneralizationRecBinds, uncheckedRecBindsTable) - Phase2BInherit (inheritsExpr, baseValOpt), innerState + Phase2BInherit inheritsExpr, innerState // Phase2B: let and let rec value and function definitions | Phase2AIncrClassBindings (tcref, binds, isStatic, isRec, mBinds) -> @@ -1190,7 +1270,7 @@ module MutRecBindingChecking = // envStatic contains class typars and the (ungeneralized) members on the class(es). // envStatic has no instance-variables (local let-bindings or ctor args). - let v = rbind.RecBindingInfo .Val + let v = rbind.RecBindingInfo.Val let envForBinding = if v.IsInstanceMember then envInstance else envStatic // Type variables derived from the type definition (or implicit constructor) are always generalizable (we check their generalizability later). @@ -1241,14 +1321,17 @@ module MutRecBindingChecking = // Phase2C: Generalise implicit ctor val match defnB with - | Phase2BIncrClassCtor (incrClassCtorLhs, safeThisValBindOpt) -> - let valscheme = incrClassCtorLhs.InstanceCtorValScheme - let valscheme = ChooseCanonicalValSchemeAfterInference g denv valscheme scopem - AdjustRecType incrClassCtorLhs.InstanceCtorVal valscheme - Phase2CIncrClassCtor (incrClassCtorLhs, safeThisValBindOpt) - - | Phase2BInherit (inheritsExpr, basevOpt) -> - Phase2CInherit (inheritsExpr, basevOpt) + | Phase2BIncrClassCtor (staticCtorInfo, incrCtorInfoOpt, safeThisValBindOpt) -> + match incrCtorInfoOpt with + | Some incrCtorInfo -> + let valscheme = incrCtorInfo.InstanceCtorValScheme + let valscheme = ChooseCanonicalValSchemeAfterInference g denv valscheme scopem + AdjustRecType incrCtorInfo.InstanceCtorVal valscheme + | None -> () + Phase2CIncrClassCtor (staticCtorInfo, incrCtorInfoOpt, safeThisValBindOpt) + + | Phase2BInherit inheritsExpr -> + Phase2CInherit inheritsExpr | Phase2BIncrClassBindings bindRs -> Phase2CIncrClassBindings bindRs @@ -1265,6 +1348,7 @@ module MutRecBindingChecking = let vxbind = TcLetrecAdjustMemberForSpecialVals cenv generalizedBinding let pgbrind = FixupLetrecBind cenv denv generalizedTyparsForRecursiveBlock vxbind Phase2CMember pgbrind) + TyconBindingsPhase2C(tyconOpt, tcref, defnCs)) // Phase2C: Fixup let bindings @@ -1284,7 +1368,7 @@ module MutRecBindingChecking = // let (fixupValueExprBinds, methodBinds) = (envMutRec, defnsCs) ||> MutRecShapes.mapTyconsWithEnv (fun envForDecls (TyconBindingsPhase2C(tyconOpt, tcref, defnCs)) -> match defnCs with - | Phase2CIncrClassCtor (incrClassCtorLhs, safeThisValBindOpt) :: defnCs -> + | Phase2CIncrClassCtor (staticCtorInfo, incrCtorInfoOpt, safeThisValBindOpt) :: defnCs -> // Determine is static fields in this type need to be "protected" against invalid recursive initialization let safeStaticInitInfo = @@ -1325,17 +1409,21 @@ module MutRecBindingChecking = // This is the type definition we're processing - let tcref = incrClassCtorLhs.TyconRef + let tcref = staticCtorInfo.TyconRef // Assumes inherit call immediately follows implicit ctor. Checked by CheckMembersForm - let inheritsExpr, inheritsIsVisible, _, defnCs = + let instanceInfo, defnCs = + match incrCtorInfoOpt with + | None -> None, defnCs + | Some incrCtorInfo -> + match defnCs |> List.partition (function Phase2CInherit _ -> true | _ -> false) with - | [Phase2CInherit (inheritsExpr, baseValOpt)], defnCs -> - inheritsExpr, true, baseValOpt, defnCs + | [Phase2CInherit inheritsExpr], defnCs -> + Some(incrCtorInfo, inheritsExpr, true), defnCs | _ -> if tcref.IsStructOrEnumTycon then - mkUnit g tcref.Range, false, None, defnCs + Some (incrCtorInfo, mkUnit g tcref.Range, false), defnCs else let inheritsExpr, _ = TcNewExpr cenv envForDecls tpenv g.obj_ty None true (SynExpr.Const (SynConst.Unit, tcref.Range)) tcref.Range @@ -1358,7 +1446,7 @@ module MutRecBindingChecking = mkDebugPoint tcref.Range inheritsExpr else inheritsExpr - inheritsExpr, false, None, defnCs + Some (incrCtorInfo, inheritsExpr, false), defnCs let envForTycon = MakeInnerEnvForTyconRef envForDecls tcref false @@ -1380,7 +1468,7 @@ module MutRecBindingChecking = | Some bind -> Phase2CIncrClassBindings [IncrClassBindingGroup([bind], false, false)] :: localDecs // Carve out the initialization sequence and decide on the localRep - let ctorBodyLambdaExpr, cctorBodyLambdaExprOpt, methodBinds, localReps = + let ctorBodyLambdaExprOpt, cctorBodyLambdaExprOpt, methodBinds, localReps = let localDecs = [ for localDec in localDecs do @@ -1390,25 +1478,27 @@ module MutRecBindingChecking = | Phase2CIncrClassCtorJustAfterLastLet -> yield Phase2CCtorJustAfterLastLet | _ -> () ] let memberBinds = memberBindsWithFixups |> List.map (fun x -> x.Binding) - MakeCtorForIncrClassConstructionPhase2C(cenv, envForTycon, incrClassCtorLhs, inheritsExpr, inheritsIsVisible, localDecs, memberBinds, generalizedTyparsForRecursiveBlock, safeStaticInitInfo) + MakeCtorForIncrClassConstructionPhase2C(cenv, envForTycon, staticCtorInfo, instanceInfo, localDecs, memberBinds, generalizedTyparsForRecursiveBlock, safeStaticInitInfo) // Generate the (value, expr) pairs for the implicit // object constructor and implicit static initializer let ctorValueExprBindings = - [ (let ctorValueExprBinding = TBind(incrClassCtorLhs.InstanceCtorVal, ctorBodyLambdaExpr, DebugPointAtBinding.NoneAtSticky) - let rbind = { ValScheme = incrClassCtorLhs.InstanceCtorValScheme ; Binding = ctorValueExprBinding } - FixupLetrecBind cenv envForDecls.DisplayEnv generalizedTyparsForRecursiveBlock rbind) ] - @ - ( match cctorBodyLambdaExprOpt with - | None -> [] + [ match incrCtorInfoOpt, ctorBodyLambdaExprOpt with + | None, _ | _, None -> () + | Some incrCtorInfo, Some ctorBodyLambdaExpr -> + let ctorValueExprBinding = TBind(incrCtorInfo.InstanceCtorVal, ctorBodyLambdaExpr, DebugPointAtBinding.NoneAtSticky) + let rbind = { ValScheme = incrCtorInfo.InstanceCtorValScheme ; Binding = ctorValueExprBinding } + FixupLetrecBind cenv envForDecls.DisplayEnv generalizedTyparsForRecursiveBlock rbind + match cctorBodyLambdaExprOpt with + | None -> () | Some cctorBodyLambdaExpr -> - [ (let _, cctorVal, cctorValScheme = incrClassCtorLhs.StaticCtorValInfo.Force() - let cctorValueExprBinding = TBind(cctorVal, cctorBodyLambdaExpr, DebugPointAtBinding.NoneAtSticky) - let rbind = { ValScheme = cctorValScheme; Binding = cctorValueExprBinding } - FixupLetrecBind cenv envForDecls.DisplayEnv generalizedTyparsForRecursiveBlock rbind) ] ) + let _, cctorVal, cctorValScheme = staticCtorInfo.StaticCtorValInfo.Force() + let cctorValueExprBinding = TBind(cctorVal, cctorBodyLambdaExpr, DebugPointAtBinding.NoneAtSticky) + let rbind = { ValScheme = cctorValScheme; Binding = cctorValueExprBinding } + FixupLetrecBind cenv envForDecls.DisplayEnv generalizedTyparsForRecursiveBlock rbind ] // Publish the fields of the representation to the type - localReps.PublishIncrClassFields (cenv, denv, cpath, incrClassCtorLhs, safeStaticInitInfo) (* mutation *) + localReps.PublishIncrClassFields (cenv, denv, cpath, staticCtorInfo, safeStaticInitInfo) // Fixup members let memberBindsWithFixups = @@ -1567,7 +1657,7 @@ module MutRecBindingChecking = decls |> MutRecShapes.topTycons |> List.collect (fun (TyconBindingsPhase2A(_, _, _, _, _, _, defnAs)) -> [ for defnB in defnAs do match defnB with - | Phase2AIncrClassCtor incrClassCtorLhs -> yield incrClassCtorLhs.InstanceCtorVal + | Phase2AIncrClassCtor (_, Some incrCtorInfo) -> yield incrCtorInfo.InstanceCtorVal | _ -> () ]) let envForDeclsUpdated = @@ -1617,8 +1707,8 @@ module MutRecBindingChecking = for TyconBindingsPhase2B(_tyconOpt, _tcref, defnBs) in MutRecShapes.collectTycons defnsBs do for defnB in defnBs do match defnB with - | Phase2BIncrClassCtor (incrClassCtorLhs, _) -> - yield incrClassCtorLhs.InstanceCtorVal.Type + | Phase2BIncrClassCtor (_, Some incrCtorInfo, _) -> + yield incrCtorInfo.InstanceCtorVal.Type | _ -> () ] @@ -1736,16 +1826,26 @@ let TcMutRecDefns_Phase2 (cenv: cenv) envInitial mBinds scopem mutRecNSInfo (env let interfaceMembersFromTypeDefn tyconMembersData (intfTyR, defn, _) implTySet = let (MutRecDefnsPhase2DataForTycon(_, parent, declKind, tcref, baseValOpt, safeInitInfo, declaredTyconTypars, _, _, newslotsOK, _)) = tyconMembersData let containerInfo = ContainerInfo(parent, Some(MemberOrValContainerInfo(tcref, Some(intfTyR, implTySet), baseValOpt, safeInitInfo, declaredTyconTypars))) - defn |> List.choose (fun mem -> + [ for mem in defn do match mem with - | SynMemberDefn.Member(_, m) -> Some(TyconBindingDefn(containerInfo, newslotsOK, declKind, mem, m)) - | SynMemberDefn.AutoProperty(range=m) -> Some(TyconBindingDefn(containerInfo, newslotsOK, declKind, mem, m)) - | _ -> errorR(Error(FSComp.SR.tcMemberNotPermittedInInterfaceImplementation(), mem.Range)); None) + | SynMemberDefn.Member(_, m) -> TyconBindingDefn(containerInfo, newslotsOK, declKind, Some mem, m) + | SynMemberDefn.AutoProperty(range=m) -> TyconBindingDefn(containerInfo, newslotsOK, declKind, Some mem, m) + | mem -> errorR(Error(FSComp.SR.tcMemberNotPermittedInInterfaceImplementation(), mem.Range)) ] let tyconBindingsOfTypeDefn (MutRecDefnsPhase2DataForTycon(_, parent, declKind, tcref, baseValOpt, safeInitInfo, declaredTyconTypars, members, _, newslotsOK, _)) = let containerInfo = ContainerInfo(parent, Some(MemberOrValContainerInfo(tcref, None, baseValOpt, safeInitInfo, declaredTyconTypars))) - members - |> List.choose (fun memb -> + [ // Yield a fake member marking the ability to do static incremental construction + match members with + | SynMemberDefn.ImplicitCtor _ :: _ -> () + | _ -> + if not tcref.IsFSharpEnumTycon && not tcref.IsFSharpDelegateTycon && not tcref.IsFSharpException && not tcref.IsTypeAbbrev then + if members |> List.exists (function | SynMemberDefn.LetBindings(isStatic=true) -> true | _ -> false ) then + // Introduction of this member has caused the regression #16009, due to a missed Lazy<>.Force access from a member to a value in recursive module + // Minimizing the impact by only yielding in case of actually emitting static let bindings. + TyconBindingDefn(containerInfo, newslotsOK, declKind, None, tcref.Range) + + // Yield the other members + for memb in members do match memb with | SynMemberDefn.ImplicitCtor _ | SynMemberDefn.ImplicitInherit _ @@ -1754,38 +1854,41 @@ let TcMutRecDefns_Phase2 (cenv: cenv) envInitial mBinds scopem mutRecNSInfo (env | SynMemberDefn.Member _ | SynMemberDefn.GetSetMember _ | SynMemberDefn.Open _ - -> Some(TyconBindingDefn(containerInfo, newslotsOK, declKind, memb, memb.Range)) + -> TyconBindingDefn(containerInfo, newslotsOK, declKind, Some memb, memb.Range) // Interfaces exist in the member list - handled above in interfaceMembersFromTypeDefn - | SynMemberDefn.Interface _ -> None + | SynMemberDefn.Interface _ -> () // The following should have been List.unzip out already in SplitTyconDefn | SynMemberDefn.AbstractSlot _ | SynMemberDefn.ValField _ | SynMemberDefn.Inherit _ -> error(InternalError("Unexpected declaration element", memb.Range)) - | SynMemberDefn.NestedType _ -> error(Error(FSComp.SR.tcTypesCannotContainNestedTypes(), memb.Range))) + | SynMemberDefn.NestedType _ -> error(Error(FSComp.SR.tcTypesCannotContainNestedTypes(), memb.Range)) ] let tpenv = emptyUnscopedTyparEnv try + // Some preliminary checks mutRecDefns |> MutRecShapes.iterTycons (fun tyconData -> let (MutRecDefnsPhase2DataForTycon(_, _, declKind, tcref, _, _, _, members, m, newslotsOK, _)) = tyconData let tcaug = tcref.TypeContents if tcaug.tcaug_closed && declKind <> ExtrinsicExtensionBinding then - error(InternalError("Intrinsic augmentations of types are only permitted in the same file as the definition of the type", m)) - members |> List.iter (fun mem -> + error(InternalError("Intrinsic augmentations of types are only permitted in the same file as the definition of the type", m)) + for mem in members do match mem with + | SynMemberDefn.AutoProperty (isStatic=isStatic) + | SynMemberDefn.LetBindings (isStatic=isStatic) when isStatic -> () | SynMemberDefn.Member _ | SynMemberDefn.GetSetMember _ | SynMemberDefn.Interface _ -> () | SynMemberDefn.Open _ | SynMemberDefn.AutoProperty _ - | SynMemberDefn.LetBindings _ // accept local definitions + | SynMemberDefn.LetBindings _ | SynMemberDefn.ImplicitCtor _ // accept implicit ctor pattern, should be first! | SynMemberDefn.ImplicitInherit _ when newslotsOK = NewSlotsOK -> () // accept implicit ctor pattern, should be first! // The rest should have been removed by splitting, they belong to "core" (they are "shape" of type, not implementation) - | _ -> error(Error(FSComp.SR.tcDeclarationElementNotPermittedInAugmentation(), mem.Range)))) + | _ -> error(Error(FSComp.SR.tcDeclarationElementNotPermittedInAugmentation(), mem.Range))) let binds: MutRecDefnsPhase2Info = @@ -1793,12 +1896,12 @@ let TcMutRecDefns_Phase2 (cenv: cenv) envInitial mBinds scopem mutRecNSInfo (env let (MutRecDefnsPhase2DataForTycon(tyconOpt, _x, declKind, tcref, _, _, declaredTyconTypars, synMembers, _, _, fixupFinalAttrs)) = tyconData // If a tye uses both [] and [] attributes it means it is a static class. - let isStaticClass = HasFSharpAttribute cenv.g cenv.g.attrib_SealedAttribute tcref.Attribs && HasFSharpAttribute cenv.g cenv.g.attrib_AbstractClassAttribute tcref.Attribs - if isStaticClass && cenv.g.langVersion.SupportsFeature(LanguageFeature.ErrorReportingOnStaticClasses) then + let isStaticClass = HasFSharpAttribute g g.attrib_SealedAttribute tcref.Attribs && HasFSharpAttribute g g.attrib_AbstractClassAttribute tcref.Attribs + if isStaticClass && g.langVersion.SupportsFeature(LanguageFeature.ErrorReportingOnStaticClasses) then ReportErrorOnStaticClass synMembers match tyconOpt with | Some tycon -> - for slot in tycon.FSharpObjectModelTypeInfo.fsobjmodel_vslots do + for slot in tycon.FSharpTyconRepresentationData.fsobjmodel_vslots do warning(Error(FSComp.SR.chkAbstractMembersDeclarationsOnStaticClasses(), slot.Range)) for fld in tycon.AllFieldsArray do @@ -2246,7 +2349,7 @@ module TcExceptionDeclarations = let TcExnDefnCore_Phase1A cenv env parent (SynExceptionDefnRepr(Attributes synAttrs, SynUnionCase(ident= SynIdent(id,_)), _, xmlDoc, vis, m)) = let attrs = TcAttributes cenv env AttributeTargets.ExnDecl synAttrs - if not (String.isLeadingIdentifierCharacterUpperCase id.idText) then errorR(NotUpperCaseConstructor m) + if not (String.isLeadingIdentifierCharacterUpperCase id.idText) then errorR(NotUpperCaseConstructor id.idRange) let vis, cpath = ComputeAccessAndCompPath env None m vis None parent let vis = TcRecdUnionAndEnumDeclarations.CombineReprAccess parent vis CheckForDuplicateConcreteType env (id.idText + "Exception") id.idRange @@ -2359,11 +2462,11 @@ module TcExceptionDeclarations = let binds, exnc = TcExnDefnCore cenv envInitial parent core let envMutRec = AddLocalExnDefnAndReport cenv.tcSink scopem (AddLocalTycons g cenv.amap scopem [exnc] envInitial) exnc let ecref = mkLocalEntityRef exnc - let vals, _ = TcTyconMemberSpecs cenv envMutRec (ContainerInfo(parent, Some(MemberOrValContainerInfo(ecref, None, None, NoSafeInitInfo, [])))) ModuleOrMemberBinding tpenv aug + let containerInfo = ContainerInfo(parent, Some(MemberOrValContainerInfo(ecref, None, None, NoSafeInitInfo, []))) + let vals, _ = TcTyconMemberSpecs cenv envMutRec containerInfo ModuleOrMemberBinding tpenv aug binds, vals, Some ecref, envMutRec - /// Bind type definitions /// /// We first establish the cores of a set of type definitions (i.e. everything @@ -2536,7 +2639,7 @@ module EstablishTypeDefinitionCores = suppressErrorReporting (fun () -> synTypars|> List.forall (fun synTypar -> try - let (SynTyparDecl(Attributes synAttrs, _)) = synTypar + let (SynTyparDecl (attributes = Attributes synAttrs)) = synTypar let attrs = TcAttributes cenv env AttributeTargets.GenericParameter synAttrs HasFSharpAttribute cenv.g cenv.g.attrib_MeasureAttribute attrs with _ -> false)) @@ -2556,8 +2659,9 @@ module EstablishTypeDefinitionCores = | SynModuleDecl.Types (typeSpecs, _) -> for SynTypeDefn(typeInfo=SynComponentInfo(typeParams=synTypars; longId=ids); typeRepr=trepr) in typeSpecs do if TyparsAllHaveMeasureDeclEarlyCheck cenv env synTypars then - match trepr with - | SynTypeDefnRepr.ObjectModel(kind=SynTypeDefnKind.Augmentation _) -> () + match trepr, ids with + | SynTypeDefnRepr.ObjectModel(kind=SynTypeDefnKind.Augmentation _), _ -> () + | _, [] -> () | _ -> yield (List.last ids).idText | _ -> () ] |> set @@ -2653,8 +2757,7 @@ module EstablishTypeDefinitionCores = let rec pats (p: SynSimplePats) = match p with - | SynSimplePats.SimplePats (ps, _) -> ps - | SynSimplePats.Typed (ps, _, _) -> pats ps + | SynSimplePats.SimplePats (pats = ps) -> ps let patNames = pats synPats @@ -2717,10 +2820,8 @@ module EstablishTypeDefinitionCores = InferTyconKind g (SynTypeDefnKind.Opaque, attrs, [], [], inSig, true, m) |> ignore if not inSig && not hasMeasureAttr then errorR(Error(FSComp.SR.tcTypeRequiresDefinition(), m)) - if hasMeasureAttr then - TFSharpObjectRepr { fsobjmodel_kind = TFSharpClass - fsobjmodel_vslots = [] - fsobjmodel_rfields = Construct.MakeRecdFieldsTable [] } + if hasMeasureAttr then + TFSharpTyconRepr (Construct.NewEmptyFSharpTyconData TFSharpClass) else TNoRepr @@ -2750,7 +2851,7 @@ module EstablishTypeDefinitionCores = InferTyconKind g (SynTypeDefnKind.Record, attrs, [], [], inSig, true, m) |> ignore // Note: the table of record fields is initially empty - TFSharpRecdRepr (Construct.MakeRecdFieldsTable []) + TFSharpTyconRepr (Construct.NewEmptyFSharpTyconData TFSharpRecord) | SynTypeDefnSimpleRepr.General (kind, _, slotsigs, fields, isConcrete, _, _, _) -> let kind = InferTyconKind g (kind, attrs, slotsigs, fields, inSig, isConcrete, m) @@ -2766,21 +2867,10 @@ module EstablishTypeDefinitionCores = | SynTypeDefnKind.Struct -> TFSharpStruct | _ -> error(InternalError("should have inferred tycon kind", m)) - let repr = - { fsobjmodel_kind = kind - fsobjmodel_vslots = [] - fsobjmodel_rfields = Construct.MakeRecdFieldsTable [] } - - TFSharpObjectRepr repr + TFSharpTyconRepr (Construct.NewEmptyFSharpTyconData kind) | SynTypeDefnSimpleRepr.Enum _ -> - let kind = TFSharpEnum - let repr = - { fsobjmodel_kind = kind - fsobjmodel_vslots = [] - fsobjmodel_rfields = Construct.MakeRecdFieldsTable [] } - - TFSharpObjectRepr repr + TFSharpTyconRepr (Construct.NewEmptyFSharpTyconData TFSharpEnum) // OK, now fill in the (partially computed) type representation tycon.entity_tycon_repr <- repr @@ -3254,12 +3344,11 @@ module EstablishTypeDefinitionCores = let ctorArgNames, _ = TcSimplePatsOfUnknownType cenv true CheckCxs envinner tpenv spats if not ctorArgNames.IsEmpty then match spats with - | SynSimplePats.SimplePats(_, m) -> errorR (Error(FSComp.SR.parsOnlyClassCanTakeValueArguments(), m)) - | SynSimplePats.Typed(_, _, m) -> errorR (Error(FSComp.SR.parsOnlyClassCanTakeValueArguments(), m)) - + | SynSimplePats.SimplePats(range = m) -> errorR (Error(FSComp.SR.parsOnlyClassCanTakeValueArguments(), m)) + let envinner = AddDeclaredTypars CheckForDuplicateTypars (tycon.Typars m) envinner let envinner = MakeInnerEnvForTyconRef envinner thisTyconRef false - + let multiCaseUnionStructCheck (unionCases: UnionCase list) = if tycon.IsStructRecordOrUnionTycon && unionCases.Length > 1 then let fieldNames = [ for uc in unionCases do for ft in uc.FieldTable.TrueInstanceFieldsAsList do yield (ft.LogicalName, ft.Range) ] @@ -3276,13 +3365,8 @@ module EstablishTypeDefinitionCores = // Record fields should be visible from IntelliSense, so add fake names for them (similarly to "let a = ..") for fspec in fields do if not fspec.IsCompilerGenerated then - let info = RecdFieldInfo(thisTyInst, thisTyconRef.MakeNestedRecdFieldRef fspec) - let nenv' = AddFakeNameToNameEnv fspec.LogicalName nenv (Item.RecdField info) - // Name resolution gives better info for tooltips let item = Item.RecdField(FreshenRecdFieldRef cenv.nameResolver m (thisTyconRef.MakeNestedRecdFieldRef fspec)) CallNameResolutionSink cenv.tcSink (fspec.Range, nenv, item, emptyTyparInst, ItemOccurence.Binding, ad) - // Environment is needed for completions - CallEnvSink cenv.tcSink (fspec.Range, nenv', ad) // Notify the Language Service about constructors in discriminated union declaration let writeFakeUnionCtorsToSink (unionCases: UnionCase list) = @@ -3290,11 +3374,8 @@ module EstablishTypeDefinitionCores = // Constructors should be visible from IntelliSense, so add fake names for them for unionCase in unionCases do let info = UnionCaseInfo(thisTyInst, mkUnionCaseRef thisTyconRef unionCase.Id.idText) - let nenv' = AddFakeNameToNameEnv unionCase.Id.idText nenv (Item.UnionCase(info, false)) - // Report to both - as in previous function let item = Item.UnionCase(info, false) CallNameResolutionSink cenv.tcSink (unionCase.Range, nenv, item, emptyTyparInst, ItemOccurence.Binding, ad) - CallEnvSink cenv.tcSink (unionCase.Id.idRange, nenv', ad) let typeRepr, baseValOpt, safeInitInfo = match synTyconRepr with @@ -3308,9 +3389,7 @@ module EstablishTypeDefinitionCores = hiddenReprChecks false noAllowNullLiteralAttributeCheck() if hasMeasureAttr then - let repr = TFSharpObjectRepr { fsobjmodel_kind=TFSharpClass - fsobjmodel_vslots=[] - fsobjmodel_rfields= Construct.MakeRecdFieldsTable [] } + let repr = TFSharpTyconRepr (Construct.NewEmptyFSharpTyconData TFSharpClass) repr, None, NoSafeInitInfo else TNoRepr, None, NoSafeInitInfo @@ -3349,7 +3428,7 @@ module EstablishTypeDefinitionCores = else TNoRepr, None, NoSafeInitInfo - | SynTypeDefnSimpleRepr.Union (_, unionCases, _) -> + | SynTypeDefnSimpleRepr.Union (_, unionCases, mRepr) -> noCLIMutableAttributeCheck() noMeasureAttributeCheck() noSealedAttributeCheck FSComp.SR.tcTypesAreAlwaysSealedDU @@ -3362,10 +3441,11 @@ module EstablishTypeDefinitionCores = multiCaseUnionStructCheck unionCases writeFakeUnionCtorsToSink unionCases + CallEnvSink cenv.tcSink (mRepr, envinner.NameEnv, ad) let repr = Construct.MakeUnionRepr unionCases repr, None, NoSafeInitInfo - | SynTypeDefnSimpleRepr.Record (_, fields, _) -> + | SynTypeDefnSimpleRepr.Record (_, fields, mRepr) -> noMeasureAttributeCheck() noSealedAttributeCheck FSComp.SR.tcTypesAreAlwaysSealedRecord noAbstractClassAttributeCheck() @@ -3374,7 +3454,17 @@ module EstablishTypeDefinitionCores = let recdFields = TcRecdUnionAndEnumDeclarations.TcNamedFieldDecls cenv envinner innerParent false tpenv fields recdFields |> CheckDuplicates (fun f -> f.Id) "field" |> ignore writeFakeRecordFieldsToSink recdFields - let repr = TFSharpRecdRepr (Construct.MakeRecdFieldsTable recdFields) + CallEnvSink cenv.tcSink (mRepr, envinner.NameEnv, ad) + + let data = + { + fsobjmodel_cases = Construct.MakeUnionCases [] + fsobjmodel_kind = TFSharpRecord + fsobjmodel_vslots = [] + fsobjmodel_rfields = Construct.MakeRecdFieldsTable recdFields + } + + let repr = TFSharpTyconRepr data repr, None, NoSafeInitInfo | SynTypeDefnSimpleRepr.LibraryOnlyILAssembly (s, _) -> @@ -3505,12 +3595,14 @@ module EstablishTypeDefinitionCores = let baseValOpt = MakeAndPublishBaseVal cenv envinner baseIdOpt (superOfTycon g tycon) let safeInitInfo = ComputeInstanceSafeInitInfo cenv envinner thisTyconRef.Range thisTy let safeInitFields = match safeInitInfo with SafeInitField (_, fld) -> [fld] | NoSafeInitInfo -> [] - - let repr = - TFSharpObjectRepr - { fsobjmodel_kind = kind - fsobjmodel_vslots = abstractSlots - fsobjmodel_rfields = Construct.MakeRecdFieldsTable (userFields @ implicitStructFields @ safeInitFields) } + let data = + { + fsobjmodel_cases = Construct.MakeUnionCases [] + fsobjmodel_kind = kind + fsobjmodel_vslots = abstractSlots + fsobjmodel_rfields = Construct.MakeRecdFieldsTable (userFields @ implicitStructFields @ safeInitFields) + } + let repr = TFSharpTyconRepr data repr, baseValOpt, safeInitInfo | SynTypeDefnSimpleRepr.Enum (decls, m) -> @@ -3528,11 +3620,14 @@ module EstablishTypeDefinitionCores = errorR(Error(FSComp.SR.tcInvalidTypeForLiteralEnumeration(), m)) writeFakeRecordFieldsToSink fields' - let repr = - TFSharpObjectRepr - { fsobjmodel_kind=kind - fsobjmodel_vslots=[] - fsobjmodel_rfields= Construct.MakeRecdFieldsTable (vfld :: fields') } + let data = + { + fsobjmodel_cases = Construct.MakeUnionCases [] + fsobjmodel_kind = kind + fsobjmodel_vslots = [] + fsobjmodel_rfields = Construct.MakeRecdFieldsTable (vfld :: fields') + } + let repr = TFSharpTyconRepr data repr, None, NoSafeInitInfo tycon.entity_tycon_repr <- typeRepr @@ -3831,7 +3926,7 @@ module EstablishTypeDefinitionCores = // Phase 1B. Establish the kind of each type constructor // Here we run InferTyconKind and record partial information about the kind of the type constructor. - // This means TyconFSharpObjModelKind is set, which means isSealedTy, isInterfaceTy etc. give accurate results. + // This means FSharpTyconKind is set, which means isSealedTy, isInterfaceTy etc. give accurate results. let withAttrs = (envMutRecPrelim, withEnvs) ||> MutRecShapes.mapTyconsWithEnv (fun envForDecls (origInfo, tyconOpt) -> let res = @@ -3950,7 +4045,19 @@ module TcDeclarations = let resInfo = TypeNameResolutionStaticArgsInfo.FromTyArgs synTypars.Length let _, tcref = match ResolveTypeLongIdent cenv.tcSink cenv.nameResolver ItemOccurence.Binding OpenQualified envForDecls.NameEnv ad longPath resInfo PermitDirectReferenceToGeneratedType.No with - | Result res -> res + | Result res -> + // Update resolved type parameters with the names from the source. + let _, tcref = res + if tcref.TyparsNoRange.Length = synTypars.Length then + (tcref.TyparsNoRange, synTypars) + ||> List.zip + |> List.iter (fun (typar, SynTyparDecl.SynTyparDecl (typar = tp)) -> + let (SynTypar(ident = untypedIdent; staticReq = sr)) = tp + if typar.StaticReq = sr then + typar.SetIdent(untypedIdent) + ) + + res | res when inSig && List.isSingleton longPath -> errorR(Deprecated(FSComp.SR.tcReservedSyntaxForAugmentation(), m)) ForceRaise res @@ -4085,6 +4192,146 @@ module TcDeclarations = | SynMemberDefn.NestedType (range=m) :: _ -> errorR(InternalError("CheckMembersForm: List.takeUntil is wrong", m)) | _ -> () + // Check order for static incremental construction + let _, ds2 = ds |> List.takeUntil (function SynMemberDefn.LetBindings _ -> false | _ -> true) + let _, ds2 = ds2 |> List.takeUntil (allFalse [isMember;isAbstractSlot;isInterface;isAutoProperty]) + + match ds2 with + | SynMemberDefn.LetBindings (range=m) :: _ -> errorR(Error(FSComp.SR.tcTypeDefinitionsWithImplicitConstructionMustHaveLocalBindingsBeforeMembers(), m)) + | _ -> () + + + + + /// Split auto-properties into 'let' and 'member' bindings + let private SplitAutoProps members = + let membersIncludingAutoProps, vals_Inherits_Abstractslots = + members |> List.partition (fun memb -> + match memb with + | SynMemberDefn.Interface _ + | SynMemberDefn.Member _ + | SynMemberDefn.GetSetMember _ + | SynMemberDefn.LetBindings _ + | SynMemberDefn.ImplicitCtor _ + | SynMemberDefn.AutoProperty _ + | SynMemberDefn.Open _ + | SynMemberDefn.ImplicitInherit _ -> true + | SynMemberDefn.NestedType (_, _, m) -> error(Error(FSComp.SR.tcTypesCannotContainNestedTypes(), m)); false + // covered above + | SynMemberDefn.ValField _ + | SynMemberDefn.Inherit _ + | SynMemberDefn.AbstractSlot _ -> false) + + // Convert auto properties to let bindings in the pre-list + let rec preAutoProps memb = + match memb with + | SynMemberDefn.AutoProperty(ident = id) when id.idText = "" -> [] + | SynMemberDefn.AutoProperty(attributes=Attributes attribs; isStatic=isStatic; ident=id; typeOpt=tyOpt; propKind=propKind; xmlDoc=xmlDoc; synExpr=synExpr; range=mWholeAutoProp) -> + // Only the keep the field-targeted attributes + let attribs = attribs |> List.filter (fun a -> match a.Target with Some t when t.idText = "field" -> true | _ -> false) + let mLetPortion = synExpr.Range + let fldId = ident (CompilerGeneratedName id.idText, mLetPortion) + let headPat = SynPat.LongIdent (SynLongIdent([fldId], [], [None]), None, Some noInferredTypars, SynArgPats.Pats [], None, mLetPortion) + let retInfo = match tyOpt with None -> None | Some ty -> Some (None, SynReturnInfo((ty, SynInfo.unnamedRetVal), ty.Range)) + let isMutable = + match propKind with + | SynMemberKind.PropertySet + | SynMemberKind.PropertyGetSet -> true + | _ -> false + let attribs = mkAttributeList attribs mWholeAutoProp + let binding = mkSynBinding (xmlDoc, headPat) (None, false, isMutable, mLetPortion, DebugPointAtBinding.NoneAtInvisible, retInfo, synExpr, synExpr.Range, [], attribs, None, SynBindingTrivia.Zero) + + [(SynMemberDefn.LetBindings ([binding], isStatic, false, mWholeAutoProp))] + + | SynMemberDefn.Interface (members=Some membs) -> membs |> List.collect preAutoProps + | SynMemberDefn.LetBindings _ + | SynMemberDefn.ImplicitCtor _ + | SynMemberDefn.Open _ + | SynMemberDefn.ImplicitInherit _ -> [memb] + | _ -> [] + + // Convert auto properties to member bindings in the post-list + let rec postAutoProps memb = + match memb with + | SynMemberDefn.AutoProperty(ident = id) when id.idText = "" -> [] + | SynMemberDefn.AutoProperty(attributes=Attributes attribs; isStatic=isStatic; ident=id; typeOpt=tyOpt; propKind=propKind; memberFlags=memberFlags; memberFlagsForSet=memberFlagsForSet; xmlDoc=xmlDoc; accessibility=access; trivia = { GetSetKeywords = mGetSetOpt }) -> + let mMemberPortion = id.idRange + // Only the keep the non-field-targeted attributes + let attribs = attribs |> List.filter (fun a -> match a.Target with Some t when t.idText = "field" -> false | _ -> true) + let fldId = ident (CompilerGeneratedName id.idText, mMemberPortion) + let memberFlags = { memberFlags with GetterOrSetterIsCompilerGenerated = true } + let memberFlagsForSet = { memberFlagsForSet with GetterOrSetterIsCompilerGenerated = true } + + match propKind, mGetSetOpt with + | SynMemberKind.PropertySet, Some getSetKeywords -> errorR(Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSetNotJustSet(), getSetKeywords.Range)) + | _ -> () + + [ + match propKind with + | SynMemberKind.Member + | SynMemberKind.PropertyGet + | SynMemberKind.PropertyGetSet -> + let getter = + let rhsExpr = SynExpr.Ident fldId + let retInfo = match tyOpt with None -> None | Some ty -> Some (None, SynReturnInfo((ty, SynInfo.unnamedRetVal), ty.Range)) + let attribs = mkAttributeList attribs mMemberPortion + let headPatIds = + let id = + match mGetSetOpt with + | Some (GetSetKeywords.GetSet(get = mGet)) -> Ident(id.idText, mGet) + | _ -> id + if isStatic then [id] else [ident ("__", mMemberPortion);id] + let headPat = SynPat.LongIdent (SynLongIdent(headPatIds, [], List.replicate headPatIds.Length None), None, Some noInferredTypars, SynArgPats.Pats [], None, mMemberPortion) + let binding = mkSynBinding (xmlDoc, headPat) (access, false, false, mMemberPortion, DebugPointAtBinding.NoneAtInvisible, retInfo, rhsExpr, rhsExpr.Range, [], attribs, Some memberFlags, SynBindingTrivia.Zero) + let binding = + match mGetSetOpt with + | Some (GetSetKeywords.GetSet _) -> + // Only add the additional meta data to the SynBinding (SynValData) is both get and set are present. + updatePropertyIdentInSynBinding id binding + | _ -> binding + SynMemberDefn.Member (binding, mMemberPortion) + yield getter + | _ -> () + + match propKind with + | SynMemberKind.PropertySet + | SynMemberKind.PropertyGetSet -> + let setter = + let vId = + match mGetSetOpt with + | Some (GetSetKeywords.GetSet(set = mSet)) -> ident("v", mSet) + | _ -> ident("v", mMemberPortion) + let headPatIds = + let id = + match mGetSetOpt with + | Some (GetSetKeywords.GetSet(set = mSet)) -> Ident(id.idText, mSet) + | _ -> id + if isStatic then [id] else [ident ("__", mMemberPortion);id] + let headPat = SynPat.LongIdent (SynLongIdent(headPatIds, [], List.replicate headPatIds.Length None), None, Some noInferredTypars, SynArgPats.Pats [mkSynPatVar None vId], None, mMemberPortion) + let rhsExpr = mkSynAssign (SynExpr.Ident fldId) (SynExpr.Ident vId) + let binding = mkSynBinding (xmlDoc, headPat) (access, false, false, mMemberPortion, DebugPointAtBinding.NoneAtInvisible, None, rhsExpr, rhsExpr.Range, [], [], Some memberFlagsForSet, SynBindingTrivia.Zero) + let binding = + match mGetSetOpt with + | Some (GetSetKeywords.GetSet _) -> + // Only add the additional meta data to the SynBinding (SynValData) is both get and set are present. + updatePropertyIdentInSynBinding id binding + | _ -> binding + SynMemberDefn.Member (binding, mMemberPortion) + yield setter + | _ -> ()] + | SynMemberDefn.Interface (ty, mWith, Some membs, m) -> + let membs' = membs |> List.collect postAutoProps + [SynMemberDefn.Interface (ty, mWith, Some membs', m)] + | SynMemberDefn.LetBindings _ + | SynMemberDefn.ImplicitCtor _ + | SynMemberDefn.Open _ + | SynMemberDefn.ImplicitInherit _ -> [] + | _ -> [memb] + + let preMembers = membersIncludingAutoProps |> List.collect preAutoProps + let postMembers = membersIncludingAutoProps |> List.collect postAutoProps + + preMembers @ postMembers, vals_Inherits_Abstractslots /// Separates the definition into core (shape) and body. /// @@ -4094,126 +4341,32 @@ module TcDeclarations = /// where members contain methods/overrides, also implicit ctor, inheritCall and local definitions. let rec private SplitTyconDefn (SynTypeDefn(typeInfo=synTyconInfo;typeRepr=trepr; members=extraMembers)) = let extraMembers = desugarGetSetMembers extraMembers - let implements1 = List.choose (function SynMemberDefn.Interface (interfaceType=ty) -> Some(ty, ty.Range) | _ -> None) extraMembers - + let extraMembers, extra_vals_Inherits_Abstractslots = SplitAutoProps extraMembers + let implements1 = extraMembers |> List.choose (function SynMemberDefn.Interface (interfaceType=ty) -> Some(ty, ty.Range) | _ -> None) + match trepr with - | SynTypeDefnRepr.ObjectModel(kind, cspec, m) -> - let cspec = desugarGetSetMembers cspec - CheckMembersForm cspec - let fields = cspec |> List.choose (function SynMemberDefn.ValField (fieldInfo = f) -> Some f | _ -> None) - let implements2 = cspec |> List.choose (function SynMemberDefn.Interface (interfaceType=ty) -> Some(ty, ty.Range) | _ -> None) + | SynTypeDefnRepr.ObjectModel(kind, members, m) -> + let members = desugarGetSetMembers members + + CheckMembersForm members + + let fields = members |> List.choose (function SynMemberDefn.ValField (fieldInfo = f) -> Some f | _ -> None) + let implements2 = members |> List.choose (function SynMemberDefn.Interface (interfaceType=ty) -> Some(ty, ty.Range) | _ -> None) let inherits = - cspec |> List.choose (function + members |> List.choose (function | SynMemberDefn.Inherit (ty, idOpt, m) -> Some(ty, m, idOpt) | SynMemberDefn.ImplicitInherit (ty, _, idOpt, m) -> Some(ty, m, idOpt) | _ -> None) + //let nestedTycons = cspec |> List.choose (function SynMemberDefn.NestedType (x, _, _) -> Some x | _ -> None) - let slotsigs = cspec |> List.choose (function SynMemberDefn.AbstractSlot (slotSig = x; flags = y) -> Some(x, y) | _ -> None) - - let members = - let membersIncludingAutoProps = - cspec |> List.filter (fun memb -> - match memb with - | SynMemberDefn.Interface _ - | SynMemberDefn.Member _ - | SynMemberDefn.GetSetMember _ - | SynMemberDefn.LetBindings _ - | SynMemberDefn.ImplicitCtor _ - | SynMemberDefn.AutoProperty _ - | SynMemberDefn.Open _ - | SynMemberDefn.ImplicitInherit _ -> true - | SynMemberDefn.NestedType (_, _, m) -> error(Error(FSComp.SR.tcTypesCannotContainNestedTypes(), m)); false - // covered above - | SynMemberDefn.ValField _ - | SynMemberDefn.Inherit _ - | SynMemberDefn.AbstractSlot _ -> false) - - // Convert auto properties to let bindings in the pre-list - let rec preAutoProps memb = - match memb with - | SynMemberDefn.AutoProperty(attributes=Attributes attribs; isStatic=isStatic; ident=id; typeOpt=tyOpt; propKind=propKind; xmlDoc=xmlDoc; synExpr=synExpr; range=mWholeAutoProp) -> - // Only the keep the field-targeted attributes - let attribs = attribs |> List.filter (fun a -> match a.Target with Some t when t.idText = "field" -> true | _ -> false) - let mLetPortion = synExpr.Range - let fldId = ident (CompilerGeneratedName id.idText, mLetPortion) - let headPat = SynPat.LongIdent (SynLongIdent([fldId], [], [None]), None, Some noInferredTypars, SynArgPats.Pats [], None, mLetPortion) - let retInfo = match tyOpt with None -> None | Some ty -> Some (None, SynReturnInfo((ty, SynInfo.unnamedRetVal), ty.Range)) - let isMutable = - match propKind with - | SynMemberKind.PropertySet - | SynMemberKind.PropertyGetSet -> true - | _ -> false - let attribs = mkAttributeList attribs mWholeAutoProp - let binding = mkSynBinding (xmlDoc, headPat) (None, false, isMutable, mLetPortion, DebugPointAtBinding.NoneAtInvisible, retInfo, synExpr, synExpr.Range, [], attribs, None, SynBindingTrivia.Zero) - - [(SynMemberDefn.LetBindings ([binding], isStatic, false, mWholeAutoProp))] - - | SynMemberDefn.Interface (members=Some membs) -> membs |> List.collect preAutoProps - | SynMemberDefn.LetBindings _ - | SynMemberDefn.ImplicitCtor _ - | SynMemberDefn.Open _ - | SynMemberDefn.ImplicitInherit _ -> [memb] - | _ -> [] - - // Convert auto properties to member bindings in the post-list - let rec postAutoProps memb = - match memb with - | SynMemberDefn.AutoProperty(attributes=Attributes attribs; isStatic=isStatic; ident=id; typeOpt=tyOpt; propKind=propKind; memberFlags=memberFlags; memberFlagsForSet=memberFlagsForSet; xmlDoc=xmlDoc; accessibility=access; trivia = { GetSetKeywords = mGetSetOpt }) -> - let mMemberPortion = id.idRange - // Only the keep the non-field-targeted attributes - let attribs = attribs |> List.filter (fun a -> match a.Target with Some t when t.idText = "field" -> false | _ -> true) - let fldId = ident (CompilerGeneratedName id.idText, mMemberPortion) - let headPatIds = if isStatic then [id] else [ident ("__", mMemberPortion);id] - let headPat = SynPat.LongIdent (SynLongIdent(headPatIds, [], List.replicate headPatIds.Length None), None, Some noInferredTypars, SynArgPats.Pats [], None, mMemberPortion) - let memberFlags = { memberFlags with GetterOrSetterIsCompilerGenerated = true } - let memberFlagsForSet = { memberFlagsForSet with GetterOrSetterIsCompilerGenerated = true } - - match propKind, mGetSetOpt with - | SynMemberKind.PropertySet, Some gs -> errorR(Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSetNotJustSet(), gs.Range)) - | _ -> () - - [ - match propKind with - | SynMemberKind.Member - | SynMemberKind.PropertyGet - | SynMemberKind.PropertyGetSet -> - let getter = - let rhsExpr = SynExpr.Ident fldId - let retInfo = match tyOpt with None -> None | Some ty -> Some (None, SynReturnInfo((ty, SynInfo.unnamedRetVal), ty.Range)) - let attribs = mkAttributeList attribs mMemberPortion - let binding = mkSynBinding (xmlDoc, headPat) (access, false, false, mMemberPortion, DebugPointAtBinding.NoneAtInvisible, retInfo, rhsExpr, rhsExpr.Range, [], attribs, Some memberFlags, SynBindingTrivia.Zero) - SynMemberDefn.Member (binding, mMemberPortion) - yield getter - | _ -> () - match propKind with - | SynMemberKind.PropertySet - | SynMemberKind.PropertyGetSet -> - let setter = - let vId = ident("v", mMemberPortion) - let headPat = SynPat.LongIdent (SynLongIdent(headPatIds, [], List.replicate headPatIds.Length None), None, Some noInferredTypars, SynArgPats.Pats [mkSynPatVar None vId], None, mMemberPortion) - let rhsExpr = mkSynAssign (SynExpr.Ident fldId) (SynExpr.Ident vId) - let binding = mkSynBinding (xmlDoc, headPat) (access, false, false, mMemberPortion, DebugPointAtBinding.NoneAtInvisible, None, rhsExpr, rhsExpr.Range, [], [], Some memberFlagsForSet, SynBindingTrivia.Zero) - SynMemberDefn.Member (binding, mMemberPortion) - yield setter - | _ -> ()] - | SynMemberDefn.Interface (ty, mWith, Some membs, m) -> - let membs' = membs |> List.collect postAutoProps - [SynMemberDefn.Interface (ty, mWith, Some membs', m)] - | SynMemberDefn.LetBindings _ - | SynMemberDefn.ImplicitCtor _ - | SynMemberDefn.Open _ - | SynMemberDefn.ImplicitInherit _ -> [] - | _ -> [memb] - - let preMembers = membersIncludingAutoProps |> List.collect preAutoProps - let postMembers = membersIncludingAutoProps |> List.collect postAutoProps - - preMembers @ postMembers + let slotsigs = members |> List.choose (function SynMemberDefn.AbstractSlot (slotSig = x; flags = y) -> Some(x, y) | _ -> None) + + let members,_vals_Inherits_Abstractslots = SplitAutoProps members let isConcrete = members |> List.exists (function - | SynMemberDefn.Member(SynBinding(valData = SynValData(Some memberFlags, _, _)), _) -> not memberFlags.IsDispatchSlot + | SynMemberDefn.Member(SynBinding(valData = SynValData(memberFlags = Some memberFlags)), _) -> not memberFlags.IsDispatchSlot | SynMemberDefn.Interface (members=defOpt) -> Option.isSome defOpt | SynMemberDefn.LetBindings _ -> true | SynMemberDefn.ImplicitCtor _ -> true @@ -4242,24 +4395,25 @@ module TcDeclarations = members |> List.exists (function | SynMemberDefn.Member(memberDefn=SynBinding(valData=SynValData(memberFlags=Some memberFlags); headPat = SynPatForConstructorDecl SynPatForNullaryArgs)) -> memberFlags.MemberKind=SynMemberKind.Constructor - | SynMemberDefn.ImplicitCtor (ctorArgs = SynSimplePats.SimplePats(spats, _)) -> isNil spats + | SynMemberDefn.ImplicitCtor (ctorArgs = SynSimplePats.SimplePats(pats = spats)) -> isNil spats | _ -> false) let repr = SynTypeDefnSimpleRepr.General(kind, inherits, slotsigs, fields, isConcrete, isIncrClass, implicitCtorSynPats, m) let isAtOriginalTyconDefn = not (isAugmentationTyconDefnRepr repr) let core = MutRecDefnsPhase1DataForTycon(synTyconInfo, repr, implements2@implements1, preEstablishedHasDefaultCtor, hasSelfReferentialCtor, isAtOriginalTyconDefn) - core, members @ extraMembers + core, members @ extra_vals_Inherits_Abstractslots @ extraMembers | SynTypeDefnRepr.Simple(repr, _) -> + let members = [] let isAtOriginalTyconDefn = true let core = MutRecDefnsPhase1DataForTycon(synTyconInfo, repr, implements1, false, false, isAtOriginalTyconDefn) - core, members @ extraMembers + core, members @ extra_vals_Inherits_Abstractslots @ extraMembers | SynTypeDefnRepr.Exception r -> let isAtOriginalTyconDefn = true let core = MutRecDefnsPhase1DataForTycon(synTyconInfo, SynTypeDefnSimpleRepr.Exception r, implements1, false, false, isAtOriginalTyconDefn) - core, extraMembers + core, extra_vals_Inherits_Abstractslots @ extraMembers //------------------------------------------------------------------------- @@ -4823,7 +4977,8 @@ let rec TcModuleOrNamespaceElementNonMutRec (cenv: cenv) parent typeNames scopem let defn = TMDefRec(true, [], [decl], binds |> List.map ModuleOrNamespaceBinding.Binding, m) return ([defn], [], []), env, env - | SynModuleDecl.Types (typeDefs, m) -> + | SynModuleDecl.Types (typeDefs, m) -> + let typeDefs = typeDefs |> List.filter (function (SynTypeDefn(typeInfo = SynComponentInfo(longId = []))) -> false | _ -> true) let scopem = unionRanges m scopem let mutRecDefns = typeDefs |> List.map MutRecShape.Tycon let mutRecDefnsChecked, envAfter = TcDeclarations.TcMutRecDefinitions cenv env parent typeNames tpenv m scopem None mutRecDefns false @@ -4872,6 +5027,9 @@ let rec TcModuleOrNamespaceElementNonMutRec (cenv: cenv) parent typeNames scopem | SynModuleDecl.HashDirective _ -> return ([], [], []), env, env + | SynModuleDecl.NestedModule(moduleInfo = (SynComponentInfo(longId = []))) -> + return ([], [], []), env, env + | SynModuleDecl.NestedModule(compInfo, isRec, moduleDefs, isContinuingModule, m, trivia) -> // Treat 'module rec M = ...' as a single mutually recursive definition group 'module M = ...' @@ -4966,9 +5124,12 @@ let rec TcModuleOrNamespaceElementNonMutRec (cenv: cenv) parent typeNames scopem // to // namespace [rec] A.B // module M = ... - let enclosingNamespacePath, defs = - if kind.IsModule then - let nsp, modName = List.frontAndBack longId + let enclosingNamespacePath, defs = + if kind.IsModule then + let nsp, modName = + match longId with + | [] -> [], mkSynId m.EndRange "" + | _ -> List.frontAndBack longId let modDecl = [SynModuleDecl.NestedModule(SynComponentInfo(attribs, None, [], [modName], xml, false, vis, m), false, defs, true, m, SynModuleDeclNestedModuleTrivia.Zero)] nsp, modDecl else @@ -5069,6 +5230,9 @@ and TcModuleOrNamespaceElementsMutRec (cenv: cenv) parent typeNames m envInitial else List.map (List.singleton >> MutRecShape.Lets) binds binds, (false, false, attrs) + | SynModuleDecl.NestedModule(moduleInfo = (SynComponentInfo(longId = []))) -> + [], (openOk, moduleAbbrevOk, attrs) + | SynModuleDecl.NestedModule(moduleInfo=compInfo; isRecursive=isRec; decls=synDefs; range=moduleRange) -> if isRec then warning(Error(FSComp.SR.tcRecImplied(), compInfo.Range)) let mutRecDefs, (_, _, attrs) = loop false moduleRange attrs synDefs diff --git a/src/fcs-fable/src/Compiler/Checking/CheckExpressions.fs b/src/fcs-fable/src/Compiler/Checking/CheckExpressions.fs index 145d5da225..d4f8ac482d 100644 --- a/src/fcs-fable/src/Compiler/Checking/CheckExpressions.fs +++ b/src/fcs-fable/src/Compiler/Checking/CheckExpressions.fs @@ -203,27 +203,27 @@ let AddLocalValPrimitive g (v: Val) env = /// Add a table of local values to TcEnv let AddLocalValMap g tcSink scopem (vals: Val NameMap) env = - let env = - if vals.IsEmpty then - env - else + if vals.IsEmpty then + env + else + let env = { env with eNameResEnv = AddValMapToNameEnv g vals env.eNameResEnv eUngeneralizableItems = NameMap.foldBackRange (typeOfVal >> addFreeItemOfTy) vals env.eUngeneralizableItems } - CallEnvSink tcSink (scopem, env.NameEnv, env.AccessRights) - env + CallEnvSink tcSink (scopem, env.NameEnv, env.AccessRights) + env /// Add a list of local values to TcEnv and report them to the sink let AddLocalVals g tcSink scopem (vals: Val list) env = - let env = - if isNil vals then - env - else + if isNil vals then + env + else + let env = { env with eNameResEnv = AddValListToNameEnv g vals env.eNameResEnv eUngeneralizableItems = List.foldBack (typeOfVal >> addFreeItemOfTy) vals env.eUngeneralizableItems } - CallEnvSink tcSink (scopem, env.NameEnv, env.AccessRights) - env + CallEnvSink tcSink (scopem, env.NameEnv, env.AccessRights) + env /// Add a local value to TcEnv and report it to the sink let AddLocalVal g tcSink scopem v env = @@ -235,9 +235,12 @@ let AddLocalVal g tcSink scopem v env = /// Add a set of explicitly declared type parameters as being available in the TcEnv let AddDeclaredTypars check typars env = - if isNil typars then env else - let env = { env with eNameResEnv = AddDeclaredTyparsToNameEnv check env.eNameResEnv typars } - { env with eUngeneralizableItems = List.foldBack (mkTyparTy >> addFreeItemOfTy) typars env.eUngeneralizableItems } + if isNil typars then + env + else + { env with + eUngeneralizableItems = List.foldBack (mkTyparTy >> addFreeItemOfTy) typars env.eUngeneralizableItems + eNameResEnv = AddDeclaredTyparsToNameEnv check env.eNameResEnv typars} /// Environment of implicitly scoped type parameters, e.g. 'a in "(x: 'a)" @@ -283,10 +286,10 @@ type LiteralArgumentType = type DeclKind = | ModuleOrMemberBinding - /// Extensions to a type within the same assembly + /// Extensions to a type within the same module or namespace fragment | IntrinsicExtensionBinding - /// Extensions to a type in a different assembly + /// Extensions to a type not within the same module or namespace fragment | ExtrinsicExtensionBinding | ClassLetBinding of isStatic: bool @@ -428,9 +431,9 @@ type cenv = TcFileState let CopyAndFixupTypars g m rigid tpsorig = FreshenAndFixupTypars g m rigid [] [] tpsorig -let UnifyTypes (cenv: cenv) (env: TcEnv) m actualTy expectedTy = +let UnifyTypes (cenv: cenv) (env: TcEnv) m expectedTy actualTy = let g = cenv.g - AddCxTypeEqualsType env.eContextInfo env.DisplayEnv cenv.css m (tryNormalizeMeasureInType g actualTy) (tryNormalizeMeasureInType g expectedTy) + AddCxTypeEqualsType env.eContextInfo env.DisplayEnv cenv.css m (tryNormalizeMeasureInType g expectedTy) (tryNormalizeMeasureInType g actualTy) // If the overall type admits subsumption or type directed conversion, and the original unify would have failed, // then allow subsumption or type directed conversion. @@ -751,16 +754,17 @@ let ForNewConstructors tcSink (env: TcEnv) mObjTy methodName meths = /// Typecheck rational constant terms in units-of-measure exponents let rec TcSynRationalConst c = match c with - | SynRationalConst.Integer i -> intToRational i - | SynRationalConst.Negate c2 -> NegRational (TcSynRationalConst c2) - | SynRationalConst.Rational(p, q, _) -> DivRational (intToRational p) (intToRational q) + | SynRationalConst.Integer(value = i) -> intToRational i + | SynRationalConst.Negate(rationalConst = c2) -> NegRational (TcSynRationalConst c2) + | SynRationalConst.Rational(numerator = p; denominator = q) -> DivRational (intToRational p) (intToRational q) + | SynRationalConst.Paren(rationalConst = c) -> TcSynRationalConst c /// Typecheck constant terms in expressions and patterns let TcConst (cenv: cenv) (overallTy: TType) m env synConst = let g = cenv.g let rec tcMeasure ms = match ms with - | SynMeasure.One -> Measure.One + | SynMeasure.One _ -> Measure.One | SynMeasure.Named(tc, m) -> let ad = env.eAccessRights let _, tcref = ForceRaise(ResolveTypeLongIdent cenv.tcSink cenv.nameResolver ItemOccurence.Use OpenQualified env.eNameResEnv ad tc TypeNameResolutionStaticArgsInfo.DefiniteEmpty PermitDirectReferenceToGeneratedType.No) @@ -768,13 +772,15 @@ let TcConst (cenv: cenv) (overallTy: TType) m env synConst = | TyparKind.Type -> error(Error(FSComp.SR.tcExpectedUnitOfMeasureNotType(), m)) | TyparKind.Measure -> Measure.Const tcref - | SynMeasure.Power(ms, exponent, _) -> Measure.RationalPower (tcMeasure ms, TcSynRationalConst exponent) - | SynMeasure.Product(ms1, ms2, _) -> Measure.Prod(tcMeasure ms1, tcMeasure ms2) - | SynMeasure.Divide(ms1, (SynMeasure.Seq (_ :: _ :: _, _) as ms2), m) -> + | SynMeasure.Power(measure = ms; power = exponent) -> Measure.RationalPower (tcMeasure ms, TcSynRationalConst exponent) + | SynMeasure.Product(measure1 = ms1; measure2 = ms2) -> Measure.Prod(tcMeasure ms1, tcMeasure ms2) + | SynMeasure.Divide(ms1, _, (SynMeasure.Seq (_ :: _ :: _, _) as ms2), m) -> warning(Error(FSComp.SR.tcImplicitMeasureFollowingSlash(), m)) - Measure.Prod(tcMeasure ms1, Measure.Inv (tcMeasure ms2)) - | SynMeasure.Divide(ms1, ms2, _) -> - Measure.Prod(tcMeasure ms1, Measure.Inv (tcMeasure ms2)) + let factor1 = ms1 |> Option.defaultValue (SynMeasure.One Range.Zero) + Measure.Prod(tcMeasure factor1, Measure.Inv (tcMeasure ms2)) + | SynMeasure.Divide(measure1 = ms1; measure2 = ms2) -> + let factor1 = ms1 |> Option.defaultValue (SynMeasure.One Range.Zero) + Measure.Prod(tcMeasure factor1, Measure.Inv (tcMeasure ms2)) | SynMeasure.Seq(mss, _) -> ProdMeasures (List.map tcMeasure mss) | SynMeasure.Anon _ -> error(Error(FSComp.SR.tcUnexpectedMeasureAnon(), m)) | SynMeasure.Var(_, m) -> error(Error(FSComp.SR.tcNonZeroConstantCannotHaveGenericUnit(), m)) @@ -785,10 +791,10 @@ let TcConst (cenv: cenv) (overallTy: TType) m env synConst = let unifyMeasureArg iszero tcr = let measureTy = match synConst with - | SynConst.Measure(_, _, SynMeasure.Anon _) -> + | SynConst.Measure(synMeasure = SynMeasure.Anon _) -> (mkAppTy tcr [TType_measure (Measure.Var (NewAnonTypar (TyparKind.Measure, m, TyparRigidity.Anon, (if iszero then TyparStaticReq.None else TyparStaticReq.HeadType), TyparDynamicReq.No)))]) - | SynConst.Measure(_, _, ms) -> mkAppTy tcr [TType_measure (tcMeasure ms)] + | SynConst.Measure(synMeasure = ms) -> mkAppTy tcr [TType_measure (tcMeasure ms)] | _ -> mkAppTy tcr [TType_measure Measure.One] unif measureTy @@ -841,43 +847,43 @@ let TcConst (cenv: cenv) (overallTy: TType) m env synConst = | SynConst.UIntPtr i -> unif g.unativeint_ty Const.UIntPtr i - | SynConst.Measure(SynConst.Single f, _, _) -> + | SynConst.Measure(constant = SynConst.Single f) -> unifyMeasureArg (f=0.0f) g.pfloat32_tcr Const.Single f - | SynConst.Measure(SynConst.Double f, _, _) -> + | SynConst.Measure(constant = SynConst.Double f) -> unifyMeasureArg (f=0.0) g.pfloat_tcr Const.Double f - | SynConst.Measure(SynConst.Decimal f, _, _) -> + | SynConst.Measure(constant = SynConst.Decimal f) -> unifyMeasureArg false g.pdecimal_tcr Const.Decimal f - | SynConst.Measure(SynConst.SByte i, _, _) -> + | SynConst.Measure(constant = SynConst.SByte i)-> unifyMeasureArg (i=0y) g.pint8_tcr Const.SByte i - | SynConst.Measure(SynConst.Int16 i, _, _) -> + | SynConst.Measure(constant = SynConst.Int16 i) -> unifyMeasureArg (i=0s) g.pint16_tcr Const.Int16 i - | SynConst.Measure(SynConst.Int32 i, _, _) -> + | SynConst.Measure(constant = SynConst.Int32 i) -> unifyMeasureArg (i=0) g.pint_tcr Const.Int32 i - | SynConst.Measure(SynConst.Int64 i, _, _) -> + | SynConst.Measure(constant = SynConst.Int64 i) -> unifyMeasureArg (i=0L) g.pint64_tcr Const.Int64 i - | SynConst.Measure(SynConst.IntPtr i, _, _) when expandedMeasurablesEnabled -> + | SynConst.Measure(constant = SynConst.IntPtr i) when expandedMeasurablesEnabled -> unifyMeasureArg (i=0L) g.pnativeint_tcr Const.IntPtr i - | SynConst.Measure(SynConst.Byte i, _, _) when expandedMeasurablesEnabled -> + | SynConst.Measure(constant = SynConst.Byte i) when expandedMeasurablesEnabled -> unifyMeasureArg (i=0uy) g.puint8_tcr Const.Byte i - | SynConst.Measure(SynConst.UInt16 i, _, _) when expandedMeasurablesEnabled -> + | SynConst.Measure(constant = SynConst.UInt16 i) when expandedMeasurablesEnabled -> unifyMeasureArg (i=0us) g.puint16_tcr Const.UInt16 i - | SynConst.Measure(SynConst.UInt32 i, _, _) when expandedMeasurablesEnabled -> + | SynConst.Measure(constant = SynConst.UInt32 i) when expandedMeasurablesEnabled -> unifyMeasureArg (i=0u) g.puint_tcr Const.UInt32 i - | SynConst.Measure(SynConst.UInt64 i, _, _) when expandedMeasurablesEnabled -> + | SynConst.Measure(constant = SynConst.UInt64 i) when expandedMeasurablesEnabled -> unifyMeasureArg (i=0UL) g.puint64_tcr Const.UInt64 i - | SynConst.Measure(SynConst.UIntPtr i, _, _) when expandedMeasurablesEnabled -> + | SynConst.Measure(constant = SynConst.UIntPtr i) when expandedMeasurablesEnabled -> unifyMeasureArg (i=0UL) g.punativeint_tcr Const.UIntPtr i | SynConst.Char c -> @@ -1791,6 +1797,12 @@ let FreshenAbstractSlot g amap m synTyparDecls absMethInfo = let retTyFromAbsSlot = retTy |> GetFSharpViewOfReturnType g |> instType typarInstFromAbsSlot typarsFromAbsSlotAreRigid, typarsFromAbsSlot, argTysFromAbsSlot, retTyFromAbsSlot +let CheckRecdExprDuplicateFields (elems: Ident list) = + elems |> List.iteri (fun i (uc1: Ident) -> + elems |> List.iteri (fun j (uc2: Ident) -> + if j > i && uc1.idText = uc2.idText then + errorR (Error(FSComp.SR.tcMultipleFieldsInRecord(uc1.idText), uc1.idRange)))) + //------------------------------------------------------------------------- // Helpers to typecheck expressions and patterns //------------------------------------------------------------------------- @@ -1800,17 +1812,26 @@ let BuildFieldMap (cenv: cenv) env isPartial ty (flds: ((Ident list * Ident) * ' let g = cenv.g let ad = env.eAccessRights - if isNil flds then invalidArg "flds" "BuildFieldMap" - - let fldCount = flds.Length + let allFields = flds |> List.map (fun ((_, ident), _) -> ident) + if allFields.Length > 1 then + // In the case of nested record fields on the same level in record copy-and-update. + // We need to reverse the list to get the correct order of fields. + let idents = if isPartial then allFields |> List.rev else allFields + CheckRecdExprDuplicateFields idents let fldResolutions = - let allFields = flds |> List.map (fun ((_, ident), _) -> ident) flds - |> List.map (fun (fld, fldExpr) -> - let (fldPath, fldId) = fld - let frefSet = ResolveField cenv.tcSink cenv.nameResolver env.eNameResEnv ad ty fldPath fldId allFields - fld, frefSet, fldExpr) + |> List.choose (fun (fld, fldExpr) -> + try + let fldPath, fldId = fld + let frefSet = ResolveField cenv.tcSink cenv.nameResolver env.eNameResEnv ad ty fldPath fldId allFields + Some(fld, frefSet, fldExpr) + with e -> + errorRecoveryNoRange e + None + ) + + if fldResolutions.IsEmpty then None else let relevantTypeSets = fldResolutions |> List.map (fun (_, frefSet, _) -> @@ -1827,7 +1848,7 @@ let BuildFieldMap (cenv: cenv) env isPartial ty (flds: ((Ident list * Ident) * ' warning (Error(FSComp.SR.tcFieldsDoNotDetermineUniqueRecordType(), m)) // try finding a record type with the same number of fields as the ones that are given. - match tcrefs |> List.tryFind (fun (_, tc) -> tc.TrueFieldsAsList.Length = fldCount) with + match tcrefs |> List.tryFind (fun (_, tc) -> tc.TrueFieldsAsList.Length = flds.Length) with | Some (tinst, tcref) -> tinst, tcref | _ -> // OK, there isn't a unique, good type dictated by the intersection for the field refs. @@ -1852,8 +1873,6 @@ let BuildFieldMap (cenv: cenv) env isPartial ty (flds: ((Ident list * Ident) * ' CheckFSharpAttributes g fref2.PropertyAttribs ident.idRange |> CommitOperationResult - if Map.containsKey fref2.FieldName fs then - errorR (Error(FSComp.SR.tcFieldAppearsTwiceInRecord(fref2.FieldName), m)) if showDeprecated then let diagnostic = Deprecated(FSComp.SR.nrRecordTypeNeedsQualifiedAccess(fref2.FieldName, fref2.Tycon.DisplayName) |> snd, m) if g.langVersion.SupportsFeature(LanguageFeature.ErrorOnDeprecatedRequireQualifiedAccess) then @@ -1870,7 +1889,7 @@ let BuildFieldMap (cenv: cenv) env isPartial ty (flds: ((Ident list * Ident) * ' Map.add fref2.FieldName fldExpr fs, (fref2.FieldName, fldExpr) :: rfldsList | _ -> error(Error(FSComp.SR.tcRecordFieldInconsistentTypes(), m))) - tinst, tcref, fldsmap, List.rev rfldsList + Some(tinst, tcref, fldsmap, List.rev rfldsList) let rec ApplyUnionCaseOrExn (makerForUnionCase, makerForExnTag) m (cenv: cenv) env overallTy item = let g = cenv.g @@ -1912,7 +1931,7 @@ let TcUnionCaseOrExnField (cenv: cenv) (env: TcEnv) ty1 m longId fieldNum funcs let ad = env.eAccessRights let mkf, argTys, _argNames = - match ResolvePatternLongIdent cenv.tcSink cenv.nameResolver AllIdsOK false m ad env.eNameResEnv TypeNameResolutionInfo.Default longId with + match ResolvePatternLongIdent cenv.tcSink cenv.nameResolver AllIdsOK false m ad env.eNameResEnv TypeNameResolutionInfo.Default longId ExtraDotAfterIdentifier.No with | Item.UnionCase _ | Item.ExnCase _ as item -> ApplyUnionCaseOrExn funcs m cenv env ty1 item | _ -> error(Error(FSComp.SR.tcUnknownUnion(), m)) @@ -2217,18 +2236,21 @@ module GeneralizationHelpers = //------------------------------------------------------------------------- let ComputeInlineFlag (memFlagsOption: SynMemberFlags option) isInline isMutable g attrs m = - let hasNoCompilerInliningAttribute() = HasFSharpAttribute g g.attrib_NoCompilerInliningAttribute attrs - let isCtorOrAbstractSlot() = + let hasNoCompilerInliningAttribute () = HasFSharpAttribute g g.attrib_NoCompilerInliningAttribute attrs + + let isCtorOrAbstractSlot () = match memFlagsOption with | None -> false | Some x -> (x.MemberKind = SynMemberKind.Constructor) || x.IsDispatchSlot || x.IsOverrideOrExplicitImpl + let isExtern () = HasFSharpAttributeOpt g g.attrib_DllImportAttribute attrs + let inlineFlag, reportIncorrectInlineKeywordUsage = // Mutable values may never be inlined // Constructors may never be inlined // Calls to virtual/abstract slots may never be inlined // Values marked with NoCompilerInliningAttribute or [] may never be inlined - if isMutable || isCtorOrAbstractSlot() || hasNoCompilerInliningAttribute() then + if isMutable || isCtorOrAbstractSlot() || hasNoCompilerInliningAttribute() || isExtern () then ValInline.Never, errorR elif HasMethodImplNoInliningAttribute g attrs then ValInline.Never, @@ -2325,14 +2347,14 @@ module BindingNormalization = let private MakeNormalizedStaticOrValBinding (cenv: cenv) isObjExprBinding id vis typars args rhsExpr valSynData = - let (SynValData(memberFlagsOpt, _, _)) = valSynData + let (SynValData(memberFlags = memberFlagsOpt)) = valSynData NormalizedBindingPat(mkSynPatVar vis id, PushMultiplePatternsToRhs cenv ((isObjExprBinding = ObjExprBinding) || Option.isSome memberFlagsOpt) args rhsExpr, valSynData, typars) let private MakeNormalizedInstanceMemberBinding (cenv: cenv) thisId memberId toolId vis m typars args rhsExpr valSynData = NormalizedBindingPat(SynPat.InstanceMember(thisId, memberId, toolId, vis, m), PushMultiplePatternsToRhs cenv true args rhsExpr, valSynData, typars) let private NormalizeStaticMemberBinding (cenv: cenv) (memberFlags: SynMemberFlags) valSynData id vis typars args m rhsExpr = - let (SynValData(_, valSynInfo, thisIdOpt)) = valSynData + let (SynValData(valInfo = valSynInfo; thisIdOpt = thisIdOpt; transformedFromProperty = tp)) = valSynData if memberFlags.IsInstance then // instance method without adhoc "this" argument error(Error(FSComp.SR.tcInstanceMemberRequiresTarget(), m)) @@ -2346,7 +2368,7 @@ module BindingNormalization = // static property: these transformed into methods taking one "unit" argument | [], SynMemberKind.Member -> let memberFlags = {memberFlags with MemberKind = SynMemberKind.PropertyGet} - let valSynData = SynValData(Some memberFlags, valSynInfo, thisIdOpt) + let valSynData = SynValData(Some memberFlags, valSynInfo, thisIdOpt, tp) NormalizedBindingPat(mkSynPatVar vis id, PushOnePatternToRhs cenv true (SynPat.Const(SynConst.Unit, m)) rhsExpr, valSynData, @@ -2354,7 +2376,7 @@ module BindingNormalization = | _ -> MakeNormalizedStaticOrValBinding cenv ValOrMemberBinding id vis typars args rhsExpr valSynData let private NormalizeInstanceMemberBinding (cenv: cenv) (memberFlags: SynMemberFlags) valSynData thisId memberId (toolId: Ident option) vis typars args m rhsExpr = - let (SynValData(_, valSynInfo, thisIdOpt)) = valSynData + let (SynValData(_, valSynInfo, thisIdOpt, tap)) = valSynData if not memberFlags.IsInstance then // static method with adhoc "this" argument @@ -2378,7 +2400,7 @@ module BindingNormalization = (SynPat.InstanceMember(thisId, memberId, toolId, vis, m), PushOnePatternToRhs cenv true (SynPat.Const(SynConst.Unit, m)) rhsExpr, // Update the member info to record that this is a SynMemberKind.PropertyGet - SynValData(Some memberFlags, valSynInfo, thisIdOpt), + SynValData(Some memberFlags, valSynInfo, thisIdOpt, tap), typars) | _ -> @@ -2386,7 +2408,7 @@ module BindingNormalization = let private NormalizeBindingPattern (cenv: cenv) nameResolver isObjExprBinding (env: TcEnv) valSynData headPat rhsExpr = let ad = env.AccessRights - let (SynValData(memberFlagsOpt, _, _)) = valSynData + let (SynValData(memberFlags = memberFlagsOpt)) = valSynData let rec normPattern pat = // One major problem with versions of F# prior to 1.9.x was that data constructors easily 'pollute' the namespace // of available items, to the point that you can't even define a function with the same name as an existing union case. @@ -2394,11 +2416,13 @@ module BindingNormalization = | SynPat.FromParseError(innerPat, _) -> normPattern innerPat - | SynPat.LongIdent (SynLongIdent(longId, _, _), toolId, tyargs, SynArgPats.Pats args, vis, m) -> + | SynPat.LongIdent (SynLongIdent(longId, _, _) as synLongId, toolId, tyargs, SynArgPats.Pats args, vis, m) -> let typars = match tyargs with None -> inferredTyparDecls | Some typars -> typars match memberFlagsOpt with | None -> - match ResolvePatternLongIdent cenv.tcSink nameResolver AllIdsOK true m ad env.NameEnv TypeNameResolutionInfo.Default longId with + let extraDot = if synLongId.ThereIsAnExtraDotAtTheEnd then ExtraDotAfterIdentifier.Yes else ExtraDotAfterIdentifier.No + + match ResolvePatternLongIdent cenv.tcSink nameResolver AllIdsOK true m ad env.NameEnv TypeNameResolutionInfo.Default longId extraDot with | Item.NewDef id -> if id.idText = opNameCons then NormalizedBindingPat(pat, rhsExpr, valSynData, typars) @@ -2487,10 +2511,10 @@ module EventDeclarationNormalization = | _ -> error(BadEventTransformation m) let private ConvertSynData m valSynData = - let (SynValData(memberFlagsOpt, valSynInfo, thisIdOpt)) = valSynData + let (SynValData(memberFlagsOpt, valSynInfo, thisIdOpt, tap)) = valSynData let memberFlagsOpt = ConvertMemberFlagsOpt m memberFlagsOpt let valSynInfo = ConvertSynInfo m valSynInfo - SynValData(memberFlagsOpt, valSynInfo, thisIdOpt) + SynValData(memberFlagsOpt, valSynInfo, thisIdOpt, tap) let rec private RenameBindingPattern f declPattern = match declPattern with @@ -2522,7 +2546,7 @@ module EventDeclarationNormalization = match rhsExpr with // Detect 'fun () -> e' which results from the compilation of a property getter - | SynExpr.Lambda (args=SynSimplePats.SimplePats([], _); body=trueRhsExpr; range=m) -> + | SynExpr.Lambda (args=SynSimplePats.SimplePats(pats = []); body=trueRhsExpr; range=m) -> let rhsExpr = mkSynApp1 (SynExpr.DotGet (SynExpr.Paren (trueRhsExpr, range0, None, m), range0, SynLongIdent([ident(target, m)], [], [None]), m)) (SynExpr.Ident (ident(argName, m))) m // reconstitute rhsExpr @@ -3916,7 +3940,7 @@ let GetInstanceMemberThisVariable (vspec: Val, expr) = // Skip over LAM tps. Choose 'a. if vspec.IsInstanceMember then let rec firstArg e = - match stripDebugPoints e with + match stripDebugPoints e with | Expr.TyLambda (_, _, b, _, _) -> firstArg b | Expr.TyChoose (_, b, _) -> firstArg b | Expr.Lambda (_, _, _, [v], _, _, _) -> Some v @@ -4290,8 +4314,8 @@ and TcTypar (cenv: cenv) env newOk tpenv tp : Typar * UnscopedTyparEnv = and TcTyparDecl (cenv: cenv) env synTyparDecl = let g = cenv.g - let (SynTyparDecl(Attributes synAttrs, synTypar)) = synTyparDecl - let (SynTypar(id, _, _)) = synTypar + let (SynTyparDecl (attributes = Attributes synAttrs; typar = synTypar)) = synTyparDecl + let (SynTypar (ident = id)) = synTypar let attrs = TcAttributes cenv env AttributeTargets.GenericParameter synAttrs let hasMeasureAttr = HasFSharpAttribute g g.attrib_MeasureAttribute attrs @@ -4332,7 +4356,7 @@ and TcTypeOrMeasure kindOpt (cenv: cenv) newOk checkConstraints occ (iwsam: Warn TcLongIdentType kindOpt cenv newOk checkConstraints occ iwsam env tpenv synLongId | MultiDimensionArrayType (rank, elemTy, m) -> - TcElementType cenv newOk checkConstraints occ env tpenv rank elemTy m + TcArrayType cenv newOk checkConstraints occ env tpenv rank elemTy m | SynType.App (StripParenTypes (SynType.LongIdent longId), _, args, _, _, postfix, m) -> TcLongIdentAppType kindOpt cenv newOk checkConstraints occ iwsam env tpenv longId postfix args m @@ -4343,8 +4367,9 @@ and TcTypeOrMeasure kindOpt (cenv: cenv) newOk checkConstraints occ (iwsam: Warn | SynType.Tuple(isStruct, segments, m) -> TcTupleType kindOpt cenv newOk checkConstraints occ env tpenv isStruct segments m - | SynType.AnonRecd(_, [],m) -> - error(Error((FSComp.SR.tcAnonymousTypeInvalidInDeclaration()), m)) + | SynType.AnonRecd(fields = []) -> + // The parser takes care of error messages + NewErrorType(), tpenv | SynType.AnonRecd(isStruct, args, m) -> TcAnonRecdType cenv newOk checkConstraints occ env tpenv isStruct args m @@ -4353,7 +4378,7 @@ and TcTypeOrMeasure kindOpt (cenv: cenv) newOk checkConstraints occ (iwsam: Warn TcFunctionType cenv newOk checkConstraints occ env tpenv domainTy resultTy | SynType.Array (rank , elemTy, m) -> - TcElementType cenv newOk checkConstraints occ env tpenv rank elemTy m + TcArrayType cenv newOk checkConstraints occ env tpenv rank elemTy m | SynType.Var (tp, _) -> TcTypeParameter kindOpt cenv env newOk tpenv tp @@ -4367,6 +4392,9 @@ and TcTypeOrMeasure kindOpt (cenv: cenv) newOk checkConstraints occ (iwsam: Warn | SynType.HashConstraint(synInnerTy, m) -> TcTypeHashConstraint cenv env newOk checkConstraints occ tpenv synInnerTy m + | SynType.Intersection (tp, tys, m, _) -> + TcIntersectionConstraint cenv env newOk checkConstraints occ tpenv tp tys m + | SynType.StaticConstant (synConst, m) -> TcTypeStaticConstant kindOpt tpenv synConst m @@ -4491,20 +4519,22 @@ and TcTupleType kindOpt (cenv: cenv) newOk checkConstraints occ env tpenv isStru else let argsR,tpenv = TcTypesAsTuple cenv newOk checkConstraints occ env tpenv args m TType_tuple(tupInfo, argsR), tpenv + +and CheckAnonRecdTypeDuplicateFields (elems: Ident array) = + elems |> Array.iteri (fun i (uc1: Ident) -> + elems |> Array.iteri (fun j (uc2: Ident) -> + if j > i && uc1.idText = uc2.idText then + errorR(Error(FSComp.SR.tcAnonRecdTypeDuplicateFieldId(uc1.idText), uc1.idRange)))) and TcAnonRecdType (cenv: cenv) newOk checkConstraints occ env tpenv isStruct args m = let tupInfo = mkTupInfo isStruct + let unsortedFieldIds = args |> List.map fst |> List.toArray + if unsortedFieldIds.Length > 1 then + CheckAnonRecdTypeDuplicateFields unsortedFieldIds let tup = args |> List.map (fun (_, t) -> SynTupleTypeSegment.Type t) let argsR,tpenv = TcTypesAsTuple cenv newOk checkConstraints occ env tpenv tup m - let unsortedFieldIds = args |> List.map fst |> List.toArray let anonInfo = AnonRecdTypeInfo.Create(cenv.thisCcu, tupInfo, unsortedFieldIds) - // Check for duplicate field IDs - unsortedFieldIds - |> Array.countBy (fun fieldId -> fieldId.idText) - |> Array.iter (fun (idText, count) -> - if count > 1 then error (Error (FSComp.SR.tcAnonRecdTypeDuplicateFieldId(idText), m))) - // Sort into canonical order let sortedFieldTys, sortedCheckedArgTys = List.zip args argsR |> List.indexed |> List.sortBy (fun (i,_) -> unsortedFieldIds[i].idText) |> List.map snd |> List.unzip @@ -4521,7 +4551,7 @@ and TcFunctionType (cenv: cenv) newOk checkConstraints occ env tpenv domainTy re let tyR = mkFunTy g domainTyR resultTyR tyR, tpenv -and TcElementType (cenv: cenv) newOk checkConstraints occ env tpenv rank elemTy m = +and TcArrayType (cenv: cenv) newOk checkConstraints occ env tpenv rank elemTy m = let g = cenv.g let elemTy, tpenv = TcTypeAndRecover cenv newOk checkConstraints occ WarnOnIWSAM.Yes env tpenv elemTy let tyR = mkArrayTy g rank elemTy m @@ -4552,6 +4582,29 @@ and TcTypeHashConstraint (cenv: cenv) env newOk checkConstraints occ tpenv synTy AddCxTypeMustSubsumeType ContextInfo.NoContext env.DisplayEnv cenv.css m NoTrace ty (mkTyparTy tp) tp.AsType, tpenv +// (x: 't & #I1 & #I2) +// (x: #I1 & #I2) +and TcIntersectionConstraint (cenv: cenv) env newOk checkConstraints occ tpenv synTypar synTys m = + let tp, tpenv = + match synTypar with + | Some synTypar -> TcTypeOrMeasureParameter (Some TyparKind.Type) cenv env newOk tpenv synTypar + | _ -> TcAnonTypeOrMeasure (Some TyparKind.Type) cenv TyparRigidity.WarnIfNotRigid TyparDynamicReq.Yes newOk m, tpenv + + let typarTy = mkTyparTy tp + + let tpenv = + synTys + |> List.fold (fun tpenv ty -> + match ty with + | SynType.HashConstraint (ty, m) -> + let ty, tpenv = TcTypeAndRecover cenv newOk checkConstraints occ WarnOnIWSAM.No env tpenv ty + AddCxTypeMustSubsumeType ContextInfo.NoContext env.DisplayEnv cenv.css m NoTrace ty typarTy + tpenv + | _ -> tpenv + ) tpenv + + tp.AsType, tpenv + and TcTypeStaticConstant kindOpt tpenv c m = match c, kindOpt with | _, Some TyparKind.Type -> @@ -4657,7 +4710,7 @@ and TcMeasuresAsTuple (cenv: cenv) newOk checkConstraints occ env (tpenv: Unscop | SynTupleTypeSegment.Slash _ :: SynTupleTypeSegment.Type ty :: args -> let ms1, tpenv = TcMeasure cenv newOk checkConstraints occ env tpenv ty m gather args tpenv (Measure.Prod(acc, Measure.Inv ms1)) - | _ -> failwith "inpossible" + | _ -> failwith "impossible" gather args tpenv Measure.One and TcTypesOrMeasures optKinds (cenv: cenv) newOk checkConstraints occ env tpenv args m = @@ -4968,7 +5021,7 @@ and ConvSynPatToSynExpr synPat = else SynExpr.LongIdent (false, synLongId, None, m) List.fold (fun f x -> mkSynApp1 f (ConvSynPatToSynExpr x) m) e args - | SynPat.Tuple (isStruct, args, m) -> + | SynPat.Tuple (isStruct, args, _, m) -> SynExpr.Tuple (isStruct, List.map ConvSynPatToSynExpr args, [], m) | SynPat.Paren (innerPat, _) -> @@ -5339,8 +5392,8 @@ and TcExprUndelayedNoType (cenv: cenv) env tpenv synExpr = let expr, tpenv = TcExprUndelayed cenv (MustEqual overallTy) env tpenv synExpr expr, overallTy, tpenv -/// Process a leaf construct where the actual type (or an approximation of it such as 'list<_>' -/// or 'array<_>') is already sufficiently pre-known, and the information in the overall type +/// Process a leaf construct where the actual type (or an approximation of it such as '_ list' +/// or '_ array') is already sufficiently pre-known, and the information in the overall type /// can be eagerly propagated into the actual type (UnifyOverallType), including pre-calculating /// any type-directed conversion. This must mean that types extracted when processing the expression are not /// considered in determining any type-directed conversion. @@ -5509,7 +5562,15 @@ and TcExprUndelayed (cenv: cenv) (overallTy: OverallTy) env tpenv (synExpr: SynE TcNonControlFlowExpr env <| fun env -> CallExprHasTypeSink cenv.tcSink (m, env.NameEnv, overallTy.Commit, env.AccessRights) TcConstExpr cenv overallTy env m tpenv synConst - + | SynExpr.DotLambda (synExpr, m, trivia) -> + if env.NameEnv.eUnqualifiedItems |> Map.containsKey "_arg1" + then + warning(Error(FSComp.SR.tcAmbiguousDiscardDotLambda(), trivia.UnderscoreRange)) + let unaryArg = mkSynId trivia.UnderscoreRange (cenv.synArgNameGenerator.New()) + let svar = mkSynCompGenSimplePatVar unaryArg + let pushedExpr = pushUnaryArg synExpr unaryArg + let lambda = SynExpr.Lambda(false, false, SynSimplePats.SimplePats([ svar ],[], svar.Range), pushedExpr, None, m, SynExprLambdaTrivia.Zero) + TcIteratedLambdas cenv true env overallTy Set.empty tpenv lambda | SynExpr.Lambda _ -> TcIteratedLambdas cenv true env overallTy Set.empty tpenv synExpr @@ -5719,16 +5780,11 @@ and TcExprUndelayed (cenv: cenv) (overallTy: OverallTy) env tpenv (synExpr: SynE error(Error(FSComp.SR.tcConstructRequiresSequenceOrComputations(), m)) | SynExpr.DoBang (_, m) - | SynExpr.LetOrUseBang (range=m) -> + | SynExpr.MatchBang (range = m) + | SynExpr.WhileBang (range = m) + | SynExpr.LetOrUseBang (range = m) -> error(Error(FSComp.SR.tcConstructRequiresComputationExpression(), m)) - | SynExpr.MatchBang (range=m) -> - error(Error(FSComp.SR.tcConstructRequiresComputationExpression(), m)) - - // Part of 'T.Ident - | SynExpr.Typar (typar, m) -> - TcTyparExprThen cenv overallTy env tpenv typar m [] - | SynExpr.IndexFromEnd (rightExpr, m) -> errorR(Error(FSComp.SR.tcTraitInvocationShouldUseTick(), m)) let adjustedExpr = ParseHelpers.adjustHatPrefixToTyparLookup m rightExpr @@ -5834,10 +5890,10 @@ and CheckTupleIsCorrectLength g (env: TcEnv) m tupleTy (args: 'a list) tcArgs = if args.Length <> ptys.Length then let argTys = NewInferenceTypes g args suppressErrorReporting (fun () -> tcArgs argTys) - let expectedTy = TType_tuple (tupInfo, argTys) + let actualTy = TType_tuple (tupInfo, argTys) // We let error recovery handle this exception - error (ErrorFromAddingTypeEquation(g, env.DisplayEnv, tupleTy, expectedTy, + error (ErrorFromAddingTypeEquation(g, env.DisplayEnv, tupleTy, actualTy, (ConstraintSolverTupleDiffLengths(env.DisplayEnv, env.eContextInfo, ptys, argTys, m, m)), m)) and TcExprTuple (cenv: cenv) overallTy env tpenv (isExplicitStruct, args, m) = @@ -6531,7 +6587,7 @@ and TcCtorCall isNaked cenv env tpenv (overallTy: OverallTy) objTy mObjTyOpt ite error(Error(FSComp.SR.tcSyntaxCanOnlyBeUsedToCreateObjectTypes(if superInit then "inherit" else "new"), mWholeCall)) // Check a record construction expression -and TcRecordConstruction (cenv: cenv) (overallTy: TType) env tpenv withExprInfoOpt objTy fldsList m = +and TcRecordConstruction (cenv: cenv) (overallTy: TType) isObjExpr env tpenv withExprInfoOpt objTy fldsList m = let g = cenv.g let tcref, tinst = destAppTy g objTy @@ -6610,9 +6666,10 @@ and TcRecordConstruction (cenv: cenv) (overallTy: TType) env tpenv withExprInfoO // Check accessibility: this is also done in BuildFieldMap, but also need to check // for fields in { new R with a=1 and b=2 } constructions and { r with a=1 } copy-and-update expressions - rfrefs |> List.iter (fun rfref -> + for rfref in rfrefs do CheckRecdFieldAccessible cenv.amap m env.eAccessRights rfref |> ignore - CheckFSharpAttributes g rfref.PropertyAttribs m |> CommitOperationResult) + if isObjExpr then + CheckFSharpAttributes g rfref.PropertyAttribs m |> CommitOperationResult let args = List.map snd fldsList @@ -6638,7 +6695,7 @@ and TcRecordConstruction (cenv: cenv) (overallTy: TType) env tpenv withExprInfoO and GetNameAndSynValInfoOfObjExprBinding _cenv _env b = let (NormalizedBinding (_, _, _, _, _, _, _, valSynData, pat, rhsExpr, mBinding, _)) = b - let (SynValData(memberFlagsOpt, valSynInfo, _)) = valSynData + let (SynValData(memberFlags = memberFlagsOpt; valInfo = valSynInfo)) = valSynData match pat, memberFlagsOpt with // This is the normal case for F# 'with member x.M(...) = ...' @@ -6730,7 +6787,7 @@ and TcObjectExprBinding (cenv: cenv) (env: TcEnv) implTy tpenv (absSlotInfo, bin let g = cenv.g let (NormalizedBinding(vis, kind, isInline, isMutable, attrs, xmlDoc, synTyparDecls, valSynData, headPat, bindingRhs, mBinding, debugPoint)) = bind - let (SynValData(memberFlagsOpt, _, _)) = valSynData + let (SynValData(memberFlags = memberFlagsOpt)) = valSynData // 4a2. adjust the binding, especially in the "member" case, a subset of the logic of AnalyzeAndMakeAndPublishRecursiveValue let bindingRhs, logicalMethId, memberFlags = @@ -6810,7 +6867,7 @@ and ComputeObjectExprOverrides (cenv: cenv) (env: TcEnv) tpenv impls = let binds, bindsAttributes = [ for binding in binds do let (NormalizedBinding(_, _, _, _, bindingSynAttribs, _, _, valSynData, _, _, _, _)) = binding - let (SynValData(memberFlagsOpt, _, _)) = valSynData + let (SynValData(memberFlags = memberFlagsOpt)) = valSynData let attrTgt = ObjectExpressionOverrideBinding.AllowedAttribTargets memberFlagsOpt let bindingAttribs = TcAttributes cenv env attrTgt bindingSynAttribs yield binding, bindingAttribs @@ -6905,7 +6962,7 @@ and TcObjectExpr (cenv: cenv) env tpenv (objTy, realObjTy, argopt, binds, extraI | NormalizedBinding (_, _, _, _, [], _, _, _, SynPat.Named(SynIdent(id,_), _, _, _), NormalizedBindingRhs(_, _, rhsExpr), _, _) -> id.idText, rhsExpr | _ -> error(Error(FSComp.SR.tcOnlySimpleBindingsCanBeUsedInConstructionExpressions(), b.RangeOfBindingWithoutRhs))) - TcRecordConstruction cenv objTy env tpenv None objTy fldsList mWholeExpr + TcRecordConstruction cenv objTy true env tpenv None objTy fldsList mWholeExpr else let item = ForceRaise (ResolveObjectConstructor cenv.nameResolver env.DisplayEnv mObjTy ad objTy) @@ -7358,18 +7415,38 @@ and TcRecdExpr cenv overallTy env tpenv (inherits, withExprOpt, synRecdFields, m | _ -> List.frontAndBack synLongId.LongIdent, exprBeingAssigned) let flds = if hasOrigExpr then GroupUpdatesToNestedFields flds else flds + // Check if the overall type is an anon record type and if so raise an copy-update syntax error + // let f (r: {| A: int; C: int |}) = { r with A = 1; B = 2; C = 3 } + if isAnonRecdTy cenv.g overallTy || isStructAnonRecdTy cenv.g overallTy then + for fld, _ in flds do + let _, fldId = fld + match TryFindAnonRecdFieldOfType g overallTy fldId.idText with + | Some item -> + CallNameResolutionSink cenv.tcSink (fldId.idRange, env.eNameResEnv, item, emptyTyparInst, ItemOccurence.UseInType, env.eAccessRights) + | None -> () + let firstPartRange = withStartEnd mWholeExpr.Start (mkPos mWholeExpr.StartLine (mWholeExpr.StartColumn + 1)) mWholeExpr + // Use the left { in the expression + errorR(Error(FSComp.SR.chkCopyUpdateSyntaxInAnonRecords(), firstPartRange)) + // Use the right } in the expression + let lastPartRange = withStartEnd (mkPos mWholeExpr.StartLine (mWholeExpr.EndColumn - 1)) (mkPos mWholeExpr.StartLine mWholeExpr.EndColumn) mWholeExpr + errorR(Error(FSComp.SR.chkCopyUpdateSyntaxInAnonRecords(), lastPartRange)) + [] + else + // If the overall type is a record type build a map of the fields + match flds with + | [] -> [] + | _ -> + match BuildFieldMap cenv env hasOrigExpr overallTy flds mWholeExpr with + | None -> [] + | Some(tinst, tcref, _, fldsList) -> - match flds with - | [] -> [] - | _ -> - let tinst, tcref, _, fldsList = BuildFieldMap cenv env hasOrigExpr overallTy flds mWholeExpr - let gtyp = mkAppTy tcref tinst - UnifyTypes cenv env mWholeExpr overallTy gtyp + let gtyp = mkAppTy tcref tinst + UnifyTypes cenv env mWholeExpr overallTy gtyp - [ for n, v in fldsList do - match v with - | Some v -> yield n, v - | None -> () ] + [ for n, v in fldsList do + match v with + | Some v -> yield n, v + | None -> () ] let withExprInfoOpt = match withExprOptChecked with @@ -7378,7 +7455,7 @@ and TcRecdExpr cenv overallTy env tpenv (inherits, withExprOpt, synRecdFields, m let withExprAddrVal, withExprAddrValExpr = mkCompGenLocal mWholeExpr "inputRecord" (if isStructTy g overallTy then mkByrefTy g overallTy else overallTy) Some(withExpr, withExprAddrVal, withExprAddrValExpr) - if hasOrigExpr && not (isRecdTy g overallTy) then + if hasOrigExpr && not (isRecdTy g overallTy || isAnonRecdTy g overallTy) then errorR(Error(FSComp.SR.tcExpressionFormRequiresRecordTypes(), mWholeExpr)) if requiresCtor || haveCtor then @@ -7393,7 +7470,7 @@ and TcRecdExpr cenv overallTy env tpenv (inherits, withExprOpt, synRecdFields, m error(Error(errorInfo, mWholeExpr)) if isFSharpObjModelTy g overallTy then errorR(Error(FSComp.SR.tcTypeIsNotARecordTypeNeedConstructor(), mWholeExpr)) - elif not (isRecdTy g overallTy) then errorR(Error(FSComp.SR.tcTypeIsNotARecordType(), mWholeExpr)) + elif not (isRecdTy g overallTy || fldsList.IsEmpty) then errorR(Error(FSComp.SR.tcTypeIsNotARecordType(), mWholeExpr)) let superInitExprOpt , tpenv = match inherits, GetSuperTypeOfType g cenv.amap mWholeExpr overallTy with @@ -7411,30 +7488,39 @@ and TcRecdExpr cenv overallTy env tpenv (inherits, withExprOpt, synRecdFields, m errorR(InternalError("Unexpected failure in getting super type", mWholeExpr)) None, tpenv - let expr, tpenv = TcRecordConstruction cenv overallTy env tpenv withExprInfoOpt overallTy fldsList mWholeExpr + if fldsList.IsEmpty && isTyparTy g overallTy || isAnonRecdTy g overallTy then + SolveTypeAsError env.DisplayEnv cenv.css mWholeExpr overallTy + mkDefault (mWholeExpr, overallTy), tpenv + else + let expr, tpenv = TcRecordConstruction cenv overallTy false env tpenv withExprInfoOpt overallTy fldsList mWholeExpr - let expr = - match superInitExprOpt with - | _ when isStructTy g overallTy -> expr - | Some superInitExpr -> mkCompGenSequential mWholeExpr superInitExpr expr - | None -> expr - expr, tpenv + let expr = + match superInitExprOpt with + | _ when isStructTy g overallTy -> expr + | Some superInitExpr -> mkCompGenSequential mWholeExpr superInitExpr expr + | None -> expr + expr, tpenv +and CheckAnonRecdExprDuplicateFields (elems: Ident array) = + elems |> Array.iteri (fun i (uc1: Ident) -> + elems |> Array.iteri (fun j (uc2: Ident) -> + if j > i && uc1.idText = uc2.idText then + errorR(Error (FSComp.SR.tcAnonRecdDuplicateFieldId(uc1.idText), uc1.idRange)))) // Check '{| .... |}' and TcAnonRecdExpr cenv (overallTy: TType) env tpenv (isStruct, optOrigSynExpr, unsortedFieldIdsAndSynExprsGiven, mWholeExpr) = - - // Check for duplicate field IDs - unsortedFieldIdsAndSynExprsGiven - |> List.countBy (fun (fId, _, _) -> textOfLid fId.LongIdent) - |> List.iter (fun (label, count) -> - if count > 1 then error (Error (FSComp.SR.tcAnonRecdDuplicateFieldId(label), mWholeExpr))) - match optOrigSynExpr with | None -> TcNewAnonRecdExpr cenv overallTy env tpenv (isStruct, unsortedFieldIdsAndSynExprsGiven, mWholeExpr) | Some orig -> + // Ideally we should also check for duplicate field IDs in the TcCopyAndUpdateAnonRecdExpr case, but currently the logic is too complex to garante a proper error reporting + // So here we error instead errorR to avoid cascading internal errors + unsortedFieldIdsAndSynExprsGiven + |> List.countBy (fun (fId, _, _) -> textOfLid fId.LongIdent) + |> List.iter (fun (label, count) -> + if count > 1 then error (Error (FSComp.SR.tcAnonRecdDuplicateFieldId(label), mWholeExpr))) + TcCopyAndUpdateAnonRecdExpr cenv overallTy env tpenv (isStruct, orig, unsortedFieldIdsAndSynExprsGiven, mWholeExpr) and TcNewAnonRecdExpr cenv (overallTy: TType) env tpenv (isStruct, unsortedFieldIdsAndSynExprsGiven, mWholeExpr) = @@ -7444,6 +7530,9 @@ and TcNewAnonRecdExpr cenv (overallTy: TType) env tpenv (isStruct, unsortedField let unsortedFieldIds = unsortedFieldIdsAndSynExprsGiven |> List.map (fun (synLongIdent, _, _) -> synLongIdent.LongIdent[0]) |> List.toArray let anonInfo, sortedFieldTys = UnifyAnonRecdTypeAndInferCharacteristics env.eContextInfo cenv env.DisplayEnv mWholeExpr overallTy isStruct unsortedFieldIds + if unsortedFieldIds.Length > 1 then + CheckAnonRecdExprDuplicateFields unsortedFieldIds + // Sort into canonical order let sortedIndexedArgs = unsortedFieldIdsAndSynExprsGiven @@ -8071,7 +8160,7 @@ and TcNameOfExpr (cenv: cenv) env tpenv (synArg: SynExpr) = and TcNameOfExprResult (cenv: cenv) (lastIdent: Ident) m = let g = cenv.g - let constRange = mkRange m.FileName m.Start (mkPos m.StartLine (m.StartColumn + lastIdent.idText.Length + 2)) // `2` are for quotes + let constRange = withEnd (mkPos m.StartLine (m.StartColumn + lastIdent.idText.Length + 2)) m // `2` are for quotes Expr.Const(Const.String(lastIdent.idText), constRange, g.string_ty) //------------------------------------------------------------------------- @@ -8251,7 +8340,7 @@ and TcItemThen (cenv: cenv) (overallTy: OverallTy) env tpenv (tinstEnclosing, it | Item.Value vref -> TcValueItemThen cenv overallTy env vref tpenv mItem afterResolution delayed - | Item.Property (nm, pinfos) -> + | Item.Property (nm, pinfos, _) -> TcPropertyItemThen cenv overallTy env nm pinfos tpenv mItem afterResolution staticTyOpt delayed | Item.ILField finfo -> @@ -8428,7 +8517,19 @@ and TcUnionCaseOrExnCaseOrActivePatternResultItemThen (cenv: cenv) overallTy env // This is where the constructor expects arguments but is not applied to arguments, hence build a lambda numArgTys, (fun () -> - let vs, args = argTys |> List.mapi (fun i ty -> mkCompGenLocal mItem ("arg" + string i) ty) |> List.unzip + let argNamesIfFeatureEnabled = + if g.langVersion.SupportsFeature LanguageFeature.ImprovedImpliedArgumentNames then + argNames + else + [] + + let vs, args = + argTys + |> List.mapi (fun i ty -> + let argName = argNamesIfFeatureEnabled |> List.tryItem i |> Option.map (fun x -> x.idText) |> Option.defaultWith (fun () -> "arg" + string i) + mkCompGenLocal mItem argName ty) + |> List.unzip + let constrApp = mkConstrApp mItem args let lam = mkMultiLambda mItem vs (constrApp, tyOfExpr g constrApp) lam) @@ -8687,6 +8788,7 @@ and TcImplicitOpItemThen (cenv: cenv) overallTy env id sln tpenv mItem delayed = | SynExpr.Const _ | SynExpr.Typar _ | SynExpr.LongIdent _ + | SynExpr.DotLambda _ | SynExpr.Dynamic _ -> true | SynExpr.Tuple (_, synExprs, _, _) @@ -8734,6 +8836,7 @@ and TcImplicitOpItemThen (cenv: cenv) overallTy env id sln tpenv mItem delayed = | SynExpr.MatchBang _ | SynExpr.LetOrUseBang _ | SynExpr.DoBang _ + | SynExpr.WhileBang _ | SynExpr.TraitCall _ | SynExpr.IndexFromEnd _ | SynExpr.IndexRange _ @@ -9054,7 +9157,7 @@ and TcLookupItemThen cenv overallTy env tpenv mObjExpr objExpr objExprTy delayed TcMethodApplicationThen cenv env overallTy None tpenv tyArgsOpt objArgs mExprAndItem mItem methodName ad mutates false meths afterResolution NormalValUse args atomicFlag None delayed - | Item.Property (nm, pinfos) -> + | Item.Property (nm, pinfos, _) -> // Instance property if isNil pinfos then error (InternalError ("Unexpected error: empty property list", mItem)) // if there are both intrinsics and extensions in pinfos, intrinsics will be listed first. @@ -9519,7 +9622,13 @@ and TcMethodApplication_CheckArguments let denv = env.DisplayEnv match curriedCallerArgsOpt with | None -> - let curriedArgTys, returnTy = + let curriedArgTys, curriedArgNamesIfFeatureEnabled, returnTy = + let paramNamesIfFeatureEnabled (g: TcGlobals) (meth: MethInfo) = + if g.langVersion.SupportsFeature LanguageFeature.ImprovedImpliedArgumentNames then + meth.GetParamNames() + else + [] + match candidates with // "single named item" rule. This is where we have a single accessible method // member x.M(arg1, ..., argN) @@ -9531,19 +9640,23 @@ and TcMethodApplication_CheckArguments // to their default values (for optionals) and be part of the return tuple (for out args). | [calledMeth] -> let curriedArgTys, returnTy = UnifyMatchingSimpleArgumentTypes cenv env exprTy.Commit calledMeth mMethExpr mItem - curriedArgTys, MustEqual returnTy + curriedArgTys, paramNamesIfFeatureEnabled g calledMeth, MustEqual returnTy | _ -> let domainTy, returnTy = UnifyFunctionType None cenv denv mMethExpr exprTy.Commit let argTys = if isUnitTy g domainTy then [] else tryDestRefTupleTy g domainTy // Only apply this rule if a candidate method exists with this number of arguments - let argTys = - if candidates |> List.exists (CalledMethHasSingleArgumentGroupOfThisLength argTys.Length) then - argTys - else - [domainTy] - [argTys], MustEqual returnTy - - let lambdaVarsAndExprs = curriedArgTys |> List.mapiSquared (fun i j ty -> mkCompGenLocal mMethExpr ("arg"+string i+string j) ty) + let argTys, argNames = + match candidates |> List.tryFind (CalledMethHasSingleArgumentGroupOfThisLength argTys.Length) with + | Some meth -> argTys, paramNamesIfFeatureEnabled g meth + | None -> [domainTy], [[None]] + [argTys], argNames, MustEqual returnTy + + let lambdaVarsAndExprs = + curriedArgTys + |> List.mapiSquared (fun i j ty -> + let argName = curriedArgNamesIfFeatureEnabled |> List.tryItem i |> Option.bind (List.tryItem j) |> Option.flatten |> Option.defaultWith (fun () -> "arg" + string i + string j) + mkCompGenLocal mMethExpr argName ty) + let unnamedCurriedCallerArgs = lambdaVarsAndExprs |> List.mapSquared (fun (_, e) -> CallerArg(tyOfExpr g e, e.Range, false, e)) let namedCurriedCallerArgs = lambdaVarsAndExprs |> List.map (fun _ -> []) let lambdaVars = List.mapSquared fst lambdaVarsAndExprs @@ -9718,7 +9831,7 @@ and TcMethodApplication let overriding = match unrefinedItem with | Item.MethodGroup(_, overridenMeths, _) -> overridenMeths |> List.map (fun minfo -> minfo, None) - | Item.Property(_, pinfos) -> + | Item.Property(info = pinfos) -> if result.Method.LogicalName.StartsWithOrdinal("set_") then SettersOfPropInfos pinfos else @@ -9906,7 +10019,7 @@ and TcSetterArgExpr (cenv: cenv) env denv objExpr ad assignedSetter calledFromCo let argExprPrebinder, argExpr = MethodCalls.AdjustCallerArgExpr tcVal g cenv.amap cenv.infoReader ad false calledArgTy ReflectedArgInfo.None callerArgTy m argExpr let mut = (if isStructTy g (tyOfExpr g objExpr) then DefinitelyMutates else PossiblyMutates) let action = BuildPossiblyConditionalMethodCall cenv env mut m true pminfo NormalValUse pminst [objExpr] [argExpr] propStaticTyOpt |> fst - argExprPrebinder, action, Item.Property (pinfo.PropertyName, [pinfo]) + argExprPrebinder, action, Item.Property (pinfo.PropertyName, [pinfo], None) | AssignedILFieldSetter finfo -> // Get or set instance IL field @@ -10209,22 +10322,73 @@ and TcAndBuildFixedExpr (cenv: cenv) env (overallPatTy, fixedExpr, overallExprTy let g = cenv.g + // Search for GetPinnableReference (like https://learn.microsoft.com/en-us/dotnet/api/system.span-1.getpinnablereference?view=net-7.0) + // on the target expression, and, if it exists, call it + let tryBuildGetPinnableReferenceCall () = + let getPinnableReferenceMInfo = + TryFindIntrinsicOrExtensionMethInfo ResultCollectionSettings.AllResults cenv env mBinding env.eAccessRights "GetPinnableReference" overallExprTy + |> List.tryFind (fun mInfo -> + // GetPinnableReference must be a parameterless method with a byref or inref return value + match mInfo.GetParamDatas(cenv.amap, mBinding, mInfo.FormalMethodInst), mInfo.GetFSharpReturnType(cenv.amap, mBinding, mInfo.FormalMethodInst) with + | [[]], retTy when isByrefTy g retTy && mInfo.IsInstance -> true + | _ -> false + ) + + match getPinnableReferenceMInfo with + | Some mInfo -> + checkLanguageFeatureAndRecover g.langVersion LanguageFeature.ExtendedFixedBindings mBinding + + let mInst = FreshenMethInfo mBinding mInfo + let pinnableReference, actualRetTy = BuildPossiblyConditionalMethodCall cenv env NeverMutates mBinding false mInfo NormalValUse mInst [ fixedExpr ] [] None + + let elemTy = destByrefTy g actualRetTy + UnifyTypes cenv env mBinding (mkNativePtrTy g elemTy) overallPatTy + + // For value types: + // let ptr: nativeptr = + // let pinned x = &(expr: 'a).GetPinnableReference() + // (nativeint) x + + // For reference types: + // let ptr: nativeptr = + // if isNull expr then + // (nativeint) expr + // else + // let pinned x = &(expr: 'a).GetPinnableReference() + // (nativeint) x + + let pinnedBinding = + mkCompGenLetIn mBinding "pinnedByref" actualRetTy pinnableReference (fun (v, ve) -> + v.SetIsFixed() + mkConvToNativeInt g ve mBinding) + + if isStructTy g overallExprTy then + Some pinnedBinding + else + Some (mkNullTest g mBinding fixedExpr pinnedBinding fixedExpr) + | None -> + None + warning(PossibleUnverifiableCode mBinding) match overallExprTy with | ty when isByrefTy g ty -> - let okByRef = - match stripDebugPoints (stripExpr fixedExpr) with - | Expr.Op (op, tyargs, args, _) -> + // Feature ExtendedFixedBindings allows *any* byref to be used with fixed bindings, whereas the old logic only allowed a specific + // subset. This preserves the old logic when the feature is turned off. + if not (g.langVersion.SupportsFeature LanguageFeature.ExtendedFixedBindings) then + let okByRef = + match stripDebugPoints (stripExpr fixedExpr) with + | Expr.Op (op, tyargs, args, _) -> match op, tyargs, args with | TOp.ValFieldGetAddr (rfref, _), _, [_] -> not rfref.Tycon.IsStructOrEnumTycon | TOp.ILAsm ([ I_ldflda fspec], _), _, _ -> fspec.DeclaringType.Boxity = ILBoxity.AsObject | TOp.ILAsm ([ I_ldelema _], _), _, _ -> true | TOp.RefAddrGet _, _, _ -> true | _ -> false - | _ -> false - if not okByRef then - error(Error(FSComp.SR.tcFixedNotAllowed(), mBinding)) + | _ -> false + + if not okByRef then + errorR (languageFeatureError g.langVersion LanguageFeature.ExtendedFixedBindings mBinding) let elemTy = destByrefTy g overallExprTy UnifyTypes cenv env mBinding (mkNativePtrTy g elemTy) overallPatTy @@ -10233,20 +10397,29 @@ and TcAndBuildFixedExpr (cenv: cenv) env (overallPatTy, fixedExpr, overallExprTy mkConvToNativeInt g ve mBinding) | ty when isStringTy g ty -> - let charPtrTy = mkNativePtrTy g g.char_ty - UnifyTypes cenv env mBinding charPtrTy overallPatTy - // - // let ptr: nativeptr = - // let pinned s = str - // (nativeptr)s + get_OffsettoStringData() - - mkCompGenLetIn mBinding "pinnedString" g.string_ty fixedExpr (fun (v, ve) -> - v.SetIsFixed() - let addrOffset = BuildOffsetToStringData cenv env mBinding - let stringAsNativeInt = mkConvToNativeInt g ve mBinding - let plusOffset = Expr.Op (TOp.ILAsm ([ AI_add ], [ g.nativeint_ty ]), [], [stringAsNativeInt; addrOffset], mBinding) - // check for non-null - mkNullTest g mBinding ve plusOffset ve) + let getPinnableRefCall = + if g.langVersion.SupportsFeature LanguageFeature.PreferStringGetPinnableReference then + tryBuildGetPinnableReferenceCall () + else + None + + match getPinnableRefCall with + | Some expr -> expr + | None -> + let charPtrTy = mkNativePtrTy g g.char_ty + UnifyTypes cenv env mBinding charPtrTy overallPatTy + // + // let ptr: nativeptr = + // let pinned s = str + // (nativeptr)s + get_OffsettoStringData() + + mkCompGenLetIn mBinding "pinnedString" g.string_ty fixedExpr (fun (v, ve) -> + v.SetIsFixed() + let addrOffset = BuildOffsetToStringData cenv env mBinding + let stringAsNativeInt = mkConvToNativeInt g ve mBinding + let plusOffset = Expr.Op (TOp.ILAsm ([ AI_add ], [ g.nativeint_ty ]), [], [stringAsNativeInt; addrOffset], mBinding) + // check for non-null + mkNullTest g mBinding ve plusOffset ve) | ty when isArray1DTy g ty -> let elemTy = destArrayTy g overallExprTy @@ -10279,7 +10452,10 @@ and TcAndBuildFixedExpr (cenv: cenv) env (overallPatTy, fixedExpr, overallExprTy zero) zero) - | _ -> error(Error(FSComp.SR.tcFixedNotAllowed(), mBinding)) + | _ -> + match tryBuildGetPinnableReferenceCall () with + | Some expr -> expr + | None -> error(Error(FSComp.SR.tcFixedNotAllowed(), mBinding)) /// Binding checking code, for all bindings including let bindings, let-rec bindings, member bindings and object-expression bindings and @@ -10291,7 +10467,7 @@ and TcNormalizedBinding declKind (cenv: cenv) env tpenv overallTy safeThisValOpt match bind with | NormalizedBinding(vis, kind, isInline, isMutable, attrs, xmlDoc, _, valSynData, pat, NormalizedBindingRhs(spatsL, rtyOpt, rhsExpr), mBinding, debugPoint) -> - let (SynValData(memberFlagsOpt, _, _)) = valSynData + let (SynValData(memberFlags = memberFlagsOpt)) = valSynData let callerName = match declKind, kind, pat with @@ -10349,8 +10525,8 @@ and TcNormalizedBinding declKind (cenv: cenv) env tpenv overallTy safeThisValOpt match rotRetSynAttrs with | [] -> valSynData | {Range=mHead} :: _ -> - let (SynValData(valMf, SynValInfo(args, SynArgInfo(attrs, opt, retId)), valId)) = valSynData - SynValData(valMf, SynValInfo(args, SynArgInfo({Attributes=rotRetSynAttrs; Range=mHead} :: attrs, opt, retId)), valId) + let (SynValData(valMf, SynValInfo(args, SynArgInfo(attrs, opt, retId)), valId, tap)) = valSynData + SynValData(valMf, SynValInfo(args, SynArgInfo({Attributes=rotRetSynAttrs; Range=mHead} :: attrs, opt, retId)), valId, tap) retAttribs, valAttribs, valSynData let isVolatile = HasFSharpAttribute g g.attrib_VolatileFieldAttribute valAttribs @@ -10426,7 +10602,7 @@ and TcNormalizedBinding declKind (cenv: cenv) env tpenv overallTy safeThisValOpt let isCompGen = false // Use the syntactic arity if we're defining a function - let (SynValData(_, valSynInfo, _)) = valSynData + let (SynValData(valInfo = valSynInfo)) = valSynData let prelimValReprInfo = TranslateSynValInfo cenv mBinding (TcAttributes cenv env) valSynInfo // Check the pattern of the l.h.s. of the binding @@ -10584,6 +10760,15 @@ and TcNonrecBindingTyparDecls cenv env tpenv bind = TcBindingTyparDecls true cenv env tpenv synTyparDecls and TcNonRecursiveBinding declKind cenv env tpenv ty binding = + // Check for unintended shadowing + match binding with + | SynBinding(headPat = SynPat.LongIdent(longDotId = SynLongIdent(id = [ident]); range = headPatRange)) -> + match env.eNameResEnv.ePatItems.TryFind ident.idText with + | Some (Item.UnionCase(_, false)) -> + warning(Error(FSComp.SR.tcInfoIfFunctionShadowsUnionCase(), headPatRange)) + | _ -> () + | _ -> () + let binding = BindingNormalization.NormalizeBinding ValOrMemberBinding cenv env binding let explicitTyparInfo, tpenv = TcNonrecBindingTyparDecls cenv env tpenv binding TcNormalizedBinding declKind cenv env tpenv ty None NoSafeInitInfo ([], explicitTyparInfo) binding @@ -10604,6 +10789,7 @@ and TcAttributeEx canFail (cenv: cenv) (env: TcEnv) attrTgt attrEx (synAttr: Syn let mAttr = synAttr.Range let typath, tyid = List.frontAndBack tycon let tpenv = emptyUnscopedTyparEnv + let ad = env.eAccessRights // if we're checking an attribute that was applied directly to a getter or a setter, then // what we're really checking against is a method, not a property @@ -10612,13 +10798,12 @@ and TcAttributeEx canFail (cenv: cenv) (env: TcEnv) attrTgt attrEx (synAttr: Syn let try1 n = let tyid = mkSynId tyid.idRange n let tycon = (typath @ [tyid]) - let ad = env.eAccessRights + match ResolveTypeLongIdent cenv.tcSink cenv.nameResolver ItemOccurence.UseInAttribute OpenQualified env.eNameResEnv ad tycon TypeNameResolutionStaticArgsInfo.DefiniteEmpty PermitDirectReferenceToGeneratedType.No with | Exception err -> raze err - | _ -> success(TcTypeAndRecover cenv NoNewTypars CheckCxs ItemOccurence.UseInAttribute WarnOnIWSAM.Yes env tpenv (SynType.App(SynType.LongIdent(SynLongIdent(tycon, [], List.replicate tycon.Length None)), None, [], [], None, false, mAttr)) ) - ForceRaise ((try1 (tyid.idText + "Attribute")) |> otherwise (fun () -> (try1 tyid.idText))) + | Result(tinstEnclosing, tcref) -> success(TcTypeApp cenv NoNewTypars CheckCxs ItemOccurence.UseInAttribute env tpenv mAttr tcref tinstEnclosing []) - let ad = env.eAccessRights + ForceRaise ((try1 (tyid.idText + "Attribute")) |> otherwise (fun () -> (try1 tyid.idText))) if not (IsTypeAccessible g cenv.amap mAttr ad ty) then errorR(Error(FSComp.SR.tcTypeIsInaccessible(), mAttr)) @@ -10717,7 +10902,7 @@ and TcAttributeEx canFail (cenv: cenv) (env: TcEnv) attrTgt attrEx (synAttr: Syn let setterItem, _ = ResolveLongIdentInType cenv.tcSink cenv.nameResolver env.NameEnv lookupKind m ad id IgnoreOverrides TypeNameResolutionInfo.Default ty let nm, isProp, argTy = match setterItem with - | Item.Property (_, [pinfo]) -> + | Item.Property (info = [pinfo]) -> if not pinfo.HasSetter then errorR(Error(FSComp.SR.tcPropertyCannotBeSet0(), m)) id.idText, true, pinfo.GetPropertyType(cenv.amap, m) @@ -11053,13 +11238,27 @@ and ApplyAbstractSlotInference (cenv: cenv) (envinner: TcEnv) (_: Val option) (a errorR(Error(FSComp.SR.tcNoMemberFoundForOverride(), memberId.idRange)) [] - | slots -> + | slot :: _ as slots -> match dispatchSlotsArityMatch with | meths when methInfosEquivByNameAndSig meths -> meths | [] -> - let details = NicePrint.multiLineStringOfMethInfos cenv.infoReader m envinner.DisplayEnv slots - errorR(Error(FSComp.SR.tcOverrideArityMismatch details, memberId.idRange)) - [] + let raiseGenericArityMismatch() = + let details = NicePrint.multiLineStringOfMethInfos cenv.infoReader m envinner.DisplayEnv slots + errorR(Error(FSComp.SR.tcOverrideArityMismatch details, memberId.idRange)) + [] + + match slot with + | FSMeth (_, _, valRef, _) -> + match valRef.TauType with + // https://github.com/dotnet/fsharp/issues/15307 + // check if abstract method expects tuple, give better error message + | TType_fun(_,TType_fun(TType_tuple _,_,_),_) -> + if not slot.NumArgs.IsEmpty && slot.NumArgs.Head = 1 then + errorR(Error(FSComp.SR.tcOverrideUsesMultipleArgumentsInsteadOfTuple(), memberId.idRange)) + [] + else raiseGenericArityMismatch() + | _ -> raiseGenericArityMismatch() + | _ -> raiseGenericArityMismatch() | _ -> [] // check that method to override is sealed is located at CheckOverridesAreAllUsedOnce (typrelns.fs) // We hit this case when it is ambiguous which abstract method is being implemented. @@ -11312,6 +11511,7 @@ and AnalyzeRecursiveInstanceMemberDecl thisId, memberId: Ident, toolId: Ident option, + isTransformedProperty: bool, bindingAttribs, vis2, tcrefContainerInfo, @@ -11375,8 +11575,7 @@ and AnalyzeRecursiveInstanceMemberDecl // the definition of these symbols. // // See https://github.com/fsharp/FSharp.Compiler.Service/issues/79. - //let memberId = match toolId with Some tid -> ident(memberId.idText, tid.idRange) | None -> memberId - //ignore toolId + let memberId = match toolId with Some tid when isTransformedProperty -> ident(memberId.idText, tid.idRange) | _ -> memberId envinner, tpenv, memberId, toolId, Some memberInfo, vis, vis2, None, enclosingDeclaredTypars, baseValOpt, explicitTyparInfo, bindingRhs, declaredTypars | _ -> @@ -11391,6 +11590,7 @@ and AnalyzeRecursiveDecl declaredTypars, thisIdOpt, valSynInfo, + isTransformedProperty, explicitTyparInfo, newslotsOK, overridesOK, @@ -11435,7 +11635,7 @@ and AnalyzeRecursiveDecl AnalyzeRecursiveInstanceMemberDecl (cenv, envinner, tpenv, declKind, synTyparDecls, valSynInfo, explicitTyparInfo, newslotsOK, - overridesOK, vis1, thisId, memberId, toolId, + overridesOK, vis1, thisId, memberId, toolId, isTransformedProperty, bindingAttribs, vis2, tcrefContainerInfo, memberFlagsOpt, ty, bindingRhs, mBinding) @@ -11465,7 +11665,7 @@ and AnalyzeAndMakeAndPublishRecursiveValue // Pull apart the inputs let (NormalizedBinding(vis1, bindingKind, isInline, isMutable, bindingSynAttribs, bindingXmlDoc, synTyparDecls, valSynData, declPattern, bindingRhs, mBinding, debugPoint)) = binding let (NormalizedBindingRhs(_, _, bindingExpr)) = bindingRhs - let (SynValData(memberFlagsOpt, valSynInfo, thisIdOpt)) = valSynData + let (SynValData(memberFlagsOpt, valSynInfo, thisIdOpt, transformedFromProperty)) = valSynData let (ContainerInfo(altActualParent, tcrefContainerInfo)) = containerInfo let attrTgt = declKind.AllowedAttribTargets memberFlagsOpt @@ -11488,7 +11688,8 @@ and AnalyzeAndMakeAndPublishRecursiveValue // OK, analyze the declaration and return lots of information about it let envinner, tpenv, bindingId, toolIdOpt, memberInfoOpt, vis, vis2, safeThisValOpt, enclosingDeclaredTypars, baseValOpt, explicitTyparInfo, bindingRhs, declaredTypars = - AnalyzeRecursiveDecl (cenv, envinner, tpenv, declKind, synTyparDecls, declaredTypars, thisIdOpt, valSynInfo, explicitTyparInfo, + AnalyzeRecursiveDecl (cenv, envinner, tpenv, declKind, synTyparDecls, declaredTypars, thisIdOpt, valSynInfo, + transformedFromProperty.IsSome, explicitTyparInfo, newslotsOK, overridesOK, vis1, declPattern, bindingAttribs, tcrefContainerInfo, memberFlagsOpt, ty, bindingRhs, mBinding) diff --git a/src/fcs-fable/src/Compiler/Checking/CheckExpressions.fsi b/src/fcs-fable/src/Compiler/Checking/CheckExpressions.fsi index 0d02f07a22..0ecc045f05 100644 --- a/src/fcs-fable/src/Compiler/Checking/CheckExpressions.fsi +++ b/src/fcs-fable/src/Compiler/Checking/CheckExpressions.fsi @@ -863,7 +863,7 @@ val TranslateSynValInfo: val TranslatePartialValReprInfo: tps: Typar list -> PrelimValReprInfo -> ValReprInfo /// Constrain two types to be equal within this type checking context -val UnifyTypes: cenv: TcFileState -> env: TcEnv -> m: range -> actualTy: TType -> expectedTy: TType -> unit +val UnifyTypes: cenv: TcFileState -> env: TcEnv -> m: range -> expectedTy: TType -> actualTy: TType -> unit val TcRuntimeTypeTest: isCast: bool -> @@ -895,7 +895,7 @@ val BuildFieldMap: ty: TType -> flds: ((Ident list * Ident) * 'T) list -> m: range -> - TypeInst * TyconRef * Map * (string * 'T) list + (TypeInst * TyconRef * Map * (string * 'T) list) option /// Check a long identifier 'Case' or 'Case argsR' that has been resolved to an active pattern case val TcPatLongIdentActivePatternCase: diff --git a/src/fcs-fable/src/Compiler/Checking/CheckFormatStrings.fs b/src/fcs-fable/src/Compiler/Checking/CheckFormatStrings.fs index e9224ebd58..e32d073cbd 100644 --- a/src/fcs-fable/src/Compiler/Checking/CheckFormatStrings.fs +++ b/src/fcs-fable/src/Compiler/Checking/CheckFormatStrings.fs @@ -72,6 +72,11 @@ let makeFmts (context: FormatStringCheckContext) (fragRanges: range list) (fmt: let sourceText = context.SourceText let lineStartPositions = context.LineStartPositions + // Number of curly braces required to delimiter interpolation holes + // = Number of $ chars starting a (triple quoted) string literal + // Set when we process first fragment range, default = 1 + let mutable delimLen = 1 + let mutable nQuotes = 1 [ for i, r in List.indexed fragRanges do if r.StartLine - 1 < lineStartPositions.Length && r.EndLine - 1 < lineStartPositions.Length then @@ -79,9 +84,16 @@ let makeFmts (context: FormatStringCheckContext) (fragRanges: range list) (fmt: let rLength = lineStartPositions[r.EndLine - 1] + r.EndColumn - startIndex let offset = if i = 0 then - match sourceText.GetSubTextString(startIndex, rLength) with - | PrefixedBy "$\"\"\"" len - | PrefixedBy "\"\"\"" len -> + let fullRangeText = sourceText.GetSubTextString(startIndex, rLength) + delimLen <- + fullRangeText + |> Seq.takeWhile (fun c -> c = '$') + |> Seq.length + let tripleQuotePrefix = + [String.replicate delimLen "$"; "\"\"\""] + |> String.concat "" + match fullRangeText with + | PrefixedBy tripleQuotePrefix len -> nQuotes <- 3 len | PrefixedBy "$@\"" len @@ -91,13 +103,13 @@ let makeFmts (context: FormatStringCheckContext) (fragRanges: range list) (fmt: | _ -> 1 else 1 // <- corresponds to '}' that's closing an interpolation hole - let fragLen = rLength - offset - (if i = numFrags - 1 then nQuotes else 1) + let fragLen = rLength - offset - (if i = numFrags - 1 then nQuotes else delimLen) (offset, sourceText.GetSubTextString(startIndex + offset, fragLen), r) else (1, fmt, r) - ] + ], delimLen -module internal Parsing = +module internal Parse = let flags (info: FormatInfoRegister) (fmt: string) (fmtPos: int) = let len = fmt.Length @@ -175,7 +187,7 @@ module internal Parsing = if p = None then None, fmtPos else p, pos' | _ -> None, fmtPos - // Explicitly typed holes in interpolated strings "....%d{x}..." get additional '%P()' as a hole place marker + // Explicitly typed expression gaps in interpolated strings "....%d{x}..." get additional '%P()' as an expression gap place marker let skipPossibleInterpolationHole isInterpolated isFormattableString (fmt: string) i = let len = fmt.Length if isInterpolated then @@ -231,10 +243,10 @@ let parseFormatStringInternal // let escapeFormatStringEnabled = g.langVersion.SupportsFeature Features.LanguageFeature.EscapeDotnetFormattableStrings - let fmt, fragments = + let fmt, fragments, delimLen = match context with | Some context when fragRanges.Length > 0 -> - let fmts = makeFmts context fragRanges fmt + let fmts, delimLen = makeFmts context fragRanges fmt // Join the fragments with holes. Note this join is only used on the IDE path, // the CheckExpressions.fs does its own joining with the right alignments etc. substituted @@ -245,11 +257,11 @@ let parseFormatStringInternal (0, fmts) ||> List.mapFold (fun i (offset, fmt, fragRange) -> (i, offset, fragRange), i + fmt.Length + 4) // the '4' is the length of '%P()' joins - fmt, fragments + fmt, fragments, delimLen | _ -> // Don't muck with the fmt when there is no source code context to go get the original // source code (i.e. when compiling or background checking) - (if escapeFormatStringEnabled then escapeDotnetFormatString fmt else fmt), [ (0, 1, m) ] + (if escapeFormatStringEnabled then escapeDotnetFormatString fmt else fmt), [ (0, 1, m) ], 1 let len = fmt.Length @@ -299,32 +311,44 @@ let parseFormatStringInternal and parseSpecifier acc (i, fragLine, fragCol) fragments = let startFragCol = fragCol - let fragCol = fragCol+1 - if fmt[i..(i+1)] = "%%" then + let nPercentSigns = + fmt[i..] + |> Seq.takeWhile (fun c -> c = '%') + |> Seq.length + if delimLen <= 1 && fmt[i..(i+1)] = "%%" then match context with | Some _ -> specifierLocations.Add( (Range.mkFileIndexRange m.FileIndex - (Position.mkPos fragLine startFragCol) - (Position.mkPos fragLine (fragCol + 1))), 0) + (Position.mkPos fragLine fragCol) + (Position.mkPos fragLine (fragCol+2))), 0) | None -> () appendToDotnetFormatString "%" - parseLoop acc (i+2, fragLine, fragCol+1) fragments + parseLoop acc (i+2, fragLine, fragCol+2) fragments + elif delimLen > 1 && nPercentSigns < delimLen then + appendToDotnetFormatString fmt[i..(i+nPercentSigns-1)] + parseLoop acc (i + nPercentSigns, fragLine, fragCol + nPercentSigns) fragments else - let i = i+1 + let fragCol, i = + if delimLen > 1 then + if nPercentSigns > delimLen then + "%" |> String.replicate (nPercentSigns - delimLen) |> appendToDotnetFormatString + fragCol + nPercentSigns, i + nPercentSigns + else + fragCol + 1, i + 1 if i >= len then failwith (FSComp.SR.forMissingFormatSpecifier()) let info = newInfo() let oldI = i - let posi, i = Parsing.position fmt i + let posi, i = Parse.position fmt i let fragCol = fragCol + i - oldI let oldI = i - let i = Parsing.flags info fmt i + let i = Parse.flags info fmt i let fragCol = fragCol + i - oldI let oldI = i - let widthArg,(widthValue, (precisionArg,i)) = Parsing.widthAndPrecision info fmt i + let widthArg,(widthValue, (precisionArg,i)) = Parse.widthAndPrecision info fmt i let fragCol = fragCol + i - oldI if i >= len then failwith (FSComp.SR.forBadPrecision()) @@ -340,7 +364,7 @@ let parseFormatStringInternal | Some n -> failwith (FSComp.SR.forDoesNotSupportPrefixFlag(c.ToString(), n.ToString())) | None -> () - let skipPossibleInterpolationHole pos = Parsing.skipPossibleInterpolationHole isInterpolated isFormattableString fmt pos + let skipPossibleInterpolationHole pos = Parse.skipPossibleInterpolationHole isInterpolated isFormattableString fmt pos // Implicitly typed holes in interpolated strings are translated to '... %P(...)...' in the // type checker. They should always have '(...)' after for format string. @@ -434,6 +458,8 @@ let parseFormatStringInternal // residue of hole "...{n}..." in interpolated strings become %P(...) | 'P' when isInterpolated -> + let (code, message) = FSComp.SR.alwaysUseTypedStringInterpolation() + warning(DiagnosticWithText(code, message, m)) checkOtherFlags ch let i = requireAndSkipInterpolationHoleFormat (i+1) // Note, the fragCol doesn't advance at all as these are magically inserted. diff --git a/src/fcs-fable/src/Compiler/Checking/CheckIncrementalClasses.fs b/src/fcs-fable/src/Compiler/Checking/CheckIncrementalClasses.fs index 9e6570056c..8ef4d3734f 100644 --- a/src/fcs-fable/src/Compiler/Checking/CheckIncrementalClasses.fs +++ b/src/fcs-fable/src/Compiler/Checking/CheckIncrementalClasses.fs @@ -36,20 +36,32 @@ type IncrClassBindingGroup = | IncrClassDo of expr: Expr * isStatic: bool * range: Range /// Typechecked info for implicit constructor and it's arguments -type IncrClassCtorLhs = +type StaticCtorInfo = { /// The TyconRef for the type being defined TyconRef: TyconRef - /// The type parameters allocated for the implicit instance constructor. - /// These may be equated with other (WillBeRigid) type parameters through equi-recursive inference, and so - /// should always be renormalized/canonicalized when used. - InstanceCtorDeclaredTypars: Typars + /// The type parameters allocated for the implicit construction. + IncrCtorDeclaredTypars: Typars /// The value representing the static implicit constructor. /// Lazy to ensure the static ctor value is only published if needed. StaticCtorValInfo: Lazy + /// The name generator used to generate the names of fields etc. within the type. + NameGenerator: NiceNameGenerator + } + + /// Get the type parameters of the implicit constructor, after taking equi-recursive inference into account. + member ctorInfo.GetNormalizedIncrCtorDeclaredTypars (cenv: cenv) denv m = + let g = cenv.g + let ctorDeclaredTypars = ctorInfo.IncrCtorDeclaredTypars + let ctorDeclaredTypars = ChooseCanonicalDeclaredTyparsAfterInference g denv ctorDeclaredTypars m + ctorDeclaredTypars + +/// Typechecked info for implicit constructor and it's arguments +type IncrClassCtorInfo = + { /// The value representing the implicit constructor. InstanceCtorVal: Val @@ -72,20 +84,46 @@ type IncrClassCtorLhs = /// The value representing the 'this' variable within the implicit instance constructor. InstanceCtorThisVal: Val - /// The name generator used to generate the names of fields etc. within the type. - NameGenerator: NiceNameGenerator } - /// Get the type parameters of the implicit constructor, after taking equi-recursive inference into account. - member ctorInfo.GetNormalizedInstanceCtorDeclaredTypars (cenv: cenv) denv m = - let g = cenv.g - let ctorDeclaredTypars = ctorInfo.InstanceCtorDeclaredTypars - let ctorDeclaredTypars = ChooseCanonicalDeclaredTyparsAfterInference g denv ctorDeclaredTypars m - ctorDeclaredTypars +/// Check and elaborate the "left hand side" of the implicit class construction +/// syntax. +let TcStaticImplicitCtorInfo_Phase2A(cenv: cenv, env, tcref: TyconRef, m, copyOfTyconTypars) = + + let g = cenv.g + + // Add class typars to env + let env = AddDeclaredTypars CheckForDuplicateTypars copyOfTyconTypars env + + // We only generate the cctor on demand, because we don't need it if there are no cctor actions. + // The code below has a side-effect (MakeAndPublishVal), so we only want to run it once if at all. + // The .cctor is never referenced by any other code. + let cctorValInfo = + lazy + let cctorArgs = [ fst(mkCompGenLocal m "unitVar" g.unit_ty) ] + + let cctorTy = mkFunTy g g.unit_ty g.unit_ty + let valSynData = SynValInfo([[]], SynInfo.unnamedRetVal) + let id = ident ("cctor", m) + CheckForNonAbstractInterface g ModuleOrMemberBinding tcref ClassCtorMemberFlags false id.idRange + let memberInfo = MakeMemberDataAndMangledNameForMemberVal(g, tcref, false, [], [], ClassCtorMemberFlags, valSynData, id, false) + let prelimValReprInfo = TranslateSynValInfo cenv m (TcAttributes cenv env) valSynData + let prelimTyschemeG = GeneralizedType(copyOfTyconTypars, cctorTy) + let valReprInfo = InferGenericArityFromTyScheme prelimTyschemeG prelimValReprInfo + let cctorValScheme = ValScheme(id, prelimTyschemeG, Some valReprInfo, None, Some memberInfo, false, ValInline.Never, NormalVal, Some (SynAccess.Private Range.Zero), false, true, false, false) + + let cctorVal = MakeAndPublishVal cenv env (Parent tcref, false, ModuleOrMemberBinding, ValNotInRecScope, cctorValScheme, [(* no attributes*)], XmlDoc.Empty, None, false) + cctorArgs, cctorVal, cctorValScheme + + { TyconRef = tcref + IncrCtorDeclaredTypars = copyOfTyconTypars + StaticCtorValInfo = cctorValInfo + NameGenerator = NiceNameGenerator() + } /// Check and elaborate the "left hand side" of the implicit class construction /// syntax. -let TcImplicitCtorLhs_Phase2A(cenv: cenv, env, tpenv, tcref: TyconRef, vis, attrs, spats, thisIdOpt, baseValOpt: Val option, safeInitInfo, m, copyOfTyconTypars, objTy, thisTy, xmlDoc: PreXmlDoc) = +let TcImplicitCtorInfo_Phase2A(cenv: cenv, env, tpenv, tcref: TyconRef, vis, attrs, spats, thisIdOpt, baseValOpt: Val option, safeInitInfo, m, copyOfTyconTypars, objTy, thisTy, xmlDoc: PreXmlDoc) = let g = cenv.g let baseValOpt = @@ -98,7 +136,7 @@ let TcImplicitCtorLhs_Phase2A(cenv: cenv, env, tpenv, tcref: TyconRef, vis, attr // Type check arguments by processing them as 'simple' patterns // NOTE: if we allow richer patterns here this is where we'd process those patterns - let ctorArgNames, patEnv = TcSimplePatsOfUnknownType cenv true CheckCxs env tpenv (SynSimplePats.SimplePats (spats, m)) + let ctorArgNames, patEnv = TcSimplePatsOfUnknownType cenv true CheckCxs env tpenv (SynSimplePats.SimplePats (spats, [], m)) let (TcPatLinearEnv(_, names, _)) = patEnv @@ -142,26 +180,6 @@ let TcImplicitCtorLhs_Phase2A(cenv: cenv, env, tpenv, tcref: TyconRef, vis, attr let ctorVal = MakeAndPublishVal cenv env (Parent tcref, false, ModuleOrMemberBinding, ValInRecScope isComplete, ctorValScheme, attribs, xmlDoc, None, false) ctorValScheme, ctorVal - // We only generate the cctor on demand, because we don't need it if there are no cctor actions. - // The code below has a side-effect (MakeAndPublishVal), so we only want to run it once if at all. - // The .cctor is never referenced by any other code. - let cctorValInfo = - lazy - let cctorArgs = [ fst(mkCompGenLocal m "unitVar" g.unit_ty) ] - - let cctorTy = mkFunTy g g.unit_ty g.unit_ty - let valSynData = SynValInfo([[]], SynInfo.unnamedRetVal) - let id = ident ("cctor", m) - CheckForNonAbstractInterface g ModuleOrMemberBinding tcref ClassCtorMemberFlags false id.idRange - let memberInfo = MakeMemberDataAndMangledNameForMemberVal(g, tcref, false, [], [], ClassCtorMemberFlags, valSynData, id, false) - let prelimValReprInfo = TranslateSynValInfo cenv m (TcAttributes cenv env) valSynData - let prelimTyschemeG = GeneralizedType(copyOfTyconTypars, cctorTy) - let valReprInfo = InferGenericArityFromTyScheme prelimTyschemeG prelimValReprInfo - let cctorValScheme = ValScheme(id, prelimTyschemeG, Some valReprInfo, None, Some memberInfo, false, ValInline.Never, NormalVal, Some (SynAccess.Private Range.Zero), false, true, false, false) - - let cctorVal = MakeAndPublishVal cenv env (Parent tcref, false, ModuleOrMemberBinding, ValNotInRecScope, cctorValScheme, [(* no attributes*)], XmlDoc.Empty, None, false) - cctorArgs, cctorVal, cctorValScheme - let thisVal = // --- Create this for use inside constructor let thisId = ident ("this", m) @@ -169,18 +187,13 @@ let TcImplicitCtorLhs_Phase2A(cenv: cenv, env, tpenv, tcref: TyconRef, vis, attr let thisVal = MakeAndPublishVal cenv env (ParentNone, false, ClassLetBinding false, ValNotInRecScope, thisValScheme, [], XmlDoc.Empty, None, false) thisVal - { TyconRef = tcref - InstanceCtorDeclaredTypars = copyOfTyconTypars - StaticCtorValInfo = cctorValInfo - InstanceCtorArgs = ctorArgs + { InstanceCtorArgs = ctorArgs InstanceCtorVal = ctorVal InstanceCtorValScheme = ctorValScheme InstanceCtorBaseValOpt = baseValOpt InstanceCtorSafeThisValOpt = safeThisValOpt InstanceCtorSafeInitInfo = safeInitInfo InstanceCtorThisVal = thisVal - // For generating names of local fields - NameGenerator = NiceNameGenerator() } @@ -259,13 +272,15 @@ type IncrClassReprInfo = /// /// /// - /// + /// + /// /// The vars forced to be fields due to static member bindings, instance initialization expressions or instance member bindings /// The vars forced to be fields due to instance member bindings /// /// member localRep.ChooseRepresentation (cenv: cenv, env: TcEnv, isStatic, isCtorArg, - ctorInfo: IncrClassCtorLhs, + staticCtorInfo: StaticCtorInfo, + ctorInfoOpt: IncrClassCtorInfo option, staticForcedFieldVars: FreeLocals, instanceForcedFieldVars: FreeLocals, takenFieldNames: Set, @@ -274,7 +289,7 @@ type IncrClassReprInfo = let v = bind.Var let relevantForcedFieldVars = (if isStatic then staticForcedFieldVars else instanceForcedFieldVars) - let tcref = ctorInfo.TyconRef + let tcref = staticCtorInfo.TyconRef let name, takenFieldNames = let isNameTaken = @@ -285,7 +300,7 @@ type IncrClassReprInfo = let nm = if isNameTaken then - ctorInfo.NameGenerator.FreshCompilerGeneratedName (v.LogicalName, v.Range) + staticCtorInfo.NameGenerator.FreshCompilerGeneratedName (v.LogicalName, v.Range) else v.LogicalName nm, takenFieldNames.Add nm @@ -329,7 +344,7 @@ type IncrClassReprInfo = let id = mkSynId v.Range name let memberInfo = MakeMemberDataAndMangledNameForMemberVal(g, tcref, false, [], [], memberFlags, valSynInfo, mkSynId v.Range name, true) - let copyOfTyconTypars = ctorInfo.GetNormalizedInstanceCtorDeclaredTypars cenv env.DisplayEnv ctorInfo.TyconRef.Range + let copyOfTyconTypars = staticCtorInfo.GetNormalizedIncrCtorDeclaredTypars cenv env.DisplayEnv staticCtorInfo.TyconRef.Range AdjustValToHaveValReprInfo v (Parent tcref) valReprInfo @@ -339,10 +354,13 @@ type IncrClassReprInfo = if isStatic then tauTy, valReprInfo else - let tauTy = mkFunTy g ctorInfo.InstanceCtorThisVal.Type v.TauType - let (ValReprInfo(tpNames, args, ret)) = valReprInfo - let valReprInfo = ValReprInfo(tpNames, ValReprInfo.selfMetadata :: args, ret) - tauTy, valReprInfo + match ctorInfoOpt with + | None -> tauTy, valReprInfo + | Some ctorInfo -> + let tauTy = mkFunTy g ctorInfo.InstanceCtorThisVal.Type v.TauType + let (ValReprInfo(tpNames, args, ret)) = valReprInfo + let valReprInfo = ValReprInfo(tpNames, ValReprInfo.selfMetadata :: args, ret) + tauTy, valReprInfo // Add the enclosing type parameters on to the function let valReprInfo = @@ -363,9 +381,9 @@ type IncrClassReprInfo = repr, takenFieldNames /// Extend the known local representations by choosing a representation for a binding - member localRep.ChooseAndAddRepresentation(cenv: cenv, env: TcEnv, isStatic, isCtorArg, ctorInfo: IncrClassCtorLhs, staticForcedFieldVars: FreeLocals, instanceForcedFieldVars: FreeLocals, bind: Binding) = + member localRep.ChooseAndAddRepresentation(cenv, env, isStatic, isCtorArg, staticCtorInfo, ctorInfoOpt, staticForcedFieldVars, instanceForcedFieldVars, bind: Binding) = let v = bind.Var - let repr, takenFieldNames = localRep.ChooseRepresentation (cenv, env, isStatic, isCtorArg, ctorInfo, staticForcedFieldVars, instanceForcedFieldVars, localRep.TakenFieldNames, bind ) + let repr, takenFieldNames = localRep.ChooseRepresentation (cenv, env, isStatic, isCtorArg, staticCtorInfo, ctorInfoOpt, staticForcedFieldVars, instanceForcedFieldVars, localRep.TakenFieldNames, bind ) // OK, representation chosen, now add it {localRep with TakenFieldNames=takenFieldNames @@ -451,8 +469,8 @@ type IncrClassReprInfo = /// Mutate a type definition by adding fields /// Used as part of processing "let" bindings in a type definition. - member localRep.PublishIncrClassFields (cenv, denv, cpath, ctorInfo: IncrClassCtorLhs, safeStaticInitInfo) = - let tcref = ctorInfo.TyconRef + member localRep.PublishIncrClassFields (cenv, denv, cpath, staticCtorInfo: StaticCtorInfo, safeStaticInitInfo) = + let tcref = staticCtorInfo.TyconRef let rfspecs = [ for KeyValue(v, repr) in localRep.ValReprs do match repr with @@ -461,7 +479,7 @@ type IncrClassReprInfo = // constructor arguments. This is important for the "default value" and "does it have an implicit default constructor" // semantic conditions for structs - see bug FSharp 1.0 5304. if isStatic || not tcref.IsFSharpStructOrEnumTycon then - let ctorDeclaredTypars = ctorInfo.GetNormalizedInstanceCtorDeclaredTypars cenv denv ctorInfo.TyconRef.Range + let ctorDeclaredTypars = staticCtorInfo.GetNormalizedIncrCtorDeclaredTypars cenv denv staticCtorInfo.TyconRef.Range // Note: tcrefObjTy contains the original "formal" typars, thisTy is the "fresh" one... f<>fresh. let revTypeInst = List.zip ctorDeclaredTypars (tcref.TyparsNoRange |> List.map mkTyparTy) @@ -474,11 +492,19 @@ type IncrClassReprInfo = | SafeInitField (_, fld) -> yield fld | NoSafeInitInfo -> () ] - let recdFields = Construct.MakeRecdFieldsTable (rfspecs @ tcref.AllFieldsAsList) - - // Mutate the entity_tycon_repr to publish the fields - tcref.Deref.entity_tycon_repr <- TFSharpObjectRepr { tcref.FSharpObjectModelTypeInfo with fsobjmodel_rfields = recdFields} + let allFields = rfspecs @ tcref.AllFieldsAsList + match allFields with + | [] -> () + | _ -> + match tcref.TypeReprInfo with + | TILObjectRepr _ -> () + | TFSharpTyconRepr info -> + let recdFields = Construct.MakeRecdFieldsTable (rfspecs @ tcref.AllFieldsAsList) + // Mutate the entity_tycon_repr to publish the fields + tcref.Deref.entity_tycon_repr <- TFSharpTyconRepr { info with fsobjmodel_rfields = recdFields} + | _ -> + errorR(InternalError("unreachable, anything that can have fields should be a TFSharpTyconRepr", tcref.Range)) /// Given localRep saying how locals have been represented, e.g. as fields. /// Given an expr under a given thisVal context. @@ -536,25 +562,13 @@ type IncrClassConstructionBindingsPhase2C = | Phase2CCtorJustAfterSuperInit | Phase2CCtorJustAfterLastLet -/// /// Given a set of 'let' bindings (static or not, recursive or not) that make up a class, /// generate their initialization expression(s). -/// -/// -/// -/// The lhs information about the implicit constructor -/// The call to the super class constructor -/// Should we place a sequence point at the 'inheritedTys call? -/// The declarations -/// -/// Record any unconstrained type parameters generalized for the outer members as "free choices" in the let bindings -/// let MakeCtorForIncrClassConstructionPhase2C( cenv: cenv, env: TcEnv, - ctorInfo: IncrClassCtorLhs, - inheritsExpr, - inheritsIsVisible, + staticCtorInfo: StaticCtorInfo, + instanceInfo: (IncrClassCtorInfo * Expr * bool) option, decs: IncrClassConstructionBindingsPhase2C list, memberBinds: Binding list, generalizedTyparsForRecursiveBlock, @@ -564,15 +578,30 @@ let MakeCtorForIncrClassConstructionPhase2C( let denv = env.DisplayEnv let g = cenv.g - let thisVal = ctorInfo.InstanceCtorThisVal - let m = thisVal.Range - let ctorDeclaredTypars = ctorInfo.GetNormalizedInstanceCtorDeclaredTypars cenv denv m + let thisValOpt = + match instanceInfo with + | None -> None + | Some (ctorInfo, _, _) -> Some ctorInfo.InstanceCtorThisVal + + let ctorInfoOpt = + match instanceInfo with + | None -> None + | Some (ctorInfo, _, _) -> Some ctorInfo + + let m = + match thisValOpt with + | Some thisVal -> thisVal.Range + | None -> staticCtorInfo.TyconRef.Range + + let ctorDeclaredTypars = staticCtorInfo.GetNormalizedIncrCtorDeclaredTypars cenv denv m ctorDeclaredTypars |> List.iter (SetTyparRigid env.DisplayEnv m) // Reconstitute the type with the correct quantified type variables. - ctorInfo.InstanceCtorVal.SetType (mkForallTyIfNeeded ctorDeclaredTypars ctorInfo.InstanceCtorVal.TauType) + match instanceInfo with + | Some (ctorInfo, _, _) -> ctorInfo.InstanceCtorVal.SetType (mkForallTyIfNeeded ctorDeclaredTypars ctorInfo.InstanceCtorVal.TauType) + | None -> () let freeChoiceTypars = ListSet.subtract typarEq generalizedTyparsForRecursiveBlock ctorDeclaredTypars @@ -627,7 +656,10 @@ let MakeCtorForIncrClassConstructionPhase2C( let instanceForcedFieldVars = (instanceForcedFieldVars, memberBinds) ||> accFreeInBindings // Any references to static variables in the 'inherits' expression force those static variables to be represented as fields - let staticForcedFieldVars = (staticForcedFieldVars, inheritsExpr) ||> accFreeInExpr + let staticForcedFieldVars = + match instanceInfo with + | Some (_, inheritsExpr, _) -> (staticForcedFieldVars, inheritsExpr) ||> accFreeInExpr + | None -> staticForcedFieldVars (staticForcedFieldVars.FreeLocals, instanceForcedFieldVars.FreeLocals) @@ -637,13 +669,16 @@ let MakeCtorForIncrClassConstructionPhase2C( let TransBind (reps: IncrClassReprInfo) (TBind(v, rhsExpr, spBind)) = if v.MustInline then error(Error(FSComp.SR.tcLocalClassBindingsCannotBeInline(), v.Range)) - let rhsExpr = reps.FixupIncrClassExprPhase2C cenv (Some thisVal) safeStaticInitInfo thisTyInst rhsExpr + let rhsExpr = reps.FixupIncrClassExprPhase2C cenv thisValOpt safeStaticInitInfo thisTyInst rhsExpr // The initialization of the 'ref cell' variable for 'this' is the only binding which comes prior to the super init let isPriorToSuperInit = - match ctorInfo.InstanceCtorSafeThisValOpt with + match instanceInfo with | None -> false - | Some v2 -> valEq v v2 + | Some (ctorInfo, _, _) -> + match ctorInfo.InstanceCtorSafeThisValOpt with + | None -> false + | Some v2 -> valEq v v2 match reps.LookupRepr v with | InMethod(isStatic, methodVal, _) -> @@ -661,8 +696,11 @@ let MakeCtorForIncrClassConstructionPhase2C( if isStatic then tauExpr, tauTy else - let e = mkLambda m thisVal (tauExpr, tauTy) - e, tyOfExpr g e + match thisValOpt with + | None -> tauExpr, tauTy + | Some thisVal -> + let e = mkLambda m thisVal (tauExpr, tauTy) + e, tyOfExpr g e // Replace the type parameters that used to be on the rhs with // the full set of type parameters including the type parameters of the enclosing class @@ -684,32 +722,35 @@ let MakeCtorForIncrClassConstructionPhase2C( | DebugPointAtBinding.Yes m, _ -> m | _ -> v.Range - let assignExpr = reps.MakeValueAssign (Some thisVal) thisTyInst NoSafeInitInfo v rhsExpr m + if isStatic = false && thisValOpt.IsNone then + (isPriorToSuperInit, id), [] + else + let assignExpr = reps.MakeValueAssign thisValOpt thisTyInst NoSafeInitInfo v rhsExpr m - let adjustSafeInitFieldExprOpt = - if isStatic then - match safeStaticInitInfo with - | SafeInitField (rfref, _) -> - let setExpr = mkStaticRecdFieldSet (rfref, thisTyInst, mkInt g m idx, m) - let setExpr = reps.FixupIncrClassExprPhase2C cenv (Some thisVal) NoSafeInitInfo thisTyInst setExpr - Some setExpr - | NoSafeInitInfo -> + let adjustSafeInitFieldExprOpt = + if isStatic then + match safeStaticInitInfo with + | SafeInitField (rfref, _) -> + let setExpr = mkStaticRecdFieldSet (rfref, thisTyInst, mkInt g m idx, m) + let setExpr = reps.FixupIncrClassExprPhase2C cenv thisValOpt NoSafeInitInfo thisTyInst setExpr + Some setExpr + | NoSafeInitInfo -> + None + else None - else - None - (isPriorToSuperInit, (fun e -> - let e = - match adjustSafeInitFieldExprOpt with - | None -> e - | Some adjustExpr -> mkCompGenSequential m adjustExpr e + (isPriorToSuperInit, (fun e -> + let e = + match adjustSafeInitFieldExprOpt with + | None -> e + | Some adjustExpr -> mkCompGenSequential m adjustExpr e - let assignExpr = - match spBind with - | DebugPointAtBinding.Yes _ -> mkDebugPoint m assignExpr - | _ -> assignExpr + let assignExpr = + match spBind with + | DebugPointAtBinding.Yes _ -> mkDebugPoint m assignExpr + | _ -> assignExpr - mkSequential m assignExpr e)), [] + mkSequential m assignExpr e)), [] /// Work out the implicit construction side effects of a 'let', 'let rec' or 'do' /// binding in the implicit class construction sequence @@ -717,7 +758,7 @@ let MakeCtorForIncrClassConstructionPhase2C( match dec with | IncrClassBindingGroup(binds, isStatic, isRec) -> let actions, reps, methodBinds = - let reps = (reps, binds) ||> List.fold (fun rep bind -> rep.ChooseAndAddRepresentation(cenv, env, isStatic, isCtorArg, ctorInfo, staticForcedFieldVars, instanceForcedFieldVars, bind)) // extend + let reps = (reps, binds) ||> List.fold (fun rep bind -> rep.ChooseAndAddRepresentation(cenv, env, isStatic, isCtorArg, staticCtorInfo, ctorInfoOpt, staticForcedFieldVars, instanceForcedFieldVars, bind)) // extend if isRec then // Note: the recursive calls are made via members on the object // or via access to fields. This means the recursive loop is "broken", @@ -736,7 +777,7 @@ let MakeCtorForIncrClassConstructionPhase2C( ([], actions, methodBinds), reps | IncrClassDo (doExpr, isStatic, mFull) -> - let doExpr = reps.FixupIncrClassExprPhase2C cenv (Some thisVal) safeStaticInitInfo thisTyInst doExpr + let doExpr = reps.FixupIncrClassExprPhase2C cenv thisValOpt safeStaticInitInfo thisTyInst doExpr // Extend the range of any immediate debug point to include the 'do' let doExpr = match doExpr with @@ -757,11 +798,14 @@ let MakeCtorForIncrClassConstructionPhase2C( // The call to the base class constructor is done so we can set the ref cell | Phase2CCtorJustAfterSuperInit -> let binders = - [ match ctorInfo.InstanceCtorSafeThisValOpt with + [ match instanceInfo with + | None -> () + | Some (ctorInfo, _, _) -> + match ctorInfo.InstanceCtorSafeThisValOpt with | None -> () | Some v -> let setExpr = mkRefCellSet g m ctorInfo.InstanceCtorThisVal.Type (exprForVal m v) (exprForVal m ctorInfo.InstanceCtorThisVal) - let setExpr = reps.FixupIncrClassExprPhase2C cenv (Some thisVal) safeStaticInitInfo thisTyInst setExpr + let setExpr = reps.FixupIncrClassExprPhase2C cenv thisValOpt safeStaticInitInfo thisTyInst setExpr let binder = (fun e -> mkSequential setExpr.Range setExpr e) let isPriorToSuperInit = false yield (isPriorToSuperInit, binder) ] @@ -772,10 +816,13 @@ let MakeCtorForIncrClassConstructionPhase2C( // which now allows members to be called. | Phase2CCtorJustAfterLastLet -> let binders = - [ match ctorInfo.InstanceCtorSafeInitInfo with + [ match instanceInfo with + | None -> () + | Some (ctorInfo, _, _) -> + match ctorInfo.InstanceCtorSafeInitInfo with | SafeInitField (rfref, _) -> - let setExpr = mkRecdFieldSetViaExprAddr (exprForVal m thisVal, rfref, thisTyInst, mkOne g m, m) - let setExpr = reps.FixupIncrClassExprPhase2C cenv (Some thisVal) safeStaticInitInfo thisTyInst setExpr + let setExpr = mkRecdFieldSetViaExprAddr (exprForVal m ctorInfo.InstanceCtorThisVal, rfref, thisTyInst, mkOne g m, m) + let setExpr = reps.FixupIncrClassExprPhase2C cenv thisValOpt safeStaticInitInfo thisTyInst setExpr let binder = (fun e -> mkSequential setExpr.Range setExpr e) let isPriorToSuperInit = false yield (isPriorToSuperInit, binder) @@ -804,7 +851,11 @@ let MakeCtorForIncrClassConstructionPhase2C( // the value is already available as an argument, and that nothing special needs to be done unless the // value is being stored into a field. let (cctorInitActions1, ctorInitActions1, methodBinds1), reps = - let binds = ctorInfo.InstanceCtorArgs |> List.map (fun v -> mkInvisibleBind v (exprForVal v.Range v)) + let binds = + match instanceInfo with + | None -> [] + | Some (ctorInfo, _, _) -> + ctorInfo.InstanceCtorArgs |> List.map (fun v -> mkInvisibleBind v (exprForVal v.Range v)) TransTrueDec true reps (IncrClassBindingGroup(binds, false, false)) // We expect that only ctorInitActions1 will be non-empty here, and even then only if some elements are stored in the field @@ -818,7 +869,10 @@ let MakeCtorForIncrClassConstructionPhase2C( let ctorInitActions = ctorInitActions1 @ List.concat ctorInitActions2 let methodBinds = methodBinds1 @ List.concat methodBinds2 - let ctorBody = + let ctorBodyOpt = + match instanceInfo with + | None -> None + | Some (ctorInfo, inheritsExpr, inheritsIsVisible) -> // Build the elements of the implicit constructor body, starting from the bottom // // @@ -843,7 +897,7 @@ let MakeCtorForIncrClassConstructionPhase2C( // // As a result, the most natural way to implement this would be to simply capture arg0 if needed // and access all variables via that. This would be done by rewriting the inheritsExpr as follows: - // let inheritsExpr = reps.FixupIncrClassExprPhase2C (Some thisVal) thisTyInst inheritsExpr + // let inheritsExpr = reps.FixupIncrClassExprPhase2C thisValOpt thisTyInst inheritsExpr // However, the rules of IL mean we are not actually allowed to capture arg0 // and store it as a closure field before the base class constructor is called. // @@ -857,7 +911,7 @@ let MakeCtorForIncrClassConstructionPhase2C( // Rewrite the expression to convert it to a load of a field if needed. // We are allowed to load fields from our own object even though we haven't called // the super class constructor yet. - let ldexpr = reps.FixupIncrClassExprPhase2C cenv (Some thisVal) safeStaticInitInfo thisTyInst (exprForVal m v) + let ldexpr = reps.FixupIncrClassExprPhase2C cenv thisValOpt safeStaticInitInfo thisTyInst (exprForVal m v) mkInvisibleLet m v ldexpr inheritsExpr | _ -> inheritsExpr @@ -875,9 +929,9 @@ let MakeCtorForIncrClassConstructionPhase2C( let ctorBody = List.foldBack (fun (_, binder) acc -> binder acc) ctorInitActionsPre ctorBody // Add the final wrapping to make this into a method - let ctorBody = mkMemberLambdas g m [] (Some thisVal) ctorInfo.InstanceCtorBaseValOpt [ctorInfo.InstanceCtorArgs] (ctorBody, g.unit_ty) + let ctorBody = mkMemberLambdas g m [] thisValOpt ctorInfo.InstanceCtorBaseValOpt [ctorInfo.InstanceCtorArgs] (ctorBody, g.unit_ty) - ctorBody + Some ctorBody let cctorBodyOpt = // Omit the .cctor if it's empty @@ -885,11 +939,10 @@ let MakeCtorForIncrClassConstructionPhase2C( | [] -> None | _ -> let cctorInitAction = List.foldBack (fun (_, binder) acc -> binder acc) cctorInitActions (mkUnit g m) - let m = thisVal.Range - let cctorArgs, cctorVal, _ = ctorInfo.StaticCtorValInfo.Force() + let cctorArgs, cctorVal, _ = staticCtorInfo.StaticCtorValInfo.Force() // Reconstitute the type of the implicit class constructor with the correct quantified type variables. cctorVal.SetType (mkForallTyIfNeeded ctorDeclaredTypars cctorVal.TauType) let cctorBody = mkMemberLambdas g m [] None None [cctorArgs] (cctorInitAction, g.unit_ty) Some cctorBody - ctorBody, cctorBodyOpt, methodBinds, reps + ctorBodyOpt, cctorBodyOpt, methodBinds, reps diff --git a/src/fcs-fable/src/Compiler/Checking/CheckIncrementalClasses.fsi b/src/fcs-fable/src/Compiler/Checking/CheckIncrementalClasses.fsi index cef65f2a33..0de56111ff 100644 --- a/src/fcs-fable/src/Compiler/Checking/CheckIncrementalClasses.fsi +++ b/src/fcs-fable/src/Compiler/Checking/CheckIncrementalClasses.fsi @@ -13,21 +13,26 @@ open FSharp.Compiler.Xml exception ParameterlessStructCtor of range: range -/// Typechecked info for implicit constructor and it's arguments -type IncrClassCtorLhs = +/// Typechecked info for implicit static constructor +type StaticCtorInfo = { /// The TyconRef for the type being defined TyconRef: TyconRef - /// The type parameters allocated for the implicit instance constructor. - /// These may be equated with other (WillBeRigid) type parameters through equi-recursive inference, and so - /// should always be renormalized/canonicalized when used. - InstanceCtorDeclaredTypars: Typars + /// The copy of the type parameters allocated for implicit construction + IncrCtorDeclaredTypars: Typars /// The value representing the static implicit constructor. /// Lazy to ensure the static ctor value is only published if needed. StaticCtorValInfo: Lazy + /// The name generator used to generate the names of fields etc. within the type. + NameGenerator: NiceNameGenerator + } + +/// Typechecked info for implicit instance constructor and it's arguments +type IncrClassCtorInfo = + { /// The value representing the implicit constructor. InstanceCtorVal: Val @@ -49,9 +54,6 @@ type IncrClassCtorLhs = /// The value representing the 'this' variable within the implicit instance constructor. InstanceCtorThisVal: Val - - /// The name generator used to generate the names of fields etc. within the type. - NameGenerator: NiceNameGenerator } /// Indicates how is a 'let' bound value in a class with implicit construction is represented in @@ -90,7 +92,7 @@ type IncrClassReprInfo = cenv: TcFileState * denv: DisplayEnv * cpath: CompilationPath * - ctorInfo: IncrClassCtorLhs * + staticCtorInfo: StaticCtorInfo * safeStaticInitInfo: SafeInitData -> unit @@ -116,7 +118,12 @@ type IncrClassConstructionBindingsPhase2C = /// Check and elaborate the "left hand side" of the implicit class construction /// syntax. -val TcImplicitCtorLhs_Phase2A: +val TcStaticImplicitCtorInfo_Phase2A: + cenv: TcFileState * env: TcEnv * tcref: TyconRef * m: range * copyOfTyconTypars: Typar list -> StaticCtorInfo + +/// Check and elaborate the "left hand side" of the implicit class construction +/// syntax. +val TcImplicitCtorInfo_Phase2A: cenv: TcFileState * env: TcEnv * tpenv: UnscopedTyparEnv * @@ -132,7 +139,7 @@ val TcImplicitCtorLhs_Phase2A: objTy: TType * thisTy: TType * xmlDoc: PreXmlDoc -> - IncrClassCtorLhs + IncrClassCtorInfo /// /// Given a set of 'let' bindings (static or not, recursive or not) that make up a class, @@ -140,9 +147,8 @@ val TcImplicitCtorLhs_Phase2A: /// /// /// -/// The lhs information about the implicit constructor -/// The call to the super class constructor -/// Should we place a sequence point at the 'inheritedTys call? +/// The information about the static implicit constructor +/// The lhs information about the implicit constructor, the call to the super class constructor and whether we should we place a sequence point at the 'inheritedTys call? /// The declarations /// /// Record any unconstrained type parameters generalized for the outer members as "free choices" in the let bindings @@ -150,11 +156,10 @@ val TcImplicitCtorLhs_Phase2A: val MakeCtorForIncrClassConstructionPhase2C: cenv: TcFileState * env: TcEnv * - ctorInfo: IncrClassCtorLhs * - inheritsExpr: Expr * - inheritsIsVisible: bool * + staticCtorInfo: StaticCtorInfo * + instanceInfo: (IncrClassCtorInfo * Expr * bool) option * decs: IncrClassConstructionBindingsPhase2C list * memberBinds: Binding list * generalizedTyparsForRecursiveBlock: Typar list * safeStaticInitInfo: SafeInitData -> - Expr * Expr option * Binding list * IncrClassReprInfo + Expr option * Expr option * Binding list * IncrClassReprInfo diff --git a/src/fcs-fable/src/Compiler/Checking/CheckPatterns.fs b/src/fcs-fable/src/Compiler/Checking/CheckPatterns.fs index 88998544d5..252066f868 100644 --- a/src/fcs-fable/src/Compiler/Checking/CheckPatterns.fs +++ b/src/fcs-fable/src/Compiler/Checking/CheckPatterns.fs @@ -60,7 +60,7 @@ let UnifyRefTupleType contextInfo (cenv: cenv) denv m ty ps = let rec TryAdjustHiddenVarNameToCompGenName cenv env (id: Ident) altNameRefCellOpt = match altNameRefCellOpt with | Some ({contents = SynSimplePatAlternativeIdInfo.Undecided altId } as altNameRefCell) -> - match ResolvePatternLongIdent cenv.tcSink cenv.nameResolver AllIdsOK false id.idRange env.eAccessRights env.eNameResEnv TypeNameResolutionInfo.Default [id] with + match ResolvePatternLongIdent cenv.tcSink cenv.nameResolver AllIdsOK false id.idRange env.eAccessRights env.eNameResEnv TypeNameResolutionInfo.Default [id] ExtraDotAfterIdentifier.No with | Item.NewDef _ -> // The name is not in scope as a pattern identifier (e.g. union case), so do not use the alternate ID None @@ -105,6 +105,12 @@ and TcSimplePat optionalArgsOK checkConstraints (cenv: cenv) ty env patEnv p = | _ -> UnifyTypes cenv env m ty ctyR let patEnvR = TcPatLinearEnv(tpenv, names, takenNames) + + // Ensure the untyped typar name sticks + match cty, ty with + | SynType.Var(typar = SynTypar(ident = untypedIdent)), TType_var(typar = typedTp) -> typedTp.SetIdent(untypedIdent) + | _ -> () + TcSimplePat optionalArgsOK checkConstraints cenv ty env patEnvR p | SynSimplePat.Attrib (p, _, _) -> @@ -115,8 +121,7 @@ and ValidateOptArgOrder (synSimplePats: SynSimplePats) = let rec getPats synSimplePats = match synSimplePats with - | SynSimplePats.SimplePats(p, m) -> p, m - | SynSimplePats.Typed(p, _, _) -> getPats p + | SynSimplePats.SimplePats(p, _, m) -> p, m let rec isOptArg pat = match pat with @@ -141,7 +146,7 @@ and TcSimplePats (cenv: cenv) optionalArgsOK checkConstraints ty env patEnv synS ValidateOptArgOrder synSimplePats match synSimplePats with - | SynSimplePats.SimplePats ([], m) -> + | SynSimplePats.SimplePats ([],_, m) -> // Unit "()" patterns in argument position become SynSimplePats.SimplePats([], _) in the // syntactic translation when building bindings. This is done because the // use of "()" has special significance for arity analysis and argument counting. @@ -157,27 +162,15 @@ and TcSimplePats (cenv: cenv) optionalArgsOK checkConstraints ty env patEnv synS let patEnvR = TcPatLinearEnv(tpenv, namesR, takenNamesR) [id.idText], patEnvR - | SynSimplePats.SimplePats ([synSimplePat], _) -> + | SynSimplePats.SimplePats (pats = [synSimplePat]) -> let v, patEnv = TcSimplePat optionalArgsOK checkConstraints cenv ty env patEnv synSimplePat [v], patEnv - | SynSimplePats.SimplePats (ps, m) -> + | SynSimplePats.SimplePats (ps, _, m) -> let ptys = UnifyRefTupleType env.eContextInfo cenv env.DisplayEnv m ty ps let ps', patEnvR = (patEnv, List.zip ptys ps) ||> List.mapFold (fun patEnv (ty, pat) -> TcSimplePat optionalArgsOK checkConstraints cenv ty env patEnv pat) ps', patEnvR - | SynSimplePats.Typed (p, cty, m) -> - let ctyR, tpenv = TcTypeAndRecover cenv NewTyparsOK CheckCxs ItemOccurence.UseInType WarnOnIWSAM.Yes env tpenv cty - - match p with - // Solitary optional arguments on members - | SynSimplePats.SimplePats([SynSimplePat.Id(_, _, _, _, true, _)], _) -> UnifyTypes cenv env m ty (mkOptionTy g ctyR) - | _ -> UnifyTypes cenv env m ty ctyR - - let patEnvR = TcPatLinearEnv(tpenv, names, takenNames) - - TcSimplePats cenv optionalArgsOK checkConstraints ty env patEnvR p - and TcSimplePatsOfUnknownType (cenv: cenv) optionalArgsOK checkConstraints env tpenv synSimplePats = let g = cenv.g let argTy = NewInferenceType g @@ -291,7 +284,7 @@ and TcPat warnOnUpper (cenv: cenv) env valReprInfo vFlags (patEnv: TcPatLinearEn | SynPat.ListCons(pat1, pat2, m, trivia) -> let longDotId = SynLongIdent((mkSynCaseName trivia.ColonColonRange opNameCons), [], [Some (FSharp.Compiler.SyntaxTrivia.IdentTrivia.OriginalNotation "::")]) - let args = SynArgPats.Pats [ SynPat.Tuple(false, [ pat1; pat2 ], m) ] + let args = SynArgPats.Pats [ SynPat.Tuple(false, [ pat1; pat2 ], [], m) ] TcPatLongIdent warnOnUpper cenv env ad valReprInfo vFlags patEnv ty (longDotId, None, args, None, m) | SynPat.Ands (pats, m) -> @@ -304,7 +297,7 @@ and TcPat warnOnUpper (cenv: cenv) env valReprInfo vFlags (patEnv: TcPatLinearEn errorR (Error(FSComp.SR.tcInvalidPattern(), m)) (fun _ -> TPat_error m), patEnv - | SynPat.Tuple (isExplicitStruct, args, m) -> + | SynPat.Tuple (isExplicitStruct, args, _, m) -> TcPatTuple warnOnUpper cenv env vFlags patEnv ty isExplicitStruct args m | SynPat.Paren (p, _) -> @@ -316,11 +309,6 @@ and TcPat warnOnUpper (cenv: cenv) env valReprInfo vFlags (patEnv: TcPatLinearEn | SynPat.Record (flds, m) -> TcRecordPat warnOnUpper cenv env vFlags patEnv ty flds m - | SynPat.DeprecatedCharRange (c1, c2, m) -> - errorR(Deprecated(FSComp.SR.tcUseWhenPatternGuard(), m)) - UnifyTypes cenv env m ty g.char_ty - (fun _ -> TPat_range(c1, c2, m)), patEnv - | SynPat.Null m -> TcNullPat cenv env patEnv ty m @@ -448,7 +436,10 @@ and TcPatArrayOrList warnOnUpper cenv env vFlags patEnv ty isArray args m = and TcRecordPat warnOnUpper cenv env vFlags patEnv ty fieldPats m = let fieldPats = fieldPats |> List.map (fun (fieldId, _, fieldPat) -> fieldId, fieldPat) - let tinst, tcref, fldsmap, _fldsList = BuildFieldMap cenv env true ty fieldPats m + match BuildFieldMap cenv env false ty fieldPats m with + | None -> (fun _ -> TPat_error m), patEnv + | Some(tinst, tcref, fldsmap, _fldsList) -> + let gtyp = mkAppTy tcref tinst let inst = List.zip (tcref.Typars m) tinst @@ -512,8 +503,9 @@ and TcPatLongIdent warnOnUpper cenv env ad valReprInfo vFlags (patEnv: TcPatLine | _ -> AllIdsOK let mLongId = rangeOfLid longId + let extraDot = if longDotId.ThereIsAnExtraDotAtTheEnd then ExtraDotAfterIdentifier.Yes else ExtraDotAfterIdentifier.No - match ResolvePatternLongIdent cenv.tcSink cenv.nameResolver warnOnUpperForId false m ad env.NameEnv TypeNameResolutionInfo.Default longId with + match ResolvePatternLongIdent cenv.tcSink cenv.nameResolver warnOnUpperForId false m ad env.NameEnv TypeNameResolutionInfo.Default longId extraDot with | Item.NewDef id -> TcPatLongIdentNewDef warnOnUpperForId warnOnUpper cenv env ad valReprInfo vFlags patEnv ty (vis, id, args, m) @@ -603,18 +595,23 @@ and TcPatLongIdentUnionCaseOrExnCase warnOnUpper cenv env ad vFlags patEnv ty (m let mkf, argTys, argNames = ApplyUnionCaseOrExn m cenv env ty item let numArgTys = argTys.Length + let warnOnUnionWithNoData = + g.langVersion.SupportsFeature(LanguageFeature.MatchNotAllowedForUnionCaseWithNoData) let args, extraPatternsFromNames = match args with | SynArgPats.Pats args -> - if g.langVersion.SupportsFeature(LanguageFeature.MatchNotAllowedForUnionCaseWithNoData) then + if warnOnUnionWithNoData then match args with - | [ SynPat.Wild _ ] | [ SynPat.Named _ ] when argNames.IsEmpty -> + | [ SynPat.Wild _ ] when argNames.IsEmpty -> + // Here we only care about the cases where the user has written the wildcard pattern explicitly + // | Case _ -> ... + // let myDiscardedArgFunc(Case _) = ...""" + // This needs to be a waring because it was a valid pattern in version 7.0 and earlier and we don't want to break existing code. + // The rest of the cases will still be reported as FS0725 warning(Error(FSComp.SR.matchNotAllowedForUnionCaseWithNoData(), m)) - args, [] - | _ -> args, [] - else - args, [] + | _ -> () + args, [] | SynArgPats.NamePatPairs (pairs, m, _) -> // rewrite patterns from the form (name-N = pat-N; ...) to (..._, pat-N, _...) // so type T = Case of name: int * value: int @@ -659,25 +656,21 @@ and TcPatLongIdentUnionCaseOrExnCase warnOnUpper cenv env ad vFlags patEnv ty (m let args = List.ofArray result if result.Length = 1 then args, extraPatterns - else [ SynPat.Tuple(false, args, m) ], extraPatterns + else [ SynPat.Tuple(false, args, [], m) ], extraPatterns let args, extraPatterns = match args with | [] -> [], [] // note: the next will always be parenthesized - | [SynPatErrorSkip(SynPat.Tuple (false, args, _)) | SynPatErrorSkip(SynPat.Paren(SynPatErrorSkip(SynPat.Tuple (false, args, _)), _))] when numArgTys > 1 -> args, [] + | [SynPatErrorSkip(SynPat.Tuple (false, args, _, _)) | SynPatErrorSkip(SynPat.Paren(SynPatErrorSkip(SynPat.Tuple (false, args, _, _)), _))] when numArgTys > 1 -> args, [] // note: we allow both 'C _' and 'C (_)' regardless of number of argument of the pattern | [SynPatErrorSkip(SynPat.Wild _ as e) | SynPatErrorSkip(SynPat.Paren(SynPatErrorSkip(SynPat.Wild _ as e), _))] -> List.replicate numArgTys e, [] | args when numArgTys = 0 -> - if g.langVersion.SupportsFeature(LanguageFeature.MatchNotAllowedForUnionCaseWithNoData) then - [], args - else - errorR (Error (FSComp.SR.tcUnionCaseDoesNotTakeArguments (), m)) - [], args - + errorR (Error (FSComp.SR.tcUnionCaseDoesNotTakeArguments (), m)) + [], args | arg :: rest when numArgTys = 1 -> if numArgTys = 1 && not (List.isEmpty rest) then errorR (Error (FSComp.SR.tcUnionCaseRequiresOneArgument (), m)) diff --git a/src/fcs-fable/src/Compiler/Checking/CheckRecordSyntaxHelpers.fs b/src/fcs-fable/src/Compiler/Checking/CheckRecordSyntaxHelpers.fs index a8dd41f1ea..a1d36d6359 100644 --- a/src/fcs-fable/src/Compiler/Checking/CheckRecordSyntaxHelpers.fs +++ b/src/fcs-fable/src/Compiler/Checking/CheckRecordSyntaxHelpers.fs @@ -33,16 +33,17 @@ let GroupUpdatesToNestedFields (fields: ((Ident list * Ident) * SynExpr option) | x :: [] -> x :: res | x :: y :: ys -> match x, y with - | (lidwid, Some (SynExpr.Record (baseInfo, copyInfo, aFlds, m))), (_, Some (SynExpr.Record (recordFields = bFlds))) -> + | (lidwid, Some (SynExpr.Record (baseInfo, copyInfo, fields1, m))), (_, Some (SynExpr.Record (recordFields = fields2))) -> let reducedRecd = - (lidwid, Some(SynExpr.Record(baseInfo, copyInfo, aFlds @ bFlds, m))) + (lidwid, Some(SynExpr.Record(baseInfo, copyInfo, fields1 @ fields2, m))) - groupIfNested (reducedRecd :: res) ys - | (lidwid, Some (SynExpr.AnonRecd (isStruct, copyInfo, aFlds, m, trivia))), (_, Some (SynExpr.AnonRecd (recordFields = bFlds))) -> + groupIfNested res (reducedRecd :: ys) + | (lidwid, Some (SynExpr.AnonRecd (isStruct, copyInfo, fields1, m, trivia))), + (_, Some (SynExpr.AnonRecd (recordFields = fields2))) -> let reducedRecd = - (lidwid, Some(SynExpr.AnonRecd(isStruct, copyInfo, aFlds @ bFlds, m, trivia))) + (lidwid, Some(SynExpr.AnonRecd(isStruct, copyInfo, fields1 @ fields2, m, trivia))) - groupIfNested (reducedRecd :: res) ys + groupIfNested res (reducedRecd :: ys) | _ -> groupIfNested (x :: res) (y :: ys) fields @@ -55,8 +56,8 @@ let GroupUpdatesToNestedFields (fields: ((Ident list * Ident) * SynExpr option) /// Expands a long identifier into nested copy-and-update expressions. /// -/// `{ x with A.B = 0 }` becomes `{ x with A = { x.A with B = 0 } }` -let TransformAstForNestedUpdates (cenv: TcFileState) env overallTy (lid: LongIdent) exprBeingAssigned withExpr = +/// `{ x with A.B = 0; A.C = "" }` becomes `{ x with A = { x.A with B = 0 }; A = { x.A with C = "" } }` +let TransformAstForNestedUpdates (cenv: TcFileState) (env: TcEnv) overallTy (lid: LongIdent) exprBeingAssigned withExpr = let recdExprCopyInfo ids withExpr id = let upToId origSepRng id lidwd = let rec buildLid res (id: Ident) = @@ -78,14 +79,14 @@ let TransformAstForNestedUpdates (cenv: TcFileState) env overallTy (lid: LongIde | [ _ ] -> [ origSepRng ] | _ :: t -> origSepRng - :: List.map (fun (s: Ident, e: Ident) -> mkRange s.idRange.FileName s.idRange.End e.idRange.Start) t + :: List.map (fun (s: Ident, e: Ident) -> withStartEnd s.idRange.End e.idRange.Start s.idRange) t let lid = buildLid [] id lidwd |> List.rev (lid, List.pairwise lid |> calcLidSeparatorRanges origSepRng) let totalRange (origId: Ident) (id: Ident) = - mkRange origId.idRange.FileName origId.idRange.End id.idRange.Start + withStartEnd origId.idRange.End id.idRange.Start origId.idRange let rangeOfBlockSeperator (id: Ident) = let idEnd = id.idRange.End @@ -94,7 +95,7 @@ let TransformAstForNestedUpdates (cenv: TcFileState) env overallTy (lid: LongIde let blockSeperatorStartPos = mkPos idEnd.Line blockSeperatorStartCol let blockSeporatorEndPos = mkPos idEnd.Line blockSeperatorEndCol - mkRange id.idRange.FileName blockSeperatorStartPos blockSeporatorEndPos + withStartEnd blockSeperatorStartPos blockSeporatorEndPos id.idRange match withExpr with | SynExpr.Ident origId, (sepRange, _) -> @@ -102,31 +103,33 @@ let TransformAstForNestedUpdates (cenv: TcFileState) env overallTy (lid: LongIde Some(SynExpr.LongIdent(false, LongIdentWithDots(lid, rng), None, totalRange origId id), (rangeOfBlockSeperator id, None)) | _ -> None - let rec synExprRecd copyInfo (id: Ident) fields exprBeingAssigned = - match fields with + let rec synExprRecd copyInfo (outerFieldId: Ident) innerFields exprBeingAssigned = + match innerFields with | [] -> failwith "unreachable" - | (fieldId, anonInfo) :: rest -> + | (fieldId: Ident, item) :: rest -> + CallNameResolutionSink cenv.tcSink (fieldId.idRange, env.NameEnv, item, [], ItemOccurence.Use, env.AccessRights) + + let fieldId = ident (fieldId.idText, fieldId.idRange.MakeSynthetic()) + let nestedField = if rest.IsEmpty then exprBeingAssigned else synExprRecd copyInfo fieldId rest exprBeingAssigned - let m = id.idRange.MakeSynthetic() - - match anonInfo with - | Some { - AnonRecdTypeInfo.TupInfo = TupInfo.Const isStruct - } -> + match item with + | Item.AnonRecdField(anonInfo = { + AnonRecdTypeInfo.TupInfo = TupInfo.Const isStruct + }) -> let fields = [ LongIdentWithDots([ fieldId ], []), None, nestedField ] - SynExpr.AnonRecd(isStruct, copyInfo id, fields, m, { OpeningBraceRange = range0 }) + SynExpr.AnonRecd(isStruct, copyInfo outerFieldId, fields, outerFieldId.idRange, { OpeningBraceRange = range0 }) | _ -> let fields = [ SynExprRecordField((LongIdentWithDots([ fieldId ], []), true), None, Some nestedField, None) ] - SynExpr.Record(None, copyInfo id, fields, m) + SynExpr.Record(None, copyInfo outerFieldId, fields, outerFieldId.idRange) let access, fields = ResolveNestedField cenv.tcSink cenv.nameResolver env.eNameResEnv env.eAccessRights overallTy lid @@ -134,7 +137,12 @@ let TransformAstForNestedUpdates (cenv: TcFileState) env overallTy (lid: LongIde match access, fields with | _, [] -> failwith "unreachable" | accessIds, [ (fieldId, _) ] -> (accessIds, fieldId), Some exprBeingAssigned - | accessIds, (fieldId, _) :: rest -> + | accessIds, (outerFieldId, item) :: rest -> checkLanguageFeatureAndRecover cenv.g.langVersion LanguageFeature.NestedCopyAndUpdate (rangeOfLid lid) - (accessIds, fieldId), Some(synExprRecd (recdExprCopyInfo (fields |> List.map fst) withExpr) fieldId rest exprBeingAssigned) + CallNameResolutionSink cenv.tcSink (outerFieldId.idRange, env.NameEnv, item, [], ItemOccurence.Use, env.AccessRights) + + let outerFieldId = ident (outerFieldId.idText, outerFieldId.idRange.MakeSynthetic()) + + (accessIds, outerFieldId), + Some(synExprRecd (recdExprCopyInfo (fields |> List.map fst) withExpr) outerFieldId rest exprBeingAssigned) diff --git a/src/fcs-fable/src/Compiler/Checking/CheckRecordSyntaxHelpers.fsi b/src/fcs-fable/src/Compiler/Checking/CheckRecordSyntaxHelpers.fsi index b4eb4bc994..f239c82436 100644 --- a/src/fcs-fable/src/Compiler/Checking/CheckRecordSyntaxHelpers.fsi +++ b/src/fcs-fable/src/Compiler/Checking/CheckRecordSyntaxHelpers.fsi @@ -3,6 +3,7 @@ module internal FSharp.Compiler.CheckRecordSyntaxHelpers open FSharp.Compiler.CheckBasics +open FSharp.Compiler.NameResolution open FSharp.Compiler.Syntax open FSharp.Compiler.Text open FSharp.Compiler.TypedTree diff --git a/src/fcs-fable/src/Compiler/Checking/ConstraintSolver.fs b/src/fcs-fable/src/Compiler/Checking/ConstraintSolver.fs index 2ffda750db..8eeb6d11bb 100644 --- a/src/fcs-fable/src/Compiler/Checking/ConstraintSolver.fs +++ b/src/fcs-fable/src/Compiler/Checking/ConstraintSolver.fs @@ -246,9 +246,9 @@ exception ConstraintSolverError of string * range * range exception ErrorFromApplyingDefault of tcGlobals: TcGlobals * displayEnv: DisplayEnv * Typar * TType * error: exn * range: range -exception ErrorFromAddingTypeEquation of tcGlobals: TcGlobals * displayEnv: DisplayEnv * actualTy: TType * expectedTy: TType * error: exn * range: range +exception ErrorFromAddingTypeEquation of tcGlobals: TcGlobals * displayEnv: DisplayEnv * expectedTy: TType * actualTy: TType * error: exn * range: range -exception ErrorsFromAddingSubsumptionConstraint of tcGlobals: TcGlobals * displayEnv: DisplayEnv * actualTy: TType * expectedTy: TType * error: exn * ctxtInfo: ContextInfo * parameterRange: range +exception ErrorsFromAddingSubsumptionConstraint of tcGlobals: TcGlobals * displayEnv: DisplayEnv * expectedTy: TType * actualTy: TType * error: exn * ctxtInfo: ContextInfo * parameterRange: range exception ErrorFromAddingConstraint of displayEnv: DisplayEnv * error: exn * range: range @@ -397,53 +397,22 @@ let rec isNativeIntegerTy g ty = typeEquivAux EraseMeasures g g.unativeint_ty ty || (isEnumTy g ty && isNativeIntegerTy g (underlyingTypeOfEnumTy g ty)) -let isSignedIntegerTy g ty = - typeEquivAux EraseMeasures g g.sbyte_ty ty || - typeEquivAux EraseMeasures g g.int16_ty ty || - typeEquivAux EraseMeasures g g.int32_ty ty || - typeEquivAux EraseMeasures g g.nativeint_ty ty || - typeEquivAux EraseMeasures g g.int64_ty ty - -let isUnsignedIntegerTy g ty = - typeEquivAux EraseMeasures g g.byte_ty ty || - typeEquivAux EraseMeasures g g.uint16_ty ty || - typeEquivAux EraseMeasures g g.uint32_ty ty || - typeEquivAux EraseMeasures g g.unativeint_ty ty || - typeEquivAux EraseMeasures g g.uint64_ty ty - let rec IsIntegerOrIntegerEnumTy g ty = isSignedIntegerTy g ty || isUnsignedIntegerTy g ty || (isEnumTy g ty && IsIntegerOrIntegerEnumTy g (underlyingTypeOfEnumTy g ty)) -let isIntegerTy g ty = - isSignedIntegerTy g ty || - isUnsignedIntegerTy g ty - let isStringTy g ty = typeEquiv g g.string_ty ty let isCharTy g ty = typeEquiv g g.char_ty ty let isBoolTy g ty = typeEquiv g g.bool_ty ty -/// float or float32 or float<_> or float32<_> -let isFpTy g ty = - typeEquivAux EraseMeasures g g.float_ty ty || - typeEquivAux EraseMeasures g g.float32_ty ty - -/// decimal or decimal<_> -let isDecimalTy g ty = - typeEquivAux EraseMeasures g g.decimal_ty ty - let IsNonDecimalNumericOrIntegralEnumType g ty = IsIntegerOrIntegerEnumTy g ty || isFpTy g ty let IsNumericOrIntegralEnumType g ty = IsNonDecimalNumericOrIntegralEnumType g ty || isDecimalTy g ty -let IsNonDecimalNumericType g ty = isIntegerTy g ty || isFpTy g ty - -let IsNumericType g ty = IsNonDecimalNumericType g ty || isDecimalTy g ty - -let IsRelationalType g ty = IsNumericType g ty || isStringTy g ty || isCharTy g ty || isBoolTy g ty +let IsRelationalType g ty = isNumericType g ty || isStringTy g ty || isCharTy g ty || isBoolTy g ty let IsCharOrStringType g ty = isCharTy g ty || isStringTy g ty @@ -726,7 +695,7 @@ and SolveTypStaticReq (csenv: ConstraintSolverEnv) trace req ty = let vs = ListMeasureVarOccsWithNonZeroExponents ms trackErrors { for tpr, _ in vs do - return! SolveTypStaticReqTypar csenv trace req tpr + do! SolveTypStaticReqTypar csenv trace req tpr } | _ -> match tryAnyParTy csenv.g ty with @@ -1090,41 +1059,76 @@ and SolveTyparsEqualTypes (csenv: ConstraintSolverEnv) ndeep m2 (trace: Optional } and SolveAnonInfoEqualsAnonInfo (csenv: ConstraintSolverEnv) m2 (anonInfo1: AnonRecdTypeInfo) (anonInfo2: AnonRecdTypeInfo) = - if evalTupInfoIsStruct anonInfo1.TupInfo <> evalTupInfoIsStruct anonInfo2.TupInfo then ErrorD (ConstraintSolverError(FSComp.SR.tcTupleStructMismatch(), csenv.m,m2)) else - (match anonInfo1.Assembly, anonInfo2.Assembly with - | ccu1, ccu2 -> if not (ccuEq ccu1 ccu2) then ErrorD (ConstraintSolverError(FSComp.SR.tcAnonRecdCcuMismatch(ccu1.AssemblyName, ccu2.AssemblyName), csenv.m,m2)) else ResultD () - ) ++ (fun () -> - - if not (anonInfo1.SortedNames = anonInfo2.SortedNames) then - let (|Subset|Superset|Overlap|CompletelyDifferent|) (first, second) = - let first = Set first - let second = Set second - let secondOnly = Set.toList (second - first) - let firstOnly = Set.toList (first - second) - - if second.IsSubsetOf first then - Subset firstOnly - elif second.IsSupersetOf first then - Superset secondOnly - elif Set.intersect first second <> Set.empty then - Overlap(firstOnly, secondOnly) - else - CompletelyDifferent(Seq.toList first) - - let message = - match anonInfo1.SortedNames, anonInfo2.SortedNames with - | Subset missingFields -> - FSComp.SR.tcAnonRecdFieldNameSubset(string missingFields) - | Superset extraFields -> - FSComp.SR.tcAnonRecdFieldNameSuperset(string extraFields) - | Overlap (missingFields, extraFields) -> - FSComp.SR.tcAnonRecdFieldNameMismatch(string missingFields, string extraFields) - | CompletelyDifferent missingFields -> - FSComp.SR.tcAnonRecdFieldNameDifferent(string missingFields) - - ErrorD (ConstraintSolverError(message, csenv.m,m2)) - else - ResultD ()) + if evalTupInfoIsStruct anonInfo1.TupInfo <> evalTupInfoIsStruct anonInfo2.TupInfo then + ErrorD (ConstraintSolverError(FSComp.SR.tcTupleStructMismatch(), csenv.m,m2)) + else + trackErrors { + if not (ccuEq anonInfo1.Assembly anonInfo2.Assembly) then + do! ErrorD (ConstraintSolverError(FSComp.SR.tcAnonRecdCcuMismatch(anonInfo1.Assembly.AssemblyName, anonInfo2.Assembly.AssemblyName), csenv.m,m2)) + + if not (anonInfo1.SortedNames = anonInfo2.SortedNames) then + let (|Subset|Superset|Overlap|CompletelyDifferent|) (first, second) = + let first = Set first + let second = Set second + let secondOnly = Set.toList (second - first) + let firstOnly = Set.toList (first - second) + + if second.IsSubsetOf first then + Subset firstOnly + elif second.IsSupersetOf first then + Superset secondOnly + elif Set.intersect first second <> Set.empty then + Overlap(firstOnly, secondOnly) + else + let first = Set.toList first + let second = Set.toList second + CompletelyDifferent(first, second) + + let message = + match anonInfo1.SortedNames, anonInfo2.SortedNames with + | Subset missingFields -> + match missingFields with + | [missingField] -> + FSComp.SR.tcAnonRecdSingleFieldNameSubset(string missingField) + | _ -> + let missingFields = missingFields |> List.map(sprintf "'%s'") + let missingFields = String.concat ", " missingFields + FSComp.SR.tcAnonRecdMultipleFieldsNameSubset(string missingFields) + | Superset extraFields -> + match extraFields with + | [extraField] -> + FSComp.SR.tcAnonRecdSingleFieldNameSuperset(string extraField) + | _ -> + let extraFields = extraFields |> List.map(sprintf "'%s'") + let extraFields = String.concat ", " extraFields + FSComp.SR.tcAnonRecdMultipleFieldsNameSuperset(string extraFields) + | Overlap (missingFields, extraFields) -> + FSComp.SR.tcAnonRecdFieldNameMismatch(string missingFields, string extraFields) + | CompletelyDifferent missingFields -> + let missingFields, usedFields = missingFields + match missingFields, usedFields with + | [ missingField ], [ usedField ] -> + FSComp.SR.tcAnonRecdSingleFieldNameSingleDifferent(missingField, usedField) + | [ missingField ], usedFields -> + let usedFields = usedFields |> List.map(sprintf "'%s'") + let usedFields = String.concat ", " usedFields + FSComp.SR.tcAnonRecdSingleFieldNameMultipleDifferent(missingField, usedFields) + | missingFields, [ usedField ] -> + let missingFields = missingFields |> List.map(sprintf "'%s'") + let missingFields = String.concat ", " missingFields + FSComp.SR.tcAnonRecdMultipleFieldNameSingleDifferent(missingFields, usedField) + + | missingFields, usedFields -> + let missingFields = missingFields |> List.map(sprintf "'%s'") + let missingFields = String.concat ", " missingFields + let usedFields = usedFields |> List.map(sprintf "'%s'") + let usedFields = String.concat ", " usedFields + FSComp.SR.tcAnonRecdMultipleFieldNameMultipleDifferent(missingFields, usedFields) + + do! ErrorD (ConstraintSolverError(message, csenv.m,m2)) + else + do! ResultD() + } /// Add the constraint "ty1 = ty2" to the constraint problem. /// Propagate all effects of adding this constraint, e.g. to solve type variables @@ -1186,10 +1190,10 @@ and SolveTypeEqualsType (csenv: ConstraintSolverEnv) ndeep m2 (trace: OptionalTr if evalTupInfoIsStruct tupInfo1 <> evalTupInfoIsStruct tupInfo2 then ErrorD (ConstraintSolverError(FSComp.SR.tcTupleStructMismatch(), csenv.m, m2)) else SolveTypeEqualsTypeEqns csenv ndeep m2 trace None l1 l2 - | TType_anon (anonInfo1, l1),TType_anon (anonInfo2, l2) -> - SolveAnonInfoEqualsAnonInfo csenv m2 anonInfo1 anonInfo2 ++ (fun () -> - SolveTypeEqualsTypeEqns csenv ndeep m2 trace None l1 l2) - + | TType_anon (anonInfo1, l1),TType_anon (anonInfo2, l2) -> trackErrors { + do! SolveAnonInfoEqualsAnonInfo csenv m2 anonInfo1 anonInfo2 + do! SolveTypeEqualsTypeEqns csenv ndeep m2 trace None l1 l2 + } | TType_fun (domainTy1, rangeTy1, _), TType_fun (domainTy2, rangeTy2, _) -> SolveFunTypeEqn csenv ndeep m2 trace None domainTy1 domainTy2 rangeTy1 rangeTy2 @@ -1203,7 +1207,9 @@ and SolveTypeEqualsType (csenv: ConstraintSolverEnv) ndeep m2 (trace: OptionalTr if not (typarsAEquiv g aenv tps1 tps2) then localAbortD else SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace bodyTy1 bodyTy2 - | TType_ucase (uc1, l1), TType_ucase (uc2, l2) when g.unionCaseRefEq uc1 uc2 -> SolveTypeEqualsTypeEqns csenv ndeep m2 trace None l1 l2 + | TType_ucase (uc1, l1), TType_ucase (uc2, l2) when g.unionCaseRefEq uc1 uc2 -> + SolveTypeEqualsTypeEqns csenv ndeep m2 trace None l1 l2 + | _ -> localAbortD and SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace ty1 ty2 = @@ -1225,8 +1231,11 @@ and SolveTypeEqualsTypeEqns csenv ndeep m2 trace cxsln origl1 origl2 = let rec loop l1 l2 = match l1, l2 with | [], [] -> CompleteD - | h1 :: t1, h2 :: t2 when t1.Length = t2.Length -> - SolveTypeEqualsTypeKeepAbbrevsWithCxsln csenv ndeep m2 trace cxsln h1 h2 ++ (fun () -> loop t1 t2) + | h1 :: t1, h2 :: t2 when t1.Length = t2.Length -> + trackErrors { + do! SolveTypeEqualsTypeKeepAbbrevsWithCxsln csenv ndeep m2 trace cxsln h1 h2 + do! loop t1 t2 + } | _ -> ErrorD(ConstraintSolverTupleDiffLengths(csenv.DisplayEnv, csenv.eContextInfo, origl1, origl2, csenv.m, m2)) loop origl1 origl2 @@ -1271,9 +1280,10 @@ and SolveTypeSubsumesType (csenv: ConstraintSolverEnv) ndeep m2 (trace: Optional if evalTupInfoIsStruct tupInfo1 <> evalTupInfoIsStruct tupInfo2 then ErrorD (ConstraintSolverError(FSComp.SR.tcTupleStructMismatch(), csenv.m, m2)) else SolveTypeEqualsTypeEqns csenv ndeep m2 trace cxsln l1 l2 (* nb. can unify since no variance *) - | TType_anon (anonInfo1, l1), TType_anon (anonInfo2, l2) -> - SolveAnonInfoEqualsAnonInfo csenv m2 anonInfo1 anonInfo2 ++ (fun () -> - SolveTypeEqualsTypeEqns csenv ndeep m2 trace cxsln l1 l2) (* nb. can unify since no variance *) + | TType_anon (anonInfo1, l1), TType_anon (anonInfo2, l2) -> trackErrors { + do! SolveAnonInfoEqualsAnonInfo csenv m2 anonInfo1 anonInfo2 + do! SolveTypeEqualsTypeEqns csenv ndeep m2 trace cxsln l1 l2 (* nb. can unify since no variance *) + } | TType_fun (domainTy1, rangeTy1, _), TType_fun (domainTy2, rangeTy2, _) -> SolveFunTypeEqn csenv ndeep m2 trace cxsln domainTy1 domainTy2 rangeTy1 rangeTy2 (* nb. can unify since no variance *) @@ -1515,12 +1525,12 @@ and SolveMemberConstraint (csenv: ConstraintSolverEnv) ignoreUnresolvedOverload // We pretend for uniformity that the numeric types have a static property called Zero and One // As with constants, only zero is polymorphic in its units | [], [ty], false, "get_Zero", [] - when IsNumericType g ty || isCharTy g ty -> + when isNumericType g ty || isCharTy g ty -> do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy ty return TTraitBuiltIn | [], [ty], false, "get_One", [] - when IsNumericType g ty || isCharTy g ty -> + when isNumericType g ty || isCharTy g ty -> do! SolveDimensionlessNumericType csenv ndeep m2 trace ty do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace retTy ty return TTraitBuiltIn @@ -2163,6 +2173,10 @@ and EnforceConstraintConsistency (csenv: ConstraintSolverEnv) ndeep m2 trace ret | TyparConstraint.IsNonNullableStruct _, TyparConstraint.IsReferenceType _ | TyparConstraint.IsReferenceType _, TyparConstraint.IsNonNullableStruct _ -> return! ErrorD (Error(FSComp.SR.csStructConstraintInconsistent(), m)) + + | TyparConstraint.IsUnmanaged _, TyparConstraint.IsReferenceType _ + | TyparConstraint.IsReferenceType _, TyparConstraint.IsUnmanaged _ -> + return! ErrorD (Error(FSComp.SR.csUnmanagedConstraintInconsistent(), m)) | TyparConstraint.SupportsComparison _, TyparConstraint.SupportsComparison _ | TyparConstraint.SupportsEquality _, TyparConstraint.SupportsEquality _ @@ -2390,59 +2404,54 @@ and SolveTypeSupportsEquality (csenv: ConstraintSolverEnv) ndeep m2 trace ty = CompleteD and SolveTypeIsEnum (csenv: ConstraintSolverEnv) ndeep m2 trace ty underlying = - trackErrors { - let g = csenv.g - let m = csenv.m - let denv = csenv.DisplayEnv - match tryDestTyparTy g ty with - | ValueSome destTypar -> - return! AddConstraint csenv ndeep m2 trace destTypar (TyparConstraint.IsEnum(underlying, m)) - | _ -> - if isEnumTy g ty then - do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace underlying (underlyingTypeOfEnumTy g ty) - return! CompleteD - else - return! ErrorD (ConstraintSolverError(FSComp.SR.csTypeIsNotEnumType(NicePrint.minimalStringOfType denv ty), m, m2)) - } + let g = csenv.g + let m = csenv.m + let denv = csenv.DisplayEnv + match tryDestTyparTy g ty with + | ValueSome destTypar -> + AddConstraint csenv ndeep m2 trace destTypar (TyparConstraint.IsEnum(underlying, m)) + | _ -> + if isEnumTy g ty then + SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace underlying (underlyingTypeOfEnumTy g ty) + else + ErrorD (ConstraintSolverError(FSComp.SR.csTypeIsNotEnumType(NicePrint.minimalStringOfType denv ty), m, m2)) and SolveTypeIsDelegate (csenv: ConstraintSolverEnv) ndeep m2 trace ty aty bty = - trackErrors { - let g = csenv.g - let m = csenv.m - let denv = csenv.DisplayEnv - match tryDestTyparTy g ty with - | ValueSome destTypar -> - return! AddConstraint csenv ndeep m2 trace destTypar (TyparConstraint.IsDelegate(aty, bty, m)) - | _ -> - if isDelegateTy g ty then - match TryDestStandardDelegateType csenv.InfoReader m AccessibleFromSomewhere ty with - | Some (tupledArgTy, retTy) -> + let g = csenv.g + let m = csenv.m + let denv = csenv.DisplayEnv + match tryDestTyparTy g ty with + | ValueSome destTypar -> + AddConstraint csenv ndeep m2 trace destTypar (TyparConstraint.IsDelegate(aty, bty, m)) + | _ -> + if isDelegateTy g ty then + match TryDestStandardDelegateType csenv.InfoReader m AccessibleFromSomewhere ty with + | Some (tupledArgTy, retTy) -> + trackErrors { do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace aty tupledArgTy do! SolveTypeEqualsTypeKeepAbbrevs csenv ndeep m2 trace bty retTy - | None -> - return! ErrorD (ConstraintSolverError(FSComp.SR.csTypeHasNonStandardDelegateType(NicePrint.minimalStringOfType denv ty), m, m2)) - else - return! ErrorD (ConstraintSolverError(FSComp.SR.csTypeIsNotDelegateType(NicePrint.minimalStringOfType denv ty), m, m2)) - } + } + | None -> + ErrorD (ConstraintSolverError(FSComp.SR.csTypeHasNonStandardDelegateType(NicePrint.minimalStringOfType denv ty), m, m2)) + else + ErrorD (ConstraintSolverError(FSComp.SR.csTypeIsNotDelegateType(NicePrint.minimalStringOfType denv ty), m, m2)) and SolveTypeIsNonNullableValueType (csenv: ConstraintSolverEnv) ndeep m2 trace ty = - trackErrors { - let g = csenv.g - let m = csenv.m - let denv = csenv.DisplayEnv - match tryDestTyparTy g ty with - | ValueSome destTypar -> - return! AddConstraint csenv ndeep m2 trace destTypar (TyparConstraint.IsNonNullableStruct m) - | _ -> - let underlyingTy = stripTyEqnsAndMeasureEqns g ty - if isStructTy g underlyingTy then - if isNullableTy g underlyingTy then - return! ErrorD (ConstraintSolverError(FSComp.SR.csTypeParameterCannotBeNullable(), m, m)) - else - return! CompleteD + let g = csenv.g + let m = csenv.m + let denv = csenv.DisplayEnv + match tryDestTyparTy g ty with + | ValueSome destTypar -> + AddConstraint csenv ndeep m2 trace destTypar (TyparConstraint.IsNonNullableStruct m) + | _ -> + let underlyingTy = stripTyEqnsAndMeasureEqns g ty + if isStructTy g underlyingTy then + if isNullableTy g underlyingTy then + ErrorD (ConstraintSolverError(FSComp.SR.csTypeParameterCannotBeNullable(), m, m)) else - return! ErrorD (ConstraintSolverError(FSComp.SR.csGenericConstructRequiresStructType(NicePrint.minimalStringOfType denv ty), m, m2)) - } + CompleteD + else + ErrorD (ConstraintSolverError(FSComp.SR.csGenericConstructRequiresStructType(NicePrint.minimalStringOfType denv ty), m, m2)) and SolveTypeIsUnmanaged (csenv: ConstraintSolverEnv) ndeep m2 trace ty = let g = csenv.g @@ -2452,11 +2461,22 @@ and SolveTypeIsUnmanaged (csenv: ConstraintSolverEnv) ndeep m2 trace ty = | ValueSome destTypar -> AddConstraint csenv ndeep m2 trace destTypar (TyparConstraint.IsUnmanaged m) | _ -> - if isUnmanagedTy g ty then - CompleteD + if isStructAnonRecdTy g ty then + destStructAnonRecdTy g ty |> IterateD (SolveTypeIsUnmanaged csenv (ndeep + 1) m2 trace) + else if isStructTupleTy g ty then + destStructTupleTy g ty |> IterateD (SolveTypeIsUnmanaged csenv (ndeep + 1) m2 trace) + else if isStructUnionTy g ty then + let tcref = tryTcrefOfAppTy g ty |> ValueOption.get + let tinst = mkInstForAppTy g ty + + tcref.UnionCasesAsRefList + |> List.collect (actualTysOfUnionCaseFields tinst) + |> IterateD (SolveTypeIsUnmanaged csenv (ndeep + 1) m2 trace) else - ErrorD (ConstraintSolverError(FSComp.SR.csGenericConstructRequiresUnmanagedType(NicePrint.minimalStringOfType denv ty), m, m2)) - + if isUnmanagedTy g ty then + CompleteD + else + ErrorD (ConstraintSolverError(FSComp.SR.csGenericConstructRequiresUnmanagedType(NicePrint.minimalStringOfType denv ty), m, m2)) and SolveTypeChoice (csenv: ConstraintSolverEnv) ndeep m2 trace ty choiceTys = trackErrors { @@ -2587,30 +2607,28 @@ and CanMemberSigsMatchUpToCheck else let! usesTDC1 = MapCombineTDC2D unifyTypes minst uminst let! usesTDC2 = - trackErrors { - if not (permitOptArgs || isNil unnamedCalledOptArgs) then - return! ErrorD(Error(FSComp.SR.csOptionalArgumentNotPermittedHere(), m)) - else - let calledObjArgTys = calledMeth.CalledObjArgTys(m) - - // Check all the argument types. + if not (permitOptArgs || isNil unnamedCalledOptArgs) then + ErrorD(Error(FSComp.SR.csOptionalArgumentNotPermittedHere(), m)) + else + let calledObjArgTys = calledMeth.CalledObjArgTys(m) - if calledObjArgTys.Length <> callerObjArgTys.Length then - if calledObjArgTys.Length <> 0 then - return! ErrorD(Error (FSComp.SR.csMemberIsNotStatic(minfo.LogicalName), m)) - else - return! ErrorD(Error (FSComp.SR.csMemberIsNotInstance(minfo.LogicalName), m)) + // Check all the argument types. + + if calledObjArgTys.Length <> callerObjArgTys.Length then + if calledObjArgTys.Length <> 0 then + ErrorD(Error (FSComp.SR.csMemberIsNotStatic(minfo.LogicalName), m)) else - return! MapCombineTDC2D subsumeTypes calledObjArgTys callerObjArgTys - } + ErrorD(Error (FSComp.SR.csMemberIsNotInstance(minfo.LogicalName), m)) + else + MapCombineTDC2D subsumeTypes calledObjArgTys callerObjArgTys let! usesTDC3 = - calledMeth.ArgSets |> MapCombineTDCD (fun argSet -> trackErrors { + calledMeth.ArgSets |> MapCombineTDCD (fun argSet -> if argSet.UnnamedCalledArgs.Length <> argSet.UnnamedCallerArgs.Length then - return! ErrorD(Error(FSComp.SR.csArgumentLengthMismatch(), m)) + ErrorD(Error(FSComp.SR.csArgumentLengthMismatch(), m)) else - return! MapCombineTDC2D subsumeOrConvertArg argSet.UnnamedCalledArgs argSet.UnnamedCallerArgs - }) + MapCombineTDC2D subsumeOrConvertArg argSet.UnnamedCalledArgs argSet.UnnamedCallerArgs + ) let! usesTDC4 = match calledMeth.ParamArrayCalledArgOpt with @@ -2711,12 +2729,12 @@ and SolveTypeSubsumesTypeWithWrappedContextualReport (csenv: ConstraintSolverEnv and SolveTypeSubsumesTypeWithReport (csenv: ConstraintSolverEnv) ndeep m trace cxsln origTy1 ty1 ty2 = SolveTypeSubsumesTypeWithWrappedContextualReport csenv ndeep m trace cxsln origTy1 ty1 ty2 id -and SolveTypeEqualsTypeWithReport (csenv: ConstraintSolverEnv) ndeep m trace cxsln actualTy expectedTy = +and SolveTypeEqualsTypeWithReport (csenv: ConstraintSolverEnv) ndeep m trace cxsln expectedTy actualTy = TryD - (fun () -> SolveTypeEqualsTypeKeepAbbrevsWithCxsln csenv ndeep m trace cxsln actualTy expectedTy) + (fun () -> SolveTypeEqualsTypeKeepAbbrevsWithCxsln csenv ndeep m trace cxsln expectedTy actualTy) (function | AbortForFailedMemberConstraintResolution as err -> ErrorD err - | res -> ErrorD (ErrorFromAddingTypeEquation(csenv.g, csenv.DisplayEnv, actualTy, expectedTy, res, m))) + | res -> ErrorD (ErrorFromAddingTypeEquation(csenv.g, csenv.DisplayEnv, expectedTy, actualTy, res, m))) and ArgsMustSubsumeOrConvert (csenv: ConstraintSolverEnv) @@ -3457,10 +3475,10 @@ let EliminateConstraintsForGeneralizedTypars (denv: DisplayEnv) css m (trace: Op // No error recovery here: we do that on a per-expression basis. //------------------------------------------------------------------------- -let AddCxTypeEqualsType contextInfo denv css m actual expected = +let AddCxTypeEqualsType contextInfo denv css m expected actual = let csenv = MakeConstraintSolverEnv contextInfo css m denv PostponeOnFailedMemberConstraintResolution csenv NoTrace - (fun csenv -> SolveTypeEqualsTypeWithReport csenv 0 m NoTrace None actual expected) + (fun csenv -> SolveTypeEqualsTypeWithReport csenv 0 m NoTrace None expected actual) ErrorD |> RaiseOperationResult @@ -3688,7 +3706,7 @@ let CodegenWitnessArgForTraitConstraint tcVal g amap m traitInfo = trackErrors { let ChooseTyparSolutionAndSolve css denv tp = let g = css.g let amap = css.amap - let max, m = ChooseTyparSolutionAndRange g amap tp + let max, m = ChooseTyparSolutionAndRange g amap tp let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m denv PostponeOnFailedMemberConstraintResolution csenv NoTrace (fun csenv -> SolveTyparEqualsType csenv 0 m NoTrace (mkTyparTy tp) max) @@ -3736,7 +3754,11 @@ let IsApplicableMethApprox g amap m (minfo: MethInfo) availObjTy = match minfo.GetObjArgTypes(amap, m, minst) with | [reqdObjTy] -> let reqdObjTy = if isByrefTy g reqdObjTy then destByrefTy g reqdObjTy else reqdObjTy // This is to support byref extension methods. - TryD (fun () -> SolveTypeSubsumesType csenv 0 m NoTrace None reqdObjTy availObjTy ++ (fun () -> ResultD true)) + TryD (fun () -> + trackErrors { + do! SolveTypeSubsumesType csenv 0 m NoTrace None reqdObjTy availObjTy + return true + }) (fun _err -> ResultD false) |> CommitOperationResult | _ -> true diff --git a/src/fcs-fable/src/Compiler/Checking/ConstraintSolver.fsi b/src/fcs-fable/src/Compiler/Checking/ConstraintSolver.fsi index d6cc309c6b..eb48ce3b43 100644 --- a/src/fcs-fable/src/Compiler/Checking/ConstraintSolver.fsi +++ b/src/fcs-fable/src/Compiler/Checking/ConstraintSolver.fsi @@ -187,16 +187,16 @@ exception ErrorFromApplyingDefault of exception ErrorFromAddingTypeEquation of tcGlobals: TcGlobals * displayEnv: DisplayEnv * - actualTy: TType * expectedTy: TType * + actualTy: TType * error: exn * range: range exception ErrorsFromAddingSubsumptionConstraint of tcGlobals: TcGlobals * displayEnv: DisplayEnv * - actualTy: TType * expectedTy: TType * + actualTy: TType * error: exn * ctxtInfo: ContextInfo * parameterRange: range diff --git a/src/fcs-fable/src/Compiler/Checking/FindUnsolved.fs b/src/fcs-fable/src/Compiler/Checking/FindUnsolved.fs index 3a3b8c9de8..cfc34649ae 100644 --- a/src/fcs-fable/src/Compiler/Checking/FindUnsolved.fs +++ b/src/fcs-fable/src/Compiler/Checking/FindUnsolved.fs @@ -8,6 +8,7 @@ open Internal.Utilities.Library open Internal.Utilities.Library.Extras open FSharp.Compiler open FSharp.Compiler.DiagnosticsLogger +open FSharp.Compiler.Text open FSharp.Compiler.TypedTree open FSharp.Compiler.TypedTreeBasics open FSharp.Compiler.TypedTreeOps @@ -19,105 +20,109 @@ type env = | NoEnv let FindUnsolvedStackGuardDepth = StackGuard.GetDepthOption "FindUnsolved" /// The environment and collector -type cenv = - { g: TcGlobals - amap: Import.ImportMap - denv: DisplayEnv - mutable unsolved: Typars +type cenv = + { g: TcGlobals + amap: Import.ImportMap + denv: DisplayEnv + mutable unsolved: Typars stackGuard: StackGuard } override _.ToString() = "" /// Walk types, collecting type variables -let accTy cenv _env ty = +let accTy cenv _env (mFallback: range) ty = let normalizedTy = tryNormalizeMeasureInType cenv.g ty - (freeInType CollectTyparsNoCaching normalizedTy).FreeTypars |> Zset.iter (fun tp -> - if (tp.Rigidity <> TyparRigidity.Rigid) then - cenv.unsolved <- tp :: cenv.unsolved) + (freeInType CollectTyparsNoCaching normalizedTy).FreeTypars |> Zset.iter (fun tp -> + if (tp.Rigidity <> TyparRigidity.Rigid) then + match mFallback with + | r when tp.Range = Range.range0 -> tp.SetIdent (FSharp.Compiler.Syntax.Ident(tp.typar_id.idText, r)) + | _ -> () + cenv.unsolved <- tp :: cenv.unsolved) -let accTypeInst cenv env tyargs = - tyargs |> List.iter (accTy cenv env) +/// Walk type arguments, collecting type variables +let accTypeInst cenv env mFallback tyargs = + tyargs |> List.iter (accTy cenv env mFallback) /// Walk expressions, collecting type variables let rec accExpr (cenv: cenv) (env: env) expr = cenv.stackGuard.Guard <| fun () -> - let expr = stripExpr expr + let expr = stripExpr expr match expr with - | Expr.Sequential (e1, e2, _, _) -> - accExpr cenv env e1 + | Expr.Sequential (e1, e2, _, _) -> + accExpr cenv env e1 accExpr cenv env e2 - | Expr.Let (bind, body, _, _) -> - accBind cenv env bind + | Expr.Let (bind, body, _, _) -> + accBind cenv env bind accExpr cenv env body - | Expr.Const (_, _, ty) -> - accTy cenv env ty - + | Expr.Const (_, r, ty) -> + accTy cenv env r ty + | Expr.Val (_v, _vFlags, _m) -> () - | Expr.Quote (ast, _, _, _m, ty) -> + | Expr.Quote (ast, _, _, m, ty) -> accExpr cenv env ast - accTy cenv env ty + accTy cenv env m ty - | Expr.Obj (_, ty, basev, basecall, overrides, iimpls, _m) -> - accTy cenv env ty + | Expr.Obj (_, ty, basev, basecall, overrides, iimpls, m) -> + accTy cenv env m ty accExpr cenv env basecall - accMethods cenv env basev overrides - accIntfImpls cenv env basev iimpls + accMethods cenv env basev overrides + accIntfImpls cenv env basev m iimpls - | LinearOpExpr (_op, tyargs, argsHead, argLast, _m) -> + | LinearOpExpr (_op, tyargs, argsHead, argLast, m) -> // Note, LinearOpExpr doesn't include any of the "special" cases for accOp - accTypeInst cenv env tyargs + accTypeInst cenv env m tyargs accExprs cenv env argsHead // tailcall accExpr cenv env argLast | Expr.Op (c, tyargs, args, m) -> - accOp cenv env (c, tyargs, args, m) + accOp cenv env (c, tyargs, args, m) - | Expr.App (f, fty, tyargs, argsl, _m) -> - accTy cenv env fty - accTypeInst cenv env tyargs + | Expr.App (f, fty, tyargs, argsl, m) -> + accTy cenv env m fty + accTypeInst cenv env m tyargs accExpr cenv env f accExprs cenv env argsl - | Expr.Lambda (_, _ctorThisValOpt, _baseValOpt, argvs, _body, m, bodyTy) -> - let valReprInfo = ValReprInfo ([], [argvs |> List.map (fun _ -> ValReprInfo.unnamedTopArg1)], ValReprInfo.unnamedRetVal) - let ty = mkMultiLambdaTy cenv.g m argvs bodyTy + | Expr.Lambda (_, _ctorThisValOpt, _baseValOpt, argvs, _body, m, bodyTy) -> + let valReprInfo = ValReprInfo ([], [argvs |> List.map (fun _ -> ValReprInfo.unnamedTopArg1)], ValReprInfo.unnamedRetVal) + let ty = mkMultiLambdaTy cenv.g m argvs bodyTy accLambdas cenv env valReprInfo expr ty - | Expr.TyLambda (_, tps, _body, _m, bodyTy) -> - let valReprInfo = ValReprInfo (ValReprInfo.InferTyparInfo tps, [], ValReprInfo.unnamedRetVal) - accTy cenv env bodyTy - let ty = mkForallTyIfNeeded tps bodyTy + | Expr.TyLambda (_, tps, _body, m, bodyTy) -> + let valReprInfo = ValReprInfo (ValReprInfo.InferTyparInfo tps, [], ValReprInfo.unnamedRetVal) + accTy cenv env m bodyTy + let ty = mkForallTyIfNeeded tps bodyTy accLambdas cenv env valReprInfo expr ty - | Expr.TyChoose (_tps, e1, _m) -> - accExpr cenv env e1 + | Expr.TyChoose (_tps, e1, _m) -> + accExpr cenv env e1 - | Expr.Match (_, _exprm, dtree, targets, m, ty) -> - accTy cenv env ty + | Expr.Match (_, _exprm, dtree, targets, m, ty) -> + accTy cenv env m ty accDTree cenv env dtree accTargets cenv env m ty targets - | Expr.LetRec (binds, e, _m, _) -> + | Expr.LetRec (binds, e, _m, _) -> accBinds cenv env binds accExpr cenv env e - | Expr.StaticOptimization (constraints, e2, e3, _m) -> + | Expr.StaticOptimization (constraints, e2, e3, m) -> accExpr cenv env e2 accExpr cenv env e3 - constraints |> List.iter (function - | TTyconEqualsTycon(ty1, ty2) -> - accTy cenv env ty1 - accTy cenv env ty2 - | TTyconIsStruct(ty1) -> - accTy cenv env ty1) + constraints |> List.iter (function + | TTyconEqualsTycon(ty1, ty2) -> + accTy cenv env m ty1 + accTy cenv env m ty2 + | TTyconIsStruct(ty1) -> + accTy cenv env m ty1) - | Expr.WitnessArg (traitInfo, _m) -> - accTraitInfo cenv env traitInfo + | Expr.WitnessArg (traitInfo, m) -> + accTraitInfo cenv env m traitInfo | Expr.Link eref -> accExpr cenv env eref.Value @@ -125,166 +130,194 @@ let rec accExpr (cenv: cenv) (env: env) expr = | Expr.DebugPoint (_, innerExpr) -> accExpr cenv env innerExpr -and accMethods cenv env baseValOpt l = +/// Walk methods, collecting type variables +and accMethods cenv env baseValOpt l = List.iter (accMethod cenv env baseValOpt) l -and accMethod cenv env _baseValOpt (TObjExprMethod(_slotsig, _attribs, _tps, vs, bodyExpr, _m)) = +/// Walk a method, collecting type variables +and accMethod cenv env _baseValOpt (TObjExprMethod(_slotsig, _attribs, _tps, vs, bodyExpr, _m)) = vs |> List.iterSquared (accVal cenv env) accExpr cenv env bodyExpr -and accIntfImpls cenv env baseValOpt l = - List.iter (accIntfImpl cenv env baseValOpt) l +/// Walk interface implementations, collecting type variables +and accIntfImpls cenv env baseValOpt (mFallback: range) l = + List.iter (accIntfImpl cenv env baseValOpt mFallback) l -and accIntfImpl cenv env baseValOpt (ty, overrides) = - accTy cenv env ty - accMethods cenv env baseValOpt overrides +/// Walk an interface implementation, collecting type variables +and accIntfImpl cenv env (baseValOpt: Val option) (mFallback: range) (ty, overrides) = + accTy cenv env mFallback ty + accMethods cenv env baseValOpt overrides -and accOp cenv env (op, tyargs, args, _m) = - // Special cases - accTypeInst cenv env tyargs +/// Walk an operation, collecting type variables +and accOp cenv env (op, tyargs, args, m) = + // Special cases + accTypeInst cenv env m tyargs accExprs cenv env args - match op with - // Handle these as special cases since mutables are allowed inside their bodies + match op with + // Handle these as special cases since mutables are allowed inside their bodies | TOp.ILCall (_, _, _, _, _, _, _, _, enclTypeInst, methInst, retTys) -> - accTypeInst cenv env enclTypeInst - accTypeInst cenv env methInst - accTypeInst cenv env retTys - | TOp.TraitCall traitInfo -> - accTraitInfo cenv env traitInfo - + accTypeInst cenv env m enclTypeInst + accTypeInst cenv env m methInst + accTypeInst cenv env m retTys + | TOp.TraitCall traitInfo -> + accTraitInfo cenv env m traitInfo + | TOp.ILAsm (_, retTys) -> - accTypeInst cenv env retTys + accTypeInst cenv env m retTys | _ -> () -and accTraitInfo cenv env (TTrait(tys, _nm, _, argTys, retTy, _sln)) = - argTys |> accTypeInst cenv env - retTy |> Option.iter (accTy cenv env) - tys |> List.iter (accTy cenv env) +/// Walk a trait call, collecting type variables +and accTraitInfo cenv env (mFallback : range) (TTrait(tys, _nm, _, argTys, retTy, _sln)) = + argTys |> accTypeInst cenv env mFallback + retTy |> Option.iter (accTy cenv env mFallback) + tys |> List.iter (accTy cenv env mFallback) +/// Walk lambdas, collecting type variables and accLambdas cenv env valReprInfo expr exprTy = match stripDebugPoints expr with - | Expr.TyChoose (_tps, bodyExpr, _m) -> accLambdas cenv env valReprInfo bodyExpr exprTy - | Expr.Lambda _ - | Expr.TyLambda _ -> - let _tps, ctorThisValOpt, baseValOpt, vsl, body, bodyTy = destLambdaWithValReprInfo cenv.g cenv.amap valReprInfo (expr, exprTy) - accTy cenv env bodyTy + | Expr.TyChoose (_tps, bodyExpr, _m) -> accLambdas cenv env valReprInfo bodyExpr exprTy + | Expr.Lambda (range = range) + | Expr.TyLambda (range = range) -> + let _tps, ctorThisValOpt, baseValOpt, vsl, body, bodyTy = destLambdaWithValReprInfo cenv.g cenv.amap valReprInfo (expr, exprTy) + accTy cenv env range bodyTy vsl |> List.iterSquared (accVal cenv env) baseValOpt |> Option.iter (accVal cenv env) ctorThisValOpt |> Option.iter (accVal cenv env) accExpr cenv env body - | _ -> + | _ -> accExpr cenv env expr -and accExprs cenv env exprs = - exprs |> List.iter (accExpr cenv env) +/// Walk a list of expressions, collecting type variables +and accExprs cenv env exprs = + exprs |> List.iter (accExpr cenv env) -and accTargets cenv env m ty targets = +/// Walk match targets, collecting type variables +and accTargets cenv env m ty targets = Array.iter (accTarget cenv env m ty) targets -and accTarget cenv env _m _ty (TTarget(_vs, e, _)) = +/// Walk a match target, collecting type variables +and accTarget cenv env _m _ty (TTarget(_vs, e, _)) = accExpr cenv env e +/// Walk a decision tree, collecting type variables and accDTree cenv env dtree = - match dtree with + match dtree with | TDSuccess (es, _n) -> accExprs cenv env es - | TDBind(bind, rest) -> accBind cenv env bind; accDTree cenv env rest + | TDBind(bind, rest) -> accBind cenv env bind; accDTree cenv env rest | TDSwitch (e, cases, dflt, m) -> accSwitch cenv env (e, cases, dflt, m) -and accSwitch cenv env (e, cases, dflt, _m) = +/// Walk a switch, collecting type variables +and accSwitch cenv env (e, cases, dflt, m) = accExpr cenv env e - cases |> List.iter (fun (TCase(discrim, e)) -> accDiscrim cenv env discrim; accDTree cenv env e) - dflt |> Option.iter (accDTree cenv env) - -and accDiscrim cenv env d = - match d with - | DecisionTreeTest.UnionCase(_ucref, tinst) -> accTypeInst cenv env tinst - | DecisionTreeTest.ArrayLength(_, ty) -> accTy cenv env ty + cases |> List.iter (fun (TCase(discrim, e)) -> accDiscrim cenv env discrim m; accDTree cenv env e) + dflt |> Option.iter (accDTree cenv env) + +/// Walk a discriminator, collecting type variables +and accDiscrim cenv env d mFallback = + match d with + | DecisionTreeTest.UnionCase(_ucref, tinst) -> accTypeInst cenv env mFallback tinst + | DecisionTreeTest.ArrayLength(_, ty) -> accTy cenv env mFallback ty | DecisionTreeTest.Const _ | DecisionTreeTest.IsNull -> () - | DecisionTreeTest.IsInst (srcTy, tgtTy) -> accTy cenv env srcTy; accTy cenv env tgtTy - | DecisionTreeTest.ActivePatternCase (exp, tys, _, _, _, _) -> + | DecisionTreeTest.IsInst (srcTy, tgtTy) -> accTy cenv env mFallback srcTy; accTy cenv env mFallback tgtTy + | DecisionTreeTest.ActivePatternCase (exp, tys, _, _, _, _) -> accExpr cenv env exp - accTypeInst cenv env tys + accTypeInst cenv env mFallback tys | DecisionTreeTest.Error _ -> () -and accAttrib cenv env (Attrib(_, _k, args, props, _, _, _m)) = - args |> List.iter (fun (AttribExpr(expr1, expr2)) -> +/// Walk an attribute, collecting type variables +and accAttrib cenv env (Attrib(_, _k, args, props, _, _, m)) = + args |> List.iter (fun (AttribExpr(expr1, expr2)) -> accExpr cenv env expr1 accExpr cenv env expr2) - props |> List.iter (fun (AttribNamedArg(_nm, ty, _flg, AttribExpr(expr, expr2))) -> + props |> List.iter (fun (AttribNamedArg(_nm, ty, _flg, AttribExpr(expr, expr2))) -> accExpr cenv env expr accExpr cenv env expr2 - accTy cenv env ty) - -and accAttribs cenv env attribs = + accTy cenv env m ty) + +/// Walk a list of attributes, collecting type variables +and accAttribs cenv env attribs = List.iter (accAttrib cenv env) attribs +/// Walk a value representation info, collecting type variables and accValReprInfo cenv env (ValReprInfo(_, args, ret)) = args |> List.iterSquared (accArgReprInfo cenv env) ret |> accArgReprInfo cenv env -and accArgReprInfo cenv env (argInfo: ArgReprInfo) = +/// Walk an argument representation info, collecting type variables +and accArgReprInfo cenv env (argInfo: ArgReprInfo) = accAttribs cenv env argInfo.Attribs +/// Walk a value, collecting type variables and accVal cenv env v = v.Attribs |> accAttribs cenv env v.ValReprInfo |> Option.iter (accValReprInfo cenv env) - v.Type |> accTy cenv env + v.Type |> accTy cenv env v.Range +/// Walk a binding, collecting type variables and accBind cenv env (bind: Binding) = - accVal cenv env bind.Var + accVal cenv env bind.Var let valReprInfo = match bind.Var.ValReprInfo with Some info -> info | _ -> ValReprInfo.emptyValData accLambdas cenv env valReprInfo bind.Expr bind.Var.Type -and accBinds cenv env binds = - binds |> List.iter (accBind cenv env) +/// Walk a list of bindings, collecting type variables +and accBinds cenv env binds = + binds |> List.iter (accBind cenv env) -let accTyconRecdField cenv env _tycon (rfield:RecdField) = +/// Walk a record field of a type constructor, collecting type variables +let accTyconRecdField cenv env _tycon (rfield:RecdField) = accAttribs cenv env rfield.PropertyAttribs accAttribs cenv env rfield.FieldAttribs +/// Walk a type constructor, collecting type variables let accTycon cenv env (tycon:Tycon) = accAttribs cenv env tycon.Attribs - abstractSlotValsOfTycons [tycon] |> List.iter (accVal cenv env) + abstractSlotValsOfTycons [tycon] |> List.iter (accVal cenv env) tycon.AllFieldsArray |> Array.iter (accTyconRecdField cenv env tycon) if tycon.IsUnionTycon then (* This covers finite unions. *) tycon.UnionCasesArray |> Array.iter (fun uc -> accAttribs cenv env uc.Attribs uc.RecdFieldsArray |> Array.iter (accTyconRecdField cenv env tycon)) -let accTycons cenv env tycons = +/// Walk a list of type constructors, collecting type variables +let accTycons cenv env tycons = List.iter (accTycon cenv env) tycons -let rec accModuleOrNamespaceDefs cenv env defs = +/// Walk a list of module or namespace definitions, collecting type variables +let rec accModuleOrNamespaceDefs cenv env defs = List.iter (accModuleOrNamespaceDef cenv env) defs -and accModuleOrNamespaceDef cenv env def = - match def with - | TMDefRec(_, _opens, tycons, mbinds, _m) -> +/// Walk a module or namespace definition, collecting type variables +and accModuleOrNamespaceDef cenv env def = + match def with + | TMDefRec(_, _opens, tycons, mbinds, _m) -> accTycons cenv env tycons - accModuleOrNamespaceBinds cenv env mbinds - | TMDefLet(bind, _m) -> accBind cenv env bind + accModuleOrNamespaceBinds cenv env mbinds + | TMDefLet(bind, _m) -> accBind cenv env bind | TMDefDo(e, _m) -> accExpr cenv env e | TMDefOpens _ -> () - | TMDefs defs -> accModuleOrNamespaceDefs cenv env defs + | TMDefs defs -> accModuleOrNamespaceDefs cenv env defs -and accModuleOrNamespaceBinds cenv env xs = +/// Walk a list of module or namespace bindings, collecting type variables +and accModuleOrNamespaceBinds cenv env xs = List.iter (accModuleOrNamespaceBind cenv env) xs -and accModuleOrNamespaceBind cenv env x = - match x with - | ModuleOrNamespaceBinding.Binding bind -> +/// Walk a module or namespace binding, collecting type variables +and accModuleOrNamespaceBind cenv env x = + match x with + | ModuleOrNamespaceBinding.Binding bind -> accBind cenv env bind - | ModuleOrNamespaceBinding.Module(mspec, rhs) -> + | ModuleOrNamespaceBinding.Module(mspec, rhs) -> accTycon cenv env mspec - accModuleOrNamespaceDef cenv env rhs + accModuleOrNamespaceDef cenv env rhs +/// Find all unsolved inference variables after type inference for an entire file let UnsolvedTyparsOfModuleDef g amap denv mdef extraAttribs = - let cenv = - { g =g - amap=amap - denv=denv - unsolved = [] + let cenv = + { g =g + amap=amap + denv=denv + unsolved = [] stackGuard = StackGuard(FindUnsolvedStackGuardDepth, "UnsolvedTyparsOfModuleDef") } accModuleOrNamespaceDef cenv NoEnv mdef accAttribs cenv NoEnv extraAttribs diff --git a/src/fcs-fable/src/Compiler/Checking/InfoReader.fs b/src/fcs-fable/src/Compiler/Checking/InfoReader.fs index 5a6b63722c..86bbb1b83c 100644 --- a/src/fcs-fable/src/Compiler/Checking/InfoReader.fs +++ b/src/fcs-fable/src/Compiler/Checking/InfoReader.fs @@ -490,7 +490,7 @@ type InfoReader(g: TcGlobals, amap: Import.ImportMap) as this = | Some name when name = overridesName -> true | _ -> false if canAccumulate then - match mdefs.TryFindInstanceByNameAndCallingSignature (overrideBy.Name, overrideBy.MethodRef.CallingSignature) with + match mdefs.TryFindInstanceByNameAndCallingSignature (overrideBy.Name, overrideBy.MethodRef.GetCallingSignature()) with | Some mdef -> let overridesILTy = ilMethImpl.Overrides.DeclaringType let overridesTyFullName = overridesILTy.TypeRef.FullName diff --git a/src/fcs-fable/src/Compiler/Checking/MethodCalls.fs b/src/fcs-fable/src/Compiler/Checking/MethodCalls.fs index 28e529b566..eeec6f40ae 100644 --- a/src/fcs-fable/src/Compiler/Checking/MethodCalls.fs +++ b/src/fcs-fable/src/Compiler/Checking/MethodCalls.fs @@ -841,6 +841,7 @@ let InferLambdaArgsForLambdaPropagation origRhsExpr = match e with | SynExpr.Lambda (body = rest) -> 1 + loop rest | SynExpr.MatchLambda _ -> 1 + | SynExpr.DotLambda _ -> 1 | _ -> 0 loop origRhsExpr @@ -1067,7 +1068,7 @@ let MakeMethInfoCall (amap: ImportMap) m (minfo: MethInfo) minst args staticTyOp let isProp = false // not necessarily correct, but this is only used post-creflect where this flag is irrelevant let ilMethodRef = Import.ImportProvidedMethodBaseAsILMethodRef amap m mi let isConstructor = mi.PUntaint((fun c -> c.IsConstructor), m) - let isStruct = mi.PUntaint((fun c -> c.DeclaringType.IsValueType), m) + let isStruct = mi.PUntaint((fun c -> (nonNull c.DeclaringType).IsValueType), m) let actualTypeInst = [] // GENERIC TYPE PROVIDERS: for generics, we would have something here let actualMethInst = [] // GENERIC TYPE PROVIDERS: for generics, we would have something here let ilReturnTys = Option.toList (minfo.GetCompiledReturnType(amap, m, [])) // GENERIC TYPE PROVIDERS: for generics, we would have more here @@ -1080,7 +1081,7 @@ let MakeMethInfoCall (amap: ImportMap) m (minfo: MethInfo) minst args staticTyOp // This imports a provided method, and checks if it is a known compiler intrinsic like "1 + 2" let TryImportProvidedMethodBaseAsLibraryIntrinsic (amap: Import.ImportMap, m: range, mbase: Tainted) = let methodName = mbase.PUntaint((fun x -> x.Name), m) - let declaringType = Import.ImportProvidedType amap m (mbase.PApply((fun x -> x.DeclaringType), m)) + let declaringType = Import.ImportProvidedType amap m (mbase.PApply((fun x -> nonNull x.DeclaringType), m)) match tryTcrefOfAppTy amap.g declaringType with | ValueSome declaringEntity -> if not declaringEntity.IsLocalRef && ccuEq declaringEntity.nlr.Ccu amap.g.fslibCcu then @@ -1266,8 +1267,23 @@ let BuildNewDelegateExpr (eventInfoOpt: EventInfo option, g, amap, delegateTy, d if List.exists (isByrefTy g) delArgTys then error(Error(FSComp.SR.tcFunctionRequiresExplicitLambda(delArgTys.Length), m)) + let delFuncArgNamesIfFeatureEnabled = + match delFuncExpr with + | Expr.Val (valRef = vref) when g.langVersion.SupportsFeature LanguageFeature.ImprovedImpliedArgumentNames -> + match vref.ValReprInfo with + | Some repr when repr.ArgNames.Length = delArgTys.Length -> Some repr.ArgNames + | _ -> None + | _ -> None + let delArgVals = - delArgTys |> List.mapi (fun i argTy -> fst (mkCompGenLocal m ("delegateArg" + string i) argTy)) + delArgTys + |> List.mapi (fun i argTy -> + let argName = + match delFuncArgNamesIfFeatureEnabled with + | Some argNames -> argNames[i] + | None -> "delegateArg" + string i + + fst (mkCompGenLocal m argName argTy)) let expr = let args = @@ -2042,7 +2058,7 @@ module ProvidedMethodCalls = let thisArg, paramVars = match objArgs with | [objArg] -> - let erasedThisTy = eraseSystemType (amap, m, mi.PApply((fun mi -> mi.DeclaringType), m)) + let erasedThisTy = eraseSystemType (amap, m, mi.PApply((fun mi -> nonNull mi.DeclaringType), m)) let thisVar = erasedThisTy.PApply((fun ty -> ty.AsProvidedVar("this")), m) Some objArg, Array.append [| thisVar |] paramVars | [] -> None, paramVars @@ -2062,7 +2078,7 @@ module ProvidedMethodCalls = methInfoOpt, expr, exprTy with | :? TypeProviderError as tpe -> - let typeName = mi.PUntaint((fun mb -> mb.DeclaringType.FullName), m) + let typeName = mi.PUntaint((fun mb -> (nonNull mb.DeclaringType).FullName), m) let methName = mi.PUntaint((fun mb -> mb.Name), m) raise( tpe.WithContext(typeName, methName) ) // loses original stack trace #endif diff --git a/src/fcs-fable/src/Compiler/Checking/MethodOverrides.fs b/src/fcs-fable/src/Compiler/Checking/MethodOverrides.fs index 58aa619bf0..314c2d4dd1 100644 --- a/src/fcs-fable/src/Compiler/Checking/MethodOverrides.fs +++ b/src/fcs-fable/src/Compiler/Checking/MethodOverrides.fs @@ -621,7 +621,7 @@ module DispatchSlotChecking = // dispatch slots are ordered from the derived classes to base // so we can check the topmost dispatch slot if it is final match dispatchSlots with - | meth :: _ when meth.IsFinal -> errorR(Error(FSComp.SR.tcCannotOverrideSealedMethod (sprintf "%s::%s" (meth.ApparentEnclosingType.ToString()) meth.LogicalName), m)) + | meth :: _ when meth.IsFinal -> errorR(Error(FSComp.SR.tcCannotOverrideSealedMethod((sprintf "%s::%s" (NicePrint.stringOfTy denv meth.ApparentEnclosingType) meth.LogicalName)), m)) | _ -> () /// Get the slots of a type that can or must be implemented. This depends diff --git a/src/fcs-fable/src/Compiler/Checking/NameResolution.fs b/src/fcs-fable/src/Compiler/Checking/NameResolution.fs index edeed1136d..292343dd22 100644 --- a/src/fcs-fable/src/Compiler/Checking/NameResolution.fs +++ b/src/fcs-fable/src/Compiler/Checking/NameResolution.fs @@ -178,7 +178,7 @@ type Item = | UnionCaseField of UnionCaseInfo * fieldIndex: int /// Represents the resolution of a name to a field of an anonymous record type. - | AnonRecdField of AnonRecdTypeInfo * TTypes * int * range + | AnonRecdField of anonInfo: AnonRecdTypeInfo * tys: TTypes * fieldIndex: int * range: range // The following are never in the items table but are valid results of binding // an identifier in different circumstances. @@ -193,7 +193,7 @@ type Item = | Event of EventInfo /// Represents the resolution of a name to a property - | Property of string * PropInfo list + | Property of name: string * info: PropInfo list * sourceIdentifierRange: range option /// Represents the resolution of a name to a group of methods. | MethodGroup of displayName: string * methods: MethInfo list * uninstantiatedMethodOpt: MethInfo option @@ -267,11 +267,16 @@ type Item = | Item.NewDef id -> id.idText | Item.ILField finfo -> finfo.DisplayNameCore | Item.Event einfo -> einfo.DisplayNameCore - | Item.Property(_, pinfo :: _) -> pinfo.DisplayNameCore - | Item.Property(nm, _) -> nm |> ConvertValLogicalNameToDisplayNameCore + | Item.Property(info = pinfo :: _) -> pinfo.DisplayNameCore + | Item.Property(name = nm) -> nm |> ConvertValLogicalNameToDisplayNameCore | Item.MethodGroup(_, FSMeth(_, _, v, _) :: _, _) -> v.DisplayNameCore | Item.MethodGroup(nm, _, _) -> nm |> ConvertValLogicalNameToDisplayNameCore - | Item.CtorGroup(nm, _) -> nm |> DemangleGenericTypeName + | Item.CtorGroup(nm, ILMeth(_, ilMethInfo, _) :: _) -> + match ilMethInfo.ApparentEnclosingType |> tryNiceEntityRefOfTy with + | ValueSome tcref -> tcref.DisplayNameCore + | _ -> nm + |> DemangleGenericTypeName + | Item.CtorGroup(nm, _) -> nm |> DemangleGenericTypeName | Item.FakeInterfaceCtor ty | Item.DelegateCtor ty -> match ty with @@ -303,7 +308,7 @@ type Item = | Item.UnionCaseField (uci, fieldIndex) -> uci.UnionCase.GetFieldByIndex(fieldIndex).DisplayName | Item.AnonRecdField (anonInfo, _tys, fieldIndex, _m) -> anonInfo.DisplayNameByIdx fieldIndex | Item.ActivePatternCase apref -> apref.DisplayName - | Item.Property(_, pinfo :: _) -> pinfo.DisplayName + | Item.Property(info = pinfo :: _) -> pinfo.DisplayName | Item.Event einfo -> einfo.DisplayName | Item.MethodGroup(_, minfo :: _, _) -> minfo.DisplayName | Item.DelegateCtor (AbbrevOrAppTy tcref) -> tcref.DisplayName @@ -375,6 +380,12 @@ type FullyQualifiedFlag = /// Resolve any paths accessible via 'open' | OpenQualified +/// Indicates whether an identifier (single or long) is followed by an extra dot. Typically used +/// to provide better tooling and error reporting. +[] +type ExtraDotAfterIdentifier = + | Yes + | No type UnqualifiedItems = LayeredMap @@ -531,22 +542,53 @@ let IsMethInfoPlainCSharpStyleExtensionMember g m isEnclExtTy (minfo: MethInfo) not minfo.IsExtensionMember && (match minfo.NumArgs with [x] when x >= 1 -> true | _ -> false) && MethInfoHasAttribute g m g.attrib_ExtensionAttribute minfo + +let GetTyconRefForExtensionMembers minfo (deref: Entity) amap m g = + try + let rs = + match metadataOfTycon deref, minfo with + | ILTypeMetadata (TILObjectReprData(scope=scoref)), ILMeth(ilMethInfo=ILMethInfo(ilMethodDef=ilMethod)) -> + match ilMethod.ParameterTypes with + | firstTy :: _ -> + match firstTy with + | ILType.Boxed tspec | ILType.Value tspec -> + let tref = (tspec |> rescopeILTypeSpec scoref).TypeRef + if Import.CanImportILTypeRef amap m tref then + let tcref = tref |> Import.ImportILTypeRef amap m + if isCompiledTupleTyconRef g tcref || tyconRefEq g tcref g.fastFunc_tcr then None + else Some tcref + else None + | _ -> None + | _ -> None + | _ -> + // The results are indexed by the TyconRef of the first 'this' argument, if any. + // So we need to go and crack the type of the 'this' argument. + let thisTy = minfo.GetParamTypes(amap, m, generalizeTypars minfo.FormalMethodTypars).Head.Head + match thisTy with + | AppTy g (tcrefOfTypeExtended, _) when not (isByrefTy g thisTy) -> Some tcrefOfTypeExtended + | _ -> None + Some rs + with e -> // Import of the ILType may fail, if so report the error and skip on + errorRecovery e m + None /// Get the info for all the .NET-style extension members listed as static members in the type. let private GetCSharpStyleIndexedExtensionMembersForTyconRef (amap: Import.ImportMap) m (tcrefOfStaticClass: TyconRef) = let g = amap.g + let pri = NextExtensionMethodPriority() if g.langVersion.SupportsFeature(LanguageFeature.CSharpExtensionAttributeNotRequired) then - let ty = generalizedTyconRef g tcrefOfStaticClass - - let minfos = - GetImmediateIntrinsicMethInfosOfType (None, AccessorDomain.AccessibleFromSomeFSharpCode) g amap m ty - |> List.filter (IsMethInfoPlainCSharpStyleExtensionMember g m true) - - if IsTyconRefUsedForCSharpStyleExtensionMembers g m tcrefOfStaticClass || not minfos.IsEmpty then - let pri = NextExtensionMethodPriority() + let csharpStyleExtensionMembers = + if IsTyconRefUsedForCSharpStyleExtensionMembers g m tcrefOfStaticClass || tcrefOfStaticClass.IsLocalRef then + protectAssemblyExploration [] (fun () -> + let ty = generalizedTyconRef g tcrefOfStaticClass + GetImmediateIntrinsicMethInfosOfType (None, AccessorDomain.AccessibleFromSomeFSharpCode) g amap m ty + |> List.filter (IsMethInfoPlainCSharpStyleExtensionMember g m true)) + else + [] - [ for minfo in minfos do + if not csharpStyleExtensionMembers.IsEmpty then + [ for minfo in csharpStyleExtensionMembers do let ilExtMem = ILExtMem (tcrefOfStaticClass, minfo, pri) // The results are indexed by the TyconRef of the first 'this' argument, if any. @@ -558,37 +600,7 @@ let private GetCSharpStyleIndexedExtensionMembersForTyconRef (amap: Import.Impor // // We don't use the index for the IL extension method for tuple of F# function types (e.g. if extension // methods for tuple occur in C# code) - let thisTyconRef = - try - let rs = - match metadataOfTycon tcrefOfStaticClass.Deref, minfo with - | ILTypeMetadata (TILObjectReprData(scoref, _, _)), ILMeth(_, ILMethInfo(_, _, _, ilMethod, _), _) -> - match ilMethod.ParameterTypes with - | firstTy :: _ -> - match firstTy with - | ILType.Boxed tspec | ILType.Value tspec -> - let tref = (tspec |> rescopeILTypeSpec scoref).TypeRef - if Import.CanImportILTypeRef amap m tref then - let tcref = tref |> Import.ImportILTypeRef amap m - if isCompiledTupleTyconRef g tcref || tyconRefEq g tcref g.fastFunc_tcr then None - else Some tcref - else None - | _ -> None - | _ -> None - | _ -> - // The results are indexed by the TyconRef of the first 'this' argument, if any. - // So we need to go and crack the type of the 'this' argument. - let thisTy = minfo.GetParamTypes(amap, m, generalizeTypars minfo.FormalMethodTypars).Head.Head - match thisTy with - | AppTy g (tcrefOfTypeExtended, _) when not (isByrefTy g thisTy) -> Some tcrefOfTypeExtended - | _ -> None - - Some rs - - with e -> // Import of the ILType may fail, if so report the error and skip on - errorRecovery e m - None - + let thisTyconRef = GetTyconRefForExtensionMembers minfo tcrefOfStaticClass.Deref amap m g match thisTyconRef with | None -> () | Some (Some tcref) -> yield Choice1Of2(tcref, ilExtMem) @@ -597,7 +609,6 @@ let private GetCSharpStyleIndexedExtensionMembersForTyconRef (amap: Import.Impor [] else if IsTyconRefUsedForCSharpStyleExtensionMembers g m tcrefOfStaticClass then - let pri = NextExtensionMethodPriority() let ty = generalizedTyconRef g tcrefOfStaticClass let minfos = GetImmediateIntrinsicMethInfosOfType (None, AccessorDomain.AccessibleFromSomeFSharpCode) g amap m ty @@ -613,34 +624,7 @@ let private GetCSharpStyleIndexedExtensionMembersForTyconRef (amap: Import.Impor // // We don't use the index for the IL extension method for tuple of F# function types (e.g. if extension // methods for tuple occur in C# code) - let thisTyconRef = - try - let rs = - match metadataOfTycon tcrefOfStaticClass.Deref, minfo with - | ILTypeMetadata (TILObjectReprData(scoref, _, _)), ILMeth(_, ILMethInfo(_, _, _, ilMethod, _), _) -> - match ilMethod.ParameterTypes with - | firstTy :: _ -> - match firstTy with - | ILType.Boxed tspec | ILType.Value tspec -> - let tref = (tspec |> rescopeILTypeSpec scoref).TypeRef - if Import.CanImportILTypeRef amap m tref then - let tcref = tref |> Import.ImportILTypeRef amap m - if isCompiledTupleTyconRef g tcref || tyconRefEq g tcref g.fastFunc_tcr then None - else Some tcref - else None - | _ -> None - | _ -> None - | _ -> - // The results are indexed by the TyconRef of the first 'this' argument, if any. - // So we need to go and crack the type of the 'this' argument. - let thisTy = minfo.GetParamTypes(amap, m, generalizeTypars minfo.FormalMethodTypars).Head.Head - match thisTy with - | AppTy g (tcrefOfTypeExtended, _) when not (isByrefTy g thisTy) -> Some tcrefOfTypeExtended - | _ -> None - Some rs - with e -> // Import of the ILType may fail, if so report the error and skip on - errorRecovery e m - None + let thisTyconRef = GetTyconRefForExtensionMembers minfo tcrefOfStaticClass.Deref amap m g match thisTyconRef with | None -> () | Some (Some tcref) -> yield Choice1Of2(tcref, ilExtMem) @@ -1173,7 +1157,7 @@ let ChoosePropInfosForNameEnv g ty (pinfos: PropInfo list) = pinfo.IsStatic && typeEquiv g pinfo.ApparentEnclosingType ty) |> List.groupBy (fun pinfo -> pinfo.PropertyName) |> List.filter (fun (_, propGroup) -> not propGroup.IsEmpty) - |> List.map (fun (propName, propGroup) -> KeyValuePair(propName, Item.Property(propName, propGroup))) + |> List.map (fun (propName, propGroup) -> KeyValuePair(propName, Item.Property(propName, propGroup, None))) let ChooseFSharpFieldInfosForNameEnv g ty (rfinfos: RecdFieldInfo list) = rfinfos @@ -1776,13 +1760,13 @@ let rec (|ILFieldUse|_|) (item: Item) = let rec (|PropertyUse|_|) (item: Item) = match item with - | Item.Property(_, pinfo :: _) -> Some pinfo + | Item.Property(info = pinfo :: _) -> Some pinfo | Item.SetterArg(_, PropertyUse pinfo) -> Some pinfo | _ -> None let rec (|FSharpPropertyUse|_|) (item: Item) = match item with - | Item.Property(_, [ValRefOfProp vref]) -> Some vref + | Item.Property(info = [ValRefOfProp vref]) -> Some vref | Item.SetterArg(_, FSharpPropertyUse propDef) -> Some propDef | _ -> None @@ -2075,7 +2059,13 @@ type TcResultsSinkImpl(tcGlobals, ?sourceText: ISourceText) = let keyOpt = match item with - | Item.Value vref -> Some (endPos, vref.DisplayName) + | Item.Value vref -> + if (vref.IsPropertyGetterMethod || vref.IsPropertySetterMethod) + && not (System.String.IsNullOrWhiteSpace vref.Id.idText) then + // We don't want to skip a symbol if both getter and setter are present. + Some (endPos, vref.Id.idText) + else + Some (endPos, vref.DisplayName) | Item.OtherName (ident = Some id) -> Some (endPos, id.idText) | _ -> None @@ -2128,14 +2118,16 @@ type TcResultsSinkImpl(tcGlobals, ?sourceText: ISourceText) = if allowedRange m then if replace then remove m - elif not (isAlreadyDone endPos item m) then + + if not (isAlreadyDone endPos item m) then capturedNameResolutions.Add(CapturedNameResolution(item, tpinst, occurenceType, nenv, ad, m)) member sink.NotifyMethodGroupNameResolution(endPos, item, itemMethodGroup, tpinst, occurenceType, nenv, ad, m, replace) = if allowedRange m then if replace then remove m - elif not (isAlreadyDone endPos item m) then + + if not (isAlreadyDone endPos item m) then capturedNameResolutions.Add(CapturedNameResolution(item, tpinst, occurenceType, nenv, ad, m)) capturedMethodGroupResolutions.Add(CapturedNameResolution(itemMethodGroup, [], occurenceType, nenv, ad, m)) @@ -2213,7 +2205,7 @@ type ResultTyparChecker = ResultTyparChecker of (unit -> bool) let CheckAllTyparsInferrable amap m item = match item with - | Item.Property(_, pinfos) -> + | Item.Property(info = pinfos) -> pinfos |> List.forall (fun pinfo -> pinfo.IsExtensionMember || let freeInDeclaringType = freeInType CollectTyparsNoCaching pinfo.ApparentEnclosingType @@ -2557,10 +2549,10 @@ let DecodeFSharpEvent (pinfos: PropInfo list) ad g (ncenv: NameResolver) m = Some(Item.Event(FSEvent(g, pinfo, addValRef, removeValRef))) | _ -> // FOUND PROPERTY-AS-EVENT BUT DIDN'T FIND CORRESPONDING ADD/REMOVE METHODS - Some(Item.Property (nm, pinfos)) + Some(Item.Property (nm, pinfos, None)) | pinfo :: _ -> let nm = DisplayNameCoreMangled pinfo - Some(Item.Property (nm, pinfos)) + Some(Item.Property (nm, pinfos, None)) | _ -> None @@ -2651,7 +2643,7 @@ let rec ResolveLongIdentInTypePrim (ncenv: NameResolver) nenv lookupKind (resInf let pinfos = ExtensionPropInfosOfTypeInScope ResultCollectionSettings.AllResults ncenv.InfoReader nenv optFilter isInstanceFilter ad m ty - if not (isNil pinfos) && isLookUpExpr then OneResult(success (resInfo, Item.Property (nm, pinfos), rest)) else + if not (isNil pinfos) && isLookUpExpr then OneResult(success (resInfo, Item.Property (nm, pinfos, None), rest)) else let minfos = ExtensionMethInfosOfTypeInScope ResultCollectionSettings.AllResults ncenv.InfoReader nenv optFilter isInstanceFilter m ty @@ -2715,6 +2707,36 @@ let rec ResolveLongIdentInTypePrim (ncenv: NameResolver) nenv lookupKind (resInf let errorTextF s = match tryTcrefOfAppTy g ty with + | ValueSome tcref when tcref.IsRecordTycon -> + let alternative = nenv.eFieldLabels |> Map.tryFind nm + match alternative with + | Some fieldLabels -> + let fieldsOfResolvedType = tcref.AllFieldsArray |> Array.map (fun f -> f.LogicalName) |> Set.ofArray + let fieldsOfAlternatives = + fieldLabels + |> Seq.collect (fun l -> l.Tycon.AllFieldsArray |> Array.map (fun f -> f.LogicalName)) + |> Set.ofSeq + let intersect = Set.intersect fieldsOfAlternatives fieldsOfResolvedType + + if not intersect.IsEmpty then + let resolvedTypeName = NicePrint.fqnOfEntityRef g tcref + let namesOfAlternatives = + fieldLabels + |> List.map (fun l -> $" %s{NicePrint.fqnOfEntityRef g l.TyconRef}") + |> fun names -> $" %s{resolvedTypeName}" :: names + let candidates = System.String.Join("\n", namesOfAlternatives) + let overlappingNames = + intersect + |> Set.toArray + |> Array.sort + |> Array.map (fun s -> $" %s{s}") + |> fun a -> System.String.Join("\n", a) + if g.langVersion.SupportsFeature(LanguageFeature.WarningWhenMultipleRecdTypeChoice) then + warning(Error(FSComp.SR.tcMultipleRecdTypeChoice(candidates, resolvedTypeName, overlappingNames), m)) + else + informationalWarning(Error(FSComp.SR.tcMultipleRecdTypeChoice(candidates, resolvedTypeName, overlappingNames), m)) + | _ -> () + FSComp.SR.undefinedNameFieldConstructorOrMemberWhenTypeIsKnown(tcref.DisplayNameWithStaticParametersAndUnderscoreTypars, s) | ValueSome tcref -> FSComp.SR.undefinedNameFieldConstructorOrMemberWhenTypeIsKnown(tcref.DisplayNameWithStaticParametersAndUnderscoreTypars, s) | _ -> @@ -3202,13 +3224,13 @@ exception UpperCaseIdentifierInPattern of range type WarnOnUpperFlag = WarnOnUpperCase | AllIdsOK // Long ID in a pattern -let rec ResolvePatternLongIdentPrim sink (ncenv: NameResolver) fullyQualified warnOnUpper newDef m ad nenv numTyArgsOpt (id: Ident) (rest: Ident list) = +let rec ResolvePatternLongIdentPrim sink (ncenv: NameResolver) fullyQualified warnOnUpper newDef m ad nenv numTyArgsOpt (id: Ident) (rest: Ident list) extraDotAtTheEnd = if id.idText = MangledGlobalName then match rest with | [] -> error (Error(FSComp.SR.nrGlobalUsedOnlyAsFirstName(), id.idRange)) | id2 :: rest2 -> - ResolvePatternLongIdentPrim sink ncenv FullyQualified warnOnUpper newDef m ad nenv numTyArgsOpt id2 rest2 + ResolvePatternLongIdentPrim sink ncenv FullyQualified warnOnUpper newDef m ad nenv numTyArgsOpt id2 rest2 extraDotAtTheEnd else // Single identifiers in patterns if isNil rest && fullyQualified <> FullyQualified then @@ -3216,15 +3238,35 @@ let rec ResolvePatternLongIdentPrim sink (ncenv: NameResolver) fullyQualified wa // For the special case of // let C = x match nenv.ePatItems.TryGetValue id.idText with - | true, res when not newDef -> ResolveUnqualifiedItem ncenv nenv m res + | true, res when not newDef -> ResolveUnqualifiedItem ncenv nenv m res | _ -> - // Single identifiers in patterns - variable bindings - if not newDef && - (warnOnUpper = WarnOnUpperCase) && - id.idText.Length >= 3 && - System.Char.ToLowerInvariant id.idText[0] <> id.idText[0] then - warning(UpperCaseIdentifierInPattern m) - Item.NewDef id + // Single identifiers in patterns - variable bindings + if + not newDef + && warnOnUpper = WarnOnUpperCase + && id.idText.Length >= 3 + && System.Char.ToLowerInvariant id.idText[0] <> id.idText[0] + then + warning(UpperCaseIdentifierInPattern m) + + // If there's an extra dot, we check whether the single identifier is a union, module or namespace and report it to the sink for the sake of tooling + match extraDotAtTheEnd with + | ExtraDotAfterIdentifier.Yes -> + match LookupTypeNameInEnvNoArity fullyQualified id.idText nenv with + | tcref :: _ when tcref.IsUnionTycon -> + let res = ResolutionInfo.Empty.AddEntity (id.idRange, tcref) + ResolutionInfo.SendEntityPathToSink (sink, ncenv, nenv, ItemOccurence.Pattern, ad, res, ResultTyparChecker(fun () -> true)) + Item.Types (id.idText, [ mkAppTy tcref [] ]) + | _ -> + match ResolveLongIdentAsModuleOrNamespace sink ncenv.amap id.idRange true fullyQualified nenv ad id [] false with + | Result ((_, mref, _) :: _) -> + let res = ResolutionInfo.Empty.AddEntity (id.idRange, mref) + ResolutionInfo.SendEntityPathToSink (sink, ncenv, nenv, ItemOccurence.Pattern, ad, res, ResultTyparChecker(fun () -> true)) + Item.ModuleOrNamespaces [ mref ] + | _ -> + Item.NewDef id + | _ -> + Item.NewDef id // Long identifiers in patterns else @@ -3258,10 +3300,10 @@ let rec ResolvePatternLongIdentPrim sink (ncenv: NameResolver) fullyQualified wa | element :: _ -> error(Error(FSComp.SR.nrIsNotConstructorOrLiteral(), element.idRange)) /// Resolve a long identifier when used in a pattern. -let ResolvePatternLongIdent sink (ncenv: NameResolver) warnOnUpper newDef m ad nenv numTyArgsOpt (lid: Ident list) = +let ResolvePatternLongIdent sink (ncenv: NameResolver) warnOnUpper newDef m ad nenv numTyArgsOpt (lid: Ident list) extraDotAtTheEnd = match lid with | [] -> error(Error(FSComp.SR.nrUnexpectedEmptyLongId(), m)) - | id :: rest -> ResolvePatternLongIdentPrim sink ncenv OpenQualified warnOnUpper newDef m ad nenv numTyArgsOpt id rest + | id :: rest -> ResolvePatternLongIdentPrim sink ncenv OpenQualified warnOnUpper newDef m ad nenv numTyArgsOpt id rest extraDotAtTheEnd //------------------------------------------------------------------------- // Resolve F#/IL "." syntax in types @@ -3648,8 +3690,7 @@ let ResolveFieldPrim sink (ncenv: NameResolver) nenv ad ty (mp, id: Ident) allFi error(ErrorWithSuggestions(errorText, m, id.idText, suggestLabels)) else lookup() - | _ -> - lookup() + | ValueNone -> lookup() | _ -> let lid = (mp@[id]) let tyconSearch ad () = @@ -3709,7 +3750,7 @@ let ResolveNestedField sink (ncenv: NameResolver) nenv ad recdTy lid = match tryDestAnonRecdTy g ty with | ValueSome (anonInfo, tys) -> match anonInfo.SortedNames |> Array.tryFindIndex (fun x -> x = id.idText) with - | Some index -> OneSuccess (Choice2Of2 (anonInfo, tys[index])) + | Some index -> OneSuccess (Item.AnonRecdField (anonInfo, tys, index, m)) | _ -> raze (Error(FSComp.SR.nrRecordDoesNotContainSuchLabel(NicePrint.minimalStringOfType nenv.eDisplayEnv ty, id.idText), m)) | _ -> let otherRecordFields ty = @@ -3724,7 +3765,7 @@ let ResolveNestedField sink (ncenv: NameResolver) nenv ad recdTy lid = if isRecdTy g ty then match ncenv.InfoReader.TryFindRecdOrClassFieldInfoOfType(id.idText, m, ty) with - | ValueSome (RecdFieldInfo (_, rfref)) -> OneSuccess (Choice1Of2 rfref) + | ValueSome info -> OneSuccess (Item.RecdField info) | _ -> // record label doesn't belong to record type -> suggest other labels of same record let suggestLabels addToBuffer = @@ -3740,22 +3781,17 @@ let ResolveNestedField sink (ncenv: NameResolver) nenv ad recdTy lid = // Eliminate duplicates arising from multiple 'open' fields |> ListSet.setify (fun fref1 fref2 -> tyconRefEq g fref1.TyconRef fref2.TyconRef) - |> List.map Choice1Of2 + |> List.map (fun rfref -> Item.RecdField (FreshenRecdFieldRef ncenv m rfref)) |> success | None -> raze (SuggestLabelsOfRelatedRecords g nenv id (otherRecordFields ty)) - let anonRecdInfoF field = - match field with - | Choice1Of2 _ -> None - | Choice2Of2 (anonInfo, _) -> Some anonInfo - match lid with | [] -> [], [] | [ id ] -> let res = lookupField recdTy id |> ForceRaise - |> List.map (fun x -> id, anonRecdInfoF x) + |> List.map (fun x -> id, x) [], res | id :: _ -> @@ -3763,10 +3799,7 @@ let ResolveNestedField sink (ncenv: NameResolver) nenv ad recdTy lid = match lid with | id :: rest -> lookupField recdTy id - |?> List.map (fun x -> - match x with - | Choice1Of2 rfref -> None, id, rfref.RecdField.FormalType, rest - | Choice2Of2 (anonInfo, fldTy) -> Some anonInfo, id, fldTy, rest) + |?> List.map (fun x -> id, x, rest) | _ -> NoResultsOrUsefulErrors let tyconSearch ad () = @@ -3782,7 +3815,7 @@ let ResolveNestedField sink (ncenv: NameResolver) nenv ad recdTy lid = ResolveLongIdentInTyconRefs ResultCollectionSettings.AllResults ncenv nenv LookupKind.RecdField 1 tyconId.idRange ad fieldId rest typeNameResInfo fieldId.idRange tcrefs |?> List.choose (fun x -> match x with - | _, Item.RecdField (RecdFieldInfo (_, rfref)), rest -> Some (None, fieldId, rfref.RecdField.FormalType, rest) + | _, (Item.RecdField _ as item), rest -> Some (fieldId, item, rest) | _ -> None) | _ -> NoResultsOrUsefulErrors @@ -3793,9 +3826,9 @@ let ResolveNestedField sink (ncenv: NameResolver) nenv ad recdTy lid = ResolveLongIdentAsModuleOrNamespaceThen sink ResultCollectionSettings.AtMostOneResult ncenv.amap modOrNsId.idRange OpenQualified nenv ad modOrNsId rest false (ResolveFieldInModuleOrNamespace ncenv nenv ad) |?> List.map (fun (_, FieldResolution(rfinfo, _), restAfterField) -> let fieldId = rest.[ rest.Length - restAfterField.Length - 1 ] - None, fieldId, rfinfo.RecdField.FormalType, restAfterField) + fieldId, Item.RecdField rfinfo, restAfterField) - let anonRecdInfo, fieldId, fieldTy, rest = + let fieldId, item, rest = let search = if isAnonRecdTy then fieldSearch () @@ -3813,24 +3846,29 @@ let ResolveNestedField sink (ncenv: NameResolver) nenv ad recdTy lid = lid |> List.takeWhile (fun id -> not (equals id.idRange fieldId.idRange)) match rest with - | [] -> idsBeforeField, [ (fieldId, anonRecdInfo) ] + | [] -> idsBeforeField, [ (fieldId, item) ] | _ -> - let rec nestedFieldSearch fields ty lid = + let rec nestedFieldSearch fields parentTy lid = match lid with | [] -> fields | id :: rest -> - let resolved = lookupField ty id |> ForceRaise + let resolved = lookupField parentTy id |> ForceRaise let fieldTy = match resolved with - | [ Choice1Of2 rfref ] -> rfref.RecdField.FormalType - | [ Choice2Of2 (_, fieldTy) ] -> fieldTy - | _ -> ty - - let resolved = resolved |> List.map (fun x -> id, anonRecdInfoF x) + | [ Item.RecdField info ] -> info.FieldType + | [ Item.AnonRecdField (_, tys, index, _) ] -> tys[index] + | _ -> parentTy + let resolved = resolved |> List.map (fun x -> id, x) nestedFieldSearch (fields @ resolved) fieldTy rest - idsBeforeField, (fieldId, anonRecdInfo) :: (nestedFieldSearch [] fieldTy rest) + let fieldTy = + match item with + | Item.RecdField info -> info.FieldType + | Item.AnonRecdField (_, tys, index, _) -> tys[index] + | _ -> g.obj_ty + + idsBeforeField, (fieldId, item) :: (nestedFieldSearch [] fieldTy rest) /// Resolve F#/IL "." syntax in expressions (2). /// @@ -3895,7 +3933,7 @@ let NeedsWorkAfterResolution namedItem = match namedItem with | Item.MethodGroup(_, minfos, _) | Item.CtorGroup(_, minfos) -> minfos.Length > 1 || minfos |> List.exists (fun minfo -> not (isNil minfo.FormalMethodInst)) - | Item.Property(_, pinfos) -> pinfos.Length > 1 + | Item.Property(info = pinfos) -> pinfos.Length > 1 | Item.ImplicitOp(_, { contents = Some(TraitConstraintSln.FSMethSln(vref=vref)) }) | Item.Value vref | Item.CustomBuilder (_, vref) -> not (List.isEmpty vref.Typars) | Item.CustomOperation (_, _, Some minfo) -> not (isNil minfo.FormalMethodInst) @@ -3952,7 +3990,7 @@ let ResolveLongIdentAsExprAndComputeRange (sink: TcResultsSink) (ncenv: NameReso match pinfoOpt with | None when minfo.IsConstructor -> Item.CtorGroup(minfo.LogicalName, [minfo]) | None -> Item.MethodGroup(minfo.LogicalName, [minfo], None) - | Some pinfo -> Item.Property(pinfo.PropertyName, [pinfo]) + | Some pinfo -> Item.Property(pinfo.PropertyName, [pinfo], None) callSink (refinedItem, tpinst) @@ -3971,7 +4009,7 @@ let ResolveLongIdentAsExprAndComputeRange (sink: TcResultsSink) (ncenv: NameReso let (|NonOverridable|_|) namedItem = match namedItem with | Item.MethodGroup(_, minfos, _) when minfos |> List.exists(fun minfo -> minfo.IsVirtual || minfo.IsAbstract) -> None - | Item.Property(_, pinfos) when pinfos |> List.exists(fun pinfo -> pinfo.IsVirtualProperty) -> None + | Item.Property(info = pinfos) when pinfos |> List.exists(fun pinfo -> pinfo.IsVirtualProperty) -> None | _ -> Some () /// Called for 'expression.Bar' - for VS IntelliSense, we can filter out static members from method groups @@ -4015,7 +4053,7 @@ let ResolveExprDotLongIdentAndComputeRange (sink: TcResultsSink) (ncenv: NameRes match pinfoOpt with | None when minfo.IsConstructor -> Item.CtorGroup(minfo.LogicalName, [minfo]) | None -> Item.MethodGroup(minfo.LogicalName, [minfo], None) - | Some pinfo -> Item.Property(pinfo.PropertyName, [pinfo]) + | Some pinfo -> Item.Property(pinfo.PropertyName, [pinfo], None) callSink (refinedItem, tpinst) @@ -4819,7 +4857,7 @@ and ResolvePartialLongIdentToClassOrRecdFieldsImpl (ncenv: NameResolver) (nenv: let qualifiedFields = match rest with - | [] when not fieldsOnly -> + | [] -> // get record types accessible in given nenv let tycons = LookupTypeNameInEnvNoArity OpenQualified id nenv tycons diff --git a/src/fcs-fable/src/Compiler/Checking/NameResolution.fsi b/src/fcs-fable/src/Compiler/Checking/NameResolution.fsi index a4f8a14dd5..5dcc55efc9 100755 --- a/src/fcs-fable/src/Compiler/Checking/NameResolution.fsi +++ b/src/fcs-fable/src/Compiler/Checking/NameResolution.fsi @@ -71,7 +71,7 @@ type Item = | UnionCaseField of UnionCaseInfo * fieldIndex: int /// Represents the resolution of a name to a field of an anonymous record type. - | AnonRecdField of AnonRecdTypeInfo * TTypes * int * range + | AnonRecdField of anonInfo: AnonRecdTypeInfo * tys: TTypes * fieldIndex: int * range: range // The following are never in the items table but are valid results of binding // an identifier in different circumstances. @@ -86,7 +86,7 @@ type Item = | Event of EventInfo /// Represents the resolution of a name to a property - | Property of string * PropInfo list + | Property of name: string * info: PropInfo list * sourceIdentifierRange: range option /// Represents the resolution of a name to a group of methods. | MethodGroup of displayName: string * methods: MethInfo list * uninstantiatedMethodOpt: MethInfo option @@ -247,6 +247,13 @@ type FullyQualifiedFlag = | FullyQualified | OpenQualified +/// Indicates whether an identifier (single or long) is followed by an extra dot. Typically used +/// to provide better tooling and error reporting. +[] +type ExtraDotAfterIdentifier = + | Yes + | No + [] type BulkAdd = | Yes @@ -708,6 +715,7 @@ val internal ResolvePatternLongIdent: nenv: NameResolutionEnv -> numTyArgsOpt: TypeNameResolutionInfo -> lid: Ident list -> + extraDotAtTheEnd: ExtraDotAfterIdentifier -> Item /// Resolve a long identifier representing a type name @@ -755,7 +763,7 @@ val internal ResolveNestedField: ad: AccessorDomain -> recdTy: TType -> lid: Ident list -> - Ident list * (Ident * AnonRecdTypeInfo option) list + Ident list * (Ident * Item) list /// Resolve a long identifier occurring in an expression position val internal ResolveExprLongIdent: diff --git a/src/fcs-fable/src/Compiler/Checking/NicePrint.fs b/src/fcs-fable/src/Compiler/Checking/NicePrint.fs index 1142330c84..53ec1c5f51 100755 --- a/src/fcs-fable/src/Compiler/Checking/NicePrint.fs +++ b/src/fcs-fable/src/Compiler/Checking/NicePrint.fs @@ -38,7 +38,7 @@ module internal PrintUtilities = let squareAngleL x = LeftL.leftBracketAngle ^^ x ^^ RightL.rightBracketAngle - let angleL x = sepL leftAngle ^^ x ^^ rightL rightAngle + let angleL x = SepL.leftAngle ^^ x ^^ RightL.rightAngle let braceL x = wordL leftBrace ^^ x ^^ wordL rightBrace @@ -113,9 +113,9 @@ module internal PrintUtilities = let layout = argTyL ^^ (if idx = lastIndex then - wordL (tagPunctuation retTyDelim) + wordL retTyDelim else - wordL (tagPunctuation "->")) + WordL.arrow) isTupled, layout) |> List.rev @@ -168,7 +168,19 @@ module internal PrintUtilities = | GenericParameterStyle.Prefix -> true | GenericParameterStyle.Suffix -> false - let layoutTyconRefImpl isAttribute (denv: DisplayEnv) (tcref: TyconRef) = + /// + /// Creates a layout for TyconRef. + /// + /// + /// + /// + /// + /// Used in the case the TyconRef is a nested type from another assembly which has generic type parameters in the path. + /// For example: System.Collections.Immutable.ImmutableArray>'T<.Builder + /// Lead to access path: System.Collections.Immutable.ImmutableArray`1 + /// ImmutableArray`1 will be transformed to ImmutableArray>'t< + /// + let layoutTyconRefImpl isAttribute (denv: DisplayEnv) (tcref: TyconRef) (demangledPath: string list option) = let prefix = usePrefix denv tcref let isArray = not prefix && isArrayTyconRef denv.g tcref @@ -201,21 +213,22 @@ module internal PrintUtilities = if denv.shortTypeNames then tyconTextL else - let path = tcref.CompilationPath.DemangledPath let path = if denv.includeStaticParametersInTypeNames then - path + Option.defaultValue tcref.CompilationPath.DemangledPath demangledPath else - path |> List.map (fun s -> + tcref.CompilationPath.DemangledPath + |> List.map (fun s -> let i = s.IndexOf(',') if i <> -1 then s.Substring(0, i)+"<...>" // apparently has static params, shorten else s) + let pathText = trimPathByDisplayEnv denv path if pathText = "" then tyconTextL else leftL (tagUnknownEntity pathText) ^^ tyconTextL let layoutBuiltinAttribute (denv: DisplayEnv) (attrib: BuiltinAttribInfo) = let tcref = attrib.TyconRef - squareAngleL (layoutTyconRefImpl true denv tcref) + squareAngleL (layoutTyconRefImpl true denv tcref None) /// layout the xml docs immediately before another block let layoutXmlDoc (denv: DisplayEnv) alwaysAddEmptyLine (xml: XmlDoc) restL = @@ -477,7 +490,7 @@ module PrintTypes = s |> tagNumericLiteral | Const.Char c -> "'" + c.ToString() + "'" |> tagStringLiteral | Const.String bs -> "\"" + bs + "\"" |> tagNumericLiteral - | Const.Unit -> "()" |> tagPunctuation + | Const.Unit -> punctuationUnit | Const.Decimal bs -> string bs + "M" |> tagNumericLiteral // either "null" or "the default value for a struct" | Const.Zero -> tagKeyword(if isRefTy g ty then "null" else "default") @@ -503,7 +516,7 @@ module PrintTypes = layoutAccessibilityCore denv accessibility ++ itemL /// Layout a reference to a type - let layoutTyconRef denv tcref = layoutTyconRefImpl false denv tcref + let layoutTyconRef denv tcref = layoutTyconRefImpl false denv tcref None /// Layout the flags of a member let layoutMemberFlags (memFlags: SynMemberFlags) = @@ -546,14 +559,14 @@ module PrintTypes = // Detect 'typeof' calls | TypeOfExpr denv.g ty -> - LeftL.keywordTypeof ^^ wordL (tagPunctuation "<") ^^ layoutType denv ty ^^ rightL (tagPunctuation ">") + LeftL.keywordTypeof ^^ WordL.leftAngle ^^ layoutType denv ty ^^ RightL.rightAngle // Detect 'typedefof' calls | TypeDefOfExpr denv.g ty -> - LeftL.keywordTypedefof ^^ wordL (tagPunctuation "<") ^^ layoutType denv ty ^^ rightL (tagPunctuation ">") + LeftL.keywordTypedefof ^^ WordL.leftAngle ^^ layoutType denv ty ^^ RightL.rightAngle | Expr.Op (TOp.Coerce, [tgtTy;_], [arg2], _) -> - leftL (tagPunctuation "(") ^^ layoutAttribArg denv arg2 ^^ wordL (tagPunctuation ":>") ^^ layoutType denv tgtTy ^^ rightL (tagPunctuation ")") + LeftL.leftParen ^^ layoutAttribArg denv arg2 ^^ wordL (tagPunctuation ":>") ^^ layoutType denv tgtTy ^^ RightL.rightParen | AttribBitwiseOrExpr denv.g (arg1, arg2) -> layoutAttribArg denv arg1 ^^ wordL (tagPunctuation "|||") ^^ layoutAttribArg denv arg2 @@ -571,11 +584,11 @@ module PrintTypes = props |> List.map (fun (AttribNamedArg(name,_, _, AttribExpr(e1, _))) -> wordL (tagProperty name) ^^ WordL.equals ^^ layoutAttribArg denv e1) - sepListL (rightL (tagPunctuation ",")) (argsL @ propsL) + sepListL RightL.comma (argsL @ propsL) /// Layout an attribute 'Type(arg1, ..., argN)' and layoutAttrib denv (Attrib(tcref, _, args, props, _, _, _)) = - let tcrefL = layoutTyconRefImpl true denv tcref + let tcrefL = layoutTyconRefImpl true denv tcref None let argsL = bracketL (layoutAttribArgs denv args props) if List.isEmpty args && List.isEmpty props then tcrefL @@ -610,7 +623,7 @@ module PrintTypes = wordL (tagNumericLiteral str) | ILAttribElem.Null -> wordL (tagKeyword "null") | ILAttribElem.Array (_, xs) -> - leftL (tagPunctuation "[|") ^^ semiListL (List.map (layoutILAttribElement denv) xs) ^^ RightL.rightBracketBar + LeftL.leftBracketBar ^^ semiListL (List.map (layoutILAttribElement denv) xs) ^^ RightL.rightBracketBar | ILAttribElem.Type (Some ty) -> LeftL.keywordTypeof ^^ SepL.leftAngle ^^ PrintIL.layoutILType denv [] ty ^^ RightL.rightAngle | ILAttribElem.Type None -> wordL (tagText "") @@ -619,7 +632,7 @@ module PrintTypes = | ILAttribElem.TypeRef None -> emptyL and layoutILAttrib denv (ty, args) = - let argsL = bracketL (sepListL (rightL (tagPunctuation ",")) (List.map (layoutILAttribElement denv) args)) + let argsL = bracketL (sepListL RightL.comma (List.map (layoutILAttribElement denv) args)) PrintIL.layoutILType denv [] ty ++ argsL /// Layout '[]' above another block @@ -667,12 +680,12 @@ module PrintTypes = match attrsL with | [] -> restL - | _ -> squareAngleL (sepListL (rightL (tagPunctuation ";")) attrsL) @@ restL + | _ -> squareAngleL (sepListL RightL.semicolon attrsL) @@ restL and layoutTyparAttribs denv kind attrs restL = match attrs, kind with | [], TyparKind.Type -> restL - | _, _ -> squareAngleL (sepListL (rightL (tagPunctuation ";")) ((match kind with TyparKind.Type -> [] | TyparKind.Measure -> [wordL (tagText "Measure")]) @ List.map (layoutAttrib denv) attrs)) ^^ restL + | _, _ -> squareAngleL (sepListL RightL.semicolon ((match kind with TyparKind.Type -> [] | TyparKind.Measure -> [wordL (tagText "Measure")]) @ List.map (layoutAttrib denv) attrs)) ^^ restL and layoutTyparRef denv (typar: Typar) = tagTypeParameter @@ -699,7 +712,15 @@ module PrintTypes = match Zmap.tryFind typar env.inplaceConstraints with | Some typarConstraintTy -> if Zset.contains typar env.singletons then - leftL (tagPunctuation "#") ^^ layoutTypeWithInfo denv env typarConstraintTy + let tyLayout = + match typarConstraintTy with + | TType_app (tyconRef = tc; typeInstantiation = ti) + when ti.Length > 0 && not (usePrefix denv tc) -> + layoutTypeWithInfo denv env typarConstraintTy + |> bracketL + | _ -> layoutTypeWithInfo denv env typarConstraintTy + + leftL (tagPunctuation "#") ^^ tyLayout else (varL ^^ sepL (tagPunctuation ":>") ^^ layoutTypeWithInfo denv env typarConstraintTy) |> bracketL @@ -727,7 +748,7 @@ module PrintTypes = if denv.abbreviateAdditionalConstraints then wordL (tagKeyword "when") ^^ wordL(tagText "") elif denv.shortConstraints then - leftL (tagPunctuation "(") ^^ wordL (tagKeyword "requires") ^^ sepListL (wordL (tagKeyword "and")) cxsL ^^ rightL (tagPunctuation ")") + LeftL.leftParen ^^ wordL (tagKeyword "requires") ^^ sepListL (wordL (tagKeyword "and")) cxsL ^^ RightL.rightParen else wordL (tagKeyword "when") ^^ sepListL (wordL (tagKeyword "and")) cxsL @@ -748,9 +769,9 @@ module PrintTypes = | TyparConstraint.IsEnum(ty, _) -> if denv.shortConstraints then - [wordL (tagKeyword "enum")] + [ WordL.keywordEnum ] else - [longConstraintPrefix (layoutTypeAppWithInfoAndPrec denv env (wordL (tagKeyword "enum")) 2 true [ty])] + [longConstraintPrefix (layoutTypeAppWithInfoAndPrec denv env WordL.keywordEnum 2 true [ty])] | TyparConstraint.SupportsComparison _ -> if denv.shortConstraints then @@ -789,10 +810,10 @@ module PrintTypes = if denv.shortConstraints then [wordL (tagText "reference type")] else - [(wordL (tagKeyword "not") ^^ wordL(tagKeyword "struct")) |> longConstraintPrefix] + [(wordL (tagKeyword "not") ^^ WordL.keywordStruct) |> longConstraintPrefix] | TyparConstraint.SimpleChoice(tys, _) -> - [bracketL (sepListL (sepL (tagPunctuation "|")) (List.map (layoutTypeWithInfo denv env) tys)) |> longConstraintPrefix] + [bracketL (sepListL (sepL bar) (List.map (layoutTypeWithInfo denv env) tys)) |> longConstraintPrefix] | TyparConstraint.RequiresDefaultConstructor _ -> if denv.shortConstraints then @@ -837,13 +858,13 @@ module PrintTypes = | [] -> retTyL | _ -> let argTysL = layoutTypesWithInfoAndPrec denv env 2 (wordL (tagPunctuation "*")) argTys - curriedLayoutsL "->" [argTysL] retTyL + curriedLayoutsL arrow [argTysL] retTyL let getterSetterL = match memFlags.MemberKind with | SynMemberKind.PropertyGet when not argTys.IsEmpty -> - wordL (tagKeyword "with") ^^ wordL (tagText "get") + WordL.keywordWith ^^ WordL.keywordGet | SynMemberKind.PropertySet -> - wordL (tagKeyword "with") ^^ wordL (tagText "set") + WordL.keywordWith ^^ WordL.keywordSet | _ -> emptyL (tysL |> addColonL) --- bracketL (stat ++ (nameL |> addColonL) --- sigL --- getterSetterL) @@ -864,20 +885,20 @@ module PrintTypes = List.map (fun (c, e) -> measureToPowerL (unconL c) (NegRational e)) negcs) match (negvs, negcs) with | [], [] -> (match posvs, poscs with [], [] -> wordL (tagNumericLiteral "1") | _ -> prefix) - | _ -> prefix ^^ sepL (tagPunctuation "/") ^^ (if List.length negvs + List.length negcs > 1 then sepL (tagPunctuation "(") ^^ postfix ^^ sepL (tagPunctuation ")") else postfix) + | _ -> prefix ^^ sepL (tagPunctuation "/") ^^ (if List.length negvs + List.length negcs > 1 then SepL.leftParen ^^ postfix ^^ SepL.rightParen else postfix) /// Layout type arguments, either NAME or (ty, ..., ty) NAME *) and layoutTypeAppWithInfoAndPrec denv env tcL prec prefix argTys = if prefix then match argTys with | [] -> tcL - | [argTy] -> tcL ^^ sepL (tagPunctuation "<") ^^ (layoutTypeWithInfoAndPrec denv env 4 argTy) ^^ rightL (tagPunctuation">") - | _ -> bracketIfL (prec <= 1) (tcL ^^ angleL (layoutTypesWithInfoAndPrec denv env 2 (sepL (tagPunctuation ",")) argTys)) + | [argTy] -> tcL ^^ SepL.leftAngle ^^ (layoutTypeWithInfoAndPrec denv env 4 argTy) ^^ RightL.rightAngle + | _ -> bracketIfL (prec <= 1) (tcL ^^ angleL (layoutTypesWithInfoAndPrec denv env 2 SepL.comma argTys)) else match argTys with | [] -> tcL | [arg] -> layoutTypeWithInfoAndPrec denv env 2 arg ^^ tcL - | args -> bracketIfL (prec <= 1) (bracketL (layoutTypesWithInfoAndPrec denv env 2 (sepL (tagPunctuation ",")) args) --- tcL) + | args -> bracketIfL (prec <= 1) (bracketL (layoutTypesWithInfoAndPrec denv env 2 SepL.comma args) --- tcL) /// Layout a type, taking precedence into account to insert brackets where needed and layoutTypeWithInfoAndPrec denv env prec ty = @@ -904,11 +925,47 @@ module PrintTypes = | TType_ucase (UnionCaseRef(tc, _), args) | TType_app (tc, args, _) -> let prefix = usePrefix denv tc - layoutTypeAppWithInfoAndPrec denv env (layoutTyconRef denv tc) prec prefix args + let demangledCompilationPathOpt, args = + if not denv.includeStaticParametersInTypeNames then + None, args + else +#if FABLE_COMPILER + let regex = System.Text.RegularExpressions.Regex(@"`\d+") +#else + let regex = System.Text.RegularExpressions.Regex(@"\`\d+") +#endif + let path, skip = + (0, tc.CompilationPath.DemangledPath) + ||> List.mapFold (fun skip path -> + // Verify the path does not contain a generic parameter count. + // For example Foo`3 indicates that there are three parameters in args that belong to this path. + let m = regex.Match(path) + if not m.Success then + path, skip + else + let take = m.Value.Replace("`", "") |> int + let genericArgs = + List.skip skip args + |> List.take take + |> List.map (layoutTypeWithInfoAndPrec denv env prec >> showL) + |> String.concat "," + |> sprintf "<%s>" + String.Concat(path.Substring(0, m.Index), genericArgs), (skip + take) + ) + + Some path, List.skip skip args + + layoutTypeAppWithInfoAndPrec + denv + env + (layoutTyconRefImpl false denv tc demangledCompilationPathOpt) + prec + prefix + args // Layout a tuple type | TType_anon (anonInfo, tys) -> - let core = sepListL (rightL (tagPunctuation ";")) (List.map2 (fun nm ty -> wordL (tagField nm) ^^ rightL (tagPunctuation ":") ^^ layoutTypeWithInfoAndPrec denv env prec ty) (Array.toList anonInfo.SortedNames) tys) + let core = sepListL RightL.semicolon (List.map2 (fun nm ty -> wordL (tagField nm) ^^ RightL.colon ^^ layoutTypeWithInfoAndPrec denv env prec ty) (Array.toList anonInfo.SortedNames) tys) if evalAnonInfoIsStruct anonInfo then WordL.keywordStruct --- braceBarL core else @@ -927,14 +984,14 @@ module PrintTypes = let tauL = layoutTypeWithInfoAndPrec denv env prec tau match tps with | [] -> tauL - | [h] -> layoutTyparRefWithInfo denv env h ^^ rightL (tagPunctuation ".") --- tauL - | h :: t -> spaceListL (List.map (layoutTyparRefWithInfo denv env) (h :: t)) ^^ rightL (tagPunctuation ".") --- tauL + | [h] -> layoutTyparRefWithInfo denv env h ^^ rightL dot --- tauL + | h :: t -> spaceListL (List.map (layoutTyparRefWithInfo denv env) (h :: t)) ^^ rightL dot --- tauL | TType_fun _ -> let argTys, retTy = stripFunTy g ty let retTyL = layoutTypeWithInfoAndPrec denv env 5 retTy let argTysL = argTys |> List.map (layoutTypeWithInfoAndPrec denv env 4) - let funcTyL = curriedLayoutsL "->" argTysL retTyL + let funcTyL = curriedLayoutsL arrow argTysL retTyL bracketIfL (prec <= 4) funcTyL // Layout a type variable . @@ -956,34 +1013,46 @@ module PrintTypes = and layoutType denv ty = layoutTypeWithInfo denv SimplifyTypes.typeSimplificationInfo0 ty + /// Layout '[]' for parameters + and layoutAttribsOneline denv attribs = + match attribs with + | [] -> emptyL + | attribs -> + let attrsL = + [ for attr in attribs do layoutAttrib denv attr ] + + squareAngleL (sepListL RightL.semicolon attrsL) + // Format each argument, including its name and type let layoutArgInfo denv env (ty, argInfo: ArgReprInfo) = let g = denv.g // Detect an optional argument let isOptionalArg = HasFSharpAttribute g g.attrib_OptionalArgumentAttribute argInfo.Attribs - let isParamArray = HasFSharpAttribute g g.attrib_ParamArrayAttribute argInfo.Attribs - match argInfo.Name, isOptionalArg, isParamArray, tryDestOptionTy g ty with + match argInfo.Name, isOptionalArg, tryDestOptionTy g ty with // Layout an optional argument - | Some id, true, _, ValueSome ty -> + | Some id, true, ValueSome ty -> let idL = ConvertValLogicalNameToDisplayLayout false (tagParameter >> rightL) id.idText + let attrsLayout = + argInfo.Attribs + |> List.filter (fun a -> not (IsMatchingFSharpAttribute g g.attrib_OptionalArgumentAttribute a)) + |> layoutAttribsOneline denv + + attrsLayout ^^ LeftL.questionMark ^^ (idL |> addColonL) ^^ layoutTypeWithInfoAndPrec denv env 2 ty - // Layout an unnamed argument - | None, _, _, _ -> + // Layout an unnamed argument + // Cannot have any attributes + | None, _, _ -> layoutTypeWithInfoAndPrec denv env 2 ty // Layout a named argument - | Some id, _, isParamArray, _ -> + | Some id, _, _ -> let idL = ConvertValLogicalNameToDisplayLayout false (tagParameter >> wordL) id.idText - let prefix = - if isParamArray then - layoutBuiltinAttribute denv g.attrib_ParamArrayAttribute ^^ idL - else - idL + let prefix = layoutAttribsOneline denv argInfo.Attribs ^^ idL (prefix |> addColonL) ^^ layoutTypeWithInfoAndPrec denv env 2 ty let layoutCurriedArgInfos denv env argInfos = @@ -995,15 +1064,15 @@ module PrintTypes = match genParamTys with | [] -> emptyL | _ -> - wordL (tagPunctuation "<") + WordL.leftAngle ^^ ( genParamTys |> List.map (layoutTypeWithInfoAndPrec denv env 4) - |> sepListL (wordL (tagPunctuation ",")) + |> sepListL (wordL comma) ) ^^ - wordL (tagPunctuation ">") + wordL rightAngle /// Layout a single type used as the type of a member or value let layoutTopType denv env argInfos retTy cxs = @@ -1012,7 +1081,7 @@ module PrintTypes = match argInfos with | [] -> retTyL --- cxsL | _ -> - let retTyDelim = if denv.useColonForReturnType then ":" else "->" + let retTyDelim = if denv.useColonForReturnType then colon else arrow let allArgsL = layoutCurriedArgInfos denv env argInfos curriedLayoutsL retTyDelim allArgsL retTyL --- cxsL @@ -1029,7 +1098,7 @@ module PrintTypes = | _ -> let tpcsL = layoutConstraintsWithInfo denv env tpcs - let coreL = sepListL (sepL (tagPunctuation ",")) (List.map (layoutTyparRefWithInfo denv env) typars) + let coreL = sepListL SepL.comma (List.map (layoutTyparRefWithInfo denv env) typars) if prefix || not (isNil tpcs) then nmL ^^ angleL (coreL --- tpcsL) else @@ -1194,18 +1263,32 @@ module PrintTastMemberOrVals = let mkInlineL denv (v: Val) nameL = if v.MustInline && not denv.suppressInlineKeyword then - wordL (tagKeyword "inline") ++ nameL + WordL.keywordInline ++ nameL else nameL - let layoutMemberName (denv: DisplayEnv) (vref: ValRef) niceMethodTypars tagFunction name = + let layoutMemberName (denv: DisplayEnv) (vref: ValRef) niceMethodTypars argInfos tagFunction name = let nameL = ConvertValLogicalNameToDisplayLayout vref.IsBaseVal (tagFunction >> mkNav vref.DefinitionRange >> wordL) name let nameL = if denv.showMemberContainers then layoutTyconRef denv vref.MemberApparentEntity ^^ SepL.dot ^^ nameL else nameL - let nameL = if denv.showTyparBinding then layoutTyparDecls denv nameL true niceMethodTypars else nameL + + let memberHasSameTyparNameAsParentTypeTypars = + let parentTyparNames = + vref.DeclaringEntity.TyparsNoRange + |> Seq.choose (fun tp -> if tp.typar_id.idText = unassignedTyparName then None else Some tp.typar_id.idText) + |> set + niceMethodTypars + |> Seq.exists (fun tp -> parentTyparNames.Contains tp.typar_id.idText) + + let typarOrderMismatch = isTyparOrderMismatch niceMethodTypars argInfos + let nameL = + if denv.showTyparBinding || typarOrderMismatch || memberHasSameTyparNameAsParentTypeTypars then + layoutTyparDecls denv nameL true niceMethodTypars + else + nameL let nameL = layoutAccessibility denv vref.Accessibility nameL nameL @@ -1228,7 +1311,7 @@ module PrintTastMemberOrVals = let resL = if short then tauL else - let nameL = layoutMemberName denv vref niceMethodTypars tagMember vref.DisplayNameCoreMangled + let nameL = layoutMemberName denv vref niceMethodTypars argInfos tagMember vref.DisplayNameCoreMangled let nameL = if short then nameL else mkInlineL denv vref.Deref nameL stat --- ((nameL |> addColonL) ^^ tauL) prettyTyparInst, resL @@ -1250,7 +1333,8 @@ module PrintTastMemberOrVals = if isNil argInfos then // use error recovery because intellisense on an incomplete file will show this errorR(Error(FSComp.SR.tastInvalidFormForPropertyGetter(), vref.Id.idRange)) - let nameL = layoutMemberName denv vref [] tagProperty vref.DisplayNameCoreMangled + let nameL = layoutMemberName denv vref [] argInfos tagProperty vref.DisplayNameCoreMangled + let nameL = if short then nameL else mkInlineL denv vref.Deref nameL let resL = if short then nameL --- (WordL.keywordWith ^^ WordL.keywordGet) else stat --- nameL --- (WordL.keywordWith ^^ WordL.keywordGet) @@ -1266,7 +1350,8 @@ module PrintTastMemberOrVals = if isNil argInfos then tauL else tauL --- (WordL.keywordWith ^^ WordL.keywordGet) else - let nameL = layoutMemberName denv vref niceMethodTypars tagProperty vref.DisplayNameCoreMangled + let nameL = layoutMemberName denv vref niceMethodTypars argInfos tagProperty vref.DisplayNameCoreMangled + let nameL = if short then nameL else mkInlineL denv vref.Deref nameL stat --- ((nameL |> addColonL) ^^ (if isNil argInfos then tauL else tauL --- (WordL.keywordWith ^^ WordL.keywordGet))) prettyTyparInst, resL @@ -1274,17 +1359,20 @@ module PrintTastMemberOrVals = if argInfos.Length <> 1 || isNil argInfos.Head then // use error recovery because intellisense on an incomplete file will show this errorR(Error(FSComp.SR.tastInvalidFormForPropertySetter(), vref.Id.idRange)) - let nameL = layoutMemberName denv vref [] tagProperty vref.DisplayNameCoreMangled + let nameL = layoutMemberName denv vref [] argInfos tagProperty vref.DisplayNameCoreMangled + let nameL = if short then nameL else mkInlineL denv vref.Deref nameL let resL = stat --- nameL --- (WordL.keywordWith ^^ WordL.keywordSet) emptyTyparInst, resL else + let curriedArgInfos = argInfos let argInfos, valueInfo = List.frontAndBack argInfos.Head let prettyTyparInst, niceMethodTypars, tauL = prettyLayoutOfMemberType denv vref typarInst (if isNil argInfos then [] else [argInfos]) (fst valueInfo) let resL = if short then (tauL --- (WordL.keywordWith ^^ WordL.keywordSet)) else - let nameL = layoutMemberName denv vref niceMethodTypars tagProperty vref.DisplayNameCoreMangled + let nameL = layoutMemberName denv vref niceMethodTypars curriedArgInfos tagProperty vref.DisplayNameCoreMangled + let nameL = if short then nameL else mkInlineL denv vref.Deref nameL stat --- ((nameL |> addColonL) ^^ (tauL --- (WordL.keywordWith ^^ WordL.keywordSet))) prettyTyparInst, resL @@ -1351,9 +1439,11 @@ module PrintTastMemberOrVals = let nameL = mkInlineL denv v nameL let isOverGeneric = List.length (Zset.elements (freeInType CollectTyparsNoCaching tau).FreeTypars) < List.length tps // Bug: 1143 - let isTyFunction = v.IsTypeFunction // Bug: 1143, and innerpoly tests + let isTyFunction = v.IsTypeFunction // Bug: 1143, and innerpoly tests + let typarOrderMismatch = isTyparOrderMismatch tps argInfos + let typarBindingsL = - if isTyFunction || isOverGeneric || denv.showTyparBinding then + if isTyFunction || isOverGeneric || denv.showTyparBinding || typarOrderMismatch then layoutTyparDecls denv nameL true tps else nameL let valAndTypeL = (WordL.keywordVal ^^ (typarBindingsL |> addColonL)) --- layoutTopType denv env argInfos retTy cxs @@ -1472,8 +1562,13 @@ module InfoMemberPrinting = WordL.keywordNew else let idL = ConvertValLogicalNameToDisplayLayout false (tagMethod >> tagNavArbValRef minfo.ArbitraryValRef >> wordL) minfo.LogicalName - WordL.keywordMember ^^ - PrintTypes.layoutTyparDecls denv idL true minfo.FormalMethodTypars + let keywordLayout = + match minfo with + | ILMeth(ilMethInfo = ilMethInfo) when ilMethInfo.IsAbstract -> + WordL.keywordOverride + | _ -> WordL.keywordMember + + keywordLayout ^^ PrintTypes.layoutTyparDecls denv idL true minfo.FormalMethodTypars let layout = layout ^^ (nameL |> addColonL) let layout = layoutXmlDocOfMethInfo denv infoReader minfo layout @@ -1566,7 +1661,7 @@ module InfoMemberPrinting = match methInfo with | DefaultStructCtor _ -> let prettyTyparInst, _ = PrettyTypes.PrettifyInst amap.g typarInst - let resL = PrintTypes.layoutTyconRef denv methInfo.ApparentEnclosingTyconRef ^^ wordL (tagPunctuation "()") + let resL = PrintTypes.layoutTyconRef denv methInfo.ApparentEnclosingTyconRef ^^ wordL punctuationUnit prettyTyparInst, resL | FSMeth(_, _, vref, _) -> let prettyTyparInst, resL = PrintTastMemberOrVals.prettyLayoutOfValOrMember { denv with showMemberContainers=true } infoReader typarInst vref @@ -1589,11 +1684,11 @@ module InfoMemberPrinting = let getterSetter = match pinfo.HasGetter, pinfo.HasSetter with | true, false -> - wordL (tagKeyword "with") ^^ wordL (tagText "get") + WordL.keywordWith ^^ WordL.keywordGet | false, true -> - wordL (tagKeyword "with") ^^ wordL (tagText "set") + WordL.keywordWith ^^ WordL.keywordSet | true, true -> - wordL (tagKeyword "with") ^^ wordL (tagText "get, set") + WordL.keywordWith ^^ wordL (tagText "get, set") | false, false -> emptyL @@ -1625,7 +1720,7 @@ module TastDefinitionPrinting = let layoutExtensionMember denv infoReader (vref: ValRef) = let (@@*) = if denv.printVerboseSignatures then (@@----) else (@@--) let tycon = vref.MemberApparentEntity.Deref - let nameL = layoutTyconRefImpl false denv vref.MemberApparentEntity + let nameL = layoutTyconRefImpl false denv vref.MemberApparentEntity None let nameL = layoutAccessibility denv tycon.Accessibility nameL // "type-accessibility" let tps = match PartitionValTyparsForApparentEnclosingType denv.g vref.Deref with @@ -1697,11 +1792,13 @@ module TastDefinitionPrinting = let breakTypeDefnEqn repr = match repr with | TILObjectRepr _ -> true - | TFSharpObjectRepr _ -> true - | TFSharpRecdRepr _ -> true - | TFSharpUnionRepr r -> - not (isNilOrSingleton r.CasesTable.UnionCasesAsList) || - r.CasesTable.UnionCasesAsList |> List.exists (fun uc -> not uc.XmlDoc.IsEmpty) + | TFSharpTyconRepr d -> + match d.fsobjmodel_kind with + | TFSharpUnion -> + let r = d.fsobjmodel_cases + not (isNilOrSingleton r.UnionCasesAsList) || + r.UnionCasesAsList |> List.exists (fun uc -> not uc.XmlDoc.IsEmpty) + | _ -> true | TAsmRepr _ | TMeasureableRepr _ #if !NO_TYPEPROVIDERS @@ -1725,12 +1822,30 @@ module TastDefinitionPrinting = let overallL = staticL ^^ WordL.keywordMember ^^ (nameL |> addColonL) ^^ typL layoutXmlDocOfEventInfo denv infoReader einfo overallL - let layoutPropInfo denv (infoReader: InfoReader) m (pinfo: PropInfo) = + let layoutPropInfo denv (infoReader: InfoReader) m (pinfo: PropInfo) : Layout list = let amap = infoReader.amap + let isPublicGetterSetter (getter: MethInfo) (setter: MethInfo) = + let isPublicAccess access = access = TAccess [] + match getter.ArbitraryValRef, setter.ArbitraryValRef with + | Some gRef, Some sRef -> isPublicAccess gRef.Accessibility && isPublicAccess sRef.Accessibility + | _ -> false + match pinfo.ArbitraryValRef with | Some vref -> - PrintTastMemberOrVals.prettyLayoutOfValOrMemberNoInst denv infoReader vref + match pinfo with + | DifferentGetterAndSetter(getValRef, setValRef) -> + let getSuffix = if pinfo.IsIndexer then emptyL else WordL.keywordWith ^^ WordL.keywordGet + [ + PrintTastMemberOrVals.prettyLayoutOfValOrMemberNoInst denv infoReader getValRef ^^ getSuffix + PrintTastMemberOrVals.prettyLayoutOfValOrMemberNoInst denv infoReader setValRef + ] + | _ -> + let propL = PrintTastMemberOrVals.prettyLayoutOfValOrMemberNoInst denv infoReader vref + if pinfo.HasGetter && pinfo.HasSetter && not pinfo.IsIndexer && isPublicGetterSetter pinfo.GetterMethod pinfo.SetterMethod then + [ propL ^^ WordL.keywordWith ^^ wordL (tagText "get, set") ] + else + [ propL ] | None -> let modifierAndMember = @@ -1742,7 +1857,7 @@ module TastDefinitionPrinting = let nameL = ConvertValLogicalNameToDisplayLayout false (tagProperty >> tagNavArbValRef pinfo.ArbitraryValRef >> wordL) pinfo.PropertyName let typL = layoutType denv (pinfo.GetPropertyType(amap, m)) let overallL = modifierAndMember ^^ (nameL |> addColonL) ^^ typL - layoutXmlDocOfPropInfo denv infoReader pinfo overallL + [ layoutXmlDocOfPropInfo denv infoReader pinfo overallL ] let layoutTyconDefn (denv: DisplayEnv) (infoReader: InfoReader) ad m simplified isFirstType (tcref: TyconRef) = let g = denv.g @@ -1821,7 +1936,7 @@ module TastDefinitionPrinting = let iimplsLs = iimpls - |> List.map (fun intfTy -> wordL (tagKeyword (if isInterfaceTy g ty then "inherit" else "interface")) -* layoutType denv intfTy) + |> List.map (fun intfTy -> (if isInterfaceTy g ty then WordL.keywordInherit else WordL.keywordInterface) -* layoutType denv intfTy) let props = GetImmediateIntrinsicPropInfosOfType (None, ad) g amap m ty @@ -1913,7 +2028,9 @@ module TastDefinitionPrinting = let propLs = props - |> List.map (fun x -> (true, x.IsStatic, x.PropertyName, 0, 0), layoutPropInfo denv infoReader m x) + |> List.collect (fun x -> + layoutPropInfo denv infoReader m x + |> List.map (fun layout -> (true, x.IsStatic, x.PropertyName, 0, 0), layout)) |> List.sortBy fst |> List.map snd @@ -1951,7 +2068,7 @@ module TastDefinitionPrinting = let inheritsL = inherits - |> List.map (fun super -> wordL (tagKeyword "inherit") ^^ (layoutType denv super)) + |> List.map (fun super -> WordL.keywordInherit ^^ (layoutType denv super)) let allDecls = inheritsL @ iimplsLs @ ctorLs @ instanceValLs @ methLs @ ilFieldsL @ propLs @ eventLs @ staticValLs @ nestedTypeLs @@ -2003,7 +2120,7 @@ module TastDefinitionPrinting = let typeDeclL = match repr with - | TFSharpRecdRepr _ -> + | TFSharpTyconRepr { fsobjmodel_kind=TFSharpRecord } -> let denv = denv.AddAccessibility tycon.TypeReprAccessibility // For records, use multi-line layout as soon as there is XML doc @@ -2039,7 +2156,7 @@ module TastDefinitionPrinting = |> addMaxMembers |> addLhs - | TFSharpUnionRepr _ -> + | TFSharpTyconRepr { fsobjmodel_kind = TFSharpUnion } -> let denv = denv.AddAccessibility tycon.TypeReprAccessibility tycon.UnionCasesAsList |> layoutUnionCases denv infoReader tcref @@ -2049,7 +2166,7 @@ module TastDefinitionPrinting = |> addMaxMembers |> addLhs - | TFSharpObjectRepr { fsobjmodel_kind = TFSharpDelegate slotSig } -> + | TFSharpTyconRepr { fsobjmodel_kind = TFSharpDelegate slotSig } -> let (TSlotSig(_, _, _, _, paraml, retTy)) = slotSig let retTy = GetFSharpViewOfReturnType denv.g retTy let delegateL = WordL.keywordDelegate ^^ WordL.keywordOf -* layoutTopType denv SimplifyTypes.typeSimplificationInfo0 (paraml |> List.mapSquared (fun sp -> (sp.Type, ValReprInfo.unnamedTopArg1))) retTy [] @@ -2057,10 +2174,10 @@ module TastDefinitionPrinting = |> addLhs // Measure declarations are '[] type kg' unless abbreviations - | TFSharpObjectRepr _ when isMeasure -> + | TFSharpTyconRepr _ when isMeasure -> lhsL - | TFSharpObjectRepr { fsobjmodel_kind = TFSharpEnum } -> + | TFSharpTyconRepr { fsobjmodel_kind = TFSharpEnum } -> tycon.TrueFieldsAsList |> List.map (fun f -> match f.LiteralValue with @@ -2073,7 +2190,7 @@ module TastDefinitionPrinting = |> aboveListL |> addLhs - | TFSharpObjectRepr objRepr when isNil allDecls -> + | TFSharpTyconRepr objRepr when isNil allDecls -> match objRepr.fsobjmodel_kind with | TFSharpClass -> WordL.keywordClass ^^ WordL.keywordEnd @@ -2086,7 +2203,7 @@ module TastDefinitionPrinting = |> addLhs | _ -> lhsL - | TFSharpObjectRepr _ -> + | TFSharpTyconRepr _ -> allDecls |> applyMaxMembers denv.maxMembers |> aboveListL @@ -2191,7 +2308,7 @@ module TastDefinitionPrinting = if mspec.IsNamespace then // This is a container namespace. We print the header when we get to the first concrete module. let pathL = path |> List.map (ConvertLogicalNameToDisplayLayout (tagNamespace >> wordL)) - wordL (tagKeyword "namespace") ^^ sepListL SepL.dot pathL + WordL.keywordNamespace ^^ sepListL SepL.dot pathL else // This is a module let name = path |> List.last @@ -2205,7 +2322,7 @@ module TastDefinitionPrinting = let innerPathL = innerPath |> List.map (ConvertLogicalNameToDisplayLayout (tagNamespace >> wordL)) sepListL SepL.dot innerPathL ^^ SepL.dot ^^ nameL - let modNameL = wordL (tagKeyword "module") ^^ nameL + let modNameL = WordL.keywordModule ^^ nameL let modNameEqualsL = modNameL ^^ WordL.equals let modIsEmpty = mspec.ModuleOrNamespaceType.AllEntities |> Seq.isEmpty && @@ -2217,7 +2334,7 @@ module TastDefinitionPrinting = // If so print a "module" declaration modNameL elif modIsEmpty then - modNameEqualsL ^^ wordL (tagKeyword "begin") ^^ WordL.keywordEnd + modNameEqualsL ^^ WordL.keywordBegin ^^ WordL.keywordEnd else // Otherwise this is an outer module contained immediately in a namespace // We already printed the namespace declaration earlier. So just print the @@ -2281,7 +2398,7 @@ module TastDefinitionPrinting = module InferredSigPrinting = open PrintTypes - + /// Layout the inferred signature of a compilation unit let layoutImpliedSignatureOfModuleOrNamespace showHeader denv infoReader ad m expr = @@ -2350,29 +2467,32 @@ module InferredSigPrinting = if mspec.IsImplicitNamespace then // The current mspec is a namespace that belongs to the `def` child (nested) module(s). - let fullModuleName, def, denv = + let fullModuleName, def, denv, moduleAttribs = let rec (|NestedModule|_|) (currentContents:ModuleOrNamespaceContents) = match currentContents with - | ModuleOrNamespaceContents.TMDefRec (bindings = [ ModuleOrNamespaceBinding.Module(mn, NestedModule(path, contents)) ]) -> - Some ([ yield mn.DisplayNameCore; yield! path ], contents) - | ModuleOrNamespaceContents.TMDefs [ ModuleOrNamespaceContents.TMDefRec (bindings = [ ModuleOrNamespaceBinding.Module(mn, NestedModule(path, contents)) ]) ] -> - Some ([ yield mn.DisplayNameCore; yield! path ], contents) + | ModuleOrNamespaceContents.TMDefRec (bindings = [ ModuleOrNamespaceBinding.Module(mn, NestedModule(path, contents, attribs)) ]) -> + Some ([ yield mn.DisplayNameCore; yield! path ], contents, List.append mn.Attribs attribs) + | ModuleOrNamespaceContents.TMDefs [ ModuleOrNamespaceContents.TMDefRec (bindings = [ ModuleOrNamespaceBinding.Module(mn, NestedModule(path, contents, attribs)) ]) ] -> + Some ([ yield mn.DisplayNameCore; yield! path ], contents, List.append mn.Attribs attribs) | ModuleOrNamespaceContents.TMDefs [ ModuleOrNamespaceContents.TMDefRec (bindings = [ ModuleOrNamespaceBinding.Module(mn, nestedModuleContents) ]) ] -> - Some ([ mn.DisplayNameCore ], nestedModuleContents) + Some ([ mn.DisplayNameCore ], nestedModuleContents, mn.Attribs) | _ -> None match def with - | NestedModule(path, nestedModuleContents) -> + | NestedModule(path, nestedModuleContents, moduleAttribs) -> let fullPath = mspec.DisplayNameCore :: path - fullPath, nestedModuleContents, denv.AddOpenPath(fullPath) - | _ -> [ mspec.DisplayNameCore ], def, denv + fullPath, nestedModuleContents, denv.AddOpenPath(fullPath), moduleAttribs + | _ -> [ mspec.DisplayNameCore ], def, denv, List.empty let nmL = List.map (tagModule >> wordL) fullModuleName |> sepListL SepL.dot let nmL = layoutAccessibility denv mspec.Accessibility nmL let denv = denv.AddAccessibility mspec.Accessibility let basic = imdefL denv def - let modNameL = wordL (tagKeyword "module") ^^ nmL + let attribs: Attribs = List.append mspec.Attribs moduleAttribs + let modNameL = + WordL.keywordModule ^^ nmL + |> layoutAttribs denv None false mspec.TypeOrMeasureKind attribs let basicL = modNameL @@ basic layoutXmlDoc denv true mspec.XmlDoc basicL elif mspec.IsNamespace then @@ -2383,7 +2503,7 @@ module InferredSigPrinting = let pathL = innerPath |> List.map (fst >> ConvertLogicalNameToDisplayLayout (tagNamespace >> wordL)) // This is a container namespace. We print the header when we get to the first concrete module. let headerL = - wordL (tagKeyword "namespace") ^^ sepListL SepL.dot pathL + WordL.keywordNamespace ^^ sepListL SepL.dot pathL headerL @@* basic else // This is a namespace that only contains namespaces. Skip the header @@ -2399,7 +2519,7 @@ module InferredSigPrinting = let denv = denv.AddAccessibility mspec.Accessibility let basic = imdefL denv def let modNameL = - wordL (tagKeyword "module") ^^ nmL + WordL.keywordModule ^^ nmL |> layoutAttribs denv None false mspec.TypeOrMeasureKind mspec.Attribs let modNameEqualsL = modNameL ^^ WordL.equals let isNamespace = function | Namespace _ -> true | _ -> false @@ -2428,7 +2548,7 @@ module InferredSigPrinting = else // OK, this is a nested module, with indentation if isEmptyL basic then - ((modNameEqualsL ^^ wordL (tagKeyword"begin")) @@* basic) @@ WordL.keywordEnd + modNameEqualsL ^^ WordL.keywordBegin @@* basic @@* WordL.keywordEnd else modNameEqualsL @@* basic layoutXmlDoc denv true mspec.XmlDoc basicL @@ -2439,11 +2559,11 @@ module InferredSigPrinting = let keyword = if not mspec.IsImplicitNamespace && mspec.IsNamespace then - "namespace" + WordL.keywordNamespace else - "module" + WordL.keywordModule - wordL (tagKeyword keyword) ^^ sepListL SepL.dot pathL + keyword ^^ sepListL SepL.dot pathL match expr with | EmptyModuleOrNamespaces mspecs when showHeader -> @@ -2463,7 +2583,7 @@ module PrintData = match expr with | Expr.Const (c, _, ty) -> if isEnumTy denv.g ty then - wordL (tagKeyword "enum") ^^ angleL (layoutType denv ty) ^^ bracketL (layoutConst denv.g ty c) + WordL.keywordEnum ^^ angleL (layoutType denv ty) ^^ bracketL (layoutConst denv.g ty c) else layoutConst denv.g ty c @@ -2491,17 +2611,17 @@ module PrintData = | Expr.Op (TOp.Recd (_, tc), _, xs, _) -> let fields = tc.TrueInstanceFieldsAsList - let lay fs x = (wordL (tagRecordField fs.rfield_id.idText) ^^ sepL (tagPunctuation "=")) --- (dataExprL denv x) + let lay fs x = (wordL (tagRecordField fs.rfield_id.idText) ^^ sepL equals) --- (dataExprL denv x) braceL (semiListL (List.map2 lay fields xs)) | Expr.Op (TOp.ValFieldGet (RecdFieldRef.RecdFieldRef (tcref, name)), _, _, _) -> - (layoutTyconRef denv tcref) ^^ sepL (tagPunctuation ".") ^^ wordL (tagField name) + (layoutTyconRef denv tcref) ^^ SepL.dot ^^ wordL (tagField name) | Expr.Op (TOp.Array, [_], xs, _) -> - leftL (tagPunctuation "[|") ^^ semiListL (dataExprsL denv xs) ^^ RightL.rightBracketBar + LeftL.leftBracketBar ^^ semiListL (dataExprsL denv xs) ^^ RightL.rightBracketBar | _ -> - wordL (tagPunctuation "?") + wordL questionMark and dataExprsL denv xs = List.map (dataExprL denv) xs @@ -2543,6 +2663,10 @@ let prettyLayoutOfPropInfoFreeStyle g amap m denv d = let stringOfMethInfo infoReader m denv minfo = buildString (fun buf -> InfoMemberPrinting.formatMethInfoToBufferFreeStyle infoReader m denv buf minfo) +let stringOfMethInfoFSharpStyle infoReader m denv minfo = + InfoMemberPrinting.layoutMethInfoFSharpStyle infoReader m denv minfo + |> showL + /// Convert MethInfos to lines separated by newline including a newline as the first character let multiLineStringOfMethInfos infoReader m denv minfos = minfos @@ -2606,6 +2730,8 @@ let stringOfFSAttrib denv x = x |> PrintTypes.layoutAttrib denv |> squareAngleL let stringOfILAttrib denv x = x |> PrintTypes.layoutILAttrib denv |> squareAngleL |> showL +let fqnOfEntityRef g x = layoutTyconRefImpl false (DisplayEnv.Empty g) x None |> showL + let layoutImpliedSignatureOfModuleOrNamespace showHeader denv infoReader ad m contents = InferredSigPrinting.layoutImpliedSignatureOfModuleOrNamespace showHeader denv infoReader ad m contents diff --git a/src/fcs-fable/src/Compiler/Checking/NicePrint.fsi b/src/fcs-fable/src/Compiler/Checking/NicePrint.fsi index 792ec2b44e..84dabb2c95 100644 --- a/src/fcs-fable/src/Compiler/Checking/NicePrint.fsi +++ b/src/fcs-fable/src/Compiler/Checking/NicePrint.fsi @@ -81,6 +81,9 @@ val prettyLayoutOfPropInfoFreeStyle: val stringOfMethInfo: infoReader: InfoReader -> m: range -> denv: DisplayEnv -> minfo: MethInfo -> string +/// Convert a MethInfo to a F# signature +val stringOfMethInfoFSharpStyle: infoReader: InfoReader -> m: range -> denv: DisplayEnv -> minfo: MethInfo -> string + val multiLineStringOfMethInfos: infoReader: InfoReader -> m: range -> denv: DisplayEnv -> minfos: MethInfo list -> string @@ -135,6 +138,8 @@ val stringOfFSAttrib: denv: DisplayEnv -> x: Attrib -> string val stringOfILAttrib: denv: DisplayEnv -> ILType * ILAttribElem list -> string +val fqnOfEntityRef: g: TcGlobals -> x: EntityRef -> string + val layoutImpliedSignatureOfModuleOrNamespace: showHeader: bool -> denv: DisplayEnv -> diff --git a/src/fcs-fable/src/Compiler/Checking/PatternMatchCompilation.fs b/src/fcs-fable/src/Compiler/Checking/PatternMatchCompilation.fs index 141c69c4a1..0df62266ab 100644 --- a/src/fcs-fable/src/Compiler/Checking/PatternMatchCompilation.fs +++ b/src/fcs-fable/src/Compiler/Checking/PatternMatchCompilation.fs @@ -23,6 +23,9 @@ open FSharp.Compiler.TypedTreeBasics open FSharp.Compiler.TypedTreeOps open FSharp.Compiler.TypedTreeOps.DebugPrint open FSharp.Compiler.TypeRelations +#if !FABLE_COMPILER +open type System.MemoryExtensions +#endif exception MatchIncomplete of bool * (string * bool) option * range exception RuleNeverMatched of range @@ -48,7 +51,6 @@ type Pattern = | TPat_tuple of TupInfo * Pattern list * TType list * range | TPat_array of Pattern list * TType * range | TPat_recd of TyconRef * TypeInst * Pattern list * range - | TPat_range of char * char * range | TPat_null of range | TPat_isinst of TType * TType * Pattern option * range | TPat_error of range @@ -66,7 +68,6 @@ type Pattern = | TPat_tuple(_, _, _, m) -> m | TPat_array(_, _, m) -> m | TPat_recd(_, _, _, m) -> m - | TPat_range(_, _, m) -> m | TPat_null m -> m | TPat_isinst(_, _, _, m) -> m | TPat_error m -> m @@ -194,7 +195,17 @@ let ilFieldToTastConst lit = | ILFieldInit.Double f -> Const.Double f exception CannotRefute -let RefuteDiscrimSet g m path discrims = + +[] +[] +type CounterExampleType = + /// Maps to EnumMatchIncomplete exn + | EnumCoversKnown + /// Maps to MatchIncomplete exn + | WithoutEnum + with member x.Combine(other) = match other with EnumCoversKnown -> other | _ -> x + +let RefuteDiscrimSet g m path discrims : Expr * CounterExampleType = let mkUnknown ty = snd(mkCompGenLocal m "_" ty) let rec go path tm = match path with @@ -221,16 +232,16 @@ let RefuteDiscrimSet g m path discrims = | PathEmpty ty -> tm ty and mkOneKnown tm n tys = - let flds = List.mapi (fun i ty -> if i = n then tm ty else (mkUnknown ty, false)) tys - List.map fst flds, List.fold (fun acc (_, eCoversVals) -> eCoversVals || acc) false flds + let flds = List.mapi (fun i ty -> if i = n then tm ty else (mkUnknown ty, CounterExampleType.WithoutEnum)) tys + List.map fst flds, List.fold (fun acc (_, eCoversVals) -> acc.Combine(eCoversVals)) CounterExampleType.WithoutEnum flds and mkUnknowns tys = List.map (fun x -> mkUnknown x) tys let tm ty = match discrims with | [DecisionTreeTest.IsNull] -> - snd(mkCompGenLocal m notNullText ty), false + snd(mkCompGenLocal m notNullText ty), CounterExampleType.WithoutEnum | DecisionTreeTest.IsInst _ :: _ -> - snd(mkCompGenLocal m otherSubtypeText ty), false + snd(mkCompGenLocal m otherSubtypeText ty), CounterExampleType.WithoutEnum | DecisionTreeTest.Const c :: rest -> let consts = Set.ofList (c :: List.choose (function DecisionTreeTest.Const c -> Some c | _ -> None) rest) let c' = @@ -279,11 +290,11 @@ let RefuteDiscrimSet g m path discrims = let nonCoveredEnumValues = Seq.tryFind (fun (_, fldValue) -> not (consts.Contains fldValue)) enumValues match nonCoveredEnumValues with - | None -> Expr.Const (c, m, ty), true + | None -> Expr.Const (c, m, ty), CounterExampleType.EnumCoversKnown | Some (fldName, _) -> let v = RecdFieldRef.RecdFieldRef(tcref, fldName) - Expr.Op (TOp.ValFieldGet v, [ty], [], m), false - | _ -> Expr.Const (c, m, ty), false + Expr.Op (TOp.ValFieldGet v, [ty], [], m), CounterExampleType.WithoutEnum + | _ -> Expr.Const (c, m, ty), CounterExampleType.WithoutEnum | DecisionTreeTest.UnionCase (ucref1, tinst) :: rest -> let ucrefs = ucref1 :: List.choose (function DecisionTreeTest.UnionCase(ucref, _) -> Some ucref | _ -> None) rest @@ -297,10 +308,10 @@ let RefuteDiscrimSet g m path discrims = | [] -> raise CannotRefute | ucref2 :: _ -> let flds = ucref2 |> actualTysOfUnionCaseFields (mkTyconRefInst tcref tinst) |> mkUnknowns - Expr.Op (TOp.UnionCase ucref2, tinst, flds, m), false + Expr.Op (TOp.UnionCase ucref2, tinst, flds, m), CounterExampleType.WithoutEnum | [DecisionTreeTest.ArrayLength (n, ty)] -> - Expr.Op (TOp.Array, [ty], mkUnknowns (List.replicate (n+1) ty), m), false + Expr.Op (TOp.Array, [ty], mkUnknowns (List.replicate (n+1) ty), m), CounterExampleType.WithoutEnum | _ -> raise CannotRefute @@ -356,7 +367,7 @@ let ShowCounterExample g denv m refuted = | [] -> raise CannotRefute | (r, eck) :: t -> ((r, eck), t) ||> List.fold (fun (rAcc, eckAcc) (r, eck) -> - CombineRefutations g rAcc r, eckAcc || eck) + CombineRefutations g rAcc r, eckAcc.Combine(eck)) let text = LayoutRender.showL (NicePrint.dataExprL denv counterExample) let failingWhenClause = refuted |> List.exists (function RefutedWhenClause -> true | _ -> false) Some(text, failingWhenClause, enumCoversKnown) @@ -710,7 +721,7 @@ let discrimWithinSimultaneousClass g amap m discrim prev = let canInvestigate (pat: Pattern) = match pat with | TPat_null _ | TPat_isinst _ | TPat_exnconstr _ | TPat_unioncase _ - | TPat_array _ | TPat_const _ | TPat_query _ | TPat_range _ | TPat_error _ -> true + | TPat_array _ | TPat_const _ | TPat_query _ | TPat_error _ -> true | _ -> false /// Decide the next pattern to investigate @@ -899,43 +910,37 @@ let rec layoutPat pat = let mkFrontiers investigations clauseNumber = investigations |> List.map (fun (actives, valMap) -> Frontier(clauseNumber, actives, valMap)) +let singleFalseInvestigationPoint = [| false |] + // Search for pattern decision points that are decided "one at a time" - i.e. where there is no // multi-way switching. For example partial active patterns let rec investigationPoints inpPat = - seq { - match inpPat with - | TPat_query ((_, _, _, _, _, apinfo), subPat, _) -> - yield not apinfo.IsTotal - yield! investigationPoints subPat - | TPat_isinst (_, _tgtTy, subPatOpt, _) -> - yield false - match subPatOpt with - | None -> () - | Some subPat -> - yield! investigationPoints subPat - | TPat_as (subPat, _, _) -> - yield! investigationPoints subPat - | TPat_disjs (subPats, _) - | TPat_conjs(subPats, _) - | TPat_tuple (_, subPats, _, _) - | TPat_recd (_, _, subPats, _) -> - for subPat in subPats do - yield! investigationPoints subPat - | TPat_exnconstr(_, subPats, _) -> - for subPat in subPats do - yield! investigationPoints subPat - | TPat_array (subPats, _, _) - | TPat_unioncase (_, _, subPats, _) -> - yield false - for subPat in subPats do - yield! investigationPoints subPat - | TPat_range _ - | TPat_null _ - | TPat_const _ -> - yield false - | TPat_wild _ - | TPat_error _ -> () - } + match inpPat with + | TPat_query((_, _, _, _, _, apinfo), subPat, _) -> + Array.prepend (not apinfo.IsTotal) (investigationPoints subPat) + | TPat_isinst(_, _tgtTy, subPatOpt, _) -> + match subPatOpt with + | None -> singleFalseInvestigationPoint + | Some subPat -> Array.prepend false (investigationPoints subPat) + | TPat_as(subPat, _, _) -> investigationPoints subPat + | TPat_disjs(subPats, _) + | TPat_conjs(subPats, _) + | TPat_tuple(_, subPats, _, _) + | TPat_exnconstr(_, subPats, _) + | TPat_recd(_, _, subPats, _) -> + subPats + |> Seq.collect investigationPoints + |> Seq.toArray + | TPat_array (subPats, _, _) + | TPat_unioncase (_, _, subPats, _) -> + subPats + |> Seq.collect investigationPoints + |> Seq.toArray + |> Array.prepend false + | TPat_null _ + | TPat_const _ -> singleFalseInvestigationPoint + | TPat_wild _ + | TPat_error _ -> [||] let rec erasePartialPatterns inpPat = match inpPat with @@ -953,12 +958,33 @@ let rec erasePartialPatterns inpPat = | TPat_isinst (x, y, subPatOpt, m) -> TPat_isinst (x, y, Option.map erasePartialPatterns subPatOpt, m) | TPat_const _ | TPat_wild _ - | TPat_range _ | TPat_null _ | TPat_error _ -> inpPat and erasePartials inps = List.map erasePartialPatterns inps + +let ReportUnusedTargets (clauses: MatchClause list) dtree = + match dtree, clauses with + | TDSuccess _, [ _ ] -> () + | _ -> + let used = HashSet<_>(accTargetsOfDecisionTree dtree [], HashIdentity.Structural) + clauses |> List.iteri (fun i c -> + if not (used.Contains i) then + let m = + match c.BoundVals, c.GuardExpr with + | [], Some guard -> guard.Range + | [ bound ], None -> bound.Id.idRange + | [ _ ], Some guard -> guard.Range + | rest, None -> + match rest with + | [ head ] -> head.Id.idRange + | _ -> c.Pattern.Range + | _, Some guard -> guard.Range + + withStartEnd c.Range.Start m.End m + |> RuleNeverMatched + |> warning) let rec isPatternDisjunctive inpPat = match inpPat with @@ -974,7 +1000,6 @@ let rec isPatternDisjunctive inpPat = | TPat_isinst (_, _, subPatOpt, _) -> Option.exists isPatternDisjunctive subPatOpt | TPat_const _ -> false | TPat_wild _ -> false - | TPat_range _ -> false | TPat_null _ -> false | TPat_error _ -> false @@ -999,102 +1024,107 @@ let CompilePatternBasic // Add the incomplete or rethrow match clause on demand, // printing a warning if necessary (only if it is ever exercised). - let mutable incompleteMatchClauseOnce = None + let mutable firstIncompleteMatchClauseWithThrowExpr = None + let warningsGenerated = new ResizeArray(2) let getIncompleteMatchClause refuted = - // This is lazy because emit a warning when the lazy thunk gets evaluated. - match incompleteMatchClauseOnce with - | None -> - // Emit the incomplete match warning. - if warnOnIncomplete then - match actionOnFailure with - | ThrowIncompleteMatchException | IgnoreWithWarning -> - let ignoreWithWarning = (actionOnFailure = IgnoreWithWarning) - match ShowCounterExample g denv mMatch refuted with - | Some(text, failingWhenClause, true) -> - warning (EnumMatchIncomplete(ignoreWithWarning, Some(text, failingWhenClause), mMatch)) - | Some(text, failingWhenClause, false) -> - warning (MatchIncomplete(ignoreWithWarning, Some(text, failingWhenClause), mMatch)) - | None -> - warning (MatchIncomplete(ignoreWithWarning, None, mMatch)) - | _ -> - () - - let throwExpr = - match actionOnFailure with - | FailFilter -> - // Return 0 from the .NET exception filter. - mkInt g mMatch 0 - - | Rethrow -> - // Rethrow unmatched try-with exn. No sequence point at the target since its not real code. - mkReraise mMatch resultTy - - | Throw -> - let findMethInfo ty isInstance name (sigTys: TType list) = - TryFindIntrinsicMethInfo infoReader mMatch AccessorDomain.AccessibleFromEverywhere name ty - |> List.tryFind (fun methInfo -> - methInfo.IsInstance = isInstance && - ( - match methInfo.GetParamTypes(amap, mMatch, []) with - | [] -> false - | argTysList -> - let argTys = (argTysList |> List.reduce (@)) @ [ methInfo.GetFSharpReturnType (amap, mMatch, []) ] - if argTys.Length <> sigTys.Length then - false - else - (argTys, sigTys) - ||> List.forall2 (typeEquiv g) - ) + // Emit the incomplete match warning. + if warnOnIncomplete then + match actionOnFailure with + | ThrowIncompleteMatchException + | IgnoreWithWarning -> + let ignoreWithWarning = (actionOnFailure = IgnoreWithWarning) + let counterExample = ShowCounterExample g denv mMatch refuted + match counterExample with + | Some(text, failingWhenClause, CounterExampleType.EnumCoversKnown) when not(warningsGenerated.Contains(CounterExampleType.EnumCoversKnown)) -> + warning (EnumMatchIncomplete(ignoreWithWarning, Some(text, failingWhenClause), mMatch)) + warningsGenerated.Add CounterExampleType.EnumCoversKnown + | Some(text, failingWhenClause, CounterExampleType.WithoutEnum) when not(warningsGenerated.Contains(CounterExampleType.WithoutEnum)) -> + warning (MatchIncomplete(ignoreWithWarning, Some(text, failingWhenClause), mMatch)) + warningsGenerated.Add CounterExampleType.WithoutEnum + | None when not(warningsGenerated.Contains(CounterExampleType.WithoutEnum)) -> + warning (MatchIncomplete(ignoreWithWarning, None, mMatch)) + warningsGenerated.Add CounterExampleType.WithoutEnum + | _ -> () + | _ -> + () + + let throwExpr() = + match actionOnFailure with + | FailFilter -> + // Return 0 from the .NET exception filter. + mkInt g mMatch 0 + + | Rethrow -> + // Rethrow unmatched try-with exn. No sequence point at the target since its not real code. + mkReraise mMatch resultTy + + | Throw -> + let findMethInfo ty isInstance name (sigTys: TType list) = + TryFindIntrinsicMethInfo infoReader mMatch AccessorDomain.AccessibleFromEverywhere name ty + |> List.tryFind (fun methInfo -> + methInfo.IsInstance = isInstance && + ( + match methInfo.GetParamTypes(amap, mMatch, []) with + | [] -> false + | argTysList -> + let argTys = (argTysList |> List.reduce (@)) @ [ methInfo.GetFSharpReturnType (amap, mMatch, []) ] + if argTys.Length <> sigTys.Length then + false + else + (argTys, sigTys) + ||> List.forall2 (typeEquiv g) ) + ) + + // We use throw, or EDI.Capture(exn).Throw() when EDI is supported, instead of rethrow on unmatched try-with in a computation expression. + // But why? Because this isn't a real .NET exception filter/handler but just a function we're passing + // to a computation expression builder to simulate one. + let ediCaptureMethInfo, ediThrowMethInfo = + // EDI.Capture: exn -> EDI + g.system_ExceptionDispatchInfo_ty + |> Option.bind (fun ty -> findMethInfo ty false "Capture" [ g.exn_ty; ty ]), + // edi.Throw: unit -> unit + g.system_ExceptionDispatchInfo_ty + |> Option.bind (fun ty -> findMethInfo ty true "Throw" [ g.unit_ty ]) + + match Option.map2 (fun x y -> x,y) ediCaptureMethInfo ediThrowMethInfo with + | None -> + mkThrow mMatch resultTy (exprForVal mMatch origInputVal) + | Some (ediCaptureMethInfo, ediThrowMethInfo) -> + let edi, _ = + BuildMethodCall tcVal g amap NeverMutates mMatch false + ediCaptureMethInfo ValUseFlag.NormalValUse [] [] [ (exprForVal mMatch origInputVal) ] None + + let e, _ = + BuildMethodCall tcVal g amap NeverMutates mMatch false + ediThrowMethInfo ValUseFlag.NormalValUse [] [edi] [ ] None - // We use throw, or EDI.Capture(exn).Throw() when EDI is supported, instead of rethrow on unmatched try-with in a computation expression. - // But why? Because this isn't a real .NET exception filter/handler but just a function we're passing - // to a computation expression builder to simulate one. - let ediCaptureMethInfo, ediThrowMethInfo = - // EDI.Capture: exn -> EDI - g.system_ExceptionDispatchInfo_ty - |> Option.bind (fun ty -> findMethInfo ty false "Capture" [ g.exn_ty; ty ]), - // edi.Throw: unit -> unit - g.system_ExceptionDispatchInfo_ty - |> Option.bind (fun ty -> findMethInfo ty true "Throw" [ g.unit_ty ]) - - match Option.map2 (fun x y -> x,y) ediCaptureMethInfo ediThrowMethInfo with - | None -> - mkThrow mMatch resultTy (exprForVal mMatch origInputVal) - | Some (ediCaptureMethInfo, ediThrowMethInfo) -> - let edi, _ = - BuildMethodCall tcVal g amap NeverMutates mMatch false - ediCaptureMethInfo ValUseFlag.NormalValUse [] [] [ (exprForVal mMatch origInputVal) ] None - - let e, _ = - BuildMethodCall tcVal g amap NeverMutates mMatch false - ediThrowMethInfo ValUseFlag.NormalValUse [] [edi] [ ] None - - mkCompGenSequential mMatch e (mkDefault (mMatch, resultTy)) - - | ThrowIncompleteMatchException -> - mkThrow mMatch resultTy - (mkExnExpr(g.MatchFailureException_tcr, - [ mkString g mMatch mMatch.FileName - mkInt g mMatch mMatch.StartLine - mkInt g mMatch mMatch.StartColumn], mMatch)) - - | IgnoreWithWarning -> - mkUnit g mMatch + mkCompGenSequential mMatch e (mkDefault (mMatch, resultTy)) + | ThrowIncompleteMatchException -> + mkThrow mMatch resultTy + (mkExnExpr(g.MatchFailureException_tcr, + [ mkString g mMatch mMatch.FileName + mkInt g mMatch mMatch.StartLine + mkInt g mMatch mMatch.StartColumn], mMatch)) + + | IgnoreWithWarning -> + mkUnit g mMatch + + match firstIncompleteMatchClauseWithThrowExpr with + | Some c -> c + | None -> // We don't emit a sequence point at any of the above cases because they don't correspond to user code. // // Note we don't emit sequence points at either the succeeding or failing targets of filters since if // the exception is filtered successfully then we will run the handler and hit the sequence point there. // That sequence point will have the pattern variables bound, which is exactly what we want. - let tg = TTarget([], throwExpr, None) + let tg = TTarget([], throwExpr(), None) let _ = matchBuilder.AddTarget tg let clause = MatchClause(TPat_wild mMatch, None, tg, mMatch) - incompleteMatchClauseOnce <- Some clause + firstIncompleteMatchClauseWithThrowExpr <- Some clause clause - | Some c -> c - // Helpers to get the variables bound at a target. // We conceptually add a dummy clause that will always succeed with a "throw". let clausesA = Array.ofList clauses @@ -1572,8 +1602,6 @@ let CompilePatternBasic | _ -> [frontier] - | _ -> failwith "pattern compilation: GenerateNewFrontiersAfterSuccessfulInvestigation" - else [frontier] @@ -1613,12 +1641,6 @@ let CompilePatternBasic let newActives = List.mapi (mkSubActive (fun path _j -> path) (fun _j -> inpAccess)) subPats BindProjectionPatterns newActives activeState - | TPat_range (c1, c2, m) -> - let mutable res = [] - for i = int c1 to int c2 do - res <- BindProjectionPattern (Active(inpPath, inpExpr, TPat_const(Const.Char(char i), m))) activeState @ res - res - // Assign an identifier to each TPat_query based on our knowledge of the 'identity' of the active pattern, if any | TPat_query ((_, _, _, apatVrefOpt, _, _), _, _) -> let uniqId = @@ -1645,22 +1667,13 @@ let CompilePatternBasic @ mkFrontiers [([], ValMap<_>.Empty)] nClauses) - let dtree = - InvestigateFrontiers - [] - frontiers - - let targets = matchBuilder.CloseTargets() - + let dtree = InvestigateFrontiers [] frontiers // Report unused targets if warnOnUnused then - let used = HashSet<_>(accTargetsOfDecisionTree dtree [], HashIdentity.Structural) - - clauses |> List.iteri (fun i c -> - if not (used.Contains i) then warning (RuleNeverMatched c.Range)) + ReportUnusedTargets clauses dtree - dtree, targets + dtree, matchBuilder.CloseTargets() // Three pattern constructs can cause significant code expansion in various combinations // - Partial active patterns @@ -1716,16 +1729,17 @@ let CompilePatternBasic // So disjunction alone isn't considered problematic, but in combination with 'when' patterns let isProblematicClause (clause: MatchClause) = - let ips = - seq { - yield! investigationPoints clause.Pattern - if clause.GuardExpr.IsSome then - yield true - } |> Seq.toArray - let ips = if isPatternDisjunctive clause.Pattern then Array.append ips ips else ips - // Look for multiple decision points. - // We don't mind about the last logical decision point - ips.Length > 0 && Array.exists id ips[0..ips.Length-2] + if clause.GuardExpr.IsSome then + isPatternDisjunctive clause.Pattern || Array.exists id (investigationPoints clause.Pattern) + else + // Look for multiple decision points. + // We don't mind about the last logical decision point + let ips = investigationPoints clause.Pattern +#if FABLE_COMPILER + ips.Length > 0 && Array.exists id ips[0..ips.Length-2] +#else + ips.Length > 0 && Span.exists id (ips.AsSpan (0, ips.Length - 1)) +#endif let rec CompilePattern g denv amap tcVal infoReader mExpr mMatch warnOnUnused actionOnFailure (origInputVal, origInputValTypars, origInputExprOpt) (clausesL: MatchClause list) inputTy resultTy = match clausesL with diff --git a/src/fcs-fable/src/Compiler/Checking/PatternMatchCompilation.fsi b/src/fcs-fable/src/Compiler/Checking/PatternMatchCompilation.fsi index bc52ae8383..5b2d94c8ff 100644 --- a/src/fcs-fable/src/Compiler/Checking/PatternMatchCompilation.fsi +++ b/src/fcs-fable/src/Compiler/Checking/PatternMatchCompilation.fsi @@ -33,7 +33,6 @@ type Pattern = | TPat_tuple of TupInfo * Pattern list * TType list * range | TPat_array of Pattern list * TType * range | TPat_recd of TyconRef * TypeInst * Pattern list * range - | TPat_range of char * char * range | TPat_null of range | TPat_isinst of TType * TType * Pattern option * range | TPat_error of range diff --git a/src/fcs-fable/src/Compiler/Checking/PostInferenceChecks.fs b/src/fcs-fable/src/Compiler/Checking/PostInferenceChecks.fs index 2b0ff257ca..79720a0040 100644 --- a/src/fcs-fable/src/Compiler/Checking/PostInferenceChecks.fs +++ b/src/fcs-fable/src/Compiler/Checking/PostInferenceChecks.fs @@ -32,24 +32,24 @@ open FSharp.Compiler.TypeRelations //-------------------------------------------------------------------------- // NOTES: reraise safety checks //-------------------------------------------------------------------------- - + // "rethrow may only occur with-in the body of a catch handler". // -- Section 4.23. Part III. CLI Instruction Set. ECMA Draft 2002. -// +// // 1. reraise() calls are converted to TOp.Reraise in the type checker. // 2. any remaining reraise val_refs will be first class uses. These are trapped. // 3. The freevars track free TOp.Reraise (they are bound (cleared) at try-catch handlers). // 4. An outermost expression is not contained in a try-catch handler. -// These may not have unbound rethrows. +// These may not have unbound rethrows. // Outermost expressions occur at: // * module bindings. // * attribute arguments. -// * Any more? What about fields of a static class? +// * Any more? What about fields of a static class? // 5. A lambda body (from lambda-expression or method binding) will not occur under a try-catch handler. // These may not have unbound rethrows. // 6. All other constructs are assumed to generate IL code sequences. // For correctness, this claim needs to be justified. -// +// // Informal justification: // If a reraise occurs, then it is minimally contained by either: // a) a try-catch - accepted. @@ -67,15 +67,15 @@ type Resumable = | None /// Indicates we are expecting resumable code (the body of a ResumableCode delegate or /// the body of the MoveNextMethod for a state machine) - /// -- allowed: are we inside the 'then' branch of an 'if __useResumableCode then ...' + /// -- allowed: are we inside the 'then' branch of an 'if __useResumableCode then ...' /// for a ResumableCode delegate. | ResumableExpr of allowed: bool -type env = - { +type env = + { /// The bound type parameter names in scope - boundTyparNames: string list - + boundTyparNames: string list + /// The bound type parameters in scope boundTypars: TyparMap @@ -83,134 +83,133 @@ type env = argVals: ValMap /// "module remap info", i.e. hiding information down the signature chain, used to compute what's hidden by a signature - sigToImplRemapInfo: (Remap * SignatureHidingInfo) list + sigToImplRemapInfo: (Remap * SignatureHidingInfo) list /// Are we in a quotation? - quote : bool + quote : bool /// Are we under []? reflect : bool /// Are we in an extern declaration? - external : bool - + external : bool + /// Current return scope of the expr. - returnScope : int - + returnScope : int + /// Are we in an app expression (Expr.App)? isInAppExpr: bool /// Are we expecting a resumable code block etc resumableCode: Resumable - } + } override _.ToString() = "" -let BindTypar env (tp: Typar) = - { env with +let BindTypar env (tp: Typar) = + { env with boundTyparNames = tp.Name :: env.boundTyparNames - boundTypars = env.boundTypars.Add (tp, ()) } + boundTypars = env.boundTypars.Add (tp, ()) } -let BindTypars g env (tps: Typar list) = +let BindTypars g env (tps: Typar list) = let tps = NormalizeDeclaredTyparsForEquiRecursiveInference g tps if isNil tps then env else - // Here we mutate to provide better names for generalized type parameters + // Here we mutate to provide better names for generalized type parameters let nms = PrettyTypes.PrettyTyparNames (fun _ -> true) env.boundTyparNames tps - PrettyTypes.AssignPrettyTyparNames tps nms - List.fold BindTypar env tps + PrettyTypes.AssignPrettyTyparNames tps nms + List.fold BindTypar env tps -/// Set the set of vals which are arguments in the active lambda. We are allowed to return +/// Set the set of vals which are arguments in the active lambda. We are allowed to return /// byref arguments as byref returns. -let BindArgVals env (vs: Val list) = +let BindArgVals env (vs: Val list) = { env with argVals = ValMap.OfList (List.map (fun v -> (v, ())) vs) } -/// Limit flags represent a type(s) returned from checking an expression(s) that is interesting to impose rules on. -[] -type LimitFlags = - | None = 0b00000 - | ByRef = 0b00001 - | ByRefOfSpanLike = 0b00011 - | ByRefOfStackReferringSpanLike = 0b00101 - | SpanLike = 0b01000 - | StackReferringSpanLike = 0b10000 - -[] -type Limit = - { - scope: int - flags: LimitFlags - } - - member this.IsLocal = this.scope >= 1 - -/// Check if the limit has the target limit. -let inline HasLimitFlag targetLimit (limit: Limit) = - limit.flags &&& targetLimit = targetLimit - -let NoLimit = { scope = 0; flags = LimitFlags.None } - -// Combining two limits will result in both limit flags merged. -// If none of the limits are limited by a by-ref or a stack referring span-like -// the scope will be 0. -let CombineTwoLimits limit1 limit2 = - let isByRef1 = HasLimitFlag LimitFlags.ByRef limit1 - let isByRef2 = HasLimitFlag LimitFlags.ByRef limit2 - let isStackSpan1 = HasLimitFlag LimitFlags.StackReferringSpanLike limit1 - let isStackSpan2 = HasLimitFlag LimitFlags.StackReferringSpanLike limit2 - let isLimited1 = isByRef1 || isStackSpan1 - let isLimited2 = isByRef2 || isStackSpan2 - - // A limit that has a stack referring span-like but not a by-ref, - // we force the scope to 1. This is to handle call sites - // that return a by-ref and have stack referring span-likes as arguments. - // This is to ensure we can only prevent out of scope at the method level rather than visibility. - let limit1 = - if isStackSpan1 && not isByRef1 then - { limit1 with scope = 1 } - else - limit1 +[] +module Limit = + + [] + type LimitFlags = + | None = 0b00000 + | ByRef = 0b00001 + | ByRefOfSpanLike = 0b00011 + | ByRefOfStackReferringSpanLike = 0b00101 + | SpanLike = 0b01000 + | StackReferringSpanLike = 0b10000 + + [] + type Limit = + { + scope: int + flags: LimitFlags + } + + member this.IsLocal = this.scope >= 1 + + /// Check if the limit has the target limit. + let inline HasLimitFlag targetLimit (limit: Limit) = + limit.flags &&& targetLimit = targetLimit + + let NoLimit = { scope = 0; flags = LimitFlags.None } + + let CombineTwoLimits limit1 limit2 = + let isByRef1 = HasLimitFlag LimitFlags.ByRef limit1 + let isByRef2 = HasLimitFlag LimitFlags.ByRef limit2 + let isStackSpan1 = HasLimitFlag LimitFlags.StackReferringSpanLike limit1 + let isStackSpan2 = HasLimitFlag LimitFlags.StackReferringSpanLike limit2 + let isLimited1 = isByRef1 || isStackSpan1 + let isLimited2 = isByRef2 || isStackSpan2 + + // A limit that has a stack referring span-like but not a by-ref, + // we force the scope to 1. This is to handle call sites + // that return a by-ref and have stack referring span-likes as arguments. + // This is to ensure we can only prevent out of scope at the method level rather than visibility. + let limit1 = + if isStackSpan1 && not isByRef1 then + { limit1 with scope = 1 } + else + limit1 - let limit2 = - if isStackSpan2 && not isByRef2 then - { limit2 with scope = 1 } - else - limit2 - - match isLimited1, isLimited2 with - | false, false -> - { scope = 0; flags = limit1.flags ||| limit2.flags } - | true, true -> - { scope = Math.Max(limit1.scope, limit2.scope); flags = limit1.flags ||| limit2.flags } - | true, false -> - { limit1 with flags = limit1.flags ||| limit2.flags } - | false, true -> - { limit2 with flags = limit1.flags ||| limit2.flags } - -let CombineLimits limits = - (NoLimit, limits) - ||> List.fold CombineTwoLimits - -type cenv = + let limit2 = + if isStackSpan2 && not isByRef2 then + { limit2 with scope = 1 } + else + limit2 + + match isLimited1, isLimited2 with + | false, false -> + { scope = 0; flags = limit1.flags ||| limit2.flags } + | true, true -> + { scope = Math.Max(limit1.scope, limit2.scope); flags = limit1.flags ||| limit2.flags } + | true, false -> + { limit1 with flags = limit1.flags ||| limit2.flags } + | false, true -> + { limit2 with flags = limit1.flags ||| limit2.flags } + + let CombineLimits limits = + (NoLimit, limits) + ||> List.fold CombineTwoLimits + +type cenv = { boundVals: Dictionary // really a hash set limitVals: Dictionary - mutable potentialUnboundUsesOfVals: StampMap + mutable potentialUnboundUsesOfVals: StampMap - mutable anonRecdTypes: StampMap + mutable anonRecdTypes: StampMap stackGuard: StackGuard - g: TcGlobals + g: TcGlobals - amap: Import.ImportMap + amap: Import.ImportMap /// For reading metadata infoReader: InfoReader internalsVisibleToPaths : CompilationPath list - denv: DisplayEnv + denv: DisplayEnv viewCcu : CcuThunk @@ -223,8 +222,8 @@ type cenv = // outputs mutable usesQuotations: bool - mutable entryPointGiven: bool - + mutable entryPointGiven: bool + /// Callback required for quotation generation tcVal: ConstraintSolver.TcValF } @@ -261,7 +260,7 @@ let GetLimitVal cenv env m (v: Val) = elif isByrefTy cenv.g v.Type then let isByRefOfSpanLike = isSpanLikeTy cenv.g m (destByrefTy cenv.g v.Type) - + if isByRefOfSpanLike then if HasLimitFlag LimitFlags.ByRefOfStackReferringSpanLike limit then { limit with flags = LimitFlags.ByRefOfStackReferringSpanLike } @@ -292,15 +291,15 @@ let GetLimitValByRef cenv env m v = { scope = scope; flags = flags } -let LimitVal cenv (v: Val) limit = +let LimitVal cenv (v: Val) limit = if not v.IgnoresByrefScope then cenv.limitVals[v.Stamp] <- limit -let BindVal cenv env (v: Val) = +let BindVal cenv env (v: Val) = //printfn "binding %s..." v.DisplayName let alreadyDone = cenv.boundVals.ContainsKey v.Stamp cenv.boundVals[v.Stamp] <- 1 - + let topLevelBindingHiddenBySignatureFile () = let parentHasSignatureFile () = match v.TryDeclaringEntity with @@ -311,14 +310,14 @@ let BindVal cenv env (v: Val) = | ValueSome e -> e.HasSignatureFile v.IsModuleBinding && not v.HasSignatureFile && parentHasSignatureFile () - + if not env.external && not alreadyDone && - cenv.reportErrors && - not v.HasBeenReferenced && + cenv.reportErrors && + not v.HasBeenReferenced && (not v.IsCompiledAsTopLevel || topLevelBindingHiddenBySignatureFile ()) && not (v.DisplayName.StartsWithOrdinal("_")) && - not v.IsCompilerGenerated then + not v.IsCompilerGenerated then if v.IsCtorThisVal then warning (Error(FSComp.SR.chkUnusedThisVariable v.DisplayName, v.Range)) @@ -328,7 +327,7 @@ let BindVal cenv env (v: Val) = let BindVals cenv env vs = List.iter (BindVal cenv env) vs let RecordAnonRecdInfo cenv (anonInfo: AnonRecdTypeInfo) = - if not (cenv.anonRecdTypes.ContainsKey anonInfo.Stamp) then + if not (cenv.anonRecdTypes.ContainsKey anonInfo.Stamp) then cenv.anonRecdTypes <- cenv.anonRecdTypes.Add(anonInfo.Stamp, anonInfo) //-------------------------------------------------------------------------- @@ -341,40 +340,40 @@ let rec CheckTypeDeep (cenv: cenv) (visitTy, visitTyconRefOpt, visitAppTyOpt, vi // those attached to _solved_ type variables. This is used by PostTypeCheckSemanticChecks to detect uses of // values as solutions to trait constraints and determine if inference has caused the value to escape its scope. // The only record of these solutions is in the _solved_ constraints of types. - // In an ideal world we would, instead, record the solutions to these constraints as "witness variables" in expressions, - // rather than solely in types. - match ty with + // In an ideal world we would, instead, record the solutions to these constraints as "witness variables" in expressions, + // rather than solely in types. + match ty with | TType_var (tp, _) when tp.Solution.IsSome -> for cx in tp.Constraints do - match cx with - | TyparConstraint.MayResolveMember(TTrait(_, _, _, _, _, soln), _) -> - match visitTraitSolutionOpt, soln.Value with + match cx with + | TyparConstraint.MayResolveMember(TTrait(_, _, _, _, _, soln), _) -> + match visitTraitSolutionOpt, soln.Value with | Some visitTraitSolution, Some sln -> visitTraitSolution sln | _ -> () | _ -> () | _ -> () - + let ty = if g.compilingFSharpCore then match stripTyparEqns ty with // When compiling FSharp.Core, do not strip type equations at this point if we can't dereference a tycon. | TType_app (tcref, _, _) when not tcref.CanDeref -> ty | _ -> stripTyEqns g ty - else + else stripTyEqns g ty visitTy ty match ty with - | TType_forall (tps, body) -> + | TType_forall (tps, body) -> let env = BindTypars g env tps - CheckTypeDeep cenv f g env isInner body + CheckTypeDeep cenv f g env isInner body tps |> List.iter (fun tp -> tp.Constraints |> List.iter (CheckTypeConstraintDeep cenv f g env)) | TType_measure _ -> () - | TType_app (tcref, tinst, _) -> - match visitTyconRefOpt with - | Some visitTyconRef -> visitTyconRef isInner tcref + | TType_app (tcref, tinst, _) -> + match visitTyconRefOpt with + | Some visitTyconRef -> visitTyconRef isInner tcref | None -> () // If it's a 'byref<'T>', don't check 'T as an inner. This allows byref>. @@ -384,11 +383,11 @@ let rec CheckTypeDeep (cenv: cenv) (visitTy, visitTyconRefOpt, visitAppTyOpt, vi else CheckTypesDeep cenv f g env tinst - match visitAppTyOpt with + match visitAppTyOpt with | Some visitAppTy -> visitAppTy (tcref, tinst) | None -> () - | TType_anon (anonInfo, tys) -> + | TType_anon (anonInfo, tys) -> RecordAnonRecdInfo cenv anonInfo CheckTypesDeep cenv f g env tys @@ -402,91 +401,91 @@ let rec CheckTypeDeep (cenv: cenv) (visitTy, visitTyconRefOpt, visitAppTyOpt, vi CheckTypeDeep cenv f g env true s CheckTypeDeep cenv f g env true t - | TType_var (tp, _) -> - if not tp.IsSolved then - match visitTyparOpt with + | TType_var (tp, _) -> + if not tp.IsSolved then + match visitTyparOpt with | None -> () - | Some visitTyar -> + | Some visitTyar -> visitTyar (env, tp) -and CheckTypesDeep cenv f g env tys = +and CheckTypesDeep cenv f g env tys = for ty in tys do CheckTypeDeep cenv f g env true ty -and CheckTypesDeepNoInner cenv f g env tys = +and CheckTypesDeepNoInner cenv f g env tys = for ty in tys do CheckTypeDeep cenv f g env false ty and CheckTypeConstraintDeep cenv f g env x = - match x with + match x with | TyparConstraint.CoercesTo(ty, _) -> CheckTypeDeep cenv f g env true ty | TyparConstraint.MayResolveMember(traitInfo, _) -> CheckTraitInfoDeep cenv f g env traitInfo | TyparConstraint.DefaultsTo(_, ty, _) -> CheckTypeDeep cenv f g env true ty | TyparConstraint.SimpleChoice(tys, _) -> CheckTypesDeep cenv f g env tys | TyparConstraint.IsEnum(underlyingTy, _) -> CheckTypeDeep cenv f g env true underlyingTy | TyparConstraint.IsDelegate(argTys, retTy, _) -> CheckTypeDeep cenv f g env true argTys; CheckTypeDeep cenv f g env true retTy - | TyparConstraint.SupportsComparison _ - | TyparConstraint.SupportsEquality _ - | TyparConstraint.SupportsNull _ - | TyparConstraint.IsNonNullableStruct _ + | TyparConstraint.SupportsComparison _ + | TyparConstraint.SupportsEquality _ + | TyparConstraint.SupportsNull _ + | TyparConstraint.IsNonNullableStruct _ | TyparConstraint.IsUnmanaged _ - | TyparConstraint.IsReferenceType _ + | TyparConstraint.IsReferenceType _ | TyparConstraint.RequiresDefaultConstructor _ -> () -and CheckTraitInfoDeep cenv (_, _, _, visitTraitSolutionOpt, _ as f) g env (TTrait(tys, _, _, argTys, retTy, soln)) = - CheckTypesDeep cenv f g env tys - CheckTypesDeep cenv f g env argTys +and CheckTraitInfoDeep cenv (_, _, _, visitTraitSolutionOpt, _ as f) g env (TTrait(tys, _, _, argTys, retTy, soln)) = + CheckTypesDeep cenv f g env tys + CheckTypesDeep cenv f g env argTys Option.iter (CheckTypeDeep cenv f g env true ) retTy - match visitTraitSolutionOpt, soln.Value with + match visitTraitSolutionOpt, soln.Value with | Some visitTraitSolution, Some sln -> visitTraitSolution sln | _ -> () /// Check for byref-like types -let CheckForByrefLikeType cenv env m ty check = +let CheckForByrefLikeType cenv env m ty check = CheckTypeDeep cenv (ignore, Some (fun _deep tcref -> if isByrefLikeTyconRef cenv.g m tcref then check()), None, None, None) cenv.g env false ty /// Check for byref types -let CheckForByrefType cenv env ty check = +let CheckForByrefType cenv env ty check = CheckTypeDeep cenv (ignore, Some (fun _deep tcref -> if isByrefTyconRef cenv.g tcref then check()), None, None, None) cenv.g env false ty /// check captures under lambdas /// -/// This is the definition of what can/can't be free in a lambda expression. This is checked at lambdas OR TBind(v, e) nodes OR TObjExprMethod nodes. -/// For TBind(v, e) nodes we may know an 'arity' which gives as a larger set of legitimate syntactic arguments for a lambda. -/// For TObjExprMethod(v, e) nodes we always know the legitimate syntactic arguments. +/// This is the definition of what can/can't be free in a lambda expression. This is checked at lambdas OR TBind(v, e) nodes OR TObjExprMethod nodes. +/// For TBind(v, e) nodes we may know an 'arity' which gives as a larger set of legitimate syntactic arguments for a lambda. +/// For TObjExprMethod(v, e) nodes we always know the legitimate syntactic arguments. let CheckEscapes cenv allowProtected m syntacticArgs body = (* m is a range suited to error reporting *) - if cenv.reportErrors then - let cantBeFree (v: Val) = - // If v is a syntactic argument, then it can be free since it was passed in. - // The following can not be free: - // a) BaseVal can never escape. - // b) Byref typed values can never escape. + if cenv.reportErrors then + let cantBeFree (v: Val) = + // If v is a syntactic argument, then it can be free since it was passed in. + // The following can not be free: + // a) BaseVal can never escape. + // b) Byref typed values can never escape. // Note that: Local mutables can be free, as they will be boxed later. - // These checks must correspond to the tests governing the error messages below. + // These checks must correspond to the tests governing the error messages below. (v.IsBaseVal || isByrefLikeTy cenv.g m v.Type) && not (ListSet.contains valEq v syntacticArgs) let frees = freeInExpr (CollectLocalsWithStackGuard()) body - let fvs = frees.FreeLocals + let fvs = frees.FreeLocals if not allowProtected && frees.UsesMethodLocalConstructs then errorR(Error(FSComp.SR.chkProtectedOrBaseCalled(), m)) - elif Zset.exists cantBeFree fvs then - let v = List.find cantBeFree (Zset.elements fvs) + elif Zset.exists cantBeFree fvs then + let v = List.find cantBeFree (Zset.elements fvs) - // byref error before mutable error (byrefs are mutable...). + // byref error before mutable error (byrefs are mutable...). if (isByrefLikeTy cenv.g m v.Type) then - // Inner functions are not guaranteed to compile to method with a predictable arity (number of arguments). - // As such, partial applications involving byref arguments could lead to closures containing byrefs. - // For safety, such functions are assumed to have no known arity, and so can not accept byrefs. + // Inner functions are not guaranteed to compile to method with a predictable arity (number of arguments). + // As such, partial applications involving byref arguments could lead to closures containing byrefs. + // For safety, such functions are assumed to have no known arity, and so can not accept byrefs. errorR(Error(FSComp.SR.chkByrefUsedInInvalidWay(v.DisplayName), m)) elif v.IsBaseVal then errorR(Error(FSComp.SR.chkBaseUsedInInvalidWay(), m)) else - // Should be dead code, unless governing tests change + // Should be dead code, unless governing tests change errorR(InternalError(FSComp.SR.chkVariableUsedInInvalidWay(v.DisplayName), m)) Some frees else @@ -498,17 +497,17 @@ let AccessInternalsVisibleToAsInternal thisCompPath internalsVisibleToPaths acce // Each internalsVisibleToPath is a compPath for the internals of some assembly. // Replace those by the compPath for the internals of this assembly. // This makes those internals visible here, but still internal. Bug://3737 - (access, internalsVisibleToPaths) ||> List.fold (fun access internalsVisibleToPath -> + (access, internalsVisibleToPaths) ||> List.fold (fun access internalsVisibleToPath -> accessSubstPaths (thisCompPath, internalsVisibleToPath) access) - + let CheckTypeForAccess (cenv: cenv) env objName valAcc m ty = - if cenv.reportErrors then + if cenv.reportErrors then - let visitType ty = - // We deliberately only check the fully stripped type for accessibility, + let visitType ty = + // We deliberately only check the fully stripped type for accessibility, // because references to private type abbreviations are permitted - match tryTcrefOfAppTy cenv.g ty with + match tryTcrefOfAppTy cenv.g ty with | ValueNone -> () | ValueSome tcref -> let thisCompPath = compPathOfCcu cenv.viewCcu @@ -519,12 +518,12 @@ let CheckTypeForAccess (cenv: cenv) env objName valAcc m ty = CheckTypeDeep cenv (visitType, None, None, None, None) cenv.g env false ty let WarnOnWrongTypeForAccess (cenv: cenv) env objName valAcc m ty = - if cenv.reportErrors then + if cenv.reportErrors then - let visitType ty = - // We deliberately only check the fully stripped type for accessibility, + let visitType ty = + // We deliberately only check the fully stripped type for accessibility, // because references to private type abbreviations are permitted - match tryTcrefOfAppTy cenv.g ty with + match tryTcrefOfAppTy cenv.g ty with | ValueNone -> () | ValueSome tcref -> let thisCompPath = compPathOfCcu cenv.viewCcu @@ -534,11 +533,11 @@ let WarnOnWrongTypeForAccess (cenv: cenv) env objName valAcc m ty = let warningText = errorText + Environment.NewLine + FSComp.SR.tcTypeAbbreviationsCheckedAtCompileTime() warning(AttributeChecking.ObsoleteWarning(warningText, m)) - CheckTypeDeep cenv (visitType, None, None, None, None) cenv.g env false ty + CheckTypeDeep cenv (visitType, None, None, None, None) cenv.g env false ty /// Indicates whether a byref or byref-like type is permitted at a particular location [] -type PermitByRefType = +type PermitByRefType = /// Don't permit any byref or byref-like types | None @@ -551,14 +550,14 @@ type PermitByRefType = /// Permit all byref and byref-like types | All - + /// Indicates whether an address-of operation is permitted at a particular location [] -type PermitByRefExpr = +type PermitByRefExpr = /// Permit a tuple of arguments where elements can be byrefs - | YesTupleOfArgs of int + | YesTupleOfArgs of int - /// Context allows for byref typed expr. + /// Context allows for byref typed expr. | Yes /// Context allows for byref typed expr, but the byref must be returnable @@ -567,19 +566,19 @@ type PermitByRefExpr = /// Context allows for byref typed expr, but the byref must be returnable and a non-local | YesReturnableNonLocal - /// General (address-of expr and byref values not allowed) - | No + /// General (address-of expr and byref values not allowed) + | No - member ctxt.Disallow = - match ctxt with - | PermitByRefExpr.Yes - | PermitByRefExpr.YesReturnable - | PermitByRefExpr.YesReturnableNonLocal -> false + member ctxt.Disallow = + match ctxt with + | PermitByRefExpr.Yes + | PermitByRefExpr.YesReturnable + | PermitByRefExpr.YesReturnableNonLocal -> false | _ -> true - member ctxt.PermitOnlyReturnable = - match ctxt with - | PermitByRefExpr.YesReturnable + member ctxt.PermitOnlyReturnable = + match ctxt with + | PermitByRefExpr.YesReturnable | PermitByRefExpr.YesReturnableNonLocal -> true | _ -> false @@ -591,46 +590,46 @@ type PermitByRefExpr = let inline IsLimitEscapingScope env (ctxt: PermitByRefExpr) limit = (limit.scope >= env.returnScope || (limit.IsLocal && ctxt.PermitOnlyReturnableNonLocal)) -let mkArgsPermit n = +let mkArgsPermit n = if n=1 then PermitByRefExpr.Yes else PermitByRefExpr.YesTupleOfArgs n /// Work out what byref-values are allowed at input positions to named F# functions or members -let mkArgsForAppliedVal isBaseCall (vref: ValRef) argsl = +let mkArgsForAppliedVal isBaseCall (vref: ValRef) argsl = match vref.ValReprInfo with - | Some valReprInfo -> + | Some valReprInfo -> let argArities = valReprInfo.AritiesOfArgs let argArities = if isBaseCall && argArities.Length >= 1 then List.tail argArities else argArities // Check for partial applications: arguments to partial applications don't get to use byrefs - if List.length argsl >= argArities.Length then + if List.length argsl >= argArities.Length then List.map mkArgsPermit argArities else [] - | None -> [] + | None -> [] /// Work out what byref-values are allowed at input positions to functions let rec mkArgsForAppliedExpr isBaseCall argsl x = - match stripDebugPoints (stripExpr x) with - // recognise val + match stripDebugPoints (stripExpr x) with + // recognise val | Expr.Val (vref, _, _) -> mkArgsForAppliedVal isBaseCall vref argsl - // step through instantiations - | Expr.App (f, _fty, _tyargs, [], _) -> mkArgsForAppliedExpr isBaseCall argsl f - // step through subsumption coercions - | Expr.Op (TOp.Coerce, _, [f], _) -> mkArgsForAppliedExpr isBaseCall argsl f + // step through instantiations + | Expr.App (f, _fty, _tyargs, [], _) -> mkArgsForAppliedExpr isBaseCall argsl f + // step through subsumption coercions + | Expr.Op (TOp.Coerce, _, [f], _) -> mkArgsForAppliedExpr isBaseCall argsl f | _ -> [] /// Check types occurring in the TAST. let CheckTypeAux permitByRefLike (cenv: cenv) env m ty onInnerByrefError = - if cenv.reportErrors then - let visitTyar (env, tp) = - if not (env.boundTypars.ContainsKey tp) then - if tp.IsCompilerGenerated then + if cenv.reportErrors then + let visitTyar (env, tp) = + if not (env.boundTypars.ContainsKey tp) then + if tp.IsCompilerGenerated then errorR (Error(FSComp.SR.checkNotSufficientlyGenericBecauseOfScopeAnon(), m)) else errorR (Error(FSComp.SR.checkNotSufficientlyGenericBecauseOfScope(tp.DisplayName), m)) let visitTyconRef isInner tcref = - + let isInnerByRefLike = isInner && isByrefLikeTyconRef cenv.g m tcref match permitByRefLike with @@ -642,25 +641,25 @@ let CheckTypeAux permitByRefLike (cenv: cenv) env m ty onInnerByrefError = onInnerByrefError () | _ -> () - if tyconRefEq cenv.g cenv.g.system_Void_tcref tcref then + if tyconRefEq cenv.g cenv.g.system_Void_tcref tcref then errorR(Error(FSComp.SR.chkSystemVoidOnlyInTypeof(), m)) // check if T contains byref types in case of byref - let visitAppTy (tcref, tinst) = + let visitAppTy (tcref, tinst) = if isByrefLikeTyconRef cenv.g m tcref then let visitType ty0 = match tryTcrefOfAppTy cenv.g ty0 with | ValueNone -> () - | ValueSome tcref2 -> - if isByrefTyconRef cenv.g tcref2 then - errorR(Error(FSComp.SR.chkNoByrefsOfByrefs(NicePrint.minimalStringOfType cenv.denv ty), m)) + | ValueSome tcref2 -> + if isByrefTyconRef cenv.g tcref2 then + errorR(Error(FSComp.SR.chkNoByrefsOfByrefs(NicePrint.minimalStringOfType cenv.denv ty), m)) CheckTypesDeep cenv (visitType, None, None, None, None) cenv.g env tinst - let visitTraitSolution info = - match info with - | FSMethSln(_, vref, _, _) -> + let visitTraitSolution info = + match info with + | FSMethSln(_, vref, _, _) -> //printfn "considering %s..." vref.DisplayName - if valRefInThisAssembly cenv.g.compilingFSharpCore vref && not (cenv.boundVals.ContainsKey(vref.Stamp)) then + if valRefInThisAssembly cenv.g.compilingFSharpCore vref && not (cenv.boundVals.ContainsKey(vref.Stamp)) then //printfn "recording %s..." vref.DisplayName cenv.potentialUnboundUsesOfVals <- cenv.potentialUnboundUsesOfVals.Add(vref.Stamp, m) | _ -> () @@ -671,7 +670,7 @@ let CheckType permitByRefLike cenv env m ty = CheckTypeAux permitByRefLike cenv env m ty (fun () -> errorR(Error(FSComp.SR.chkErrorUseOfByref(), m))) /// Check types occurring in TAST (like CheckType) and additionally reject any byrefs. -/// The additional byref checks are to catch "byref instantiations" - one place were byref are not permitted. +/// The additional byref checks are to catch "byref instantiations" - one place were byref are not permitted. let CheckTypeNoByrefs (cenv: cenv) env m ty = CheckType PermitByRefType.None cenv env m ty /// Check types occurring in TAST but allow a Span or similar @@ -690,21 +689,21 @@ let CheckTypeInstNoInnerByrefs cenv env m tyargs = tyargs |> List.iter (CheckTypeNoInnerByrefs cenv env m) /// Applied functions get wrapped in coerce nodes for subsumption coercions -let (|OptionalCoerce|) expr = +let (|OptionalCoerce|) expr = match stripDebugPoints expr with - | Expr.Op (TOp.Coerce, _, [DebugPoints(Expr.App (f, _, _, [], _), _)], _) -> f + | Expr.Op (TOp.Coerce, _, [DebugPoints(Expr.App (f, _, _, [], _), _)], _) -> f | _ -> expr /// Check an expression doesn't contain a 'reraise' -let CheckNoReraise cenv freesOpt (body: Expr) = +let CheckNoReraise cenv freesOpt (body: Expr) = if cenv.reportErrors then - // Avoid recomputing the free variables + // Avoid recomputing the free variables let fvs = match freesOpt with None -> freeInExpr CollectLocals body | Some fvs -> fvs if fvs.UsesUnboundRethrow then errorR(Error(FSComp.SR.chkErrorContainsCallToRethrow(), body.Range)) /// Check if a function is a quotation splice operator -let isSpliceOperator g v = valRefEq g v g.splice_expr_vref || valRefEq g v g.splice_raw_expr_vref +let isSpliceOperator g v = valRefEq g v g.splice_expr_vref || valRefEq g v g.splice_raw_expr_vref /// Examples: @@ -722,11 +721,11 @@ type TTypeEquality = | NotEqual let compareTypesWithRegardToTypeVariablesAndMeasures g amap m ty1 ty2 = - + if (typeEquiv g ty1 ty2) then ExactlyEqual else - if (typeEquiv g ty1 ty2 || TypesFeasiblyEquivStripMeasures g amap m ty1 ty2) then + if (typeEquiv g ty1 ty2 || TypesFeasiblyEquivStripMeasures g amap m ty1 ty2) then FeasiblyEqual else NotEqual @@ -773,9 +772,9 @@ let rec CheckExprNoByrefs cenv env expr = CheckExpr cenv env expr PermitByRefExpr.No |> ignore /// Check a value -and CheckValRef (cenv: cenv) (env: env) v m (ctxt: PermitByRefExpr) = +and CheckValRef (cenv: cenv) (env: env) v m (ctxt: PermitByRefExpr) = - if cenv.reportErrors then + if cenv.reportErrors then if isSpliceOperator cenv.g v && not env.quote then errorR(Error(FSComp.SR.chkSplicingOnlyInQuotations(), m)) if isSpliceOperator cenv.g v then errorR(Error(FSComp.SR.chkNoFirstClassSplicing(), m)) if valRefEq cenv.g v cenv.g.addrof_vref then errorR(Error(FSComp.SR.chkNoFirstClassAddressOf(), m)) @@ -787,8 +786,8 @@ and CheckValRef (cenv: cenv) (env: env) v m (ctxt: PermitByRefExpr) = if valRefEq cenv.g v cenv.g.refcell_incr_vref then informationalWarning(Error(FSComp.SR.chkInfoRefcellIncr(), m)) if valRefEq cenv.g v cenv.g.refcell_decr_vref then informationalWarning(Error(FSComp.SR.chkInfoRefcellDecr(), m)) - // ByRefLike-typed values can only occur in permitting ctxts - if ctxt.Disallow && isByrefLikeTy cenv.g m v.Type then + // ByRefLike-typed values can only occur in permitting ctxts + if ctxt.Disallow && isByrefLikeTy cenv.g m v.Type then errorR(Error(FSComp.SR.chkNoByrefAtThisPoint(v.DisplayName), m)) if env.isInAppExpr then @@ -797,30 +796,30 @@ and CheckValRef (cenv: cenv) (env: env) v m (ctxt: PermitByRefExpr) = CheckTypeNoInnerByrefs cenv env m v.Type /// Check a use of a value -and CheckValUse (cenv: cenv) (env: env) (vref: ValRef, vFlags, m) (ctxt: PermitByRefExpr) = - +and CheckValUse (cenv: cenv) (env: env) (vref: ValRef, vFlags, m) (ctxt: PermitByRefExpr) = + let g = cenv.g let limit = GetLimitVal cenv env m vref.Deref - if cenv.reportErrors then + if cenv.reportErrors then - if vref.IsBaseVal then + if vref.IsBaseVal then errorR(Error(FSComp.SR.chkLimitationsOfBaseKeyword(), m)) - let isCallOfConstructorOfAbstractType = - (match vFlags with NormalValUse -> true | _ -> false) && - vref.IsConstructor && + let isCallOfConstructorOfAbstractType = + (match vFlags with NormalValUse -> true | _ -> false) && + vref.IsConstructor && (match vref.TryDeclaringEntity with Parent tcref -> isAbstractTycon tcref.Deref | _ -> false) - if isCallOfConstructorOfAbstractType then + if isCallOfConstructorOfAbstractType then errorR(Error(FSComp.SR.tcAbstractTypeCannotBeInstantiated(), m)) // This is used to handle this case: // let x = 1 // let y = &x // &y - let isReturnExprBuiltUsingStackReferringByRefLike = + let isReturnExprBuiltUsingStackReferringByRefLike = ctxt.PermitOnlyReturnable && ((HasLimitFlag LimitFlags.ByRef limit && IsLimitEscapingScope env ctxt limit) || HasLimitFlag LimitFlags.StackReferringSpanLike limit) @@ -833,9 +832,9 @@ and CheckValUse (cenv: cenv) (env: env) (vref: ValRef, vFlags, m) (ctxt: PermitB | true, false -> errorR(Error(FSComp.SR.chkNoSpanLikeVariable(vref.DisplayName), m)) | false, true -> errorR(Error(FSComp.SR.chkNoByrefAddressOfValueFromExpression(), m)) | false, false -> errorR(Error(FSComp.SR.chkNoByrefAddressOfLocal(vref.DisplayName), m)) - - let isReturnOfStructThis = - ctxt.PermitOnlyReturnable && + + let isReturnOfStructThis = + ctxt.PermitOnlyReturnable && isByrefTy g vref.Type && (vref.IsMemberThisVal) @@ -845,9 +844,9 @@ and CheckValUse (cenv: cenv) (env: env) (vref: ValRef, vFlags, m) (ctxt: PermitB CheckValRef cenv env vref m ctxt limit - + /// Check an expression, given information about the position of the expression -and CheckForOverAppliedExceptionRaisingPrimitive (cenv: cenv) expr = +and CheckForOverAppliedExceptionRaisingPrimitive (cenv: cenv) expr = let g = cenv.g let expr = stripExpr expr let expr = stripDebugPoints expr @@ -861,12 +860,12 @@ and CheckForOverAppliedExceptionRaisingPrimitive (cenv: cenv) expr = // Special diagnostics for `raise`, `failwith`, `failwithf`, `nullArg`, `invalidOp` library intrinsics commonly used to raise exceptions // to warn on over-application. match f with - | OptionalCoerce(Expr.Val (v, _, funcRange)) + | OptionalCoerce(Expr.Val (v, _, funcRange)) when (valRefEq g v g.raise_vref || valRefEq g v g.failwith_vref || valRefEq g v g.null_arg_vref || valRefEq g v g.invalid_op_vref) -> match argsl with | [] | [_] -> () | _ :: _ :: _ -> - warning(Error(FSComp.SR.checkRaiseFamilyFunctionArgumentCount(v.DisplayName, 1, argsl.Length), funcRange)) + warning(Error(FSComp.SR.checkRaiseFamilyFunctionArgumentCount(v.DisplayName, 1, argsl.Length), funcRange)) | OptionalCoerce(Expr.Val (v, _, funcRange)) when valRefEq g v g.invalid_arg_vref -> match argsl with @@ -893,14 +892,14 @@ and CheckCallLimitArgs cenv env m returnTy limitArgs (ctxt: PermitByRefExpr) = let isReturnSpanLike = isSpanLikeTy cenv.g m returnTy // If return is a byref, and being used as a return, then a single argument cannot be a local-byref or a stack referring span-like. - let isReturnLimitedByRef = - isReturnByref && - (HasLimitFlag LimitFlags.ByRef limitArgs || + let isReturnLimitedByRef = + isReturnByref && + (HasLimitFlag LimitFlags.ByRef limitArgs || HasLimitFlag LimitFlags.StackReferringSpanLike limitArgs) // If return is a byref, and being used as a return, then a single argument cannot be a stack referring span-like or a local-byref of a stack referring span-like. - let isReturnLimitedSpanLike = - isReturnSpanLike && + let isReturnLimitedSpanLike = + isReturnSpanLike && (HasLimitFlag LimitFlags.StackReferringSpanLike limitArgs || HasLimitFlag LimitFlags.ByRefOfStackReferringSpanLike limitArgs) @@ -911,11 +910,11 @@ and CheckCallLimitArgs cenv env m returnTy limitArgs (ctxt: PermitByRefExpr) = else errorR(Error(FSComp.SR.chkNoByrefAddressOfValueFromExpression(), m)) - // You cannot call a function that takes a byref of a span-like (not stack referring) and + // You cannot call a function that takes a byref of a span-like (not stack referring) and // either a stack referring span-like or a local-byref of a stack referring span-like. - let isCallLimited = - HasLimitFlag LimitFlags.ByRefOfSpanLike limitArgs && - (HasLimitFlag LimitFlags.StackReferringSpanLike limitArgs || + let isCallLimited = + HasLimitFlag LimitFlags.ByRefOfSpanLike limitArgs && + (HasLimitFlag LimitFlags.StackReferringSpanLike limitArgs || HasLimitFlag LimitFlags.ByRefOfStackReferringSpanLike limitArgs) if isCallLimited then @@ -965,7 +964,7 @@ and CheckCallWithReceiver cenv env m returnTy args ctxts ctxt = | ctxt :: ctxts -> ctxt, ctxts let receiverLimit = CheckExpr cenv env receiverArg receiverContext - let limitArgs = + let limitArgs = let limitArgs = CheckExprs cenv env args ctxts // We do not include the receiver's limit in the limit args unless the receiver is a stack referring span-like. if HasLimitFlag LimitFlags.ByRefOfStackReferringSpanLike receiverLimit then @@ -975,9 +974,9 @@ and CheckCallWithReceiver cenv env m returnTy args ctxts ctxt = limitArgs CheckCallLimitArgs cenv env m returnTy limitArgs ctxt -and CheckExprLinear (cenv: cenv) (env: env) expr (ctxt: PermitByRefExpr) (contf : Limit -> Limit) = +and CheckExprLinear (cenv: cenv) (env: env) expr (ctxt: PermitByRefExpr) (contf : Limit -> Limit) : Limit = match expr with - | Expr.Sequential (e1, e2, NormalSeq, _) -> + | Expr.Sequential (e1, e2, NormalSeq, _) -> CheckExprNoByrefs cenv env e1 // tailcall CheckExprLinear cenv env e2 ctxt contf @@ -991,35 +990,36 @@ and CheckExprLinear (cenv: cenv) (env: env) expr (ctxt: PermitByRefExpr) (contf else PermitByRefExpr.Yes - let limit = CheckBinding cenv { env with returnScope = env.returnScope + 1 } false bindingContext bind + let limit = CheckBinding cenv { env with returnScope = env.returnScope + 1 } false bindingContext bind BindVal cenv env v LimitVal cenv v { limit with scope = if isByRef then limit.scope else env.returnScope } // tailcall - CheckExprLinear cenv env body ctxt contf + CheckExprLinear cenv env body ctxt contf | LinearOpExpr (_op, tyargs, argsHead, argLast, m) -> CheckTypeInstNoByrefs cenv env m tyargs - argsHead |> List.iter (CheckExprNoByrefs cenv env) + argsHead |> List.iter (CheckExprNoByrefs cenv env) // tailcall CheckExprLinear cenv env argLast PermitByRefExpr.No (fun _ -> contf NoLimit) | LinearMatchExpr (_spMatch, _exprm, dtree, tg1, e2, m, ty) -> - CheckTypeNoInnerByrefs cenv env m ty + CheckTypeNoInnerByrefs cenv env m ty CheckDecisionTree cenv env dtree let lim1 = CheckDecisionTreeTarget cenv env ctxt tg1 // tailcall - CheckExprLinear cenv env e2 ctxt (fun lim2 -> contf (CombineLimits [ lim1; lim2 ])) + CheckExprLinear cenv env e2 ctxt (fun lim2 -> contf (CombineTwoLimits lim1 lim2)) - | Expr.DebugPoint (_, innerExpr) -> + | Expr.DebugPoint (_, innerExpr) -> CheckExprLinear cenv env innerExpr ctxt contf - | _ -> + | _ -> // not a linear expression - contf (CheckExpr cenv env expr ctxt) + CheckExpr cenv env expr ctxt + |> contf /// Check a resumable code expression (the body of a ResumableCode delegate or /// the body of the MoveNextMethod for a state machine) -and TryCheckResumableCodeConstructs cenv env expr : bool = +and TryCheckResumableCodeConstructs cenv env expr : bool = let g = cenv.g match env.resumableCode with @@ -1029,14 +1029,14 @@ and TryCheckResumableCodeConstructs cenv env expr : bool = | Resumable.ResumableExpr allowed -> match expr with | IfUseResumableStateMachinesExpr g (thenExpr, elseExpr) -> - CheckExprNoByrefs cenv { env with resumableCode = Resumable.ResumableExpr true } thenExpr - CheckExprNoByrefs cenv { env with resumableCode = Resumable.None } elseExpr + CheckExprNoByrefs cenv { env with resumableCode = Resumable.ResumableExpr true } thenExpr + CheckExprNoByrefs cenv { env with resumableCode = Resumable.None } elseExpr true | ResumableEntryMatchExpr g (noneBranchExpr, someVar, someBranchExpr, _rebuild) -> if not allowed then errorR(Error(FSComp.SR.tcInvalidResumableConstruct("__resumableEntry"), expr.Range)) - CheckExprNoByrefs cenv env noneBranchExpr + CheckExprNoByrefs cenv env noneBranchExpr BindVal cenv env someVar CheckExprNoByrefs cenv env someBranchExpr true @@ -1083,7 +1083,7 @@ and TryCheckResumableCodeConstructs cenv env expr : bool = true | Expr.Match (_spBind, _exprm, dtree, targets, _m, _ty) -> - targets |> Array.iter(fun (TTarget(vs, targetExpr, _)) -> + targets |> Array.iter(fun (TTarget(vs, targetExpr, _)) -> BindVals cenv env vs CheckExprNoByrefs cenv env targetExpr) CheckDecisionTree cenv { env with resumableCode = Resumable.None } dtree @@ -1096,29 +1096,29 @@ and TryCheckResumableCodeConstructs cenv env expr : bool = BindVal cenv env bind.Var CheckExprNoByrefs cenv env bodyExpr true - + // LetRec bindings may not appear as part of resumable code (more careful work is needed to make them compilable) - | Expr.LetRec(_bindings, bodyExpr, _range, _frees) when allowed -> + | Expr.LetRec(_bindings, bodyExpr, _range, _frees) when allowed -> errorR(Error(FSComp.SR.tcResumableCodeContainsLetRec(), expr.Range)) CheckExprNoByrefs cenv env bodyExpr true // This construct arises from the 'mkDefault' in the 'Throw' case of an incomplete pattern match - | Expr.Const (Const.Zero, _, _) -> + | Expr.Const (Const.Zero, _, _) -> true - | Expr.DebugPoint (_, innerExpr) -> + | Expr.DebugPoint (_, innerExpr) -> TryCheckResumableCodeConstructs cenv env innerExpr | _ -> false /// Check an expression, given information about the position of the expression -and CheckExpr (cenv: cenv) (env: env) origExpr (ctxt: PermitByRefExpr) : Limit = - +and CheckExpr (cenv: cenv) (env: env) origExpr (ctxt: PermitByRefExpr) : Limit = + // Guard the stack for deeply nested expressions cenv.stackGuard.Guard <| fun () -> - + let g = cenv.g let origExpr = stripExpr origExpr @@ -1129,64 +1129,64 @@ and CheckExpr (cenv: cenv) (env: env) origExpr (ctxt: PermitByRefExpr) : Limit = let expr = stripExpr expr match TryCheckResumableCodeConstructs cenv env expr with - | true -> + | true -> // we've handled the special cases of resumable code and don't do other checks. - NoLimit - | false -> + NoLimit + | false -> // Handle ResumableExpr --> other expression let env = { env with resumableCode = Resumable.None } match expr with - | LinearOpExpr _ - | LinearMatchExpr _ - | Expr.Let _ + | LinearOpExpr _ + | LinearMatchExpr _ + | Expr.Let _ | Expr.Sequential (_, _, NormalSeq, _) - | Expr.DebugPoint _ -> + | Expr.DebugPoint _ -> CheckExprLinear cenv env expr ctxt id - | Expr.Sequential (e1, e2, ThenDoSeq, _) -> + | Expr.Sequential (e1, e2, ThenDoSeq, _) -> CheckExprNoByrefs cenv env e1 CheckExprNoByrefs cenv env e2 NoLimit - | Expr.Const (_, m, ty) -> - CheckTypeNoInnerByrefs cenv env m ty + | Expr.Const (_, m, ty) -> + CheckTypeNoInnerByrefs cenv env m ty NoLimit - - | Expr.Val (vref, vFlags, m) -> + + | Expr.Val (vref, vFlags, m) -> CheckValUse cenv env (vref, vFlags, m) ctxt - - | Expr.Quote (ast, savedConv, _isFromQueryExpression, m, ty) -> + + | Expr.Quote (ast, savedConv, _isFromQueryExpression, m, ty) -> CheckQuoteExpr cenv env (ast, savedConv, m, ty) | StructStateMachineExpr g info -> CheckStructStateMachineExpr cenv env expr info - | Expr.Obj (_, ty, basev, superInitCall, overrides, iimpls, m) -> + | Expr.Obj (_, ty, basev, superInitCall, overrides, iimpls, m) -> CheckObjectExpr cenv env (ty, basev, superInitCall, overrides, iimpls, m) // Allow base calls to F# methods - | Expr.App (InnerExprPat(ExprValWithPossibleTypeInst(v, vFlags, _, _) as f), _fty, tyargs, Expr.Val (baseVal, _, _) :: rest, m) - when ((match vFlags with VSlotDirectCall -> true | _ -> false) && + | Expr.App (InnerExprPat(ExprValWithPossibleTypeInst(v, vFlags, _, _) as f), _fty, tyargs, Expr.Val (baseVal, _, _) :: rest, m) + when ((match vFlags with VSlotDirectCall -> true | _ -> false) && baseVal.IsBaseVal) -> CheckFSharpBaseCall cenv env expr (v, f, _fty, tyargs, baseVal, rest, m) // Allow base calls to IL methods - | Expr.Op (TOp.ILCall (isVirtual, _, _, _, _, _, _, ilMethRef, enclTypeInst, methInst, retTypes), tyargs, Expr.Val (baseVal, _, _) :: rest, m) + | Expr.Op (TOp.ILCall (isVirtual, _, _, _, _, _, _, ilMethRef, enclTypeInst, methInst, retTypes), tyargs, Expr.Val (baseVal, _, _) :: rest, m) when not isVirtual && baseVal.IsBaseVal -> - + CheckILBaseCall cenv env (ilMethRef, enclTypeInst, methInst, retTypes, tyargs, baseVal, rest, m) | Expr.Op (op, tyargs, args, m) -> CheckExprOp cenv env (op, tyargs, args, m) ctxt expr - // Allow 'typeof' calls as a special case, the only accepted use of System.Void! + // Allow 'typeof' calls as a special case, the only accepted use of System.Void! | TypeOfExpr g ty when isVoidTy g ty -> NoLimit - // Allow 'typedefof' calls as a special case, the only accepted use of System.Void! + // Allow 'typedefof' calls as a special case, the only accepted use of System.Void! | TypeDefOfExpr g ty when isVoidTy g ty -> NoLimit @@ -1198,65 +1198,65 @@ and CheckExpr (cenv: cenv) (env: env) origExpr (ctxt: PermitByRefExpr) : Limit = | Expr.App (f, _fty, tyargs, argsl, m) -> CheckApplication cenv env expr (f, tyargs, argsl, m) ctxt - | Expr.Lambda (_, _, _, argvs, _, m, bodyTy) -> + | Expr.Lambda (_, _, _, argvs, _, m, bodyTy) -> CheckLambda cenv env expr (argvs, m, bodyTy) - | Expr.TyLambda (_, tps, _, m, bodyTy) -> + | Expr.TyLambda (_, tps, _, m, bodyTy) -> CheckTyLambda cenv env expr (tps, m, bodyTy) - | Expr.TyChoose (tps, e1, _) -> - let env = BindTypars g env tps - CheckExprNoByrefs cenv env e1 + | Expr.TyChoose (tps, e1, _) -> + let env = BindTypars g env tps + CheckExprNoByrefs cenv env e1 NoLimit - | Expr.Match (_, _, dtree, targets, m, ty) -> + | Expr.Match (_, _, dtree, targets, m, ty) -> CheckMatch cenv env ctxt (dtree, targets, m, ty) - | Expr.LetRec (binds, bodyExpr, _, _) -> + | Expr.LetRec (binds, bodyExpr, _, _) -> CheckLetRec cenv env (binds, bodyExpr) - | Expr.StaticOptimization (constraints, e2, e3, m) -> + | Expr.StaticOptimization (constraints, e2, e3, m) -> CheckStaticOptimization cenv env (constraints, e2, e3, m) | Expr.WitnessArg _ -> NoLimit - | Expr.Link _ -> + | Expr.Link _ -> failwith "Unexpected reclink" and CheckQuoteExpr cenv env (ast, savedConv, m, ty) = let g = cenv.g CheckExprNoByrefs cenv {env with quote=true} ast - if cenv.reportErrors then + if cenv.reportErrors then cenv.usesQuotations <- true // Translate the quotation to quotation data - try - let doData suppressWitnesses = - let qscope = QuotationTranslator.QuotationGenerationScope.Create (g, cenv.amap, cenv.viewCcu, cenv.tcVal, QuotationTranslator.IsReflectedDefinition.No) - let qdata = QuotationTranslator.ConvExprPublic qscope suppressWitnesses ast + try + let doData suppressWitnesses = + let qscope = QuotationTranslator.QuotationGenerationScope.Create (g, cenv.amap, cenv.viewCcu, cenv.tcVal, QuotationTranslator.IsReflectedDefinition.No) + let qdata = QuotationTranslator.ConvExprPublic qscope suppressWitnesses ast let typeDefs, spliceTypes, spliceExprs = qscope.Close() typeDefs, List.map fst spliceTypes, List.map fst spliceExprs, qdata let data1 = doData true let data2 = doData false - match savedConv.Value with + match savedConv.Value with | None -> savedConv.Value <- Some (data1, data2) | Some _ -> () - with QuotationTranslator.InvalidQuotedTerm e -> + with QuotationTranslator.InvalidQuotedTerm e -> errorRecovery e m - + CheckTypeNoByrefs cenv env m ty NoLimit and CheckStructStateMachineExpr cenv env expr info = let g = cenv.g - let (_dataTy, - (moveNextThisVar, moveNextExpr), - (setStateMachineThisVar, setStateMachineStateVar, setStateMachineBody), + let (_dataTy, + (moveNextThisVar, moveNextExpr), + (setStateMachineThisVar, setStateMachineStateVar, setStateMachineBody), (afterCodeThisVar, afterCodeBody)) = info if not (g.langVersion.SupportsFeature LanguageFeature.ResumableStateMachines) then @@ -1275,8 +1275,8 @@ and CheckObjectExpr cenv env (ty, basev, superInitCall, overrides, iimpls, m) = CheckInterfaceImpls cenv env basev iimpls CheckTypeNoByrefs cenv env m ty - let interfaces = - [ if isInterfaceTy g ty then + let interfaces = + [ if isInterfaceTy g ty then yield! AllSuperTypesOfType g cenv.amap m AllowMultiIntfInstantiations.Yes ty for ty, _ in iimpls do yield! AllSuperTypesOfType g cenv.amap m AllowMultiIntfInstantiations.Yes ty ] @@ -1291,7 +1291,7 @@ and CheckFSharpBaseCall cenv env expr (v, f, _fty, tyargs, baseVal, rest, m) = if memberInfo.MemberFlags.IsDispatchSlot then errorR(Error(FSComp.SR.tcCannotCallAbstractBaseMember(v.DisplayName), m)) NoLimit - else + else let env = { env with isInAppExpr = true } let returnTy = tyOfExpr g expr @@ -1301,9 +1301,9 @@ and CheckFSharpBaseCall cenv env expr (v, f, _fty, tyargs, baseVal, rest, m) = CheckTypeNoInnerByrefs cenv env m returnTy CheckExprs cenv env rest (mkArgsForAppliedExpr true rest f) -and CheckILBaseCall cenv env (ilMethRef, enclTypeInst, methInst, retTypes, tyargs, baseVal, rest, m) = +and CheckILBaseCall cenv env (ilMethRef, enclTypeInst, methInst, retTypes, tyargs, baseVal, rest, m) = let g = cenv.g - // Disallow calls to abstract base methods on IL types. + // Disallow calls to abstract base methods on IL types. match tryTcrefOfAppTy g baseVal.Type with | ValueSome tcref when tcref.IsILTycon -> try @@ -1324,14 +1324,14 @@ and CheckILBaseCall cenv env (ilMethRef, enclTypeInst, methInst, retTypes, tyarg CheckValRef cenv env baseVal m PermitByRefExpr.No CheckExprsPermitByRefLike cenv env rest -and CheckSpliceApplication cenv env (tinst, arg, m) = +and CheckSpliceApplication cenv env (tinst, arg, m) = CheckTypeInstNoInnerByrefs cenv env m tinst // it's the splice operator, a byref instantiation is allowed CheckExprNoByrefs cenv env arg NoLimit -and CheckApplication cenv env expr (f, tyargs, argsl, m) ctxt = +and CheckApplication cenv env expr (f, tyargs, argsl, m) ctxt = let g = cenv.g - match expr with + match expr with | ResumableCodeInvoke g _ -> warning(Error(FSComp.SR.tcResumableCodeInvocation(), m)) | _ -> () @@ -1358,43 +1358,43 @@ and CheckApplication cenv env expr (f, tyargs, argsl, m) ctxt = else CheckCall cenv env m returnTy argsl ctxts ctxt -and CheckLambda cenv env expr (argvs, m, bodyTy) = - let valReprInfo = ValReprInfo ([], [argvs |> List.map (fun _ -> ValReprInfo.unnamedTopArg1)], ValReprInfo.unnamedRetVal) - let ty = mkMultiLambdaTy cenv.g m argvs bodyTy in +and CheckLambda cenv env expr (argvs, m, bodyTy) = + let valReprInfo = ValReprInfo ([], [argvs |> List.map (fun _ -> ValReprInfo.unnamedTopArg1)], ValReprInfo.unnamedRetVal) + let ty = mkMultiLambdaTy cenv.g m argvs bodyTy in CheckLambdas false None cenv env false valReprInfo false expr m ty PermitByRefExpr.Yes -and CheckTyLambda cenv env expr (tps, m, bodyTy) = - let valReprInfo = ValReprInfo (ValReprInfo.InferTyparInfo tps, [], ValReprInfo.unnamedRetVal) - let ty = mkForallTyIfNeeded tps bodyTy in +and CheckTyLambda cenv env expr (tps, m, bodyTy) = + let valReprInfo = ValReprInfo (ValReprInfo.InferTyparInfo tps, [], ValReprInfo.unnamedRetVal) + let ty = mkForallTyIfNeeded tps bodyTy in CheckLambdas false None cenv env false valReprInfo false expr m ty PermitByRefExpr.Yes -and CheckMatch cenv env ctxt (dtree, targets, m, ty) = +and CheckMatch cenv env ctxt (dtree, targets, m, ty) = CheckTypeNoInnerByrefs cenv env m ty // computed byrefs allowed at each branch CheckDecisionTree cenv env dtree CheckDecisionTreeTargets cenv env targets ctxt -and CheckLetRec cenv env (binds, bodyExpr) = +and CheckLetRec cenv env (binds, bodyExpr) = BindVals cenv env (valsOfBinds binds) CheckBindings cenv env binds CheckExprNoByrefs cenv env bodyExpr NoLimit -and CheckStaticOptimization cenv env (constraints, e2, e3, m) = +and CheckStaticOptimization cenv env (constraints, e2, e3, m) = CheckExprNoByrefs cenv env e2 CheckExprNoByrefs cenv env e3 constraints |> List.iter (function - | TTyconEqualsTycon(ty1, ty2) -> + | TTyconEqualsTycon(ty1, ty2) -> CheckTypeNoByrefs cenv env m ty1 CheckTypeNoByrefs cenv env m ty2 - | TTyconIsStruct ty1 -> + | TTyconIsStruct ty1 -> CheckTypeNoByrefs cenv env m ty1) NoLimit -and CheckMethods cenv env baseValOpt (ty, methods) = - methods |> List.iter (CheckMethod cenv env baseValOpt ty) +and CheckMethods cenv env baseValOpt (ty, methods) = + methods |> List.iter (CheckMethod cenv env baseValOpt ty) -and CheckMethod cenv env baseValOpt ty (TObjExprMethod(_, attribs, tps, vs, body, m)) = - let env = BindTypars cenv.g env tps +and CheckMethod cenv env baseValOpt ty (TObjExprMethod(_, attribs, tps, vs, body, m)) = + let env = BindTypars cenv.g env tps let vs = List.concat vs let env = BindArgVals env vs let env = @@ -1410,18 +1410,18 @@ and CheckMethod cenv env baseValOpt ty (TObjExprMethod(_, attribs, tps, vs, body CheckEscapes cenv true m (match baseValOpt with Some x -> x :: vs | None -> vs) body |> ignore CheckExpr cenv { env with returnScope = env.returnScope + 1 } body PermitByRefExpr.YesReturnableNonLocal |> ignore -and CheckInterfaceImpls cenv env baseValOpt l = +and CheckInterfaceImpls cenv env baseValOpt l = l |> List.iter (CheckInterfaceImpl cenv env baseValOpt) - -and CheckInterfaceImpl cenv env baseValOpt overrides = - CheckMethods cenv env baseValOpt overrides + +and CheckInterfaceImpl cenv env baseValOpt overrides = + CheckMethods cenv env baseValOpt overrides and CheckNoResumableStmtConstructs cenv _env expr = let g = cenv.g - match expr with - | Expr.Val (v, _, m) - when valRefEq g v g.cgh__resumeAt_vref || - valRefEq g v g.cgh__resumableEntry_vref || + match expr with + | Expr.Val (v, _, m) + when valRefEq g v g.cgh__resumeAt_vref || + valRefEq g v g.cgh__resumableEntry_vref || valRefEq g v g.cgh__stateMachine_vref -> errorR(Error(FSComp.SR.tcInvalidResumableConstruct(v.DisplayName), m)) | _ -> () @@ -1431,20 +1431,20 @@ and CheckExprOp cenv env (op, tyargs, args, m) ctxt expr = // Ensure anonymous record type requirements are recorded match op with - | TOp.AnonRecdGet (anonInfo, _) - | TOp.AnonRecd anonInfo -> + | TOp.AnonRecdGet (anonInfo, _) + | TOp.AnonRecd anonInfo -> RecordAnonRecdInfo cenv anonInfo | _ -> () // Special cases - match op, tyargs, args with - // Handle these as special cases since mutables are allowed inside their bodies + match op, tyargs, args with + // Handle these as special cases since mutables are allowed inside their bodies | TOp.While _, _, [Expr.Lambda (_, _, _, [_], e1, _, _);Expr.Lambda (_, _, _, [_], e2, _, _)] -> - CheckTypeInstNoByrefs cenv env m tyargs + CheckTypeInstNoByrefs cenv env m tyargs CheckExprsNoByRefLike cenv env [e1;e2] | TOp.TryFinally _, [_], [Expr.Lambda (_, _, _, [_], e1, _, _); Expr.Lambda (_, _, _, [_], e2, _, _)] -> - CheckTypeInstNoInnerByrefs cenv env m tyargs // result of a try/finally can be a byref + CheckTypeInstNoInnerByrefs cenv env m tyargs // result of a try/finally can be a byref let limit = CheckExpr cenv env e1 ctxt // result of a try/finally can be a byref if in a position where the overall expression is can be a byref CheckExprNoByrefs cenv env e2 limit @@ -1454,19 +1454,19 @@ and CheckExprOp cenv env (op, tyargs, args, m) ctxt expr = CheckExprsNoByRefLike cenv env [e1;e2;e3] | TOp.TryWith _, [_], [Expr.Lambda (_, _, _, [_], e1, _, _); Expr.Lambda (_, _, _, [_], _e2, _, _); Expr.Lambda (_, _, _, [_], e3, _, _)] -> - CheckTypeInstNoInnerByrefs cenv env m tyargs // result of a try/catch can be a byref + CheckTypeInstNoInnerByrefs cenv env m tyargs // result of a try/catch can be a byref let limit1 = CheckExpr cenv env e1 ctxt // result of a try/catch can be a byref if in a position where the overall expression is can be a byref // [(* e2; -- don't check filter body - duplicates logic in 'catch' body *) e3] let limit2 = CheckExpr cenv env e3 ctxt // result of a try/catch can be a byref if in a position where the overall expression is can be a byref CombineTwoLimits limit1 limit2 - + | TOp.ILCall (_, _, _, _, _, _, _, ilMethRef, enclTypeInst, methInst, retTypes), _, _ -> CheckTypeInstNoByrefs cenv env m tyargs CheckTypeInstNoByrefs cenv env m enclTypeInst CheckTypeInstNoByrefs cenv env m methInst CheckTypeInstNoInnerByrefs cenv env m retTypes // permit byref returns - let hasReceiver = + let hasReceiver = (ilMethRef.CallingConv.IsInstance || ilMethRef.CallingConv.IsInstanceExplicit) && not args.IsEmpty @@ -1475,46 +1475,46 @@ and CheckExprOp cenv env (op, tyargs, args, m) ctxt expr = let argContexts = List.init args.Length (fun _ -> PermitByRefExpr.Yes) match retTypes with - | [ty] when ctxt.PermitOnlyReturnable && isByrefLikeTy g m ty -> + | [ty] when ctxt.PermitOnlyReturnable && isByrefLikeTy g m ty -> if hasReceiver then CheckCallWithReceiver cenv env m returnTy args argContexts ctxt else CheckCall cenv env m returnTy args argContexts ctxt - | _ -> + | _ -> if hasReceiver then CheckCallWithReceiver cenv env m returnTy args argContexts PermitByRefExpr.Yes else CheckCall cenv env m returnTy args argContexts PermitByRefExpr.Yes - | TOp.Tuple tupInfo, _, _ when not (evalTupInfoIsStruct tupInfo) -> - match ctxt with - | PermitByRefExpr.YesTupleOfArgs nArity -> - if cenv.reportErrors then - if args.Length <> nArity then + | TOp.Tuple tupInfo, _, _ when not (evalTupInfoIsStruct tupInfo) -> + match ctxt with + | PermitByRefExpr.YesTupleOfArgs nArity -> + if cenv.reportErrors then + if args.Length <> nArity then errorR(InternalError("Tuple arity does not correspond to planned function argument arity", m)) - // This tuple should not be generated. The known function arity - // means it just bundles arguments. - CheckExprsPermitByRefLike cenv env args - | _ -> + // This tuple should not be generated. The known function arity + // means it just bundles arguments. + CheckExprsPermitByRefLike cenv env args + | _ -> CheckTypeInstNoByrefs cenv env m tyargs - CheckExprsNoByRefLike cenv env args + CheckExprsNoByRefLike cenv env args - | TOp.LValueOp (LAddrOf _, vref), _, _ -> + | TOp.LValueOp (LAddrOf _, vref), _, _ -> let limit1 = GetLimitValByRef cenv env m vref.Deref let limit2 = CheckExprsNoByRefLike cenv env args let limit = CombineTwoLimits limit1 limit2 - if cenv.reportErrors then + if cenv.reportErrors then - if ctxt.Disallow then + if ctxt.Disallow then errorR(Error(FSComp.SR.chkNoAddressOfAtThisPoint(vref.DisplayName), m)) - - let returningAddrOfLocal = - ctxt.PermitOnlyReturnable && + + let returningAddrOfLocal = + ctxt.PermitOnlyReturnable && HasLimitFlag LimitFlags.ByRef limit && IsLimitEscapingScope env ctxt limit - - if returningAddrOfLocal then + + if returningAddrOfLocal then if vref.IsCompilerGenerated then errorR(Error(FSComp.SR.chkNoByrefAddressOfValueFromExpression(), m)) else @@ -1522,15 +1522,15 @@ and CheckExprOp cenv env (op, tyargs, args, m) ctxt expr = limit - | TOp.LValueOp (LByrefSet, vref), _, [arg] -> + | TOp.LValueOp (LByrefSet, vref), _, [arg] -> let limit = GetLimitVal cenv env m vref.Deref let isVrefLimited = not (HasLimitFlag LimitFlags.ByRefOfStackReferringSpanLike limit) let isArgLimited = HasLimitFlag LimitFlags.StackReferringSpanLike (CheckExprPermitByRefLike cenv env arg) - if isVrefLimited && isArgLimited then + if isVrefLimited && isArgLimited then errorR(Error(FSComp.SR.chkNoWriteToLimitedSpan(vref.DisplayName), m)) NoLimit - | TOp.LValueOp (LByrefGet, vref), _, [] -> + | TOp.LValueOp (LByrefGet, vref), _, [] -> let limit = GetLimitVal cenv env m vref.Deref if HasLimitFlag LimitFlags.ByRefOfStackReferringSpanLike limit then @@ -1546,27 +1546,27 @@ and CheckExprOp cenv env (op, tyargs, args, m) ctxt expr = else { scope = 1; flags = LimitFlags.None } - | TOp.LValueOp (LSet, vref), _, [arg] -> + | TOp.LValueOp (LSet, vref), _, [arg] -> let isVrefLimited = not (HasLimitFlag LimitFlags.StackReferringSpanLike (GetLimitVal cenv env m vref.Deref)) let isArgLimited = HasLimitFlag LimitFlags.StackReferringSpanLike (CheckExprPermitByRefLike cenv env arg) - if isVrefLimited && isArgLimited then + if isVrefLimited && isArgLimited then errorR(Error(FSComp.SR.chkNoWriteToLimitedSpan(vref.DisplayName), m)) NoLimit | TOp.AnonRecdGet _, _, [arg1] - | TOp.TupleFieldGet _, _, [arg1] -> + | TOp.TupleFieldGet _, _, [arg1] -> CheckTypeInstNoByrefs cenv env m tyargs CheckExprsPermitByRefLike cenv env [arg1] - | TOp.ValFieldGet _rf, _, [arg1] -> + | TOp.ValFieldGet _rf, _, [arg1] -> CheckTypeInstNoByrefs cenv env m tyargs - //See mkRecdFieldGetViaExprAddr -- byref arg1 when #args =1 - // Property getters on mutable structs come through here. - CheckExprsPermitByRefLike cenv env [arg1] + //See mkRecdFieldGetViaExprAddr -- byref arg1 when #args =1 + // Property getters on mutable structs come through here. + CheckExprsPermitByRefLike cenv env [arg1] - | TOp.ValFieldSet rf, _, [arg1;arg2] -> + | TOp.ValFieldSet rf, _, [arg1;arg2] -> CheckTypeInstNoByrefs cenv env m tyargs - // See mkRecdFieldSetViaExprAddr -- byref arg1 when #args=2 + // See mkRecdFieldSetViaExprAddr -- byref arg1 when #args=2 // Field setters on mutable structs come through here let limit1 = CheckExprPermitByRefLike cenv env arg1 let limit2 = CheckExprPermitByRefLike cenv env arg2 @@ -1591,9 +1591,9 @@ and CheckExprOp cenv env (op, tyargs, args, m) ctxt expr = // Check get of static field | TOp.ValFieldGetAddr (rfref, _readonly), tyargs, [] -> - + if ctxt.Disallow && cenv.reportErrors && isByrefLikeTy g m (tyOfExpr g expr) then - errorR(Error(FSComp.SR.chkNoAddressStaticFieldAtThisPoint(rfref.FieldName), m)) + errorR(Error(FSComp.SR.chkNoAddressStaticFieldAtThisPoint(rfref.FieldName), m)) CheckTypeInstNoByrefs cenv env m tyargs NoLimit @@ -1606,24 +1606,24 @@ and CheckExprOp cenv env (op, tyargs, args, m) ctxt expr = // C# applies a rule where the APIs to struct types can't return the addresses of fields in that struct. // There seems no particular reason for this given that other protections in the language, though allowing - // it would mean "readonly" on a struct doesn't imply immutability-of-contents - it only implies + // it would mean "readonly" on a struct doesn't imply immutability-of-contents - it only implies if ctxt.PermitOnlyReturnable && (match stripDebugPoints obj with Expr.Val (vref, _, _) -> vref.IsMemberThisVal | _ -> false) && isByrefTy g (tyOfExpr g obj) then errorR(Error(FSComp.SR.chkStructsMayNotReturnAddressesOfContents(), m)) if ctxt.Disallow && cenv.reportErrors && isByrefLikeTy g m (tyOfExpr g expr) then errorR(Error(FSComp.SR.chkNoAddressFieldAtThisPoint(rfref.FieldName), m)) - // This construct is used for &(rx.rfield) and &(rx->rfield). Relax to permit byref types for rx. [See Bug 1263]. + // This construct is used for &(rx.rfield) and &(rx->rfield). Relax to permit byref types for rx. [See Bug 1263]. CheckTypeInstNoByrefs cenv env m tyargs // Recursively check in same ctxt, e.g. if at PermitOnlyReturnable the obj arg must also be returnable CheckExpr cenv env obj ctxt - | TOp.UnionCaseFieldGet _, _, [arg1] -> + | TOp.UnionCaseFieldGet _, _, [arg1] -> CheckTypeInstNoByrefs cenv env m tyargs CheckExprPermitByRefLike cenv env arg1 - | TOp.UnionCaseTagGet _, _, [arg1] -> + | TOp.UnionCaseTagGet _, _, [arg1] -> CheckTypeInstNoByrefs cenv env m tyargs CheckExprPermitByRefLike cenv env arg1 // allow byref - it may be address-of-struct @@ -1646,18 +1646,18 @@ and CheckExprOp cenv env (op, tyargs, args, m) ctxt expr = match instrs, args with // Write a .NET instance field | [ I_stfld (_alignment, _vol, _fspec) ], _ -> - // permit byref for lhs lvalue + // permit byref for lhs lvalue // permit byref for rhs lvalue (field would have to have ByRefLike type, i.e. be a field in another ByRefLike type) CheckExprsPermitByRefLike cenv env args // Read a .NET instance field | [ I_ldfld (_alignment, _vol, _fspec) ], _ -> - // permit byref for lhs lvalue + // permit byref for lhs lvalue CheckExprsPermitByRefLike cenv env args // Read a .NET instance field | [ I_ldfld (_alignment, _vol, _fspec); AI_nop ], _ -> - // permit byref for lhs lvalue of readonly value + // permit byref for lhs lvalue of readonly value CheckExprsPermitByRefLike cenv env args | [ I_ldsflda fspec ], [] -> @@ -1676,56 +1676,56 @@ and CheckExprOp cenv env (op, tyargs, args, m) ctxt expr = | [ I_ldelema (_, isNativePtr, _, _) ], lhsArray :: indices -> if ctxt.Disallow && cenv.reportErrors && not isNativePtr && isByrefLikeTy g m (tyOfExpr g expr) then errorR(Error(FSComp.SR.chkNoAddressOfArrayElementAtThisPoint(), m)) - // permit byref for lhs lvalue + // permit byref for lhs lvalue let limit = CheckExprPermitByRefLike cenv env lhsArray CheckExprsNoByRefLike cenv env indices |> ignore limit | [ AI_conv _ ], _ -> - // permit byref for args to conv - CheckExprsPermitByRefLike cenv env args + // permit byref for args to conv + CheckExprsPermitByRefLike cenv env args | _ -> - CheckExprsNoByRefLike cenv env args + CheckExprsNoByRefLike cenv env args | TOp.TraitCall _, _, _ -> CheckTypeInstNoByrefs cenv env m tyargs - // allow args to be byref here + // allow args to be byref here CheckExprsPermitByRefLike cenv env args - + | TOp.Recd _, _, _ -> CheckTypeInstNoByrefs cenv env m tyargs CheckExprsPermitByRefLike cenv env args - | _ -> + | _ -> CheckTypeInstNoByrefs cenv env m tyargs - CheckExprsNoByRefLike cenv env args + CheckExprsNoByRefLike cenv env args and CheckLambdas isTop (memberVal: Val option) cenv env inlined valReprInfo alwaysCheckNoReraise expr mOrig ety ctxt = let g = cenv.g let memInfo = memberVal |> Option.bind (fun v -> v.MemberInfo) - // The valReprInfo here says we are _guaranteeing_ to compile a function value - // as a .NET method with precisely the corresponding argument counts. + // The valReprInfo here says we are _guaranteeing_ to compile a function value + // as a .NET method with precisely the corresponding argument counts. match stripDebugPoints expr with - | Expr.TyChoose (tps, e1, m) -> + | Expr.TyChoose (tps, e1, m) -> let env = BindTypars g env tps CheckLambdas isTop memberVal cenv env inlined valReprInfo alwaysCheckNoReraise e1 m ety ctxt - | Expr.Lambda (_, _, _, _, _, m, _) + | Expr.Lambda (_, _, _, _, _, m, _) | Expr.TyLambda (_, _, _, m, _) -> let tps, ctorThisValOpt, baseValOpt, vsl, body, bodyTy = destLambdaWithValReprInfo g cenv.amap valReprInfo (expr, ety) - let env = BindTypars g env tps + let env = BindTypars g env tps let thisAndBase = Option.toList ctorThisValOpt @ Option.toList baseValOpt let restArgs = List.concat vsl let syntacticArgs = thisAndBase @ restArgs let env = BindArgVals env restArgs - match memInfo with + match memInfo with | None -> () - | Some mi -> + | Some mi -> // ctorThis and baseVal values are always considered used - for v in thisAndBase do v.SetHasBeenReferenced() + for v in thisAndBase do v.SetHasBeenReferenced() // instance method 'this' is always considered used match mi.MemberFlags.IsInstance, restArgs with | true, firstArg :: _ -> firstArg.SetHasBeenReferenced() @@ -1743,10 +1743,10 @@ and CheckLambdas isTop (memberVal: Val option) cenv env inlined valReprInfo alwa // Check argument types for arg in syntacticArgs do - if arg.InlineIfLambda && (not inlined || not (isFunTy g arg.Type || isFSharpDelegateTy g arg.Type)) then + if arg.InlineIfLambda && (not inlined || not (isFunTy g arg.Type || isFSharpDelegateTy g arg.Type)) then errorR(Error(FSComp.SR.tcInlineIfLambdaUsedOnNonInlineFunctionOrMethod(), arg.Range)) - CheckValSpecAux permitByRefType cenv env arg (fun () -> + CheckValSpecAux permitByRefType cenv env arg (fun () -> if arg.IsCompilerGenerated then errorR(Error(FSComp.SR.chkErrorUseOfByref(), arg.Range)) else @@ -1765,7 +1765,7 @@ and CheckLambdas isTop (memberVal: Val option) cenv env inlined valReprInfo alwa let freesOpt = CheckEscapes cenv memInfo.IsSome m syntacticArgs body // no reraise under lambda expression - CheckNoReraise cenv freesOpt body + CheckNoReraise cenv freesOpt body // Check the body of the lambda if isTop && not g.compilingFSharpCore && isByrefLikeTy g m bodyTy then @@ -1775,83 +1775,83 @@ and CheckLambdas isTop (memberVal: Val option) cenv env inlined valReprInfo alwa CheckExprNoByrefs cenv env body // Check byref return types - if cenv.reportErrors then + if cenv.reportErrors then if not isTop then - CheckForByrefLikeType cenv env m bodyTy (fun () -> + CheckForByrefLikeType cenv env m bodyTy (fun () -> errorR(Error(FSComp.SR.chkFirstClassFuncNoByref(), m))) - elif not g.compilingFSharpCore && isByrefTy g bodyTy then + elif not g.compilingFSharpCore && isByrefTy g bodyTy then // check no byrefs-in-the-byref - CheckForByrefType cenv env (destByrefTy g bodyTy) (fun () -> + CheckForByrefType cenv env (destByrefTy g bodyTy) (fun () -> errorR(Error(FSComp.SR.chkReturnTypeNoByref(), m))) - for tp in tps do - if tp.Constraints |> List.sumBy (function TyparConstraint.CoercesTo(ty, _) when isClassTy g ty -> 1 | _ -> 0) > 1 then + for tp in tps do + if tp.Constraints |> List.sumBy (function TyparConstraint.CoercesTo(ty, _) when isClassTy g ty -> 1 | _ -> 0) > 1 then errorR(Error(FSComp.SR.chkTyparMultipleClassConstraints(), m)) NoLimit - + // This path is for expression bindings that are not actually lambdas - | _ -> + | _ -> let m = mOrig // Permit byrefs for let x = ... CheckTypeNoInnerByrefs cenv env m ety - let limit = + let limit = if not inlined && (isByrefLikeTy g m ety || isNativePtrTy g ety) then - // allow byref to occur as RHS of byref binding. + // allow byref to occur as RHS of byref binding. CheckExpr cenv env expr ctxt - else + else CheckExprNoByrefs cenv env expr NoLimit - if alwaysCheckNoReraise then + if alwaysCheckNoReraise then CheckNoReraise cenv None expr limit and CheckExprs cenv env exprs ctxts : Limit = - let ctxts = Array.ofList ctxts - let argArity i = if i < ctxts.Length then ctxts[i] else PermitByRefExpr.No - exprs - |> List.mapi (fun i exp -> CheckExpr cenv env exp (argArity i)) + let ctxts = Array.ofList ctxts + let argArity i = if i < ctxts.Length then ctxts[i] else PermitByRefExpr.No + exprs + |> List.mapi (fun i exp -> CheckExpr cenv env exp (argArity i)) |> CombineLimits -and CheckExprsNoByRefLike cenv env exprs : Limit = +and CheckExprsNoByRefLike cenv env exprs : Limit = for expr in exprs do CheckExprNoByrefs cenv env expr NoLimit -and CheckExprsPermitByRefLike cenv env exprs : Limit = - exprs +and CheckExprsPermitByRefLike cenv env exprs : Limit = + exprs |> List.map (CheckExprPermitByRefLike cenv env) |> CombineLimits -and CheckExprPermitByRefLike cenv env expr : Limit = +and CheckExprPermitByRefLike cenv env expr : Limit = CheckExpr cenv env expr PermitByRefExpr.Yes -and CheckExprPermitReturnableByRef cenv env expr : Limit = +and CheckExprPermitReturnableByRef cenv env expr : Limit = CheckExpr cenv env expr PermitByRefExpr.YesReturnable -and CheckDecisionTreeTargets cenv env targets ctxt = - targets - |> Array.map (CheckDecisionTreeTarget cenv env ctxt) +and CheckDecisionTreeTargets cenv env targets ctxt = + targets + |> Array.map (CheckDecisionTreeTarget cenv env ctxt) |> List.ofArray |> CombineLimits -and CheckDecisionTreeTarget cenv env ctxt (TTarget(vs, targetExpr, _)) = - BindVals cenv env vs +and CheckDecisionTreeTarget cenv env ctxt (TTarget(vs, targetExpr, _)) = + BindVals cenv env vs for v in vs do CheckValSpec PermitByRefType.All cenv env v - CheckExpr cenv env targetExpr ctxt + CheckExpr cenv env targetExpr ctxt and CheckDecisionTree cenv env dtree = - match dtree with - | TDSuccess (resultExprs, _) -> + match dtree with + | TDSuccess (resultExprs, _) -> CheckExprsNoByRefLike cenv env resultExprs |> ignore - | TDBind(bind, rest) -> + | TDBind(bind, rest) -> CheckBinding cenv env false PermitByRefExpr.Yes bind |> ignore - CheckDecisionTree cenv env rest - | TDSwitch (inpExpr, cases, dflt, m) -> + CheckDecisionTree cenv env rest + | TDSwitch (inpExpr, cases, dflt, m) -> CheckDecisionTreeSwitch cenv env (inpExpr, cases, dflt, m) and CheckDecisionTreeSwitch cenv env (inpExpr, cases, dflt, m) = @@ -1859,7 +1859,7 @@ and CheckDecisionTreeSwitch cenv env (inpExpr, cases, dflt, m) = for (TCase(discrim, dtree)) in cases do CheckDecisionTreeTest cenv env m discrim CheckDecisionTree cenv env dtree - dflt |> Option.iter (CheckDecisionTree cenv env) + dflt |> Option.iter (CheckDecisionTree cenv env) and CheckDecisionTreeTest cenv env m discrim = match discrim with @@ -1877,25 +1877,25 @@ and CheckAttrib cenv env (Attrib(tcref, _, args, props, _, _, m)) = props |> List.iter (fun (AttribNamedArg(_, _, _, expr)) -> CheckAttribExpr cenv env expr) args |> List.iter (CheckAttribExpr cenv env) -and CheckAttribExpr cenv env (AttribExpr(expr, vexpr)) = +and CheckAttribExpr cenv env (AttribExpr(expr, vexpr)) = CheckExprNoByrefs cenv env expr CheckExprNoByrefs cenv env vexpr - CheckNoReraise cenv None expr + CheckNoReraise cenv None expr CheckAttribArgExpr cenv env vexpr -and CheckAttribArgExpr cenv env expr = +and CheckAttribArgExpr cenv env expr = let g = cenv.g - match expr with + match expr with - // Detect standard constants - | Expr.Const (c, m, _) -> - match c with - | Const.Bool _ - | Const.Int32 _ + // Detect standard constants + | Expr.Const (c, m, _) -> + match c with + | Const.Bool _ + | Const.Int32 _ | Const.SByte _ | Const.Int16 _ | Const.Int32 _ - | Const.Int64 _ + | Const.Int64 _ | Const.Byte _ | Const.UInt16 _ | Const.UInt32 _ @@ -1905,56 +1905,56 @@ and CheckAttribArgExpr cenv env expr = | Const.Char _ | Const.Zero | Const.String _ -> () - | _ -> - if cenv.reportErrors then + | _ -> + if cenv.reportErrors then errorR (Error (FSComp.SR.tastNotAConstantExpression(), m)) - - | Expr.Op (TOp.Array, [_elemTy], args, _m) -> + + | Expr.Op (TOp.Array, [_elemTy], args, _m) -> List.iter (CheckAttribArgExpr cenv env) args - | TypeOfExpr g _ -> + | TypeOfExpr g _ -> () - | TypeDefOfExpr g _ -> + | TypeDefOfExpr g _ -> () - | Expr.Op (TOp.Coerce, _, [arg], _) -> + | Expr.Op (TOp.Coerce, _, [arg], _) -> CheckAttribArgExpr cenv env arg - | EnumExpr g arg1 -> + | EnumExpr g arg1 -> CheckAttribArgExpr cenv env arg1 | AttribBitwiseOrExpr g (arg1, arg2) -> CheckAttribArgExpr cenv env arg1 CheckAttribArgExpr cenv env arg2 - | _ -> - if cenv.reportErrors then + | _ -> + if cenv.reportErrors then errorR (Error (FSComp.SR.chkInvalidCustAttrVal(), expr.Range)) - -and CheckAttribs cenv env (attribs: Attribs) = + +and CheckAttribs cenv env (attribs: Attribs) = if isNil attribs then () else let tcrefs = [ for Attrib(tcref, _, _, _, gs, _, m) in attribs -> (tcref, gs, m) ] // Check for violations of allowMultiple = false - let duplicates = + let duplicates = tcrefs |> Seq.groupBy (fun (tcref, gs, _) -> // Don't allow CompiledNameAttribute on both a property and its getter/setter (see E_CompiledName test) if tyconRefEq cenv.g cenv.g.attrib_CompiledNameAttribute.TyconRef tcref then (tcref.Stamp, false) else - (tcref.Stamp, gs)) - |> Seq.map (fun (_, elems) -> List.last (List.ofSeq elems), Seq.length elems) - |> Seq.filter (fun (_, count) -> count > 1) - |> Seq.map fst + (tcref.Stamp, gs)) + |> Seq.map (fun (_, elems) -> List.last (List.ofSeq elems), Seq.length elems) + |> Seq.filter (fun (_, count) -> count > 1) + |> Seq.map fst |> Seq.toList // Filter for allowMultiple = false |> List.filter (fun (tcref, _, m) -> TryFindAttributeUsageAttribute cenv.g m tcref <> Some true) - if cenv.reportErrors then + if cenv.reportErrors then for tcref, _, m in duplicates do errorR(Error(FSComp.SR.chkAttrHasAllowMultiFalse(tcref.DisplayName), m)) - - attribs |> List.iter (CheckAttrib cenv env) + + attribs |> List.iter (CheckAttrib cenv env) and CheckValInfo cenv env (ValReprInfo(_, args, ret)) = args |> List.iterSquared (CheckArgInfo cenv env) ret |> CheckArgInfo cenv env -and CheckArgInfo cenv env (argInfo : ArgReprInfo) = +and CheckArgInfo cenv env (argInfo : ArgReprInfo) = CheckAttribs cenv env argInfo.Attribs and CheckValSpecAux permitByRefLike cenv env (v: Val) onInnerByrefError = @@ -1966,12 +1966,12 @@ and CheckValSpec permitByRefLike cenv env v = CheckValSpecAux permitByRefLike cenv env v (fun () -> errorR(Error(FSComp.SR.chkErrorUseOfByref(), v.Range))) and AdjustAccess isHidden (cpath: unit -> CompilationPath) access = - if isHidden then + if isHidden then let (TAccess l) = access // FSharp 1.0 bug 1908: Values hidden by signatures are implicitly at least 'internal' let scoref = cpath().ILScopeRef TAccess(CompPath(scoref, []) :: l) - else + else access and CheckBinding cenv env alwaysCheckNoReraise ctxt (TBind(v, bindRhs, _) as bind) : Limit = @@ -1983,14 +1983,14 @@ and CheckBinding cenv env alwaysCheckNoReraise ctxt (TBind(v, bindRhs, _) as bin let env = { env with external = env.external || g.attrib_DllImportAttribute |> Option.exists (fun attr -> HasFSharpAttribute g attr v.Attribs) } // Check that active patterns don't have free type variables in their result - match TryGetActivePatternInfo vref with - | Some _apinfo when _apinfo.ActiveTags.Length > 1 -> + match TryGetActivePatternInfo vref with + | Some _apinfo when _apinfo.ActiveTags.Length > 1 -> if doesActivePatternHaveFreeTypars g vref then errorR(Error(FSComp.SR.activePatternChoiceHasFreeTypars(v.LogicalName), v.Range)) | _ -> () - + match cenv.potentialUnboundUsesOfVals.TryFind v.Stamp with - | None -> () + | None -> () | Some m -> let nm = v.DisplayName errorR(Error(FSComp.SR.chkMemberUsedInInvalidWay(nm, nm, stringOfRange m), v.Range)) @@ -2000,93 +2000,93 @@ and CheckBinding cenv env alwaysCheckNoReraise ctxt (TBind(v, bindRhs, _) as bin v.ValReprInfo |> Option.iter (CheckValInfo cenv env) // Check accessibility - if (v.IsMemberOrModuleBinding || v.IsMember) && not v.IsIncrClassGeneratedMember then + if (v.IsMemberOrModuleBinding || v.IsMember) && not v.IsIncrClassGeneratedMember then let access = AdjustAccess (IsHiddenVal env.sigToImplRemapInfo v) (fun () -> v.DeclaringEntity.CompilationPath) v.Accessibility CheckTypeForAccess cenv env (fun () -> NicePrint.stringOfQualifiedValOrMember cenv.denv cenv.infoReader vref) access v.Range v.Type - - if cenv.reportErrors then + + if cenv.reportErrors then // Check top-level let-bound values match bind.Var.ValReprInfo with - | Some info when info.HasNoArgs -> + | Some info when info.HasNoArgs -> CheckForByrefLikeType cenv env v.Range v.Type (fun () -> errorR(Error(FSComp.SR.chkNoByrefAsTopValue(), v.Range))) | _ -> () match v.PublicPath with | None -> () | _ -> - if + if // Don't support implicit [] on generated members, except the implicit members // for 'let' bound functions in classes. (not v.IsCompilerGenerated || v.IsIncrClassGeneratedMember) && - + (// Check the attributes on any enclosing module - env.reflect || + env.reflect || // Check the attributes on the value HasFSharpAttribute g g.attrib_ReflectedDefinitionAttribute v.Attribs || - // Also check the enclosing type for members - for historical reasons, in the TAST member values + // Also check the enclosing type for members - for historical reasons, in the TAST member values // are stored in the entity that encloses the type, hence we will not have noticed the ReflectedDefinition // on the enclosing type at this point. - HasFSharpAttribute g g.attrib_ReflectedDefinitionAttribute v.DeclaringEntity.Attribs) then + HasFSharpAttribute g g.attrib_ReflectedDefinitionAttribute v.DeclaringEntity.Attribs) then if v.IsInstanceMember && v.MemberApparentEntity.IsStructOrEnumTycon then errorR(Error(FSComp.SR.chkNoReflectedDefinitionOnStructMember(), v.Range)) cenv.usesQuotations <- true - // If we've already recorded a definition then skip this - match v.ReflectedDefinition with + // If we've already recorded a definition then skip this + match v.ReflectedDefinition with | None -> v.SetValDefn bindRhs | Some _ -> () // Run the conversion process over the reflected definition to report any errors in the // front end rather than the back end. We currently re-run this during ilxgen.fs but there's - // no real need for that except that it helps us to bundle all reflected definitions up into + // no real need for that except that it helps us to bundle all reflected definitions up into // one blob for pickling to the binary format try - let qscope = QuotationTranslator.QuotationGenerationScope.Create (g, cenv.amap, cenv.viewCcu, cenv.tcVal, QuotationTranslator.IsReflectedDefinition.Yes) + let qscope = QuotationTranslator.QuotationGenerationScope.Create (g, cenv.amap, cenv.viewCcu, cenv.tcVal, QuotationTranslator.IsReflectedDefinition.Yes) let methName = v.CompiledName g.CompilerGlobalState QuotationTranslator.ConvReflectedDefinition qscope methName v bindRhs |> ignore - + let _, _, exprSplices = qscope.Close() - if not (isNil exprSplices) then + if not (isNil exprSplices) then errorR(Error(FSComp.SR.chkReflectedDefCantSplice(), v.Range)) - with - | QuotationTranslator.InvalidQuotedTerm e -> + with + | QuotationTranslator.InvalidQuotedTerm e -> errorR e - - match v.MemberInfo with - | Some memberInfo when not v.IsIncrClassGeneratedMember -> - match memberInfo.MemberFlags.MemberKind with + + match v.MemberInfo with + | Some memberInfo when not v.IsIncrClassGeneratedMember -> + match memberInfo.MemberFlags.MemberKind with | SynMemberKind.PropertySet | SynMemberKind.PropertyGet -> // These routines raise errors for ill-formed properties v |> ReturnTypeOfPropertyVal g |> ignore v |> ArgInfosOfPropertyVal g |> ignore | _ -> () - + | _ -> () - - let valReprInfo = match bind.Var.ValReprInfo with Some info -> info | _ -> ValReprInfo.emptyValData + + let valReprInfo = match bind.Var.ValReprInfo with Some info -> info | _ -> ValReprInfo.emptyValData // If the method has ResumableCode argument or return type it must be inline // unless warning is suppressed (user must know what they're doing). // // If the method has ResumableCode return attribute we check the body w.r.t. that - let env = + let env = if cenv.reportErrors && isReturnsResumableCodeTy g v.TauType then if not (g.langVersion.SupportsFeature LanguageFeature.ResumableStateMachines) then error(Error(FSComp.SR.tcResumableCodeNotSupported(), bind.Var.Range)) - if not v.MustInline then + if not v.MustInline then warning(Error(FSComp.SR.tcResumableCodeFunctionMustBeInline(), v.Range)) - if isReturnsResumableCodeTy g v.TauType then - { env with resumableCode = Resumable.ResumableExpr false } + if isReturnsResumableCodeTy g v.TauType then + { env with resumableCode = Resumable.ResumableExpr false } else env CheckLambdas isTop (Some v) cenv env v.MustInline valReprInfo alwaysCheckNoReraise bindRhs v.Range v.Type ctxt -and CheckBindings cenv env binds = +and CheckBindings cenv env binds = for bind in binds do CheckBinding cenv env false PermitByRefExpr.Yes bind |> ignore @@ -2094,76 +2094,76 @@ and CheckBindings cenv env binds = let CheckModuleBinding cenv env (TBind(v, e, _) as bind) = let g = cenv.g let isExplicitEntryPoint = HasFSharpAttribute g g.attrib_EntryPointAttribute v.Attribs - if isExplicitEntryPoint then + if isExplicitEntryPoint then cenv.entryPointGiven <- true let isLastCompiland = fst cenv.isLastCompiland - if not isLastCompiland && cenv.reportErrors then - errorR(Error(FSComp.SR.chkEntryPointUsage(), v.Range)) + if not isLastCompiland && cenv.reportErrors then + errorR(Error(FSComp.SR.chkEntryPointUsage(), v.Range)) // Analyze the r.h.s. for the "IsCompiledAsStaticPropertyWithoutField" condition if // Mutable values always have fields - not v.IsMutable && + not v.IsMutable && // Literals always have fields - not (HasFSharpAttribute g g.attrib_LiteralAttribute v.Attribs) && - not (HasFSharpAttributeOpt g g.attrib_ThreadStaticAttribute v.Attribs) && - not (HasFSharpAttributeOpt g g.attrib_ContextStaticAttribute v.Attribs) && + not (HasFSharpAttribute g g.attrib_LiteralAttribute v.Attribs) && + not (HasFSharpAttributeOpt g g.attrib_ThreadStaticAttribute v.Attribs) && + not (HasFSharpAttributeOpt g g.attrib_ContextStaticAttribute v.Attribs) && // Having a field makes the binding a static initialization trigger - IsSimpleSyntacticConstantExpr g e && + IsSimpleSyntacticConstantExpr g e && // Check the thing is actually compiled as a property IsCompiledAsStaticProperty g v || (g.compilingFSharpCore && v.Attribs |> List.exists(fun (Attrib(tc, _, _, _, _, _, _)) -> tc.CompiledName = "ValueAsStaticPropertyAttribute")) - then + then v.SetIsCompiledAsStaticPropertyWithoutField() // Check for value name clashes begin - try + try // Skip compiler generated values if v.IsCompilerGenerated then () else // Skip explicit implementations of interface methods if ValIsExplicitImpl g v then () else - - match v.TryDeclaringEntity with + + match v.TryDeclaringEntity with | ParentNone -> () // this case can happen after error recovery from earlier error - | Parent _ -> - let tcref = v.DeclaringEntity - let hasDefaultAugmentation = + | Parent _ -> + let tcref = v.DeclaringEntity + let hasDefaultAugmentation = tcref.IsUnionTycon && match TryFindFSharpAttribute g g.attrib_DefaultAugmentationAttribute tcref.Attribs with | Some(Attrib(_, _, [ AttribBoolArg b ], _, _, _, _)) -> b | _ -> true (* not hiddenRepr *) let kind = (if v.IsMember then "member" else "value") - let check skipValCheck nm = - if not skipValCheck && - v.IsModuleBinding && - tcref.ModuleOrNamespaceType.AllValsByLogicalName.ContainsKey nm && + let check skipValCheck nm = + if not skipValCheck && + v.IsModuleBinding && + tcref.ModuleOrNamespaceType.AllValsByLogicalName.ContainsKey nm && not (valEq tcref.ModuleOrNamespaceType.AllValsByLogicalName[nm] v) then - + error(Duplicate(kind, v.DisplayName, v.Range)) #if CASES_IN_NESTED_CLASS - if tcref.IsUnionTycon && nm = "Cases" then + if tcref.IsUnionTycon && nm = "Cases" then errorR(NameClash(nm, kind, v.DisplayName, v.Range, "generated type", "Cases", tcref.Range)) #endif - if tcref.IsUnionTycon then - match nm with + if tcref.IsUnionTycon then + match nm with | "Tag" -> errorR(NameClash(nm, kind, v.DisplayName, v.Range, FSComp.SR.typeInfoGeneratedProperty(), "Tag", tcref.Range)) | "Tags" -> errorR(NameClash(nm, kind, v.DisplayName, v.Range, FSComp.SR.typeInfoGeneratedType(), "Tags", tcref.Range)) | _ -> - if hasDefaultAugmentation then - match tcref.GetUnionCaseByName nm with + if hasDefaultAugmentation then + match tcref.GetUnionCaseByName nm with | Some uc -> error(NameClash(nm, kind, v.DisplayName, v.Range, FSComp.SR.typeInfoUnionCase(), uc.DisplayName, uc.Range)) | None -> () - let hasNoArgs = - match v.ValReprInfo with - | None -> false + let hasNoArgs = + match v.ValReprInfo with + | None -> false | Some arity -> List.sum arity.AritiesOfArgs - v.NumObjArgs <= 0 && arity.NumTypars = 0 - // In unions user cannot define properties that clash with generated ones - if tcref.UnionCasesArray.Length = 1 && hasNoArgs then + // In unions user cannot define properties that clash with generated ones + if tcref.UnionCasesArray.Length = 1 && hasNoArgs then let ucase1 = tcref.UnionCasesArray[0] for f in ucase1.RecdFieldsArray do if f.LogicalName = nm then @@ -2172,18 +2172,18 @@ let CheckModuleBinding cenv env (TBind(v, e, _) as bind) = // Default augmentation contains the nasty 'Case' etc. let prefix = "New" if nm.StartsWithOrdinal prefix then - match tcref.GetUnionCaseByName(nm[prefix.Length ..]) with + match tcref.GetUnionCaseByName(nm[prefix.Length ..]) with | Some uc -> error(NameClash(nm, kind, v.DisplayName, v.Range, FSComp.SR.chkUnionCaseCompiledForm(), uc.DisplayName, uc.Range)) | None -> () // Default augmentation contains the nasty 'Is' etc. let prefix = "Is" if nm.StartsWithOrdinal prefix && hasDefaultAugmentation then - match tcref.GetUnionCaseByName(nm[prefix.Length ..]) with + match tcref.GetUnionCaseByName(nm[prefix.Length ..]) with | Some uc -> error(NameClash(nm, kind, v.DisplayName, v.Range, FSComp.SR.chkUnionCaseDefaultAugmentation(), uc.DisplayName, uc.Range)) | None -> () - match tcref.GetFieldByName nm with + match tcref.GetFieldByName nm with | Some rf -> error(NameClash(nm, kind, v.DisplayName, v.Range, "field", rf.LogicalName, rf.Range)) | None -> () @@ -2192,27 +2192,27 @@ let CheckModuleBinding cenv env (TBind(v, e, _) as bind) = check false (v.CompiledName cenv.g.CompilerGlobalState) // Check if an F# extension member clashes - if v.IsExtensionMember then - tcref.ModuleOrNamespaceType.AllValsAndMembersByLogicalNameUncached[v.LogicalName] |> List.iter (fun v2 -> + if v.IsExtensionMember then + tcref.ModuleOrNamespaceType.AllValsAndMembersByLogicalNameUncached[v.LogicalName] |> List.iter (fun v2 -> if v2.IsExtensionMember && not (valEq v v2) && (v.CompiledName cenv.g.CompilerGlobalState) = (v2.CompiledName cenv.g.CompilerGlobalState) then let minfo1 = FSMeth(g, generalizedTyconRef g tcref, mkLocalValRef v, Some 0UL) let minfo2 = FSMeth(g, generalizedTyconRef g tcref, mkLocalValRef v2, Some 0UL) - if tyconRefEq g v.MemberApparentEntity v2.MemberApparentEntity && - MethInfosEquivByNameAndSig EraseAll true g cenv.amap v.Range minfo1 minfo2 then + if tyconRefEq g v.MemberApparentEntity v2.MemberApparentEntity && + MethInfosEquivByNameAndSig EraseAll true g cenv.amap v.Range minfo1 minfo2 then errorR(Duplicate(kind, v.DisplayName, v.Range))) // Properties get 'get_X', only if there are no args // Properties get 'get_X' - match v.ValReprInfo with + match v.ValReprInfo with | Some arity when arity.NumCurriedArgs = 0 && arity.NumTypars = 0 -> check false ("get_" + v.DisplayName) | _ -> () - match v.ValReprInfo with + match v.ValReprInfo with | Some arity when v.IsMutable && arity.NumCurriedArgs = 0 && arity.NumTypars = 0 -> check false ("set_" + v.DisplayName) | _ -> () - match TryChopPropertyName v.DisplayName with - | Some res -> check true res + match TryChopPropertyName v.DisplayName with + | Some res -> check true res | None -> () - with e -> errorRecovery e v.Range + with e -> errorRecovery e v.Range end CheckBinding cenv { env with returnScope = 1 } true PermitByRefExpr.Yes bind |> ignore @@ -2221,26 +2221,26 @@ let CheckModuleBinding cenv env (TBind(v, e, _) as bind) = // check tycons //-------------------------------------------------------------------------- -let CheckRecdField isUnion cenv env (tycon: Tycon) (rfield: RecdField) = +let CheckRecdField isUnion cenv env (tycon: Tycon) (rfield: RecdField) = let g = cenv.g let tcref = mkLocalTyconRef tycon let m = rfield.Range let fieldTy = stripTyEqns cenv.g rfield.FormalType - let isHidden = - IsHiddenTycon env.sigToImplRemapInfo tycon || - IsHiddenTyconRepr env.sigToImplRemapInfo tycon || + let isHidden = + IsHiddenTycon env.sigToImplRemapInfo tycon || + IsHiddenTyconRepr env.sigToImplRemapInfo tycon || (not isUnion && IsHiddenRecdField env.sigToImplRemapInfo (tcref.MakeNestedRecdFieldRef rfield)) let access = AdjustAccess isHidden (fun () -> tycon.CompilationPath) rfield.Accessibility CheckTypeForAccess cenv env (fun () -> rfield.LogicalName) access m fieldTy - if isByrefLikeTyconRef g m tcref then + if isByrefLikeTyconRef g m tcref then // Permit Span fields in IsByRefLike types CheckTypePermitSpanLike cenv env m fieldTy if cenv.reportErrors then CheckForByrefType cenv env fieldTy (fun () -> errorR(Error(FSComp.SR.chkCantStoreByrefValue(), tycon.Range))) else CheckTypeNoByrefs cenv env m fieldTy - if cenv.reportErrors then + if cenv.reportErrors then CheckForByrefLikeType cenv env m fieldTy (fun () -> errorR(Error(FSComp.SR.chkCantStoreByrefValue(), tycon.Range))) CheckAttribs cenv env rfield.PropertyAttribs @@ -2251,7 +2251,7 @@ let CheckEntityDefn cenv env (tycon: Entity) = if tycon.IsProvidedGeneratedTycon then () else #endif let g = cenv.g - let m = tycon.Range + let m = tycon.Range let tcref = mkLocalTyconRef tycon let ty = generalizedTyconRef g tcref @@ -2268,9 +2268,9 @@ let CheckEntityDefn cenv env (tycon: Entity) = if not tycon.IsTypeAbbrev then - let allVirtualMethsInParent = - match GetSuperTypeOfType g cenv.amap m ty with - | Some superTy -> + let allVirtualMethsInParent = + match GetSuperTypeOfType g cenv.amap m ty with + | Some superTy -> GetIntrinsicMethInfosOfType cenv.infoReader None AccessibleFromSomewhere AllowMultiIntfInstantiations.Yes IgnoreOverrides m superTy |> List.filter (fun minfo -> minfo.IsVirtual) | None -> [] @@ -2282,7 +2282,7 @@ let CheckEntityDefn cenv env (tycon: Entity) = then MethInfosEquivByNameAndSig eraseFlag true g cenv.amap m minfo minfo2 else MethInfosEquivByNameAndPartialSig eraseFlag true g cenv.amap m minfo minfo2 (* partial ignores return type *) - let immediateMeths = + let immediateMeths = [ for v in tycon.AllGeneratedValues do yield FSMeth (g, ty, v, None) yield! GetImmediateIntrinsicMethInfosOfType (None, AccessibleFromSomewhere) g cenv.amap m ty ] @@ -2292,24 +2292,24 @@ let CheckEntityDefn cenv env (tycon: Entity) = match hash.TryGetValue nm with | true, h -> h | _ -> [] - + // precompute methods grouped by MethInfo.LogicalName - let hashOfImmediateMeths = + let hashOfImmediateMeths = let h = Dictionary() for minfo in immediateMeths do match h.TryGetValue minfo.LogicalName with - | true, methods -> + | true, methods -> h[minfo.LogicalName] <- minfo :: methods - | false, _ -> + | false, _ -> h[minfo.LogicalName] <- [minfo] h - let getOtherMethods (minfo : MethInfo) = + let getOtherMethods (minfo : MethInfo) = [ //we have added all methods to the dictionary on the previous step let methods = hashOfImmediateMeths[minfo.LogicalName] for m in methods do // use referential identity to filter out 'minfo' method - if not(Object.ReferenceEquals(m, minfo)) then + if not(Object.ReferenceEquals(m, minfo)) then yield m ] @@ -2319,34 +2319,34 @@ let CheckEntityDefn cenv env (tycon: Entity) = let m = (match minfo.ArbitraryValRef with None -> m | Some vref -> vref.DefinitionRange) let others = getOtherMethods minfo // abstract/default pairs of duplicate methods are OK - let IsAbstractDefaultPair (x: MethInfo) (y: MethInfo) = + let IsAbstractDefaultPair (x: MethInfo) (y: MethInfo) = x.IsDispatchSlot && y.IsDefiniteFSharpOverride - let IsAbstractDefaultPair2 (minfo: MethInfo) (minfo2: MethInfo) = + let IsAbstractDefaultPair2 (minfo: MethInfo) (minfo2: MethInfo) = IsAbstractDefaultPair minfo minfo2 || IsAbstractDefaultPair minfo2 minfo let checkForDup erasureFlag (minfo2: MethInfo) = not (IsAbstractDefaultPair2 minfo minfo2) && (minfo.IsInstance = minfo2.IsInstance) && MethInfosEquivWrtUniqueness erasureFlag m minfo minfo2 - if others |> List.exists (checkForDup EraseAll) then - if others |> List.exists (checkForDup EraseNone) then + if others |> List.exists (checkForDup EraseAll) then + if others |> List.exists (checkForDup EraseNone) then errorR(Error(FSComp.SR.chkDuplicateMethod(nm, NicePrint.minimalStringOfType cenv.denv ty), m)) else errorR(Error(FSComp.SR.chkDuplicateMethodWithSuffix(nm, NicePrint.minimalStringOfType cenv.denv ty), m)) let numCurriedArgSets = minfo.NumArgs.Length - if numCurriedArgSets > 1 && others |> List.exists (fun minfo2 -> not (IsAbstractDefaultPair2 minfo minfo2)) then + if numCurriedArgSets > 1 && others |> List.exists (fun minfo2 -> not (IsAbstractDefaultPair2 minfo minfo2)) then errorR(Error(FSComp.SR.chkDuplicateMethodCurried(nm, NicePrint.minimalStringOfType cenv.denv ty), m)) - if numCurriedArgSets > 1 && - (minfo.GetParamDatas(cenv.amap, m, minfo.FormalMethodInst) - |> List.existsSquared (fun (ParamData(isParamArrayArg, _isInArg, isOutArg, optArgInfo, callerInfo, _, reflArgInfo, ty), _) -> - isParamArrayArg || isOutArg || reflArgInfo.AutoQuote || optArgInfo.IsOptional || callerInfo <> NoCallerInfo || isByrefLikeTy g m ty)) then + if numCurriedArgSets > 1 && + (minfo.GetParamDatas(cenv.amap, m, minfo.FormalMethodInst) + |> List.existsSquared (fun (ParamData(isParamArrayArg, _isInArg, isOutArg, optArgInfo, callerInfo, _, reflArgInfo, ty), _) -> + isParamArrayArg || isOutArg || reflArgInfo.AutoQuote || optArgInfo.IsOptional || callerInfo <> NoCallerInfo || isByrefLikeTy g m ty)) then errorR(Error(FSComp.SR.chkCurriedMethodsCantHaveOutParams(), m)) if numCurriedArgSets = 1 then - minfo.GetParamDatas(cenv.amap, m, minfo.FormalMethodInst) + minfo.GetParamDatas(cenv.amap, m, minfo.FormalMethodInst) |> List.iterSquared (fun (ParamData(_, isInArg, _, optArgInfo, callerInfo, _, _, ty), _) -> ignore isInArg match (optArgInfo, callerInfo) with @@ -2370,46 +2370,46 @@ let CheckEntityDefn cenv env (tycon: Entity) = | CalleeSide, CallerMemberName -> if not ((isOptionTy g ty) && (typeEquiv g g.string_ty (destOptionTy g ty))) then errorR(Error(FSComp.SR.tcCallerInfoWrongType(callerInfo.ToString(), "string", NicePrint.minimalStringOfType cenv.denv (destOptionTy g ty)), m))) - + for pinfo in immediateProps do let nm = pinfo.PropertyName - let m = - match pinfo.ArbitraryValRef with - | None -> m + let m = + match pinfo.ArbitraryValRef with + | None -> m | Some vref -> vref.DefinitionRange - if hashOfImmediateMeths.ContainsKey nm then + if hashOfImmediateMeths.ContainsKey nm then errorR(Error(FSComp.SR.chkPropertySameNameMethod(nm, NicePrint.minimalStringOfType cenv.denv ty), m)) let others = getHash hashOfImmediateProps nm - if pinfo.HasGetter && pinfo.HasSetter && pinfo.GetterMethod.IsVirtual <> pinfo.SetterMethod.IsVirtual then + if pinfo.HasGetter && pinfo.HasSetter && pinfo.GetterMethod.IsVirtual <> pinfo.SetterMethod.IsVirtual then errorR(Error(FSComp.SR.chkGetterSetterDoNotMatchAbstract(nm, NicePrint.minimalStringOfType cenv.denv ty), m)) - let checkForDup erasureFlag pinfo2 = + let checkForDup erasureFlag pinfo2 = // abstract/default pairs of duplicate properties are OK - let IsAbstractDefaultPair (x: PropInfo) (y: PropInfo) = + let IsAbstractDefaultPair (x: PropInfo) (y: PropInfo) = x.IsDispatchSlot && y.IsDefiniteFSharpOverride not (IsAbstractDefaultPair pinfo pinfo2 || IsAbstractDefaultPair pinfo2 pinfo) && PropInfosEquivByNameAndPartialSig erasureFlag g cenv.amap m pinfo pinfo2 (* partial ignores return type *) if others |> List.exists (checkForDup EraseAll) then - if others |> List.exists (checkForDup EraseNone) then + if others |> List.exists (checkForDup EraseNone) then errorR(Error(FSComp.SR.chkDuplicateProperty(nm, NicePrint.minimalStringOfType cenv.denv ty), m)) else errorR(Error(FSComp.SR.chkDuplicatePropertyWithSuffix(nm, NicePrint.minimalStringOfType cenv.denv ty), m)) // Check to see if one is an indexer and one is not - if ( (pinfo.HasGetter && - pinfo.HasSetter && + if ( (pinfo.HasGetter && + pinfo.HasSetter && let setterArgs = pinfo.DropGetter().GetParamTypes(cenv.amap, m) let getterArgs = pinfo.DropSetter().GetParamTypes(cenv.amap, m) setterArgs.Length <> getterArgs.Length) - || + || (let nargs = pinfo.GetParamTypes(cenv.amap, m).Length - others |> List.exists (fun pinfo2 -> (isNil(pinfo2.GetParamTypes(cenv.amap, m))) <> (nargs = 0)))) then - + others |> List.exists (fun pinfo2 -> (isNil(pinfo2.GetParamTypes(cenv.amap, m))) <> (nargs = 0)))) then + errorR(Error(FSComp.SR.chkPropertySameNameIndexer(nm, NicePrint.minimalStringOfType cenv.denv ty), m)) // Check to see if the signatures of the both getter and the setter imply the same property type @@ -2421,7 +2421,7 @@ let CheckEntityDefn cenv env (tycon: Entity) = errorR(Error(FSComp.SR.chkGetterAndSetterHaveSamePropertyType(pinfo.PropertyName, NicePrint.minimalStringOfType cenv.denv ty1, NicePrint.minimalStringOfType cenv.denv ty2), m)) hashOfImmediateProps[nm] <- pinfo :: others - + if not (isInterfaceTy g ty) then let hashOfAllVirtualMethsInParent = Dictionary() for minfo in allVirtualMethsInParent do @@ -2432,68 +2432,68 @@ let CheckEntityDefn cenv env (tycon: Entity) = if not minfo.IsDispatchSlot && not minfo.IsVirtual && minfo.IsInstance then let nm = minfo.LogicalName let m = (match minfo.ArbitraryValRef with None -> m | Some vref -> vref.DefinitionRange) - let parentMethsOfSameName = getHash hashOfAllVirtualMethsInParent nm + let parentMethsOfSameName = getHash hashOfAllVirtualMethsInParent nm let checkForDup erasureFlag (minfo2: MethInfo) = minfo2.IsDispatchSlot && MethInfosEquivByNameAndSig erasureFlag true g cenv.amap m minfo minfo2 match parentMethsOfSameName |> List.tryFind (checkForDup EraseAll) with | None -> () | Some minfo -> let mtext = NicePrint.stringOfMethInfo cenv.infoReader m cenv.denv minfo - if parentMethsOfSameName |> List.exists (checkForDup EraseNone) then + if parentMethsOfSameName |> List.exists (checkForDup EraseNone) then warning(Error(FSComp.SR.tcNewMemberHidesAbstractMember mtext, m)) else warning(Error(FSComp.SR.tcNewMemberHidesAbstractMemberWithSuffix mtext, m)) - + if minfo.IsDispatchSlot then let nm = minfo.LogicalName let m = (match minfo.ArbitraryValRef with None -> m | Some vref -> vref.DefinitionRange) - let parentMethsOfSameName = getHash hashOfAllVirtualMethsInParent nm + let parentMethsOfSameName = getHash hashOfAllVirtualMethsInParent nm let checkForDup erasureFlag minfo2 = MethInfosEquivByNameAndSig erasureFlag true g cenv.amap m minfo minfo2 - + if parentMethsOfSameName |> List.exists (checkForDup EraseAll) then - if parentMethsOfSameName |> List.exists (checkForDup EraseNone) then + if parentMethsOfSameName |> List.exists (checkForDup EraseNone) then errorR(Error(FSComp.SR.chkDuplicateMethodInheritedType nm, m)) else errorR(Error(FSComp.SR.chkDuplicateMethodInheritedTypeWithSuffix nm, m)) - if TyconRefHasAttributeByName m tname_IsByRefLikeAttribute tcref && not tycon.IsStructOrEnumTycon then + if TyconRefHasAttributeByName m tname_IsByRefLikeAttribute tcref && not tycon.IsStructOrEnumTycon then errorR(Error(FSComp.SR.tcByRefLikeNotStruct(), tycon.Range)) - if TyconRefHasAttribute g m g.attrib_IsReadOnlyAttribute tcref && not tycon.IsStructOrEnumTycon then + if TyconRefHasAttribute g m g.attrib_IsReadOnlyAttribute tcref && not tycon.IsStructOrEnumTycon then errorR(Error(FSComp.SR.tcIsReadOnlyNotStruct(), tycon.Range)) - // Considers TFSharpObjectRepr, TFSharpRecdRepr and TFSharpUnionRepr. + // Considers TFSharpTyconRepr and TFSharpUnionRepr. // [Review] are all cases covered: TILObjectRepr, TAsmRepr. [Yes - these are FSharp.Core.dll only] tycon.AllFieldsArray |> Array.iter (CheckRecdField false cenv env tycon) - + // Abstract slots can have byref arguments and returns - for vref in abstractSlotValsOfTycons [tycon] do - match vref.ValReprInfo with - | Some valReprInfo -> + for vref in abstractSlotValsOfTycons [tycon] do + match vref.ValReprInfo with + | Some valReprInfo -> let tps, argTysl, retTy, _ = GetValReprTypeInFSharpForm g valReprInfo vref.Type m let env = BindTypars g env tps - for argTys in argTysl do - for argTy, _ in argTys do + for argTys in argTysl do + for argTy, _ in argTys do CheckTypeNoInnerByrefs cenv env vref.Range argTy CheckTypeNoInnerByrefs cenv env vref.Range retTy | None -> () // Supported interface may not have byrefs - tycon.ImmediateInterfaceTypesOfFSharpTycon |> List.iter (CheckTypeNoByrefs cenv env m) + tycon.ImmediateInterfaceTypesOfFSharpTycon |> List.iter (CheckTypeNoByrefs cenv env m) - superOfTycon g tycon |> CheckTypeNoByrefs cenv env m + superOfTycon g tycon |> CheckTypeNoByrefs cenv env m - if tycon.IsUnionTycon then + if tycon.IsUnionTycon then for ucase in tycon.UnionCasesArray do - CheckAttribs cenv env ucase.Attribs + CheckAttribs cenv env ucase.Attribs ucase.RecdFieldsArray |> Array.iter (CheckRecdField true cenv env tycon) // Access checks let access = AdjustAccess (IsHiddenTycon env.sigToImplRemapInfo tycon) (fun () -> tycon.CompilationPath) tycon.Accessibility - let visitType ty = CheckTypeForAccess cenv env (fun () -> tycon.DisplayNameWithStaticParametersAndUnderscoreTypars) access tycon.Range ty + let visitType ty = CheckTypeForAccess cenv env (fun () -> tycon.DisplayNameWithStaticParametersAndUnderscoreTypars) access tycon.Range ty - abstractSlotValsOfTycons [tycon] |> List.iter (typeOfVal >> visitType) + abstractSlotValsOfTycons [tycon] |> List.iter (typeOfVal >> visitType) superOfTycon g tycon |> visitType @@ -2501,123 +2501,123 @@ let CheckEntityDefn cenv env (tycon: Entity) = if tycon.IsFSharpDelegateTycon then match tycon.TypeReprInfo with - | TFSharpObjectRepr r -> + | TFSharpTyconRepr r -> match r.fsobjmodel_kind with | TFSharpDelegate ss -> - //ss.ClassTypars - //ss.MethodTypars + //ss.ClassTypars + //ss.MethodTypars ss.FormalReturnType |> Option.iter visitType ss.FormalParams |> List.iterSquared (fun (TSlotParam(_, ty, _, _, _, _)) -> visitType ty) | _ -> () | _ -> () - let interfaces = + let interfaces = AllSuperTypesOfType g cenv.amap tycon.Range AllowMultiIntfInstantiations.Yes ty |> List.filter (isInterfaceTy g) - - if tycon.IsFSharpInterfaceTycon then + + if tycon.IsFSharpInterfaceTycon then List.iter visitType interfaces // Check inherited interface is as accessible if not (isRecdOrStructTyconRefAssumedImmutable g tcref) && isRecdOrStructTyconRefReadOnly g m tcref then errorR(Error(FSComp.SR.readOnlyAttributeOnStructWithMutableField(), m)) - - if cenv.reportErrors then - if not tycon.IsTypeAbbrev then + + if cenv.reportErrors then + if not tycon.IsTypeAbbrev then let interfaces = GetImmediateInterfacesOfType SkipUnrefInterfaces.Yes g cenv.amap m ty |> List.collect (AllSuperTypesOfType g cenv.amap m AllowMultiIntfInstantiations.Yes) |> List.filter (isInterfaceTy g) CheckMultipleInterfaceInstantiations cenv ty interfaces false m - + // Check fields. We check these late because we have to have first checked that the structs are // free of cycles - if tycon.IsStructOrEnumTycon then + if tycon.IsStructOrEnumTycon then for f in tycon.AllInstanceFieldsAsList do - // Check if it's marked unsafe + // Check if it's marked unsafe let zeroInitUnsafe = TryFindFSharpBoolAttribute g g.attrib_DefaultValueAttribute f.FieldAttribs if zeroInitUnsafe = Some true then - if not (TypeHasDefaultValue g m ty) then + if not (TypeHasDefaultValue g m ty) then errorR(Error(FSComp.SR.chkValueWithDefaultValueMustHaveDefaultValue(), m)) // Check type abbreviations - match tycon.TypeAbbrev with + match tycon.TypeAbbrev with | None -> () - | Some ty -> + | Some ty -> // Library-defined outref<'T> and inref<'T> contain byrefs on the r.h.s. - if not g.compilingFSharpCore then + if not g.compilingFSharpCore then CheckForByrefType cenv env ty (fun () -> errorR(Error(FSComp.SR.chkNoByrefInTypeAbbrev(), tycon.Range))) -let CheckEntityDefns cenv env tycons = - tycons |> List.iter (CheckEntityDefn cenv env) +let CheckEntityDefns cenv env tycons = + tycons |> List.iter (CheckEntityDefn cenv env) //-------------------------------------------------------------------------- // check modules //-------------------------------------------------------------------------- -let rec CheckDefnsInModule cenv env mdefs = +let rec CheckDefnsInModule cenv env mdefs = for mdef in mdefs do CheckDefnInModule cenv env mdef and CheckNothingAfterEntryPoint cenv m = - if cenv.entryPointGiven && cenv.reportErrors then - errorR(Error(FSComp.SR.chkEntryPointUsage(), m)) + if cenv.entryPointGiven && cenv.reportErrors then + errorR(Error(FSComp.SR.chkEntryPointUsage(), m)) -and CheckDefnInModule cenv env mdef = - match mdef with - | TMDefRec(isRec, _opens, tycons, mspecs, m) -> +and CheckDefnInModule cenv env mdef = + match mdef with + | TMDefRec(isRec, _opens, tycons, mspecs, m) -> CheckNothingAfterEntryPoint cenv m if isRec then BindVals cenv env (allValsOfModDef mdef |> Seq.toList) CheckEntityDefns cenv env tycons List.iter (CheckModuleSpec cenv env) mspecs - | TMDefLet(bind, m) -> + | TMDefLet(bind, m) -> CheckNothingAfterEntryPoint cenv m - CheckModuleBinding cenv env bind + CheckModuleBinding cenv env bind BindVal cenv env bind.Var | TMDefOpens _ -> () - | TMDefDo(e, m) -> + | TMDefDo(e, m) -> CheckNothingAfterEntryPoint cenv m CheckNoReraise cenv None e CheckExprNoByrefs cenv env e - | TMDefs defs -> CheckDefnsInModule cenv env defs + | TMDefs defs -> CheckDefnsInModule cenv env defs and CheckModuleSpec cenv env mbind = - match mbind with + match mbind with | ModuleOrNamespaceBinding.Binding bind -> BindVals cenv env (valsOfBinds [bind]) CheckModuleBinding cenv env bind | ModuleOrNamespaceBinding.Module (mspec, rhs) -> CheckEntityDefn cenv env mspec let env = { env with reflect = env.reflect || HasFSharpAttribute cenv.g cenv.g.attrib_ReflectedDefinitionAttribute mspec.Attribs } - CheckDefnInModule cenv env rhs + CheckDefnInModule cenv env rhs -let CheckImplFileContents cenv env implFileTy implFileContents = +let CheckImplFileContents cenv env implFileTy implFileContents = let rpi, mhi = ComputeRemappingFromImplementationToSignature cenv.g implFileContents implFileTy let env = { env with sigToImplRemapInfo = (mkRepackageRemapping rpi, mhi) :: env.sigToImplRemapInfo } UpdatePrettyTyparNames.updateModuleOrNamespaceType implFileTy CheckDefnInModule cenv env implFileContents - + let CheckImplFile (g, amap, reportErrors, infoReader, internalsVisibleToPaths, viewCcu, tcValF, denv, implFileTy, implFileContents, extraAttribs, isLastCompiland: bool*bool, isInternalTestSpanStackReferring) = - let cenv = - { g = g - reportErrors = reportErrors - boundVals = Dictionary<_, _>(100, HashIdentity.Structural) - limitVals = Dictionary<_, _>(100, HashIdentity.Structural) + let cenv = + { g = g + reportErrors = reportErrors + boundVals = Dictionary<_, _>(100, HashIdentity.Structural) + limitVals = Dictionary<_, _>(100, HashIdentity.Structural) stackGuard = StackGuard(PostInferenceChecksStackGuardDepth, "CheckImplFile") - potentialUnboundUsesOfVals = Map.empty + potentialUnboundUsesOfVals = Map.empty anonRecdTypes = StampMap.Empty - usesQuotations = false - infoReader = infoReader + usesQuotations = false + infoReader = infoReader internalsVisibleToPaths = internalsVisibleToPaths - amap = amap - denv = denv + amap = amap + denv = denv viewCcu = viewCcu isLastCompiland = isLastCompiland isInternalTestSpanStackReferring = isInternalTestSpanStackReferring tcVal = tcValF entryPointGiven = false} - + // Certain type equality checks go faster if these TyconRefs are pre-resolved. // This is because pre-resolving allows tycon equality to be determined by pointer equality on the entities. // See primEntityRefEq. @@ -2629,14 +2629,14 @@ let CheckImplFile (g, amap, reportErrors, infoReader, internalsVisibleToPaths, v resolve g.system_ArgIterator_tcref resolve g.system_RuntimeArgumentHandle_tcref - let env = + let env = { sigToImplRemapInfo=[] quote=false boundTyparNames=[] argVals = ValMap.Empty boundTypars= TyparMap.Empty reflect=false - external=false + external=false returnScope = 0 isInAppExpr = false resumableCode = Resumable.None } @@ -2644,7 +2644,7 @@ let CheckImplFile (g, amap, reportErrors, infoReader, internalsVisibleToPaths, v CheckImplFileContents cenv env implFileTy implFileContents CheckAttribs cenv env extraAttribs - if cenv.usesQuotations && not (QuotationTranslator.QuotationGenerationScope.ComputeQuotationFormat(g).SupportsDeserializeEx) then + if cenv.usesQuotations && not (QuotationTranslator.QuotationGenerationScope.ComputeQuotationFormat(g).SupportsDeserializeEx) then viewCcu.UsesFSharp20PlusQuotations <- true cenv.entryPointGiven, cenv.anonRecdTypes diff --git a/src/fcs-fable/src/Compiler/Checking/PostInferenceChecks.fsi b/src/fcs-fable/src/Compiler/Checking/PostInferenceChecks.fsi index 6e289af71c..5ed4bb61fe 100644 --- a/src/fcs-fable/src/Compiler/Checking/PostInferenceChecks.fsi +++ b/src/fcs-fable/src/Compiler/Checking/PostInferenceChecks.fsi @@ -26,3 +26,43 @@ val CheckImplFile: (bool * bool) * isInternalTestSpanStackReferring: bool -> bool * StampMap + +/// It's unlikely you want to use this module except within +/// PostInferenceChecks. It's exposed to allow testing. +module Limit = + [] + type LimitFlags = + | None = 0b00000 + | ByRef = 0b00001 + | ByRefOfSpanLike = 0b00011 + | ByRefOfStackReferringSpanLike = 0b00101 + | SpanLike = 0b01000 + | StackReferringSpanLike = 0b10000 + + /// A "limit" here is some combination of restrictions on a Val. + [] + type Limit = + { + /// The scope of this Limit, i.e. "to which scope can a Val safely escape?". + /// Some values are not allowed to escape their scope. + /// For example, a top-level function is allowed to return a byref type, but inner functions are not. + /// This `scope` field is the information that lets us track that. + /// (Recall that in general scopes are counted starting from 0 indicating the top-level scope, and + /// increasing by 1 essentially for every nested `let`-binding, method, or module.) + /// + /// Some specific values which are often used: + /// * the value 0 is used in NoLimit and other situations which don't limit where the Val can escape; + /// * the value 1 is a "top-level local scope", allowing us to express the restriction "this cannot appear + /// at the top level" (for example, `let x = &y` cannot appear at the top level). + scope: int + /// The combinations of limits which apply. + flags: LimitFlags + } + + /// Indicates that no limit applies to some Val. It can appear at the top level or within a `let`-binding, + /// and the Val does not have any byref- or span-related restrictions. + val NoLimit: Limit + + /// Construct a Limit which expresses "this Val must obey the first Limit and the second Limit simultaneously". + //// If none of the limits are limited by a by-ref or a stack referring span-like, the scope will be 0. + val CombineTwoLimits: Limit -> Limit -> Limit diff --git a/src/fcs-fable/src/Compiler/Checking/SignatureConformance.fs b/src/fcs-fable/src/Compiler/Checking/SignatureConformance.fs index 2aa8bf924d..27cbe35a13 100644 --- a/src/fcs-fable/src/Compiler/Checking/SignatureConformance.fs +++ b/src/fcs-fable/src/Compiler/Checking/SignatureConformance.fs @@ -7,12 +7,11 @@ module internal FSharp.Compiler.SignatureConformance open System.Text open Internal.Utilities.Collections -open Internal.Utilities.Library +open Internal.Utilities.Library open Internal.Utilities.Library.Extras -open FSharp.Compiler +open FSharp.Compiler open FSharp.Compiler.DiagnosticsLogger open FSharp.Compiler.Features -open FSharp.Compiler.Infos open FSharp.Compiler.InfoReader open FSharp.Compiler.Syntax open FSharp.Compiler.SyntaxTreeOps @@ -34,10 +33,12 @@ exception UnionCaseNotContained of DisplayEnv * InfoReader * Tycon * UnionCase * exception FSharpExceptionNotContained of DisplayEnv * InfoReader * Tycon * Tycon * (string * string -> string) -exception FieldNotContained of DisplayEnv * InfoReader * Tycon * RecdField * RecdField * (string * string -> string) +exception FieldNotContained of DisplayEnv * InfoReader * Tycon * Tycon * RecdField * RecdField * (string * string -> string) exception InterfaceNotRevealed of DisplayEnv * TType * range +exception ArgumentsInSigAndImplMismatch of sigArg: Ident * implArg: Ident + // Use a type to capture the constant, common parameters type Checker(g, amap, denv, remapInfo: SignatureRepackageInfo, checkingSig) = @@ -182,7 +183,7 @@ type Checker(g, amap, denv, remapInfo: SignatureRepackageInfo, checkingSig) = false else - checkExnInfo (fun f -> FSharpExceptionNotContained(denv, infoReader, implTycon, sigTycon, f)) aenv infoReader implTycon implTycon.ExceptionInfo sigTycon.ExceptionInfo && + checkExnInfo (fun f -> FSharpExceptionNotContained(denv, infoReader, implTycon, sigTycon, f)) aenv infoReader implTycon sigTycon implTycon.ExceptionInfo sigTycon.ExceptionInfo && let implTypars = implTycon.Typars m let sigTypars = sigTycon.Typars m @@ -263,10 +264,10 @@ type Checker(g, amap, denv, remapInfo: SignatureRepackageInfo, checkingSig) = else checkTypars m aenv implTypars sigTypars && - checkTypeRepr m aenv infoReader implTycon sigTycon.TypeReprInfo && + checkTypeRepr m aenv infoReader implTycon sigTycon && checkTypeAbbrev m aenv implTycon sigTycon && checkAttribs aenv implTycon.Attribs sigTycon.Attribs (fun attribs -> implTycon.entity_attribs <- attribs) && - checkModuleOrNamespaceContents implTycon.Range aenv infoReader (mkLocalEntityRef implTycon) sigTycon.ModuleOrNamespaceType + checkModuleOrNamespaceContents implTycon.Range aenv infoReader (mkLocalEntityRef implTycon) sigTycon.ModuleOrNamespaceType and checkValInfo aenv err (implVal : Val) (sigVal : Val) = let id = implVal.Id @@ -296,8 +297,8 @@ type Checker(g, amap, denv, remapInfo: SignatureRepackageInfo, checkingSig) = (implArgInfos, sigArgInfos) ||> List.forall2 (List.forall2 (fun implArgInfo sigArgInfo -> checkAttribs aenv implArgInfo.Attribs sigArgInfo.Attribs (fun attribs -> match implArgInfo.Name, sigArgInfo.Name with - | Some iname, Some sname when sname.idText <> iname.idText -> - warning(Error (FSComp.SR.ArgumentsInSigAndImplMismatch(sname.idText, iname.idText), iname.idRange)) + | Some iname, Some sname when sname.idText <> iname.idText -> + warning(ArgumentsInSigAndImplMismatch(sname, iname)) | _ -> () let sigHasInlineIfLambda = HasFSharpAttribute g g.attrib_InlineIfLambdaAttribute sigArgInfo.Attribs @@ -353,39 +354,39 @@ type Checker(g, amap, denv, remapInfo: SignatureRepackageInfo, checkingSig) = else checkAttribs aenv implVal.Attribs sigVal.Attribs (fun attribs -> implVal.SetAttribs attribs) - and checkExnInfo err aenv (infoReader: InfoReader) (enclosingTycon: Tycon) implTypeRepr sigTypeRepr = - match implTypeRepr, sigTypeRepr with - | TExnAsmRepr _, TExnFresh _ -> + and checkExnInfo err aenv (infoReader: InfoReader) (enclosingImplTycon: Tycon) (enclosingSigTycon: Tycon) implTypeRepr sigTypeRepr = + match implTypeRepr, sigTypeRepr with + | TExnAsmRepr _, TExnFresh _ -> (errorR (err FSComp.SR.ExceptionDefsNotCompatibleHiddenBySignature); false) - | TExnAsmRepr tcr1, TExnAsmRepr tcr2 -> + | TExnAsmRepr tcr1, TExnAsmRepr tcr2 -> if tcr1 <> tcr2 then (errorR (err FSComp.SR.ExceptionDefsNotCompatibleDotNetRepresentationsDiffer); false) else true - | TExnAbbrevRepr _, TExnFresh _ -> + | TExnAbbrevRepr _, TExnFresh _ -> (errorR (err FSComp.SR.ExceptionDefsNotCompatibleAbbreviationHiddenBySignature); false) - | TExnAbbrevRepr ecr1, TExnAbbrevRepr ecr2 -> - if not (tcrefAEquiv g aenv ecr1 ecr2) then + | TExnAbbrevRepr ecr1, TExnAbbrevRepr ecr2 -> + if not (tcrefAEquiv g aenv ecr1 ecr2) then (errorR (err FSComp.SR.ExceptionDefsNotCompatibleSignaturesDiffer); false) else true - | TExnFresh r1, TExnFresh r2-> checkRecordFieldsForExn g denv err aenv infoReader enclosingTycon r1 r2 + | TExnFresh r1, TExnFresh r2-> checkRecordFieldsForExn g denv err aenv infoReader enclosingImplTycon enclosingSigTycon r1 r2 | TExnNone, TExnNone -> true | _ -> (errorR (err FSComp.SR.ExceptionDefsNotCompatibleExceptionDeclarationsDiffer); false) - and checkUnionCase aenv infoReader (enclosingTycon: Tycon) (implUnionCase: UnionCase) (sigUnionCase: UnionCase) = + and checkUnionCase aenv infoReader (enclosingImplTycon: Tycon) (enclosingSigTycon: Tycon) (implUnionCase: UnionCase) (sigUnionCase: UnionCase) = implUnionCase.SetOtherXmlDoc(sigUnionCase.XmlDoc) - - let err f = errorR(UnionCaseNotContained(denv, infoReader, enclosingTycon, implUnionCase, sigUnionCase, f));false + + let err f = errorR(UnionCaseNotContained(denv, infoReader, enclosingImplTycon, implUnionCase, sigUnionCase, f));false sigUnionCase.OtherRangeOpt <- Some (implUnionCase.Range, true) implUnionCase.OtherRangeOpt <- Some (sigUnionCase.Range, false) if implUnionCase.Id.idText <> sigUnionCase.Id.idText then err FSComp.SR.ModuleContainsConstructorButNamesDiffer elif implUnionCase.RecdFieldsArray.Length <> sigUnionCase.RecdFieldsArray.Length then err FSComp.SR.ModuleContainsConstructorButDataFieldsDiffer - elif not (Array.forall2 (checkField aenv infoReader enclosingTycon) implUnionCase.RecdFieldsArray sigUnionCase.RecdFieldsArray) then err FSComp.SR.ModuleContainsConstructorButTypesOfFieldsDiffer + elif not (Array.forall2 (checkField aenv infoReader enclosingImplTycon enclosingSigTycon) implUnionCase.RecdFieldsArray sigUnionCase.RecdFieldsArray) then err FSComp.SR.ModuleContainsConstructorButTypesOfFieldsDiffer elif isLessAccessible implUnionCase.Accessibility sigUnionCase.Accessibility then err FSComp.SR.ModuleContainsConstructorButAccessibilityDiffers else checkAttribs aenv implUnionCase.Attribs sigUnionCase.Attribs (fun attribs -> implUnionCase.Attribs <- attribs) - and checkField aenv infoReader (enclosingTycon: Tycon) implField sigField = + and checkField aenv infoReader (enclosingImplTycon: Tycon) (enclosingSigTycon: Tycon) implField sigField = implField.SetOtherXmlDoc(sigField.XmlDoc) - - let err f = errorR(FieldNotContained(denv, infoReader, enclosingTycon, implField, sigField, f)); false + + let err f = errorR(FieldNotContained(denv, infoReader, enclosingImplTycon, enclosingSigTycon, implField, sigField, f)); false sigField.rfield_other_range <- Some (implField.Range, true) implField.rfield_other_range <- Some (sigField.Range, false) if implField.rfield_id.idText <> sigField.rfield_id.idText then err FSComp.SR.FieldNotContainedNamesDiffer @@ -433,34 +434,34 @@ type Checker(g, amap, denv, remapInfo: SignatureRepackageInfo, checkingSig) = | _ -> false - and checkRecordFields m aenv infoReader (implTycon: Tycon) (implFields: TyconRecdFields) (sigFields: TyconRecdFields) = + and checkRecordFields m aenv infoReader (implTycon: Tycon) (sigTycon: Tycon) (implFields: TyconRecdFields) (sigFields: TyconRecdFields) = let implFields = implFields.TrueFieldsAsList let sigFields = sigFields.TrueFieldsAsList let m1 = implFields |> NameMap.ofKeyedList (fun rfld -> rfld.LogicalName) let m2 = sigFields |> NameMap.ofKeyedList (fun rfld -> rfld.LogicalName) NameMap.suball2 (fun fieldName _ -> errorR(Error (FSComp.SR.DefinitionsInSigAndImplNotCompatibleFieldRequiredButNotSpecified(implTycon.TypeOrMeasureKind.ToString(), implTycon.DisplayName, fieldName), m)); false) - (checkField aenv infoReader implTycon) m1 m2 && + (checkField aenv infoReader implTycon sigTycon) m1 m2 && NameMap.suball2 (fun fieldName _ -> errorR(Error (FSComp.SR.DefinitionsInSigAndImplNotCompatibleFieldWasPresent(implTycon.TypeOrMeasureKind.ToString(), implTycon.DisplayName, fieldName), m)); false) - (fun x y -> checkField aenv infoReader implTycon y x) m2 m1 && + (fun x y -> checkField aenv infoReader implTycon sigTycon y x) m2 m1 && // This check is required because constructors etc. are externally visible // and thus compiled representations do pick up dependencies on the field order - (if List.forall2 (checkField aenv infoReader implTycon) implFields sigFields + (if List.forall2 (checkField aenv infoReader implTycon sigTycon) implFields sigFields then true else (errorR(Error (FSComp.SR.DefinitionsInSigAndImplNotCompatibleFieldOrderDiffer(implTycon.TypeOrMeasureKind.ToString(), implTycon.DisplayName), m)); false)) - and checkRecordFieldsForExn _g _denv err aenv (infoReader: InfoReader) (enclosingTycon: Tycon) (implFields: TyconRecdFields) (sigFields: TyconRecdFields) = + and checkRecordFieldsForExn _g _denv err aenv (infoReader: InfoReader) (enclosingImplTycon: Tycon) (enclosingSigTycon: Tycon) (implFields: TyconRecdFields) (sigFields: TyconRecdFields) = let implFields = implFields.TrueFieldsAsList let sigFields = sigFields.TrueFieldsAsList let m1 = implFields |> NameMap.ofKeyedList (fun rfld -> rfld.LogicalName) let m2 = sigFields |> NameMap.ofKeyedList (fun rfld -> rfld.LogicalName) - NameMap.suball2 (fun s _ -> errorR(err (fun (x, y) -> FSComp.SR.ExceptionDefsNotCompatibleFieldInSigButNotImpl(s, x, y))); false) (checkField aenv infoReader enclosingTycon) m1 m2 && - NameMap.suball2 (fun s _ -> errorR(err (fun (x, y) -> FSComp.SR.ExceptionDefsNotCompatibleFieldInImplButNotSig(s, x, y))); false) (fun x y -> checkField aenv infoReader enclosingTycon y x) m2 m1 && - // This check is required because constructors etc. are externally visible - // and thus compiled representations do pick up dependencies on the field order - (if List.forall2 (checkField aenv infoReader enclosingTycon) implFields sigFields + NameMap.suball2 (fun s _ -> errorR(err (fun (x, y) -> FSComp.SR.ExceptionDefsNotCompatibleFieldInSigButNotImpl(s, x, y))); false) (checkField aenv infoReader enclosingImplTycon enclosingSigTycon) m1 m2 && + NameMap.suball2 (fun s _ -> errorR(err (fun (x, y) -> FSComp.SR.ExceptionDefsNotCompatibleFieldInImplButNotSig(s, x, y))); false) (fun x y -> checkField aenv infoReader enclosingImplTycon enclosingSigTycon y x) m2 m1 && + // This check is required because constructors etc. are externally visible + // and thus compiled representations do pick up dependencies on the field order + (if List.forall2 (checkField aenv infoReader enclosingImplTycon enclosingSigTycon) implFields sigFields then true else (errorR(err FSComp.SR.ExceptionDefsNotCompatibleFieldOrderDiffers); false)) @@ -477,23 +478,23 @@ type Checker(g, amap, denv, remapInfo: SignatureRepackageInfo, checkingSig) = let valText = NicePrint.stringValOrMember denv infoReader vref errorR(Error (FSComp.SR.DefinitionsInSigAndImplNotCompatibleAbstractMemberMissingInSig(kindText, implTycon.DisplayName, valText), m)); false) (fun _x _y -> true) - and checkClassFields isStruct m aenv infoReader (implTycon: Tycon) (implFields: TyconRecdFields) (sigFields: TyconRecdFields) = + and checkClassFields isStruct m aenv infoReader (implTycon: Tycon) (signTycon: Tycon) (implFields: TyconRecdFields) (sigFields: TyconRecdFields) = let implFields = implFields.TrueFieldsAsList let sigFields = sigFields.TrueFieldsAsList let m1 = implFields |> NameMap.ofKeyedList (fun rfld -> rfld.LogicalName) let m2 = sigFields |> NameMap.ofKeyedList (fun rfld -> rfld.LogicalName) NameMap.suball2 (fun fieldName _ -> errorR(Error (FSComp.SR.DefinitionsInSigAndImplNotCompatibleFieldRequiredButNotSpecified(implTycon.TypeOrMeasureKind.ToString(), implTycon.DisplayName, fieldName), m)); false) - (checkField aenv infoReader implTycon) m1 m2 && + (checkField aenv infoReader implTycon signTycon) m1 m2 && (if isStruct then NameMap.suball2 (fun fieldName _ -> warning(Error (FSComp.SR.DefinitionsInSigAndImplNotCompatibleFieldIsInImplButNotSig(implTycon.TypeOrMeasureKind.ToString(), implTycon.DisplayName, fieldName), m)); true) - (fun x y -> checkField aenv infoReader implTycon y x) m2 m1 + (fun x y -> checkField aenv infoReader implTycon signTycon y x) m2 m1 else true) - and checkTypeRepr m aenv (infoReader: InfoReader) (implTycon: Tycon) sigTypeRepr = + and checkTypeRepr m aenv (infoReader: InfoReader) (implTycon: Tycon) (sigTycon: Tycon) = let reportNiceError k s1 s2 = let aset = NameSet.ofList s1 let fset = NameSet.ofList s2 @@ -504,16 +505,14 @@ type Checker(g, amap, denv, remapInfo: SignatureRepackageInfo, checkingSig) = | l -> (errorR (Error (FSComp.SR.DefinitionsInSigAndImplNotCompatibleSignatureDefinesButImplDoesNot(implTycon.TypeOrMeasureKind.ToString(), implTycon.DisplayName, k, String.concat ";" l), m)); false) | l -> (errorR (Error (FSComp.SR.DefinitionsInSigAndImplNotCompatibleImplDefinesButSignatureDoesNot(implTycon.TypeOrMeasureKind.ToString(), implTycon.DisplayName, k, String.concat ";" l), m)); false) - match implTycon.TypeReprInfo, sigTypeRepr with - | (TFSharpRecdRepr _ - | TFSharpUnionRepr _ - | TILObjectRepr _ + match implTycon.TypeReprInfo, sigTycon.TypeReprInfo with + | (TILObjectRepr _ #if !NO_TYPEPROVIDERS | TProvidedTypeRepr _ | TProvidedNamespaceRepr _ #endif ), TNoRepr -> true - | TFSharpObjectRepr r, TNoRepr -> + | TFSharpTyconRepr r, TNoRepr -> match r.fsobjmodel_kind with | TFSharpStruct | TFSharpEnum -> (errorR (Error(FSComp.SR.DefinitionsInSigAndImplNotCompatibleImplDefinesStruct(implTycon.TypeOrMeasureKind.ToString(), implTycon.DisplayName), m)); false) @@ -523,23 +522,33 @@ type Checker(g, amap, denv, remapInfo: SignatureRepackageInfo, checkingSig) = (errorR (Error(FSComp.SR.DefinitionsInSigAndImplNotCompatibleDotNetTypeRepresentationIsHidden(implTycon.TypeOrMeasureKind.ToString(), implTycon.DisplayName), m)); false) | TMeasureableRepr _, TNoRepr -> (errorR (Error(FSComp.SR.DefinitionsInSigAndImplNotCompatibleTypeIsHidden(implTycon.TypeOrMeasureKind.ToString(), implTycon.DisplayName), m)); false) - | TFSharpUnionRepr r1, TFSharpUnionRepr r2 -> + + // Union types are compatible with union types in signature + | TFSharpTyconRepr { fsobjmodel_kind=TFSharpUnion; fsobjmodel_cases=r1}, + TFSharpTyconRepr { fsobjmodel_kind=TFSharpUnion; fsobjmodel_cases=r2} -> let ucases1 = r1.UnionCasesAsList let ucases2 = r2.UnionCasesAsList if ucases1.Length <> ucases2.Length then let names (l: UnionCase list) = l |> List.map (fun c -> c.Id.idText) reportNiceError "union case" (names ucases1) (names ucases2) - else List.forall2 (checkUnionCase aenv infoReader implTycon) ucases1 ucases2 - | TFSharpRecdRepr implFields, TFSharpRecdRepr sigFields -> - checkRecordFields m aenv infoReader implTycon implFields sigFields - | TFSharpObjectRepr r1, TFSharpObjectRepr r2 -> - if not (match r1.fsobjmodel_kind, r2.fsobjmodel_kind with - | TFSharpClass, TFSharpClass -> true - | TFSharpInterface, TFSharpInterface -> true - | TFSharpStruct, TFSharpStruct -> true - | TFSharpEnum, TFSharpEnum -> true - | TFSharpDelegate (TSlotSig(_, typ1, ctps1, mtps1, ps1, rty1)), - TFSharpDelegate (TSlotSig(_, typ2, ctps2, mtps2, ps2, rty2)) -> + else List.forall2 (checkUnionCase aenv infoReader implTycon sigTycon) ucases1 ucases2 + + // Record types are compatible with union types in signature + | TFSharpTyconRepr { fsobjmodel_kind=TFSharpRecord; fsobjmodel_rfields=implFields}, + TFSharpTyconRepr { fsobjmodel_kind=TFSharpRecord; fsobjmodel_rfields=sigFields} -> + checkRecordFields m aenv infoReader implTycon sigTycon implFields sigFields + + // Record types are compatible with union types in signature + | TFSharpTyconRepr r1, TFSharpTyconRepr r2 -> + let compat = + match r1.fsobjmodel_kind, r2.fsobjmodel_kind with + | TFSharpRecord, TFSharpClass -> true + | TFSharpClass, TFSharpClass -> true + | TFSharpInterface, TFSharpInterface -> true + | TFSharpStruct, TFSharpStruct -> true + | TFSharpEnum, TFSharpEnum -> true + | TFSharpDelegate (TSlotSig(_, typ1, ctps1, mtps1, ps1, rty1)), + TFSharpDelegate (TSlotSig(_, typ2, ctps2, mtps2, ps2, rty2)) -> (typeAEquiv g aenv typ1 typ2) && (ctps1.Length = ctps2.Length) && (let aenv = aenv.BindEquivTypars ctps1 ctps2 @@ -549,11 +558,13 @@ type Checker(g, amap, denv, remapInfo: SignatureRepackageInfo, checkingSig) = (typarsAEquiv g aenv mtps1 mtps2) && ((ps1, ps2) ||> List.lengthsEqAndForall2 (List.lengthsEqAndForall2 (fun p1 p2 -> typeAEquiv g aenv p1.Type p2.Type))) && (returnTypesAEquiv g aenv rty1 rty2))) - | _, _ -> false) then - (errorR (Error(FSComp.SR.DefinitionsInSigAndImplNotCompatibleTypeIsDifferentKind(implTycon.TypeOrMeasureKind.ToString(), implTycon.DisplayName), m)); false) + | _ -> false + if not compat then + errorR (Error(FSComp.SR.DefinitionsInSigAndImplNotCompatibleTypeIsDifferentKind(implTycon.TypeOrMeasureKind.ToString(), implTycon.DisplayName), m)) + false else let isStruct = (match r1.fsobjmodel_kind with TFSharpStruct -> true | _ -> false) - checkClassFields isStruct m aenv infoReader implTycon r1.fsobjmodel_rfields r2.fsobjmodel_rfields && + checkClassFields isStruct m aenv infoReader implTycon sigTycon r1.fsobjmodel_rfields r2.fsobjmodel_rfields && checkVirtualSlots denv infoReader m implTycon r1.fsobjmodel_vslots r2.fsobjmodel_vslots | TAsmRepr tcr1, TAsmRepr tcr2 -> if tcr1 <> tcr2 then (errorR (Error(FSComp.SR.DefinitionsInSigAndImplNotCompatibleILDiffer(implTycon.TypeOrMeasureKind.ToString(), implTycon.DisplayName), m)); false) else true diff --git a/src/fcs-fable/src/Compiler/Checking/SignatureConformance.fsi b/src/fcs-fable/src/Compiler/Checking/SignatureConformance.fsi index b5128a0597..c0939f92b3 100644 --- a/src/fcs-fable/src/Compiler/Checking/SignatureConformance.fsi +++ b/src/fcs-fable/src/Compiler/Checking/SignatureConformance.fsi @@ -7,6 +7,7 @@ module internal FSharp.Compiler.SignatureConformance open System.Text open FSharp.Compiler +open FSharp.Compiler.Syntax open FSharp.Compiler.Text open FSharp.Compiler.TypedTree open FSharp.Compiler.TypedTreeOps @@ -26,10 +27,19 @@ exception UnionCaseNotContained of DisplayEnv * InfoReader * Tycon * UnionCase * exception FSharpExceptionNotContained of DisplayEnv * InfoReader * Tycon * Tycon * (string * string -> string) -exception FieldNotContained of DisplayEnv * InfoReader * Tycon * RecdField * RecdField * (string * string -> string) +exception FieldNotContained of + DisplayEnv * + InfoReader * + Tycon * + Tycon * + RecdField * + RecdField * + (string * string -> string) exception InterfaceNotRevealed of DisplayEnv * TType * range +exception ArgumentsInSigAndImplMismatch of sigArg: Ident * implArg: Ident + type Checker = new: diff --git a/src/fcs-fable/src/Compiler/Checking/SignatureHash.fs b/src/fcs-fable/src/Compiler/Checking/SignatureHash.fs new file mode 100644 index 0000000000..2193f4325b --- /dev/null +++ b/src/fcs-fable/src/Compiler/Checking/SignatureHash.fs @@ -0,0 +1,528 @@ +module internal Fsharp.Compiler.SignatureHash + +open Internal.Utilities.Library +open Internal.Utilities.Rational +open FSharp.Compiler.AbstractIL.IL +open FSharp.Compiler.Syntax +open FSharp.Compiler.TcGlobals +open FSharp.Compiler.Text +open FSharp.Compiler.TypedTree +open FSharp.Compiler.TypedTreeBasics +open FSharp.Compiler.TypedTreeOps +open FSharp.Compiler.CheckDeclarations + +type ObserverVisibility = + | PublicOnly + | PublicAndInternal + +[] +module internal HashingPrimitives = + + type Hash = int + + let inline hashText (s: string) : Hash = hash s + let inline private combineHash acc y : Hash = (acc <<< 1) + y + 631 + let inline pipeToHash (value: Hash) (acc: Hash) = combineHash acc value + let inline addFullStructuralHash (value) (acc: Hash) = combineHash (acc) (hash value) + + let inline hashListOrderMatters ([] func) (items: #seq<'T>) : Hash = + let mutable acc = 0 + + for i in items do + let valHash = func i + // We are calling hashListOrderMatters for things like list of types, list of properties, list of fields etc. The ones which are visibility-hidden will return 0, and are ommited. + if valHash <> 0 then + acc <- combineHash acc valHash + + acc + + let inline hashListOrderIndependent ([] func) (items: #seq<'T>) : Hash = + let mutable acc = 0 + + for i in items do + let valHash = func i + acc <- acc ^^^ valHash + + acc + + let (@@) (h1: Hash) (h2: Hash) = combineHash h1 h2 + +[] +module internal HashUtilities = + + let private hashEntityRefName (xref: EntityRef) name = + let tag = + if xref.IsNamespace then + TextTag.Namespace + elif xref.IsModule then + TextTag.Module + elif xref.IsTypeAbbrev then + TextTag.Alias + elif xref.IsFSharpDelegateTycon then + TextTag.Delegate + elif xref.IsILEnumTycon || xref.IsFSharpEnumTycon then + TextTag.Enum + elif xref.IsStructOrEnumTycon then + TextTag.Struct + elif isInterfaceTyconRef xref then + TextTag.Interface + elif xref.IsUnionTycon then + TextTag.Union + elif xref.IsRecordTycon then + TextTag.Record + else + TextTag.Class + + (hash tag) @@ (hashText name) + + let hashTyconRefImpl (tcref: TyconRef) = + let demangled = tcref.DisplayNameWithStaticParameters + let tyconHash = hashEntityRefName tcref demangled + + tcref.CompilationPath.AccessPath + |> hashListOrderMatters (fst >> hashText) + |> pipeToHash tyconHash + +module HashIL = + + let hashILTypeRef (tref: ILTypeRef) = + tref.Enclosing + |> hashListOrderMatters hashText + |> addFullStructuralHash tref.Name + + let private hashILArrayShape (sh: ILArrayShape) = sh.Rank + + let rec hashILType (ty: ILType) : Hash = + match ty with + | ILType.Void -> hash ILType.Void + | ILType.Array (sh, t) -> hashILType t @@ hashILArrayShape sh + | ILType.Value t + | ILType.Boxed t -> hashILTypeRef t.TypeRef @@ (t.GenericArgs |> hashListOrderMatters (hashILType)) + | ILType.Ptr t + | ILType.Byref t -> hashILType t + | ILType.FunctionPointer t -> hashILCallingSignature t + | ILType.TypeVar n -> hash n + | ILType.Modified (_, _, t) -> hashILType t + + and hashILCallingSignature (signature: ILCallingSignature) = + let res = signature.ReturnType |> hashILType + signature.ArgTypes |> hashListOrderMatters (hashILType) |> pipeToHash res + +module HashAccessibility = + + let isHiddenToObserver (TAccess access) (observer: ObserverVisibility) = + let isInternalCompPath x = + match x with + | CompPath (ILScopeRef.Local, []) -> true + | _ -> false + + match access with + | [] -> false + | _ when List.forall isInternalCompPath access -> + match observer with + // The 'access' means internal, but our observer can see it (e.g. because of IVT attribute) + | PublicAndInternal -> false + | PublicOnly -> true + | _ -> true + +module rec HashTypes = + + /// Hash a reference to a type + let hashTyconRef tcref = hashTyconRefImpl tcref + + /// Hash the flags of a member + let hashMemberFlags (memFlags: SynMemberFlags) = hash memFlags + + /// Hash an attribute 'Type(arg1, ..., argN)' + let private hashAttrib (Attrib (tyconRef = tcref)) = hashTyconRefImpl tcref + + let hashAttributeList attrs = + attrs |> hashListOrderIndependent hashAttrib + + let private hashTyparRef (typar: Typar) = + hashText typar.DisplayName + |> addFullStructuralHash (typar.Rigidity) + |> addFullStructuralHash (typar.StaticReq) + + let private hashTyparRefWithInfo (typar: Typar) = + hashTyparRef typar @@ hashAttributeList typar.Attribs + + let private hashConstraint (g: TcGlobals) struct (tp, tpc) = + let tpHash = hashTyparRefWithInfo tp + + match tpc with + | TyparConstraint.CoercesTo (tgtTy, _) -> tpHash @@ 1 @@ hashTType g tgtTy + | TyparConstraint.MayResolveMember (traitInfo, _) -> tpHash @@ 2 @@ hashTraitWithInfo (* denv *) g traitInfo + | TyparConstraint.DefaultsTo (_, ty, _) -> tpHash @@ 3 @@ hashTType g ty + | TyparConstraint.IsEnum (ty, _) -> tpHash @@ 4 @@ hashTType g ty + | TyparConstraint.SupportsComparison _ -> tpHash @@ 5 + | TyparConstraint.SupportsEquality _ -> tpHash @@ 6 + | TyparConstraint.IsDelegate (aty, bty, _) -> tpHash @@ 7 @@ hashTType g aty @@ hashTType g bty + | TyparConstraint.SupportsNull _ -> tpHash @@ 8 + | TyparConstraint.IsNonNullableStruct _ -> tpHash @@ 9 + | TyparConstraint.IsUnmanaged _ -> tpHash @@ 10 + | TyparConstraint.IsReferenceType _ -> tpHash @@ 11 + | TyparConstraint.SimpleChoice (tys, _) -> tpHash @@ 12 @@ (tys |> hashListOrderIndependent (hashTType g)) + | TyparConstraint.RequiresDefaultConstructor _ -> tpHash @@ 13 + + /// Hash type parameter constraints + let private hashConstraints (g: TcGlobals) cxs = + cxs |> hashListOrderIndependent (hashConstraint g) + + let private hashTraitWithInfo (g: TcGlobals) traitInfo = + let nameHash = hashText traitInfo.MemberLogicalName + let memberHash = hashMemberFlags traitInfo.MemberFlags + + let returnTypeHash = + match traitInfo.CompiledReturnType with + | Some t -> hashTType g t + | _ -> -1 + + traitInfo.CompiledObjectAndArgumentTypes + |> hashListOrderIndependent (hashTType g) + |> pipeToHash (nameHash) + |> pipeToHash (returnTypeHash) + |> pipeToHash memberHash + + /// Hash a unit of measure expression + let private hashMeasure unt = + let measuresWithExponents = + ListMeasureVarOccsWithNonZeroExponents unt + |> List.sortBy (fun (tp: Typar, _) -> tp.DisplayName) + + measuresWithExponents + |> hashListOrderIndependent (fun (typar, exp: Rational) -> hashTyparRef typar @@ hash exp) + + /// Hash a type, taking precedence into account to insert brackets where needed + let hashTType (g: TcGlobals) ty = + + match stripTyparEqns ty |> (stripTyEqns g) with + | TType_ucase (UnionCaseRef (tc, _), args) + | TType_app (tc, args, _) -> args |> hashListOrderMatters (hashTType g) |> pipeToHash (hashTyconRef tc) + | TType_anon (anonInfo, tys) -> + tys + |> hashListOrderMatters (hashTType g) + |> pipeToHash (anonInfo.SortedNames |> hashListOrderMatters hashText) + |> addFullStructuralHash (evalAnonInfoIsStruct anonInfo) + | TType_tuple (tupInfo, t) -> + t + |> hashListOrderMatters (hashTType g) + |> addFullStructuralHash (evalTupInfoIsStruct tupInfo) + // Hash a first-class generic type. + | TType_forall (tps, tau) -> tps |> hashListOrderMatters (hashTyparRef) |> pipeToHash (hashTType g tau) + | TType_fun _ -> + let argTys, retTy = stripFunTy g ty + argTys |> hashListOrderMatters (hashTType g) |> pipeToHash (hashTType g retTy) + | TType_var (r, _) -> hashTyparRefWithInfo r + | TType_measure unt -> hashMeasure unt + + // Hash a single argument, including its name and type + let private hashArgInfo (g: TcGlobals) (ty, argInfo: ArgReprInfo) = + + let attributesHash = hashAttributeList argInfo.Attribs + + let nameHash = + match argInfo.Name with + | Some i -> hashText i.idText + | _ -> -1 + + let typeHash = hashTType g ty + + typeHash @@ nameHash @@ attributesHash + + let private hashCurriedArgInfos (g: TcGlobals) argInfos = + argInfos + |> hashListOrderMatters (fun l -> l |> hashListOrderMatters (hashArgInfo g)) + + /// Hash a single type used as the type of a member or value + let hashTopType (g: TcGlobals) argInfos retTy cxs = + let retTypeHash = hashTType g retTy + let cxsHash = hashConstraints g cxs + let argHash = hashCurriedArgInfos g argInfos + + retTypeHash @@ cxsHash @@ argHash + + let private hashTyparInclConstraints (g: TcGlobals) (typar: Typar) = + typar.Constraints + |> hashListOrderIndependent (fun tpc -> hashConstraint g (typar, tpc)) + |> pipeToHash (hashTyparRef typar) + + /// Hash type parameters + let hashTyparDecls (g: TcGlobals) (typars: Typars) = + typars |> hashListOrderMatters (hashTyparInclConstraints g) + + let private hashUncurriedSig (g: TcGlobals) typarInst argInfos retTy = + typarInst + |> hashListOrderMatters (fun (typar, ttype) -> hashTyparInclConstraints g typar @@ hashTType g ttype) + |> pipeToHash (hashTopType g argInfos retTy []) + + let private hashMemberSigCore (g: TcGlobals) memberToParentInst (typarInst, methTypars: Typars, argInfos, retTy) = + typarInst + |> hashListOrderMatters (fun (typar, ttype) -> hashTyparInclConstraints g typar @@ hashTType g ttype) + |> pipeToHash (hashTopType g argInfos retTy []) + |> pipeToHash ( + memberToParentInst + |> hashListOrderMatters (fun (typar, ty) -> hashTyparRef typar @@ hashTType g ty) + ) + |> pipeToHash (hashTyparDecls g methTypars) + + let hashMemberType (g: TcGlobals) vref typarInst argInfos retTy = + match PartitionValRefTypars g vref with + | Some (_, _, memberMethodTypars, memberToParentInst, _) -> + hashMemberSigCore g memberToParentInst (typarInst, memberMethodTypars, argInfos, retTy) + | None -> hashUncurriedSig g typarInst argInfos retTy + +module HashTastMemberOrVals = + open HashTypes + + let private hashMember (g: TcGlobals, observer) typarInst (v: Val) = + let vref = mkLocalValRef v + + if HashAccessibility.isHiddenToObserver vref.Accessibility observer then + 0 + else + let membInfo = Option.get vref.MemberInfo + let _tps, argInfos, retTy, _ = GetTypeOfMemberInFSharpForm g vref + + let memberFlagsHash = hashMemberFlags membInfo.MemberFlags + let parentTypeHash = hashTyconRef membInfo.ApparentEnclosingEntity + let memberTypeHash = hashMemberType g vref typarInst argInfos retTy + let flagsHash = hash v.val_flags.PickledBits + let nameHash = hashText v.DisplayNameCoreMangled + let attribsHash = hashAttributeList v.Attribs + + let combinedHash = + memberFlagsHash + @@ parentTypeHash @@ memberTypeHash @@ flagsHash @@ nameHash @@ attribsHash + + combinedHash + + let private hashNonMemberVal (g: TcGlobals, observer) (tps, v: Val, tau, cxs) = + if HashAccessibility.isHiddenToObserver v.Accessibility observer then + 0 + else + let valReprInfo = arityOfValForDisplay v + let nameHash = hashText v.DisplayNameCoreMangled + let typarHash = hashTyparDecls g tps + let argInfos, retTy = GetTopTauTypeInFSharpForm g valReprInfo.ArgInfos tau v.Range + let typeHash = hashTopType g argInfos retTy cxs + let flagsHash = hash v.val_flags.PickledBits + let attribsHash = hashAttributeList v.Attribs + + let combinedHash = nameHash @@ typarHash @@ typeHash @@ flagsHash @@ attribsHash + combinedHash + + let hashValOrMemberNoInst (g, obs) (vref: ValRef) = + match vref.MemberInfo with + | None -> + let tps, tau = vref.GeneralizedType + + let cxs = + tps + |> Seq.collect (fun tp -> tp.Constraints |> Seq.map (fun cx -> struct (tp, cx))) + + hashNonMemberVal (g, obs) (tps, vref.Deref, tau, cxs) + | Some _ -> hashMember (g, obs) emptyTyparInst vref.Deref + +//------------------------------------------------------------------------- + +/// Printing TAST objects +module TyconDefinitionHash = + open HashTypes + + let private hashRecdField (g: TcGlobals, observer) (fld: RecdField) = + if HashAccessibility.isHiddenToObserver fld.Accessibility observer then + 0 + else + let nameHash = hashText fld.DisplayNameCore + + let attribHash = + hashAttributeList fld.FieldAttribs @@ hashAttributeList fld.PropertyAttribs + + let typeHash = hashTType g fld.FormalType + + let combined = + nameHash + @@ attribHash + @@ typeHash @@ (hash fld.IsStatic) @@ (hash fld.IsVolatile) @@ (hash fld.IsMutable) + + combined + + let private hashUnionCase (g: TcGlobals, observer) (ucase: UnionCase) = + if HashAccessibility.isHiddenToObserver ucase.Accessibility observer then + 0 + else + let nameHash = hashText ucase.Id.idText + let attribHash = hashAttributeList ucase.Attribs + + ucase.RecdFieldsArray + |> hashListOrderMatters (fun rf -> hashRecdField (g, observer) rf) + |> pipeToHash nameHash + |> pipeToHash attribHash + + let private hashUnionCases (g, obs) ucases = + ucases + // Why order matters here? + // Union cases come with generated Tag members, on which code in higher-level project can depend -> if order of union cases changes, higher-level project has to be also recompiled. + // Correct me if I am wrong here pls. + |> hashListOrderMatters (hashUnionCase (g, obs)) + + let private hashFsharpDelegate g slotSig = + let (TSlotSig (_, _, _, _, paraml, retTy)) = slotSig + + (paraml + |> hashListOrderMatters (fun pl -> pl |> hashListOrderMatters (fun sp -> hashTType g sp.Type))) + |> pipeToHash (hashTType g (GetFSharpViewOfReturnType g retTy)) + + let private hashFsharpEnum (tycon: Tycon) = + tycon.AllFieldsArray + |> hashListOrderIndependent (fun f -> hashText f.DisplayNameCore) + + let private hashTyconDefn (g, observer) (tcref: TyconRef) = + let tycon = tcref.Deref + + if HashAccessibility.isHiddenToObserver tycon.Accessibility observer then + 0 + else + + let repr = tycon.TypeReprInfo + + let tyconHash = HashTypes.hashTyconRef tcref + let attribHash = hashAttributeList tcref.Attribs + let typarsHash = hashTyparDecls g tycon.TyparsNoRange + let topLevelDeclarationHash = tyconHash @@ attribHash @@ typarsHash + + // Interface implementation + let iimplsHash () = + tycon.ImmediateInterfacesOfFSharpTycon + |> hashListOrderIndependent (fun (ttype, _, _) -> hashTType g ttype) + + // Fields, static fields, val declarations + let fieldsHash () = + tycon.AllFieldsArray |> hashListOrderIndependent (hashRecdField (g, observer)) + + /// Properties, methods, constructors + let membersHash () = + tycon.MembersOfFSharpTyconByName + |> hashListOrderIndependent (fun kvp -> + kvp.Value + |> hashListOrderIndependent (HashTastMemberOrVals.hashValOrMemberNoInst (g, observer))) + + /// Super type or obj + let inheritsHash () = superOfTycon g tycon |> hashTType g + + let specializedHash = + match repr with + | TFSharpTyconRepr { fsobjmodel_kind = TFSharpRecord } -> fieldsHash () + | TFSharpTyconRepr { fsobjmodel_kind = TFSharpUnion } -> hashUnionCases (g, observer) tycon.UnionCasesArray + | TFSharpTyconRepr { + fsobjmodel_kind = TFSharpDelegate slotSig + } -> hashFsharpDelegate g slotSig + | TFSharpTyconRepr { fsobjmodel_kind = TFSharpEnum } -> hashFsharpEnum tycon + | TFSharpTyconRepr { + fsobjmodel_kind = TFSharpClass | TFSharpInterface | TFSharpStruct as tfor + } -> + iimplsHash () @@ fieldsHash () @@ membersHash () @@ inheritsHash () + |> pipeToHash ( + match tfor with + | TFSharpClass -> 1 + | TFSharpInterface -> 2 + | TFSharpStruct -> 3 + | _ -> 4 + ) + | TAsmRepr ilType -> HashIL.hashILType ilType + | TMeasureableRepr ty -> hashTType g ty + | TILObjectRepr _ -> iimplsHash () @@ fieldsHash () @@ membersHash () @@ inheritsHash () + | TNoRepr when tycon.TypeAbbrev.IsSome -> + let abbreviatedTy = tycon.TypeAbbrev.Value + hashTType g abbreviatedTy + | TNoRepr when tycon.IsFSharpException -> + match tycon.ExceptionInfo with + | TExnAbbrevRepr exnTcRef -> hashTyconRef exnTcRef + | TExnAsmRepr iLTypeRef -> HashIL.hashILTypeRef iLTypeRef + | TExnNone -> 0 + | TExnFresh _ -> fieldsHash () + +#if !NO_TYPEPROVIDERS + | TProvidedNamespaceRepr _ + | TProvidedTypeRepr _ +#endif + | TNoRepr -> iimplsHash () @@ fieldsHash () @@ membersHash () @@ inheritsHash () + + specializedHash |> pipeToHash topLevelDeclarationHash + + // Hash: module spec + + let hashTyconDefns (g, obs) (tycons: Tycon list) = + tycons + |> hashListOrderIndependent (mkLocalEntityRef >> (hashTyconDefn (g, obs))) + + let rec fullPath (mspec: ModuleOrNamespace) acc = + if mspec.IsNamespace then + match mspec.ModuleOrNamespaceType.ModuleAndNamespaceDefinitions |> List.tryHead with + | Some next when next.IsNamespace -> fullPath next (acc @ [ next.DisplayNameCore ]) + | _ -> acc, mspec + else + acc, mspec + +let calculateHashOfImpliedSignature g observer (expr: ModuleOrNamespaceContents) = + + let rec hashModuleOrNameSpaceBinding (monb: ModuleOrNamespaceBinding) = + match monb with + | ModuleOrNamespaceBinding.Binding b when b.Var.LogicalName.StartsWith("doval@") -> 0 + | ModuleOrNamespaceBinding.Binding b -> HashTastMemberOrVals.hashValOrMemberNoInst (g, observer) (mkLocalValRef b.Var) + | ModuleOrNamespaceBinding.Module (moduleInfo, contents) -> hashSingleModuleOrNameSpaceIncludingName (moduleInfo, contents) + + and hashSingleModuleOrNamespaceContents x = + match x with + | TMDefRec (_, _opens, tycons, mbinds, _) -> + let mbindsHash = mbinds |> hashListOrderIndependent (hashModuleOrNameSpaceBinding) + + let tyconsHash = TyconDefinitionHash.hashTyconDefns (g, observer) tycons + + if mbindsHash <> 0 || tyconsHash <> 0 then + mbindsHash @@ tyconsHash + else + 0 + + | TMDefLet (bind, _) -> HashTastMemberOrVals.hashValOrMemberNoInst (g, observer) (mkLocalValRef bind.Var) + | TMDefOpens _ -> 0 (* empty hash *) + | TMDefs defs -> defs |> hashListOrderIndependent hashSingleModuleOrNamespaceContents + | TMDefDo _ -> 0 (* empty hash *) + + and hashSingleModuleOrNameSpaceIncludingName (mspec, def) = + if HashAccessibility.isHiddenToObserver mspec.Accessibility observer then + 0 + else + let outerPathHash = + mspec.CompilationPath.MangledPath |> hashListOrderMatters hashText + + let thisNameHash = hashText mspec.entity_logical_name + + let fullNameHash = outerPathHash @@ thisNameHash @@ (hash mspec.IsModule) + let contentHash = hashSingleModuleOrNamespaceContents def + + if contentHash = 0 then 0 else fullNameHash @@ contentHash + + hashSingleModuleOrNamespaceContents expr + +let calculateSignatureHashOfFiles (files: CheckedImplFile list) g observer = + use _ = + FSharp.Compiler.Diagnostics.Activity.startNoTags "calculateSignatureHashOfFiles" + + files + |> hashListOrderMatters (fun f -> calculateHashOfImpliedSignature g observer f.Contents) + +let calculateHashOfAssemblyTopAttributes (attrs: TopAttribs) (platform: ILPlatform option) = + let platformHash = + match platform with + | None -> 0 + | Some AMD64 -> 1 + | Some IA64 -> 2 + | Some ARM -> 3 + | Some ARM64 -> 4 + | Some X86 -> 5 + + HashTypes.hashAttributeList attrs.assemblyAttrs + @@ HashTypes.hashAttributeList attrs.mainMethodAttrs + @@ HashTypes.hashAttributeList attrs.netModuleAttrs @@ platformHash diff --git a/src/fcs-fable/src/Compiler/Checking/SignatureHash.fsi b/src/fcs-fable/src/Compiler/Checking/SignatureHash.fsi new file mode 100644 index 0000000000..90d25e8eab --- /dev/null +++ b/src/fcs-fable/src/Compiler/Checking/SignatureHash.fsi @@ -0,0 +1,16 @@ +module internal Fsharp.Compiler.SignatureHash + +open FSharp.Compiler.AbstractIL.IL +open FSharp.Compiler.TcGlobals +open FSharp.Compiler.TypedTree +open FSharp.Compiler.CheckDeclarations + +type ObserverVisibility = + | PublicOnly + | PublicAndInternal + +val calculateHashOfImpliedSignature: + g: TcGlobals -> observer: ObserverVisibility -> expr: ModuleOrNamespaceContents -> int + +val calculateSignatureHashOfFiles: files: CheckedImplFile list -> g: TcGlobals -> observer: ObserverVisibility -> int +val calculateHashOfAssemblyTopAttributes: attrs: TopAttribs -> platform: ILPlatform option -> int diff --git a/src/fcs-fable/src/Compiler/Checking/TailCallChecks.fs b/src/fcs-fable/src/Compiler/Checking/TailCallChecks.fs new file mode 100644 index 0000000000..9371f59955 --- /dev/null +++ b/src/fcs-fable/src/Compiler/Checking/TailCallChecks.fs @@ -0,0 +1,834 @@ +// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. + +module internal FSharp.Compiler.TailCallChecks + +open Internal.Utilities.Collections +open Internal.Utilities.Library +open Internal.Utilities.Library.Extras +open FSharp.Compiler +open FSharp.Compiler.AbstractIL.IL +open FSharp.Compiler.DiagnosticsLogger +open FSharp.Compiler.Features +open FSharp.Compiler.Syntax +open FSharp.Compiler.TcGlobals +open FSharp.Compiler.TypedTree +open FSharp.Compiler.TypedTreeBasics +open FSharp.Compiler.TypedTreeOps +open FSharp.Compiler.TypeRelations + +let PostInferenceChecksStackGuardDepth = GetEnvInteger "FSHARP_TailCallChecks" 50 + +let (|ValUseAtApp|_|) e = + match e with + | InnerExprPat (Expr.App(funcExpr = InnerExprPat (Expr.Val (valRef = vref; flags = valUseFlags))) | Expr.Val (valRef = vref + flags = valUseFlags)) -> + Some(vref, valUseFlags) + | _ -> None + +type TailCallReturnType = + | MustReturnVoid // indicates "has unit return type and must return void" + | NonVoid + +type TailCall = + | Yes of TailCallReturnType + | No + + static member private IsVoidRet (g: TcGlobals) (v: Val) = + match v.ValReprInfo with + | Some info -> + let _tps, tau = destTopForallTy g info v.Type + + let _curriedArgInfos, returnTy = + GetTopTauTypeInFSharpForm g info.ArgInfos tau v.Range + + if isUnitTy g returnTy then + TailCallReturnType.MustReturnVoid + else + TailCallReturnType.NonVoid + | None -> TailCallReturnType.NonVoid + + static member YesFromVal (g: TcGlobals) (v: Val) = TailCall.Yes(TailCall.IsVoidRet g v) + + static member YesFromExpr (g: TcGlobals) (expr: Expr) = + match expr with + | ValUseAtApp (valRef, _) -> TailCall.Yes(TailCall.IsVoidRet g valRef.Deref) + | _ -> TailCall.Yes TailCallReturnType.NonVoid + + member x.AtExprLambda = + match x with + // Inside a lambda that is considered an expression, we must always return "unit" not "void" + | TailCall.Yes _ -> TailCall.Yes TailCallReturnType.NonVoid + | TailCall.No -> TailCall.No + +let IsValRefIsDllImport g (vref: ValRef) = + vref.Attribs |> HasFSharpAttributeOpt g g.attrib_DllImportAttribute + +type cenv = + { + stackGuard: StackGuard + + g: TcGlobals + + amap: Import.ImportMap + + reportErrors: bool + + /// Values in module that have been marked [] + mustTailCall: Zset + } + + override x.ToString() = "" + +//-------------------------------------------------------------------------- +// approx walk of type +//-------------------------------------------------------------------------- + +/// Indicates whether an address-of operation is permitted at a particular location +/// Type definition taken from PostInferenceChecks.fs. To be kept in sync. +[] +type PermitByRefExpr = + /// Permit a tuple of arguments where elements can be byrefs + | YesTupleOfArgs of int + + /// Context allows for byref typed expr. + | Yes + + /// Context allows for byref typed expr, but the byref must be returnable + | YesReturnable + + /// Context allows for byref typed expr, but the byref must be returnable and a non-local + | YesReturnableNonLocal + + /// General (address-of expr and byref values not allowed) + | No + + member ctxt.PermitOnlyReturnable = + match ctxt with + | PermitByRefExpr.YesReturnable + | PermitByRefExpr.YesReturnableNonLocal -> true + | _ -> false + +let mkArgsPermit n = + if n = 1 then + PermitByRefExpr.Yes + else + PermitByRefExpr.YesTupleOfArgs n + +/// Work out what byref-values are allowed at input positions to named F# functions or members +let mkArgsForAppliedVal isBaseCall (vref: ValRef) argsl = + match vref.ValReprInfo with + | Some valReprInfo -> + let argArities = valReprInfo.AritiesOfArgs + + let argArities = + if isBaseCall && argArities.Length >= 1 then + List.tail argArities + else + argArities + // Check for partial applications: arguments to partial applications don't get to use byrefs + if List.length argsl >= argArities.Length then + List.map mkArgsPermit argArities + else + [] + | None -> [] + +/// Work out what byref-values are allowed at input positions to functions +let rec mkArgsForAppliedExpr isBaseCall argsl x = + match stripDebugPoints (stripExpr x) with + // recognise val + | Expr.Val (vref, _, _) -> mkArgsForAppliedVal isBaseCall vref argsl + // step through instantiations + | Expr.App (f, _fty, _tyargs, [], _) -> mkArgsForAppliedExpr isBaseCall argsl f + // step through subsumption coercions + | Expr.Op (TOp.Coerce, _, [ f ], _) -> mkArgsForAppliedExpr isBaseCall argsl f + | _ -> [] + +/// Check an expression, where the expression is in a position where byrefs can be generated +let rec CheckExprNoByrefs cenv (tailCall: TailCall) expr = + CheckExpr cenv expr PermitByRefExpr.No tailCall + +/// Check an expression, warn if it's attributed with TailCall but our analysis concludes it's not a valid tail call +and CheckForNonTailRecCall (cenv: cenv) expr (tailCall: TailCall) = + let g = cenv.g + let expr = stripExpr expr + let expr = stripDebugPoints expr + + match expr with + | Expr.App (f, _fty, _tyargs, argsl, m) -> + + if cenv.reportErrors then + if cenv.g.langVersion.SupportsFeature LanguageFeature.WarningWhenTailRecAttributeButNonTailRecUsage then + match f with + | ValUseAtApp (vref, valUseFlags) when cenv.mustTailCall.Contains vref.Deref -> + + let canTailCall = + match tailCall with + | TailCall.No -> // an upper level has already decided that this is not in a tailcall position + false + | TailCall.Yes returnType -> + if vref.IsMemberOrModuleBinding && vref.ValReprInfo.IsSome then + let topValInfo = vref.ValReprInfo.Value + + let (nowArgs, laterArgs), returnTy = + let _tps, tau = destTopForallTy g topValInfo _fty + + let curriedArgInfos, returnTy = + GetTopTauTypeInFSharpForm cenv.g topValInfo.ArgInfos tau m + + if argsl.Length >= curriedArgInfos.Length then + (List.splitAfter curriedArgInfos.Length argsl), returnTy + else + ([], argsl), returnTy + + let _, _, isNewObj, isSuperInit, isSelfInit, _, _, _ = + GetMemberCallInfo cenv.g (vref, valUseFlags) + + let isCCall = + match valUseFlags with + | PossibleConstrainedCall _ -> true + | _ -> false + + let hasByrefArg = nowArgs |> List.exists (tyOfExpr cenv.g >> isByrefTy cenv.g) + + let mustGenerateUnitAfterCall = + (isUnitTy g returnTy && returnType <> TailCallReturnType.MustReturnVoid) + + let noTailCallBlockers = + not isNewObj + && not isSuperInit + && not isSelfInit + && not mustGenerateUnitAfterCall + && isNil laterArgs + && not (IsValRefIsDllImport cenv.g vref) + && not isCCall + && not hasByrefArg + + noTailCallBlockers // blockers that will prevent the IL level from emmiting a tail instruction + else + true + + // warn if we call inside of recursive scope in non-tail-call manner/with tail blockers. See + // ``Warn successfully in match clause`` + // ``Warn for byref parameters`` + if not canTailCall then + warning (Error(FSComp.SR.chkNotTailRecursive vref.DisplayName, m)) + | _ -> () + | _ -> () + +/// Check call arguments, including the return argument. +and CheckCall cenv args ctxts (tailCall: TailCall) = + // detect CPS-like expressions + let rec (|IsAppInLambdaBody|_|) e = + match stripDebugPoints e with + | Expr.TyLambda (bodyExpr = bodyExpr) + | Expr.Lambda (bodyExpr = bodyExpr) -> + match (stripDebugPoints bodyExpr) with + | Expr.App _ -> Some(TailCall.YesFromExpr cenv.g e) + | IsAppInLambdaBody t -> Some t + | _ -> None + | _ -> None + + // if we haven't already decided this is no tail call, try to detect CPS-like expressions + let tailCall = + if tailCall = TailCall.No then + tailCall + else + args + |> List.tryPick (fun a -> + match a with + | IsAppInLambdaBody t -> Some t + | _ -> None) + |> Option.defaultValue TailCall.No + + CheckExprs cenv args ctxts tailCall + +/// Check call arguments, including the return argument. The receiver argument is handled differently. +and CheckCallWithReceiver cenv args ctxts = + match args with + | [] -> failwith "CheckCallWithReceiver: Argument list is empty." + | receiverArg :: args -> + + let receiverContext, ctxts = + match ctxts with + | [] -> PermitByRefExpr.No, [] + | ctxt :: ctxts -> ctxt, ctxts + + CheckExpr cenv receiverArg receiverContext TailCall.No + CheckExprs cenv args ctxts (TailCall.Yes TailCallReturnType.NonVoid) + +and CheckExprLinear (cenv: cenv) expr (ctxt: PermitByRefExpr) (tailCall: TailCall) : unit = + match expr with + | Expr.Sequential (e1, e2, NormalSeq, _) -> + CheckExprNoByrefs cenv TailCall.No e1 + // tailcall + CheckExprLinear cenv e2 ctxt tailCall + + | Expr.Let (TBind (v, _bindRhs, _) as bind, body, _, _) -> + let isByRef = isByrefTy cenv.g v.Type + + let bindingContext = + if isByRef then + PermitByRefExpr.YesReturnable + else + PermitByRefExpr.Yes + + CheckBinding cenv false bindingContext bind + // tailcall + CheckExprLinear cenv body ctxt tailCall + + | LinearOpExpr (_op, _tyargs, argsHead, argLast, _m) -> + argsHead |> List.iter (CheckExprNoByrefs cenv tailCall) + // tailcall + CheckExprLinear cenv argLast PermitByRefExpr.No tailCall + + | LinearMatchExpr (_spMatch, _exprm, dtree, tg1, e2, _m, _ty) -> + CheckDecisionTree cenv dtree + CheckDecisionTreeTarget cenv tailCall ctxt tg1 + // tailcall + CheckExprLinear cenv e2 ctxt tailCall + + | Expr.DebugPoint (_, innerExpr) -> CheckExprLinear cenv innerExpr ctxt tailCall + + | _ -> + // not a linear expression + CheckExpr cenv expr ctxt (TailCall.YesFromExpr cenv.g expr) + +/// Check an expression, given information about the position of the expression +and CheckExpr (cenv: cenv) origExpr (ctxt: PermitByRefExpr) (tailCall: TailCall) : unit = + + // Guard the stack for deeply nested expressions + cenv.stackGuard.Guard + <| fun () -> + + let g = cenv.g + + let origExpr = stripExpr origExpr + + // CheckForOverAppliedExceptionRaisingPrimitive is more easily checked prior to NormalizeAndAdjustPossibleSubsumptionExprs + CheckForNonTailRecCall cenv origExpr tailCall + let expr = NormalizeAndAdjustPossibleSubsumptionExprs g origExpr + let expr = stripExpr expr + + match expr with + | LinearOpExpr _ + | LinearMatchExpr _ + | Expr.Let _ + | Expr.Sequential (_, _, NormalSeq, _) + | Expr.DebugPoint _ -> CheckExprLinear cenv expr ctxt tailCall + + | Expr.Sequential (e1, e2, ThenDoSeq, _) -> + CheckExprNoByrefs cenv TailCall.No e1 + CheckExprNoByrefs cenv TailCall.No e2 + + | Expr.Const _ + | Expr.Val _ + | Expr.Quote _ -> () + + | StructStateMachineExpr g info -> CheckStructStateMachineExpr cenv info + + | Expr.Obj (_, ty, _basev, superInitCall, overrides, iimpls, _) -> CheckObjectExpr cenv (ty, superInitCall, overrides, iimpls) + + // Allow base calls to F# methods + | Expr.App (InnerExprPat (ExprValWithPossibleTypeInst (v, vFlags, _, _) as f), _fty, _tyargs, Expr.Val (baseVal, _, _) :: rest, _m) when + ((match vFlags with + | VSlotDirectCall -> true + | _ -> false) + && baseVal.IsBaseVal) + -> + CheckFSharpBaseCall cenv (v, f, rest) + + // Allow base calls to IL methods + | Expr.Op (TOp.ILCall (isVirtual, _, _, _, _, _, _, _ilMethRef, _enclTypeInst, _methInst, _retTypes), + _tyargs, + Expr.Val (baseVal, _, _) :: rest, + _m) when not isVirtual && baseVal.IsBaseVal -> + + CheckILBaseCall cenv rest + + | Expr.Op (op, tyargs, args, m) -> CheckExprOp cenv (op, tyargs, args, m) ctxt + + // Allow 'typeof' calls as a special case, the only accepted use of System.Void! + | TypeOfExpr g ty when isVoidTy g ty -> () + + // Allow 'typedefof' calls as a special case, the only accepted use of System.Void! + | TypeDefOfExpr g ty when isVoidTy g ty -> () + + // Check an application + | Expr.App (f, _fty, _tyargs, argsl, _m) -> + // detect expressions like List.collect + let checkArgForLambdaWithAppOfMustTailCall e = + match stripDebugPoints e with + | Expr.TyLambda (bodyExpr = bodyExpr) + | Expr.Lambda (bodyExpr = bodyExpr) -> + match bodyExpr with + | Expr.App (ValUseAtApp (vref, _valUseFlags), _formalType, _typeArgs, _exprs, _range) -> + cenv.mustTailCall.Contains vref.Deref + | _ -> false + | _ -> false + + let tailCall = + if argsl |> List.exists checkArgForLambdaWithAppOfMustTailCall then + TailCall.No + else + tailCall + + CheckApplication cenv (f, argsl) tailCall + + | Expr.Lambda (_, _, _, argvs, _, m, bodyTy) -> CheckLambda cenv expr (argvs, m, bodyTy) tailCall + + | Expr.TyLambda (_, tps, _, m, bodyTy) -> CheckTyLambda cenv expr (tps, m, bodyTy) tailCall + + | Expr.TyChoose (_tps, e1, _) -> CheckExprNoByrefs cenv tailCall e1 + + | Expr.Match (_, _, dtree, targets, _m, _ty) -> CheckMatch cenv ctxt (dtree, targets) tailCall + + | Expr.LetRec (binds, bodyExpr, _, _) -> CheckLetRec cenv (binds, bodyExpr) tailCall + + | Expr.StaticOptimization (_constraints, e2, e3, _m) -> CheckStaticOptimization cenv (e2, e3) + + | Expr.WitnessArg _ -> () + + | Expr.Link _ -> failwith "Unexpected reclink" + +and CheckStructStateMachineExpr cenv info = + + let (_dataTy, + (_moveNextThisVar, moveNextExpr), + (_setStateMachineThisVar, _setStateMachineStateVar, setStateMachineBody), + (_afterCodeThisVar, afterCodeBody)) = + info + + CheckExprNoByrefs cenv TailCall.No moveNextExpr + CheckExprNoByrefs cenv TailCall.No setStateMachineBody + CheckExprNoByrefs cenv TailCall.No afterCodeBody + +and CheckObjectExpr cenv (ty, superInitCall, overrides, iimpls) = + CheckExprNoByrefs cenv TailCall.No superInitCall + CheckMethods cenv (ty, overrides) + CheckInterfaceImpls cenv iimpls + +and CheckFSharpBaseCall cenv (v, f, rest) : unit = + let memberInfo = Option.get v.MemberInfo + + if memberInfo.MemberFlags.IsDispatchSlot then + () + else + CheckExprs cenv rest (mkArgsForAppliedExpr true rest f) TailCall.No + +and CheckILBaseCall cenv rest : unit = CheckExprsPermitByRefLike cenv rest + +and CheckApplication cenv (f, argsl) (tailCall: TailCall) : unit = + CheckExprNoByrefs cenv tailCall f + + let hasReceiver = + match f with + | Expr.Val (vref, _, _) when vref.IsInstanceMember && not argsl.IsEmpty -> true + | _ -> false + + let ctxts = mkArgsForAppliedExpr false argsl f + + if hasReceiver then + CheckCallWithReceiver cenv argsl ctxts + else + CheckCall cenv argsl ctxts tailCall + +and CheckLambda cenv expr (argvs, m, bodyTy) (tailCall: TailCall) = + let valReprInfo = + ValReprInfo([], [ argvs |> List.map (fun _ -> ValReprInfo.unnamedTopArg1) ], ValReprInfo.unnamedRetVal) + + let ty = mkMultiLambdaTy cenv.g m argvs bodyTy in + CheckLambdas false None cenv false valReprInfo tailCall.AtExprLambda false expr m ty PermitByRefExpr.Yes + +and CheckTyLambda cenv expr (tps, m, bodyTy) (tailCall: TailCall) = + let valReprInfo = + ValReprInfo(ValReprInfo.InferTyparInfo tps, [], ValReprInfo.unnamedRetVal) + + let ty = mkForallTyIfNeeded tps bodyTy in + CheckLambdas false None cenv false valReprInfo tailCall.AtExprLambda false expr m ty PermitByRefExpr.Yes + +and CheckMatch cenv ctxt (dtree, targets) tailCall = + CheckDecisionTree cenv dtree + CheckDecisionTreeTargets cenv targets ctxt tailCall + +and CheckLetRec cenv (binds, bodyExpr) tailCall = + CheckBindings cenv binds + CheckExprNoByrefs cenv tailCall bodyExpr + +and CheckStaticOptimization cenv (e2, e3) = + CheckExprNoByrefs cenv TailCall.No e2 + CheckExprNoByrefs cenv TailCall.No e3 + +and CheckMethods cenv (ty, methods) = + methods |> List.iter (CheckMethod cenv ty) + +and CheckMethod cenv _ty (TObjExprMethod (_, _, _tps, _vs, body, _m)) = + let tailCall = + match stripDebugPoints body with + | Expr.App _ as a -> TailCall.YesFromExpr cenv.g a + | _ -> TailCall.No + + CheckExpr cenv body PermitByRefExpr.YesReturnableNonLocal tailCall + +and CheckInterfaceImpls cenv l = + l |> List.iter (CheckInterfaceImpl cenv) + +and CheckInterfaceImpl cenv overrides = CheckMethods cenv overrides + +and CheckExprOp cenv (op, tyargs, args, m) ctxt : unit = + let g = cenv.g + + // Special cases + match op, tyargs, args with + // Handle these as special cases since mutables are allowed inside their bodies + | TOp.While _, _, [ Expr.Lambda (_, _, _, [ _ ], e1, _, _); Expr.Lambda (_, _, _, [ _ ], e2, _, _) ] -> + CheckExprsNoByRefLike cenv [ e1; e2 ] + + | TOp.TryFinally _, [ _ ], [ Expr.Lambda (_, _, _, [ _ ], e1, _, _); Expr.Lambda (_, _, _, [ _ ], e2, _, _) ] -> + CheckExpr cenv e1 ctxt TailCall.No // result of a try/finally can be a byref if in a position where the overall expression is can be a byref + CheckExprNoByrefs cenv TailCall.No e2 + + | TOp.IntegerForLoop _, + _, + [ Expr.Lambda (_, _, _, [ _ ], e1, _, _); Expr.Lambda (_, _, _, [ _ ], e2, _, _); Expr.Lambda (_, _, _, [ _ ], e3, _, _) ] -> + CheckExprsNoByRefLike cenv [ e1; e2; e3 ] + + | TOp.TryWith _, + [ _ ], + [ Expr.Lambda (_, _, _, [ _ ], e1, _, _); Expr.Lambda (_, _, _, [ _ ], _e2, _, _); Expr.Lambda (_, _, _, [ _ ], e3, _, _) ] -> + CheckExpr cenv e1 ctxt TailCall.No // result of a try/catch can be a byref if in a position where the overall expression is can be a byref + // [(* e2; -- don't check filter body - duplicates logic in 'catch' body *) e3] + CheckExpr cenv e3 ctxt TailCall.No // result of a try/catch can be a byref if in a position where the overall expression is can be a byref + + | TOp.ILCall (_, _, _, _, _, _, _, ilMethRef, _enclTypeInst, _methInst, retTypes), _, _ -> + + let hasReceiver = + (ilMethRef.CallingConv.IsInstance || ilMethRef.CallingConv.IsInstanceExplicit) + && not args.IsEmpty + + let argContexts = List.init args.Length (fun _ -> PermitByRefExpr.Yes) + + match retTypes with + | [ ty ] when ctxt.PermitOnlyReturnable && isByrefLikeTy g m ty -> + if hasReceiver then + CheckCallWithReceiver cenv args argContexts + else + CheckCall cenv args argContexts TailCall.No + | _ -> + if hasReceiver then + CheckCallWithReceiver cenv args argContexts + else + CheckCall cenv args argContexts TailCall.No + + | TOp.Tuple tupInfo, _, _ when not (evalTupInfoIsStruct tupInfo) -> + match ctxt with + | PermitByRefExpr.YesTupleOfArgs _nArity -> + // This tuple should not be generated. The known function arity + // means it just bundles arguments. + CheckExprsPermitByRefLike cenv args + | _ -> CheckExprsNoByRefLike cenv args + + | TOp.LValueOp (LAddrOf _, _vref), _, _ -> CheckExprsNoByRefLike cenv args + + | TOp.LValueOp (LByrefSet, _vref), _, [ _arg ] -> () + + | TOp.LValueOp (LByrefGet, _vref), _, [] -> () + + | TOp.LValueOp (LSet, _vref), _, [ _arg ] -> () + + | TOp.AnonRecdGet _, _, [ arg1 ] + | TOp.TupleFieldGet _, _, [ arg1 ] -> CheckExprsPermitByRefLike cenv [ arg1 ] + + | TOp.ValFieldGet _rf, _, [ arg1 ] -> CheckExprsPermitByRefLike cenv [ arg1 ] + + | TOp.ValFieldSet _rf, _, [ _arg1; _arg2 ] -> () + + | TOp.Coerce, [ tgtTy; srcTy ], [ x ] -> + let tailCall = TailCall.YesFromExpr cenv.g x + + if TypeDefinitelySubsumesTypeNoCoercion 0 g cenv.amap m tgtTy srcTy then + CheckExpr cenv x ctxt tailCall + else + CheckExprNoByrefs cenv tailCall x + + | TOp.Reraise, [ _ty1 ], [] -> () + + // Check get of static field + | TOp.ValFieldGetAddr (_rfref, _readonly), _tyargs, [] -> () + + // Check get of instance field + | TOp.ValFieldGetAddr (_rfref, _readonly), _tyargs, [ obj ] -> + // Recursively check in same ctxt, e.g. if at PermitOnlyReturnable the obj arg must also be returnable + CheckExpr cenv obj ctxt TailCall.No + + | TOp.UnionCaseFieldGet _, _, [ arg1 ] -> CheckExprPermitByRefLike cenv arg1 + + | TOp.UnionCaseTagGet _, _, [ arg1 ] -> CheckExprPermitByRefLike cenv arg1 // allow byref - it may be address-of-struct + + | TOp.UnionCaseFieldGetAddr (_uref, _idx, _readonly), _tyargs, [ obj ] -> + // Recursively check in same ctxt, e.g. if at PermitOnlyReturnable the obj arg must also be returnable + CheckExpr cenv obj ctxt TailCall.No + + | TOp.ILAsm (instrs, _retTypes), _, _ -> + match instrs, args with + // Write a .NET instance field + | [ I_stfld (_alignment, _vol, _fspec) ], _ -> + match args with + | [ _; rhs ] -> CheckExprNoByrefs cenv TailCall.No rhs + | _ -> () + + // permit byref for lhs lvalue + // permit byref for rhs lvalue (field would have to have ByRefLike type, i.e. be a field in another ByRefLike type) + CheckExprsPermitByRefLike cenv args + + // Read a .NET instance field + | [ I_ldfld (_alignment, _vol, _fspec) ], _ -> + // permit byref for lhs lvalue + CheckExprsPermitByRefLike cenv args + + // Read a .NET instance field + | [ I_ldfld (_alignment, _vol, _fspec); AI_nop ], _ -> + // permit byref for lhs lvalue of readonly value + CheckExprsPermitByRefLike cenv args + + | [ I_ldsflda _fspec ], [] -> () + + | [ I_ldflda _fspec ], [ obj ] -> + + // Recursively check in same ctxt, e.g. if at PermitOnlyReturnable the obj arg must also be returnable + CheckExpr cenv obj ctxt TailCall.No + + | [ I_ldelema (_, _isNativePtr, _, _) ], lhsArray :: indices -> + // permit byref for lhs lvalue + CheckExprPermitByRefLike cenv lhsArray + CheckExprsNoByRefLike cenv indices + + | [ AI_conv _ ], _ -> + // permit byref for args to conv + CheckExprsPermitByRefLike cenv args + + | _ -> CheckExprsNoByRefLike cenv args + + | TOp.TraitCall _, _, _ -> + // allow args to be byref here + CheckExprsPermitByRefLike cenv args + + | TOp.Recd _, _, _ -> CheckExprsPermitByRefLike cenv args + + | _ -> CheckExprsNoByRefLike cenv args + +and CheckLambdas + isTop + (memberVal: Val option) + cenv + inlined + valReprInfo + (tailCall: TailCall) + alwaysCheckNoReraise + expr + mOrig + ety + ctxt + : unit = + let g = cenv.g + + // The valReprInfo here says we are _guaranteeing_ to compile a function value + // as a .NET method with precisely the corresponding argument counts. + match stripDebugPoints expr with + | Expr.TyChoose (_tps, e1, m) -> CheckLambdas isTop memberVal cenv inlined valReprInfo tailCall alwaysCheckNoReraise e1 m ety ctxt + + | Expr.Lambda (_, _, _, _, _, m, _) + | Expr.TyLambda (_, _, _, m, _) -> + let _tps, _ctorThisValOpt, _baseValOpt, _vsl, body, bodyTy = + destLambdaWithValReprInfo g cenv.amap valReprInfo (expr, ety) + + // Check the body of the lambda + if isTop && not g.compilingFSharpCore && isByrefLikeTy g m bodyTy then + // allow byref to occur as return position for byref-typed top level function or method + CheckExprPermitReturnableByRef cenv body + else + CheckExprNoByrefs cenv tailCall body + + // This path is for expression bindings that are not actually lambdas + | _ -> + let m = mOrig + + if not inlined && (isByrefLikeTy g m ety || isNativePtrTy g ety) then + // allow byref to occur as RHS of byref binding. + CheckExpr cenv expr ctxt tailCall + else + CheckExprNoByrefs cenv tailCall expr + +and CheckExprs cenv exprs ctxts (tailCall: TailCall) : unit = + let ctxts = Array.ofList ctxts + + let argArity i = + if i < ctxts.Length then ctxts[i] else PermitByRefExpr.No + + exprs + |> List.mapi (fun i exp -> CheckExpr cenv exp (argArity i) tailCall) + |> ignore + +and CheckExprsNoByRefLike cenv exprs : unit = + for expr in exprs do + CheckExprNoByrefs cenv TailCall.No expr + +and CheckExprsPermitByRefLike cenv exprs : unit = + exprs |> List.map (CheckExprPermitByRefLike cenv) |> ignore + +and CheckExprPermitByRefLike cenv expr : unit = + CheckExpr cenv expr PermitByRefExpr.Yes TailCall.No + +and CheckExprPermitReturnableByRef cenv expr : unit = + CheckExpr cenv expr PermitByRefExpr.YesReturnable TailCall.No + +and CheckDecisionTreeTargets cenv targets ctxt (tailCall: TailCall) = + targets + |> Array.map (CheckDecisionTreeTarget cenv tailCall ctxt) + |> List.ofArray + |> ignore + +and CheckDecisionTreeTarget cenv (tailCall: TailCall) ctxt (TTarget (_vs, targetExpr, _)) : unit = CheckExpr cenv targetExpr ctxt tailCall + +and CheckDecisionTree cenv dtree = + match dtree with + | TDSuccess (resultExprs, _) -> CheckExprsNoByRefLike cenv resultExprs + | TDBind (bind, rest) -> + CheckBinding cenv false PermitByRefExpr.Yes bind + CheckDecisionTree cenv rest + | TDSwitch (inpExpr, cases, dflt, _m) -> CheckDecisionTreeSwitch cenv (inpExpr, cases, dflt) + +and CheckDecisionTreeSwitch cenv (inpExpr, cases, dflt) = + CheckExprPermitByRefLike cenv inpExpr // can be byref for struct union switch + + for TCase (discrim, dtree) in cases do + CheckDecisionTreeTest cenv discrim + CheckDecisionTree cenv dtree + + dflt |> Option.iter (CheckDecisionTree cenv) + +and CheckDecisionTreeTest cenv discrim = + match discrim with + | DecisionTreeTest.ActivePatternCase (exp, _, _, _, _, _) -> CheckExprNoByrefs cenv TailCall.No exp + | _ -> () + +and CheckBinding cenv alwaysCheckNoReraise ctxt (TBind (v, bindRhs, _) as bind) : unit = + let g = cenv.g + let isTop = Option.isSome bind.Var.ValReprInfo + let tailCall = TailCall.YesFromVal g bind.Var + + let valReprInfo = + match bind.Var.ValReprInfo with + | Some info -> info + | _ -> ValReprInfo.emptyValData + + CheckLambdas isTop (Some v) cenv v.MustInline valReprInfo tailCall alwaysCheckNoReraise bindRhs v.Range v.Type ctxt + +and CheckBindings cenv binds = + for bind in binds do + CheckBinding cenv false PermitByRefExpr.Yes bind + +let CheckModuleBinding cenv (isRec: bool) (TBind _ as bind) = + // Check that a let binding to the result of a rec expression is not inside the rec expression + // see test ``Warn for invalid tailcalls in seq expression because of bind`` for an example + // see test ``Warn successfully for rec call in binding`` for an example + if cenv.g.langVersion.SupportsFeature LanguageFeature.WarningWhenTailRecAttributeButNonTailRecUsage then + match bind.Expr with + | Expr.TyLambda (bodyExpr = bodyExpr) + | Expr.Lambda (bodyExpr = bodyExpr) -> + let rec checkTailCall (insideSubBinding: bool) expr = + match expr with + | Expr.Val (valRef = valRef; range = m) -> + if isRec && insideSubBinding && cenv.mustTailCall.Contains valRef.Deref then + warning (Error(FSComp.SR.chkNotTailRecursive valRef.DisplayName, m)) + | Expr.App (funcExpr = funcExpr; args = argExprs) -> + checkTailCall insideSubBinding funcExpr + argExprs |> List.iter (checkTailCall insideSubBinding) + | Expr.Link exprRef -> checkTailCall insideSubBinding exprRef.Value + | Expr.Lambda (bodyExpr = bodyExpr) -> checkTailCall insideSubBinding bodyExpr + | Expr.DebugPoint (_debugPointAtLeafExpr, expr) -> checkTailCall insideSubBinding expr + | Expr.Let (binding = binding; bodyExpr = bodyExpr) -> + checkTailCall true binding.Expr + + let warnForBodyExpr = + match stripDebugPoints bodyExpr with + | Expr.Op _ -> true // ToDo: too crude of a check? + | _ -> false + + checkTailCall warnForBodyExpr bodyExpr + | Expr.Match (targets = decisionTreeTargets) -> + decisionTreeTargets + |> Array.iter (fun target -> checkTailCall insideSubBinding target.TargetExpression) + | Expr.Op (args = exprs) -> exprs |> Seq.iter (checkTailCall insideSubBinding) + | _ -> () + + checkTailCall false bodyExpr + | _ -> () + + CheckBinding cenv true PermitByRefExpr.Yes bind + +//-------------------------------------------------------------------------- +// check modules +//-------------------------------------------------------------------------- + +let rec CheckDefnsInModule cenv mdefs = + for mdef in mdefs do + CheckDefnInModule cenv mdef + +and CheckDefnInModule cenv mdef = + match mdef with + | TMDefRec (isRec, _opens, _tycons, mspecs, _m) -> + let cenv = + if isRec then + let vals = allValsOfModDef mdef + + let mustTailCall = + Seq.fold + (fun mustTailCall (v: Val) -> + if HasFSharpAttribute cenv.g cenv.g.attrib_TailCallAttribute v.Attribs then + let newSet = Zset.add v mustTailCall + newSet + else + mustTailCall) + cenv.mustTailCall + vals + + { cenv with + mustTailCall = mustTailCall + } + else + cenv + + List.iter (CheckModuleSpec cenv isRec) mspecs + | TMDefLet (bind, _m) -> CheckModuleBinding cenv false bind + | TMDefOpens _ -> () + | TMDefDo (e, _m) -> + let tailCall = + match stripDebugPoints e with + | Expr.App (funcExpr = funcExpr) -> + match funcExpr with + | ValUseAtApp (vref, _valUseFlags) -> TailCall.YesFromVal cenv.g vref.Deref + | _ -> TailCall.No + | _ -> TailCall.No + + CheckExprNoByrefs cenv tailCall e + | TMDefs defs -> CheckDefnsInModule cenv defs + +and CheckModuleSpec cenv isRec mbind = + match mbind with + | ModuleOrNamespaceBinding.Binding bind -> + if cenv.mustTailCall.Contains bind.Var then + CheckModuleBinding cenv isRec bind + + | ModuleOrNamespaceBinding.Module (_mspec, rhs) -> CheckDefnInModule cenv rhs + +let CheckImplFile (g, amap, reportErrors, implFileContents) = + let cenv = + { + g = g + reportErrors = reportErrors + stackGuard = StackGuard(PostInferenceChecksStackGuardDepth, "CheckImplFile") + amap = amap + mustTailCall = Zset.empty valOrder + } + + CheckDefnInModule cenv implFileContents diff --git a/src/fcs-fable/src/Compiler/Checking/TailCallChecks.fsi b/src/fcs-fable/src/Compiler/Checking/TailCallChecks.fsi new file mode 100644 index 0000000000..2fa3b16375 --- /dev/null +++ b/src/fcs-fable/src/Compiler/Checking/TailCallChecks.fsi @@ -0,0 +1,13 @@ +module internal FSharp.Compiler.TailCallChecks + +open FSharp.Compiler +open FSharp.Compiler.TcGlobals +open FSharp.Compiler.TypedTree + +/// Perform the TailCall analysis on the optimized TAST for a file. +/// The TAST is traversed analogously to the PostInferenceChecks phase. +/// For functions that are annotated with the [] attribute, a warning is emmitted if they are called in a +/// non-tailrecursive manner in the recursive scope of the function. +/// The ModuleOrNamespaceContents aren't mutated in any way by performing this check. +val CheckImplFile: + g: TcGlobals * amap: Import.ImportMap * reportErrors: bool * implFileContents: ModuleOrNamespaceContents -> unit diff --git a/src/fcs-fable/src/Compiler/Checking/TypeHierarchy.fs b/src/fcs-fable/src/Compiler/Checking/TypeHierarchy.fs index feaaf09e71..f6949c707d 100644 --- a/src/fcs-fable/src/Compiler/Checking/TypeHierarchy.fs +++ b/src/fcs-fable/src/Compiler/Checking/TypeHierarchy.fs @@ -41,44 +41,47 @@ let GetSuperTypeOfType g amap m ty = let ty = stripTyEqnsAndMeasureEqns g ty #endif - match metadataOfTy g ty with + let resBeforeNull = + match metadataOfTy g ty with #if !NO_TYPEPROVIDERS - | ProvidedTypeMetadata info -> - let st = info.ProvidedType - let superOpt = st.PApplyOption((fun st -> match st.BaseType with null -> None | t -> Some t), m) - match superOpt with - | None -> None - | Some super -> Some(ImportProvidedType amap m super) + | ProvidedTypeMetadata info -> + let st = info.ProvidedType + let superOpt = st.PApplyOption((fun st -> match st.BaseType with null -> None | t -> Some t), m) + match superOpt with + | None -> None + | Some super -> Some(ImportProvidedType amap m super) #endif - | ILTypeMetadata (TILObjectReprData(scoref, _, tdef)) -> - let tinst = argsOfAppTy g ty - match tdef.Extends with - | None -> None - | Some ilTy -> Some (RescopeAndImportILType scoref amap m tinst ilTy) - - | FSharpOrArrayOrByrefOrTupleOrExnTypeMetadata -> - if isFSharpObjModelTy g ty || isFSharpExceptionTy g ty then - let tcref = tcrefOfAppTy g ty - Some (instType (mkInstForAppTy g ty) (superOfTycon g tcref.Deref)) - elif isArrayTy g ty then - Some g.system_Array_ty - elif isRefTy g ty && not (isObjTy g ty) then - Some g.obj_ty - elif isStructTupleTy g ty then - Some g.system_Value_ty - elif isFSharpStructOrEnumTy g ty then - if isFSharpEnumTy g ty then - Some g.system_Enum_ty - else + | ILTypeMetadata (TILObjectReprData(scoref, _, tdef)) -> + let tinst = argsOfAppTy g ty + match tdef.Extends with + | None -> None + | Some ilTy -> Some (RescopeAndImportILType scoref amap m tinst ilTy) + + | FSharpOrArrayOrByrefOrTupleOrExnTypeMetadata -> + if isFSharpObjModelTy g ty || isFSharpExceptionTy g ty then + let tcref = tcrefOfAppTy g ty + Some (instType (mkInstForAppTy g ty) (superOfTycon g tcref.Deref)) + elif isArrayTy g ty then + Some g.system_Array_ty + elif isRefTy g ty && not (isObjTy g ty) then + Some g.obj_ty + elif isStructTupleTy g ty then + Some g.system_Value_ty + elif isFSharpStructOrEnumTy g ty then + if isFSharpEnumTy g ty then + Some g.system_Enum_ty + else + Some g.system_Value_ty + elif isStructAnonRecdTy g ty then Some g.system_Value_ty - elif isStructAnonRecdTy g ty then - Some g.system_Value_ty - elif isAnonRecdTy g ty then - Some g.obj_ty - elif isRecdTy g ty || isUnionTy g ty then - Some g.obj_ty - else - None + elif isAnonRecdTy g ty then + Some g.obj_ty + elif isRecdTy g ty || isUnionTy g ty then + Some g.obj_ty + else + None + + resBeforeNull /// Make a type for System.Collections.Generic.IList let mkSystemCollectionsGenericIListTy (g: TcGlobals) ty = diff --git a/src/fcs-fable/src/Compiler/Checking/TypeRelations.fs b/src/fcs-fable/src/Compiler/Checking/TypeRelations.fs index 90d5bed1fc..49afd4825b 100644 --- a/src/fcs-fable/src/Compiler/Checking/TypeRelations.fs +++ b/src/fcs-fable/src/Compiler/Checking/TypeRelations.fs @@ -4,6 +4,7 @@ /// constraint solving and method overload resolution. module internal FSharp.Compiler.TypeRelations +open FSharp.Compiler.Features open Internal.Utilities.Collections open Internal.Utilities.Library open FSharp.Compiler.DiagnosticsLogger @@ -134,50 +135,58 @@ let rec TypeFeasiblySubsumesType ndeep g amap m ty1 canCoerce ty2 = /// Here x gets a generalized type "list<'T>". let ChooseTyparSolutionAndRange (g: TcGlobals) amap (tp:Typar) = let m = tp.Range - let maxTy, m = + let (maxTy, isRefined), m = let initialTy = match tp.Kind with | TyparKind.Type -> g.obj_ty | TyparKind.Measure -> TType_measure Measure.One // Loop through the constraints computing the lub - ((initialTy, m), tp.Constraints) ||> List.fold (fun (maxTy, _) tpc -> + (((initialTy, false), m), tp.Constraints) ||> List.fold (fun ((maxTy, isRefined), _) tpc -> let join m x = - if TypeFeasiblySubsumesType 0 g amap m x CanCoerce maxTy then maxTy - elif TypeFeasiblySubsumesType 0 g amap m maxTy CanCoerce x then x - else errorR(Error(FSComp.SR.typrelCannotResolveImplicitGenericInstantiation((DebugPrint.showType x), (DebugPrint.showType maxTy)), m)); maxTy + if TypeFeasiblySubsumesType 0 g amap m x CanCoerce maxTy then maxTy, isRefined + elif TypeFeasiblySubsumesType 0 g amap m maxTy CanCoerce x then x, true + else errorR(Error(FSComp.SR.typrelCannotResolveImplicitGenericInstantiation((DebugPrint.showType x), (DebugPrint.showType maxTy)), m)); maxTy, isRefined // Don't continue if an error occurred and we set the value eagerly - if tp.IsSolved then maxTy, m else + if tp.IsSolved then (maxTy, isRefined), m else match tpc with | TyparConstraint.CoercesTo(x, m) -> join m x, m | TyparConstraint.MayResolveMember(_traitInfo, m) -> - maxTy, m + (maxTy, isRefined), m | TyparConstraint.SimpleChoice(_, m) -> errorR(Error(FSComp.SR.typrelCannotResolveAmbiguityInPrintf(), m)) - maxTy, m + (maxTy, isRefined), m | TyparConstraint.SupportsNull m -> - maxTy, m + (maxTy, isRefined), m | TyparConstraint.SupportsComparison m -> join m g.mk_IComparable_ty, m | TyparConstraint.SupportsEquality m -> - maxTy, m + (maxTy, isRefined), m | TyparConstraint.IsEnum(_, m) -> errorR(Error(FSComp.SR.typrelCannotResolveAmbiguityInEnum(), m)) - maxTy, m + (maxTy, isRefined), m | TyparConstraint.IsDelegate(_, _, m) -> errorR(Error(FSComp.SR.typrelCannotResolveAmbiguityInDelegate(), m)) - maxTy, m + (maxTy, isRefined), m | TyparConstraint.IsNonNullableStruct m -> join m g.int_ty, m | TyparConstraint.IsUnmanaged m -> errorR(Error(FSComp.SR.typrelCannotResolveAmbiguityInUnmanaged(), m)) - maxTy, m + (maxTy, isRefined), m | TyparConstraint.RequiresDefaultConstructor m -> - maxTy, m + (maxTy, isRefined), m | TyparConstraint.IsReferenceType m -> - maxTy, m + (maxTy, isRefined), m | TyparConstraint.DefaultsTo(_priority, _ty, m) -> - maxTy, m) + (maxTy, isRefined), m) + + if g.langVersion.SupportsFeature LanguageFeature.DiagnosticForObjInference then + match tp.Kind with + | TyparKind.Type -> + if not isRefined then + informationalWarning(Error(FSComp.SR.typrelNeverRefinedAwayFromTop(), m)) + | TyparKind.Measure -> () + maxTy, m let ChooseTyparSolution g amap tp = diff --git a/src/fcs-fable/src/Compiler/Checking/import.fs b/src/fcs-fable/src/Compiler/Checking/import.fs index 03e1380124..23edca4faf 100644 --- a/src/fcs-fable/src/Compiler/Checking/import.fs +++ b/src/fcs-fable/src/Compiler/Checking/import.fs @@ -38,7 +38,7 @@ type AssemblyLoader = /// Get a flag indicating if an assembly is a provided assembly, plus the /// table of information recording remappings from type names in the provided assembly to type /// names in the statically linked, embedded assembly. - abstract GetProvidedAssemblyInfo : CompilationThreadToken * range * Tainted -> bool * ProvidedAssemblyStaticLinkingMap option + abstract GetProvidedAssemblyInfo : CompilationThreadToken * range * Tainted -> bool * ProvidedAssemblyStaticLinkingMap option /// Record a root for a [] type to help guide static linking & type relocation abstract RecordGeneratedTypeRoot : ProviderGeneratedType -> unit @@ -183,16 +183,24 @@ let rec ImportILType (env: ImportMap) m tinst ty = ImportTyconRefApp env tcref inst | ILType.Byref ty -> mkByrefTy env.g (ImportILType env m tinst ty) + | ILType.Ptr ILType.Void when env.g.voidptr_tcr.CanDeref -> mkVoidPtrTy env.g + | ILType.Ptr ty -> mkNativePtrTy env.g (ImportILType env m tinst ty) + | ILType.FunctionPointer _ -> env.g.nativeint_ty (* failwith "cannot import this kind of type (ptr, fptr)" *) + | ILType.Modified(_, _, ty) -> // All custom modifiers are ignored ImportILType env m tinst ty + | ILType.TypeVar u16 -> - try List.item (int u16) tinst - with _ -> - error(Error(FSComp.SR.impNotEnoughTypeParamsInScopeWhileImporting(), m)) + let ty = + try + List.item (int u16) tinst + with _ -> + error(Error(FSComp.SR.impNotEnoughTypeParamsInScopeWhileImporting(), m)) + ty /// Determines if an IL type can be imported as an F# type let rec CanImportILType (env: ImportMap) m ty = @@ -354,15 +362,15 @@ let rec ImportProvidedType (env: ImportMap) (m: range) (* (tinst: TypeInst) *) ( /// Import a provided method reference as an Abstract IL method reference let ImportProvidedMethodBaseAsILMethodRef (env: ImportMap) (m: range) (mbase: Tainted) = - let tref = GetILTypeRefOfProvidedType (mbase.PApply((fun mbase -> mbase.DeclaringType), m), m) + let tref = GetILTypeRefOfProvidedType (mbase.PApply((fun mbase -> nonNull mbase.DeclaringType), m), m) let mbase = // Find the formal member corresponding to the called member match mbase.OfType() with | Some minfo when - minfo.PUntaint((fun minfo -> minfo.IsGenericMethod|| minfo.DeclaringType.IsGenericType), m) -> + minfo.PUntaint((fun minfo -> minfo.IsGenericMethod|| (nonNull minfo.DeclaringType).IsGenericType), m) -> - let declaringType = minfo.PApply((fun minfo -> minfo.DeclaringType), m) + let declaringType = minfo.PApply((fun minfo -> nonNull minfo.DeclaringType), m) let declaringGenericTypeDefn = if declaringType.PUntaint((fun t -> t.IsGenericType), m) then @@ -381,8 +389,8 @@ let ImportProvidedMethodBaseAsILMethodRef (env: ImportMap) (m: range) (mbase: Ta error(Error(FSComp.SR.etIncorrectProvidedMethod(DisplayNameOfTypeProvider(minfo.TypeProvider, m), methodName, metadataToken, typeName), m)) | _ -> match mbase.OfType() with - | Some cinfo when cinfo.PUntaint((fun x -> x.DeclaringType.IsGenericType), m) -> - let declaringType = cinfo.PApply((fun x -> x.DeclaringType), m) + | Some cinfo when cinfo.PUntaint((fun x -> (nonNull x.DeclaringType).IsGenericType), m) -> + let declaringType = cinfo.PApply((fun x -> nonNull x.DeclaringType), m) let declaringGenericTypeDefn = declaringType.PApply((fun x -> x.GetGenericTypeDefinition()), m) // We have to find the uninstantiated formal signature corresponding to this instantiated constructor. @@ -451,16 +459,24 @@ let ImportILGenericParameters amap m scoref tinst (gps: ILGenericParameterDefs) match gps with | [] -> [] | _ -> - let amap = amap() + let amap : ImportMap = amap() let tps = gps |> List.map (fun gp -> Construct.NewRigidTypar gp.Name m) let tptys = tps |> List.map mkTyparTy let importInst = tinst@tptys (tps, gps) ||> List.iter2 (fun tp gp -> - let constraints = gp.Constraints |> List.map (fun ilTy -> TyparConstraint.CoercesTo(ImportILType amap m importInst (rescopeILType scoref ilTy), m) ) - let constraints = if gp.HasReferenceTypeConstraint then (TyparConstraint.IsReferenceType(m) :: constraints) else constraints - let constraints = if gp.HasNotNullableValueTypeConstraint then (TyparConstraint.IsNonNullableStruct(m) :: constraints) else constraints - let constraints = if gp.HasDefaultConstructorConstraint then (TyparConstraint.RequiresDefaultConstructor(m) :: constraints) else constraints + let constraints = + [ if gp.CustomAttrs |> TryFindILAttribute amap.g.attrib_IsUnmanagedAttribute then + TyparConstraint.IsUnmanaged(m) + if gp.HasDefaultConstructorConstraint then + TyparConstraint.RequiresDefaultConstructor(m) + if gp.HasNotNullableValueTypeConstraint then + TyparConstraint.IsNonNullableStruct(m) + if gp.HasReferenceTypeConstraint then + TyparConstraint.IsReferenceType(m) + for ilTy in gp.Constraints do + TyparConstraint.CoercesTo(ImportILType amap m importInst (rescopeILType scoref ilTy), m) ] + tp.SetConstraints constraints) tps diff --git a/src/fcs-fable/src/Compiler/Checking/infos.fs b/src/fcs-fable/src/Compiler/Checking/infos.fs index 3e8b26c672..109ed93c1f 100644 --- a/src/fcs-fable/src/Compiler/Checking/infos.fs +++ b/src/fcs-fable/src/Compiler/Checking/infos.fs @@ -75,7 +75,7 @@ type ValRef with let GetCompiledReturnTyOfProvidedMethodInfo amap m (mi: Tainted) = let returnType = if mi.PUntaint((fun mi -> mi.IsConstructor), m) then - mi.PApply((fun mi -> mi.DeclaringType), m) + mi.PApply((fun mi -> nonNull mi.DeclaringType), m) else mi.Coerce(m).PApply((fun mi -> mi.ReturnType), m) let ty = ImportProvidedType amap m returnType if isVoidTy amap.g ty then None else Some ty @@ -344,8 +344,8 @@ type ILFieldInit with /// Compute the ILFieldInit for the given provided constant value for a provided enum type. static member FromProvidedObj m (v: obj) = match v with - | null -> ILFieldInit.Null - | _ -> + | Null -> ILFieldInit.Null + | NonNull v -> let objTy = v.GetType() let v = if objTy.IsEnum then objTy.GetField("value__").GetValue v else v match v with @@ -393,8 +393,8 @@ let OptionalArgInfoOfProvidedParameter (amap: ImportMap) m (provParam : Tainted< /// Compute the ILFieldInit for the given provided constant value for a provided enum type. let GetAndSanityCheckProviderMethod m (mi: Tainted<'T :> ProvidedMemberInfo>) (get : 'T -> ProvidedMethodInfo MaybeNull) err = - match mi.PApply((fun mi -> (get mi :> ProvidedMethodBase)), m) with - | Tainted.Null -> error(Error(err(mi.PUntaint((fun mi -> mi.Name), m), mi.PUntaint((fun mi -> mi.DeclaringType.Name), m)), m)) + match mi.PApply((fun mi -> (get mi :> ProvidedMethodBase MaybeNull)),m) with + | Tainted.Null -> error(Error(err(mi.PUntaint((fun mi -> mi.Name),m),mi.PUntaint((fun mi -> (nonNull mi.DeclaringType).Name), m)), m)) // TODO NULLNESS: type isntantiation should not be needed | meth -> meth /// Try to get an arbitrary ProvidedMethodInfo associated with a property. @@ -404,7 +404,7 @@ let ArbitraryMethodInfoOfPropertyInfo (pi: Tainted) m = elif pi.PUntaint((fun pi -> pi.CanWrite), m) then GetAndSanityCheckProviderMethod m pi (fun pi -> pi.GetSetMethod()) FSComp.SR.etPropertyCanWriteButHasNoSetter else - error(Error(FSComp.SR.etPropertyNeedsCanWriteOrCanRead(pi.PUntaint((fun mi -> mi.Name), m), pi.PUntaint((fun mi -> mi.DeclaringType.Name), m)), m)) + error(Error(FSComp.SR.etPropertyNeedsCanWriteOrCanRead(pi.PUntaint((fun mi -> mi.Name), m), pi.PUntaint((fun mi -> (nonNull mi.DeclaringType).Name), m)), m)) #endif @@ -649,7 +649,7 @@ type MethInfo = | DefaultStructCtor(_, ty) -> ty #if !NO_TYPEPROVIDERS | ProvidedMeth(amap, mi, _, m) -> - ImportProvidedType amap m (mi.PApply((fun mi -> mi.DeclaringType), m)) + ImportProvidedType amap m (mi.PApply((fun mi -> nonNull mi.DeclaringType), m)) #endif /// Get the enclosing type of the method info, using a nominal type for tuple types @@ -1100,6 +1100,21 @@ type MethInfo = member x.GetFSharpReturnType(amap, m, minst) = x.GetCompiledReturnType(amap, m, minst) |> GetFSharpViewOfReturnType amap.g + member x.GetParamNames() = + match x with + | FSMeth (g, _, vref, _) -> + ParamNameAndType.FromMember x.IsCSharpStyleExtensionMember g vref |> List.mapSquared (fun (ParamNameAndType (name, _)) -> name |> Option.map (fun x -> x.idText)) + | ILMeth (ilMethInfo = ilminfo) -> + // A single group of tupled arguments + [ ilminfo.ParamMetadata |> List.map (fun x -> x.Name) ] +#if !NO_TYPEPROVIDERS + | ProvidedMeth (_, mi, _, m) -> + // A single group of tupled arguments + [ [ for p in mi.PApplyArray((fun mi -> mi.GetParameters()), "GetParameters", m) do + yield p.PUntaint((fun p -> Some p.Name), m) ] ] +#endif + | _ -> [] + /// Get the parameter types of a method info member x.GetParamTypes(amap, m, minst) = match x with @@ -1137,7 +1152,7 @@ type MethInfo = | DefaultStructCtor _ -> [] #if !NO_TYPEPROVIDERS | ProvidedMeth(amap, mi, _, m) -> - if x.IsInstance then [ ImportProvidedType amap m (mi.PApply((fun mi -> mi.DeclaringType), m)) ] // find the type of the 'this' argument + if x.IsInstance then [ ImportProvidedType amap m (mi.PApply((fun mi -> nonNull mi.DeclaringType), m)) ] // find the type of the 'this' argument else [] #endif @@ -1296,7 +1311,7 @@ type MethInfo = let paramTy = match p.PApply((fun p -> p.ParameterType), m) with | Tainted.Null -> amap.g.unit_ty - | parameterType -> ImportProvidedType amap m parameterType + | Tainted.NonNull parameterType -> ImportProvidedType amap m parameterType yield ParamNameAndType(paramName, paramTy) ] ] #endif @@ -1349,7 +1364,7 @@ type ILFieldInfo = match x with | ILFieldInfo(tinfo, _) -> tinfo.ToType #if !NO_TYPEPROVIDERS - | ProvidedField(amap, fi, m) -> (ImportProvidedType amap m (fi.PApply((fun fi -> fi.DeclaringType), m))) + | ProvidedField(amap, fi, m) -> (ImportProvidedType amap m (fi.PApply((fun fi -> nonNull fi.DeclaringType), m))) #endif member x.ApparentEnclosingAppType = x.ApparentEnclosingType @@ -1370,7 +1385,7 @@ type ILFieldInfo = match x with | ILFieldInfo(tinfo, _) -> tinfo.ILTypeRef #if !NO_TYPEPROVIDERS - | ProvidedField(amap, fi, m) -> (ImportProvidedTypeAsILType amap m (fi.PApply((fun fi -> fi.DeclaringType), m))).TypeRef + | ProvidedField(amap, fi, m) -> (ImportProvidedTypeAsILType amap m (fi.PApply((fun fi -> nonNull fi.DeclaringType), m))).TypeRef #endif /// Get the scope used to interpret IL metadata @@ -1664,7 +1679,7 @@ type PropInfo = | FSProp(_, ty, _, _) -> ty #if !NO_TYPEPROVIDERS | ProvidedProp(amap, pi, m) -> - ImportProvidedType amap m (pi.PApply((fun pi -> pi.DeclaringType), m)) + ImportProvidedType amap m (pi.PApply((fun pi -> nonNull pi.DeclaringType), m)) #endif /// Get the enclosing type of the method info, using a nominal type for tuple types @@ -2112,7 +2127,7 @@ type EventInfo = | ILEvent ileinfo -> ileinfo.ApparentEnclosingType | FSEvent (_, p, _, _) -> p.ApparentEnclosingType #if !NO_TYPEPROVIDERS - | ProvidedEvent (amap, ei, m) -> ImportProvidedType amap m (ei.PApply((fun ei -> ei.DeclaringType), m)) + | ProvidedEvent (amap, ei, m) -> ImportProvidedType amap m (ei.PApply((fun ei -> nonNull ei.DeclaringType), m)) #endif /// Get the enclosing type of the method info, using a nominal type for tuple types @@ -2355,4 +2370,20 @@ let PropInfosEquivByNameAndSig erasureFlag g amap m (pinfo: PropInfo) (pinfo2: P let SettersOfPropInfos (pinfos: PropInfo list) = pinfos |> List.choose (fun pinfo -> if pinfo.HasSetter then Some(pinfo.SetterMethod, Some pinfo) else None) -let GettersOfPropInfos (pinfos: PropInfo list) = pinfos |> List.choose (fun pinfo -> if pinfo.HasGetter then Some(pinfo.GetterMethod, Some pinfo) else None) \ No newline at end of file +let GettersOfPropInfos (pinfos: PropInfo list) = pinfos |> List.choose (fun pinfo -> if pinfo.HasGetter then Some(pinfo.GetterMethod, Some pinfo) else None) + +let (|DifferentGetterAndSetter|_|) (pinfo: PropInfo) = + if not (pinfo.HasGetter && pinfo.HasSetter) then + None + else + match pinfo.GetterMethod.ArbitraryValRef, pinfo.SetterMethod.ArbitraryValRef with + | Some getValRef, Some setValRef -> + if getValRef.Accessibility <> setValRef.Accessibility then + Some (getValRef, setValRef) + else + match getValRef.ValReprInfo with + | Some getValReprInfo when + // Getter has an index parameter + getValReprInfo.TotalArgCount > 1 -> Some (getValRef, setValRef) + | _ -> None + | _ -> None \ No newline at end of file diff --git a/src/fcs-fable/src/Compiler/Checking/infos.fsi b/src/fcs-fable/src/Compiler/Checking/infos.fsi index 571425a446..992e6b58a7 100644 --- a/src/fcs-fable/src/Compiler/Checking/infos.fsi +++ b/src/fcs-fable/src/Compiler/Checking/infos.fsi @@ -517,6 +517,9 @@ type MethInfo = /// Get the ParamData objects for the parameters of a MethInfo member GetParamDatas: amap: ImportMap * m: range * minst: TType list -> (ParamData * Attribs) list list + /// Get the parameter names of a MethInfo + member GetParamNames: unit -> string option list list + /// Get the parameter types of a method info member GetParamTypes: amap: ImportMap * m: range * minst: TType list -> TType list list @@ -1086,3 +1089,5 @@ val PropInfosEquivByNameAndSig: val SettersOfPropInfos: pinfos: PropInfo list -> (MethInfo * PropInfo option) list val GettersOfPropInfos: pinfos: PropInfo list -> (MethInfo * PropInfo option) list + +val (|DifferentGetterAndSetter|_|): pinfo: PropInfo -> (ValRef * ValRef) option diff --git a/src/fcs-fable/src/Compiler/CodeGen/EraseUnions.fs b/src/fcs-fable/src/Compiler/CodeGen/EraseUnions.fs index 6781518fef..d00c45f2df 100644 --- a/src/fcs-fable/src/Compiler/CodeGen/EraseUnions.fs +++ b/src/fcs-fable/src/Compiler/CodeGen/EraseUnions.fs @@ -3,9 +3,12 @@ /// Erase discriminated unions. module internal FSharp.Compiler.AbstractIL.ILX.EraseUnions +open FSharp.Compiler.IlxGenSupport + open System.Collections.Generic open System.Reflection open Internal.Utilities.Library +open FSharp.Compiler.TcGlobals open FSharp.Compiler.AbstractIL.IL open FSharp.Compiler.AbstractIL.ILX.Types @@ -275,6 +278,9 @@ let mkRuntimeTypeDiscriminateThen ilg avoidHelpers cuspec alt altName altTy afte let mkGetTagFromField ilg cuspec baseTy = mkNormalLdfld (refToFieldInTy baseTy (mkTagFieldId ilg cuspec)) +let mkSetTagToField ilg cuspec baseTy = + mkNormalStfld (refToFieldInTy baseTy (mkTagFieldId ilg cuspec)) + let adjustFieldName hasHelpers nm = match hasHelpers, nm with | SpecialFSharpListHelpers, "Head" -> "HeadOrDefault" @@ -331,29 +337,6 @@ let mkTagDiscriminate ilg cuspec _baseTy cidx = let mkTagDiscriminateThen ilg cuspec cidx after = [ mkGetTag ilg cuspec; mkLdcInt32 cidx ] @ mkCeqThen after -/// The compilation for struct unions relies on generating a set of constructors. -/// If necessary some fake types are added to the constructor parameters to distinguish the signature. -let rec extraTysAndInstrsForStructCtor (ilg: ILGlobals) cidx = - match cidx with - | 0 -> [ ilg.typ_Bool ], [ mkLdcInt32 0 ] - | 1 -> [ ilg.typ_Byte ], [ mkLdcInt32 0 ] - | 2 -> [ ilg.typ_SByte ], [ mkLdcInt32 0 ] - | 3 -> [ ilg.typ_Char ], [ mkLdcInt32 0 ] - | 4 -> [ ilg.typ_Int16 ], [ mkLdcInt32 0 ] - | 5 -> [ ilg.typ_Int32 ], [ mkLdcInt32 0 ] - | 6 -> [ ilg.typ_UInt16 ], [ mkLdcInt32 0 ] - | _ -> - let tys, instrs = extraTysAndInstrsForStructCtor ilg (cidx - 7) - (ilg.typ_UInt32 :: tys, mkLdcInt32 0 :: instrs) - -let takesExtraParams (alts: IlxUnionCase[]) = - alts.Length > 1 - && (alts |> Array.exists (fun d -> d.FieldDefs.Length > 0) - || - // Check if not all lengths are distinct - alts |> Array.countBy (fun d -> d.FieldDefs.Length) |> Array.length - <> alts.Length) - let convNewDataInstrInternal ilg cuspec cidx = let alt = altOfUnionSpec cuspec cidx let altTy = tyForAlt cuspec alt @@ -376,27 +359,15 @@ let convNewDataInstrInternal ilg cuspec cidx = instrs @ [ mkNormalNewobj (mkILCtorMethSpecForTy (baseTy, (ctorFieldTys @ tagfields))) ] - elif cuspecRepr.RepresentAlternativeAsStructValue cuspec then + elif + cuspecRepr.RepresentAlternativeAsStructValue cuspec + && cuspecRepr.DiscriminationTechnique cuspec = IntegerTag + then + // Structs with fields should be created using maker methods (mkMakerName), only field-less cases are created this way + assert (alt.IsNullary) let baseTy = baseTyOfUnionSpec cuspec - - let instrs, tagfields = - match cuspecRepr.DiscriminationTechnique cuspec with - | IntegerTag -> [ mkLdcInt32 cidx ], [ mkTagFieldType ilg cuspec ] - | _ -> [], [] - - let ctorFieldTys = alt.FieldTypes |> Array.toList - - let extraTys, extraInstrs = - if takesExtraParams cuspec.AlternativesArray then - extraTysAndInstrsForStructCtor ilg cidx - else - [], [] - - instrs - @ extraInstrs - @ [ - mkNormalNewobj (mkILCtorMethSpecForTy (baseTy, (ctorFieldTys @ tagfields @ extraTys))) - ] + let tagField = [ mkTagFieldType ilg cuspec ] + [ mkLdcInt32 cidx; mkNormalNewobj (mkILCtorMethSpecForTy (baseTy, tagField)) ] else [ mkNormalNewobj (mkILCtorMethSpecForTy (altTy, Array.toList alt.FieldTypes)) ] @@ -411,6 +382,24 @@ let mkNewData ilg (cuspec, cidx) = let alt = altOfUnionSpec cuspec cidx let altName = alt.Name let baseTy = baseTyOfUnionSpec cuspec + + let viaMakerCall () = + [ + mkNormalCall ( + mkILNonGenericStaticMethSpecInTy ( + baseTy, + mkMakerName cuspec altName, + Array.toList alt.FieldTypes, + constFormalFieldTy baseTy + ) + ) + ] + + let viaGetAltNameProperty () = + [ + mkNormalCall (mkILNonGenericStaticMethSpecInTy (baseTy, "get_" + altName, [], constFormalFieldTy baseTy)) + ] + // If helpers exist, use them match cuspec.HasHelpers with | AllHelpers @@ -419,30 +408,13 @@ let mkNewData ilg (cuspec, cidx) = if cuspecRepr.RepresentAlternativeAsNull(cuspec, alt) then [ AI_ldnull ] elif alt.IsNullary then - [ - mkNormalCall (mkILNonGenericStaticMethSpecInTy (baseTy, "get_" + altName, [], constFormalFieldTy baseTy)) - ] + viaGetAltNameProperty () else - [ - mkNormalCall ( - mkILNonGenericStaticMethSpecInTy ( - baseTy, - mkMakerName cuspec altName, - Array.toList alt.FieldTypes, - constFormalFieldTy baseTy - ) - ) - ] + viaMakerCall () - | NoHelpers -> - if cuspecRepr.MaintainPossiblyUniqueConstantFieldForAlternative(cuspec, alt) then - // This method is only available if not AllHelpers. It fetches the unique object for the alternative - // without exposing direct access to the underlying field - [ - mkNormalCall (mkILNonGenericStaticMethSpecInTy (baseTy, "get_" + altName, [], constFormalFieldTy baseTy)) - ] - else - convNewDataInstrInternal ilg cuspec cidx + | NoHelpers when (not alt.IsNullary) && cuspecRepr.RepresentAlternativeAsStructValue cuspec -> viaMakerCall () + | NoHelpers when cuspecRepr.MaintainPossiblyUniqueConstantFieldForAlternative(cuspec, alt) -> viaGetAltNameProperty () + | NoHelpers -> convNewDataInstrInternal ilg cuspec cidx let mkIsData ilg (avoidHelpers, cuspec, cidx) = let alt = altOfUnionSpec cuspec cidx @@ -752,7 +724,7 @@ let convAlternativeDef addFieldGeneratedAttrs, addFieldNeverAttrs, mkDebuggerTypeProxyAttribute) - (ilg: ILGlobals) + (g: TcGlobals) num (td: ILTypeDef) (cud: IlxUnionInfo) @@ -834,12 +806,12 @@ let convAlternativeDef "get_" + mkTesterName altName, cud.HelpersAccessibility, [], - mkILReturn ilg.typ_Bool, + mkILReturn g.ilg.typ_Bool, mkMethodBody ( true, [], 2, - nonBranchingInstrsToCode ([ mkLdarg0 ] @ mkIsData ilg (true, cuspec, num)), + nonBranchingInstrsToCode ([ mkLdarg0 ] @ mkIsData g.ilg (true, cuspec, num)), attr, imports ) @@ -853,10 +825,17 @@ let convAlternativeDef setMethod = None, getMethod = Some( - mkILMethRef (baseTy.TypeRef, ILCallingConv.Instance, "get_" + mkTesterName altName, 0, [], ilg.typ_Bool) + mkILMethRef ( + baseTy.TypeRef, + ILCallingConv.Instance, + "get_" + mkTesterName altName, + 0, + [], + g.ilg.typ_Bool + ) ), callingConv = ILThisConvention.Instance, - propertyType = ilg.typ_Bool, + propertyType = g.ilg.typ_Bool, init = None, args = [], customAttrs = emptyILCustomAttrs @@ -879,7 +858,7 @@ let convAlternativeDef true, [], fields.Length, - nonBranchingInstrsToCode (convNewDataInstrInternal ilg cuspec num), + nonBranchingInstrsToCode (convNewDataInstrInternal g.ilg cuspec num), attr, imports ) @@ -906,13 +885,36 @@ let convAlternativeDef [ nullaryMeth ], [ nullaryProp ] else - let ilInstrs = - [ - for i in 0 .. fields.Length - 1 do - mkLdarg (uint16 i) - yield! convNewDataInstrInternal ilg cuspec num - ] - |> nonBranchingInstrsToCode + let locals, ilInstrs = + if repr.RepresentAlternativeAsStructValue info then + let local = mkILLocal baseTy None + let ldloca = I_ldloca(0us) + + let ilInstrs = + [ + ldloca + ILInstr.I_initobj baseTy + if (repr.DiscriminationTechnique info) = IntegerTag && num <> 0 then + ldloca + mkLdcInt32 num + mkSetTagToField g.ilg cuspec baseTy + for i in 0 .. fields.Length - 1 do + ldloca + mkLdarg (uint16 i) + mkNormalStfld (mkILFieldSpecInTy (baseTy, fields[i].LowerName, fields[i].Type)) + mkLdloc 0us + ] + + [ local ], ilInstrs + else + let ilInstrs = + [ + for i in 0 .. fields.Length - 1 do + mkLdarg (uint16 i) + yield! convNewDataInstrInternal g.ilg cuspec num + ] + + [], ilInstrs let mdef = mkILNonGenericStaticMethod ( @@ -922,7 +924,7 @@ let convAlternativeDef |> Array.map (fun fd -> mkILParamNamed (fd.LowerName, fd.Type)) |> Array.toList, mkILReturn baseTy, - mkMethodBody (true, [], fields.Length, ilInstrs, attr, imports) + mkMethodBody (true, locals, fields.Length + locals.Length, nonBranchingInstrsToCode ilInstrs, attr, imports) ) |> addMethodGeneratedAttrs |> addAltAttribs @@ -983,7 +985,7 @@ let convAlternativeDef let debugProxyCode = [ mkLdarg0 - mkNormalCall (mkILCtorMethSpecForTy (ilg.typ_Object, [])) + mkNormalCall (mkILCtorMethSpecForTy (g.ilg.typ_Object, [])) mkLdarg0 mkLdarg 1us mkNormalStfld (mkILFieldSpecInTy (debugProxyTy, debugProxyFieldName, altTy)) @@ -991,12 +993,12 @@ let convAlternativeDef |> nonBranchingInstrsToCode let debugProxyCtor = - mkILCtor ( + (mkILCtor ( ILMemberAccess.Public (* must always be public - see jared parson blog entry on implementing debugger type proxy *) , [ mkILParamNamed ("obj", altTy) ], mkMethodBody (false, [], 3, debugProxyCode, None, imports) - ) - + )) + .With(customAttrs = mkILCustomAttrs [ GetDynamicDependencyAttribute g 0x660 baseTy ]) |> addMethodGeneratedAttrs let debugProxyGetterMeths = @@ -1057,7 +1059,7 @@ let convAlternativeDef debugProxyTypeName, ILTypeDefAccess.Nested ILMemberAccess.Assembly, td.GenericParams, - ilg.typ_Object, + g.ilg.typ_Object, [], mkILMethods ([ debugProxyCtor ] @ debugProxyGetterMeths), mkILFields debugProxyFields, @@ -1101,7 +1103,7 @@ let convAlternativeDef match repr.DiscriminationTechnique info with | IntegerTag -> yield mkLdcInt32 num - yield mkNormalCall (mkILCtorMethSpecForTy (baseTy, [ mkTagFieldType ilg cuspec ])) + yield mkNormalCall (mkILCtorMethSpecForTy (baseTy, [ mkTagFieldType g.ilg cuspec ])) | SingleCase | RuntimeTypes -> yield mkNormalCall (mkILCtorMethSpecForTy (baseTy, [])) | TailOrNull -> failwith "unreachable" @@ -1117,7 +1119,8 @@ let convAlternativeDef basicFields |> List.map (fun fdef -> fdef.Name, fdef.FieldType) let basicCtorMeth = - mkILStorageCtor (basicCtorInstrs, altTy, basicCtorFields, basicCtorAccess, attr, imports) + (mkILStorageCtor (basicCtorInstrs, altTy, basicCtorFields, basicCtorAccess, attr, imports)) + .With(customAttrs = mkILCustomAttrs [ GetDynamicDependencyAttribute g 0x660 baseTy ]) |> addMethodGeneratedAttrs let altTypeDef = @@ -1157,7 +1160,7 @@ let mkClassUnionDef addFieldGeneratedAttrs: ILFieldDef -> ILFieldDef, addFieldNeverAttrs: ILFieldDef -> ILFieldDef, mkDebuggerTypeProxyAttribute) - ilg + (g: TcGlobals) tref (td: ILTypeDef) cud @@ -1183,7 +1186,7 @@ let mkClassUnionDef addFieldGeneratedAttrs, addFieldNeverAttrs, mkDebuggerTypeProxyAttribute) - ilg + g i td cud @@ -1204,13 +1207,24 @@ let mkClassUnionDef | SingleCase | RuntimeTypes | TailOrNull -> [] - | IntegerTag -> [ mkTagFieldId ilg cuspec ] + | IntegerTag -> [ mkTagFieldId g.ilg cuspec ] let isStruct = td.IsStruct + let ctorAccess = + if cuspec.HasHelpers = AllHelpers then + ILMemberAccess.Assembly + else + cud.UnionCasesAccessibility + let selfFields, selfMeths, selfProps = [ + let minNullaryIdx = + cud.UnionCases + |> Array.tryFindIndex (fun t -> t.IsNullary) + |> Option.defaultValue -1 + for cidx, alt in Array.indexed cud.UnionCases do if repr.RepresentAlternativeAsFreshInstancesOfRootClass(info, alt) @@ -1224,33 +1238,28 @@ let mkClassUnionDef None else match td.Extends with - | None -> Some ilg.typ_Object.TypeSpec + | None -> Some g.ilg.typ_Object.TypeSpec | Some ilTy -> Some ilTy.TypeSpec - let extraParamsForCtor = - if isStruct && takesExtraParams cud.UnionCases then - let extraTys, _extraInstrs = extraTysAndInstrsForStructCtor ilg cidx - List.map mkILParamAnon extraTys - else - [] - - let ctorAccess = - (if cuspec.HasHelpers = AllHelpers then - ILMemberAccess.Assembly - else - cud.UnionCasesAccessibility) - let ctor = - mkILSimpleStorageCtor ( - baseInit, - baseTy, - extraParamsForCtor, - (fields @ tagFieldsInObject), - ctorAccess, - cud.DebugPoint, - cud.DebugImports - ) - |> addMethodGeneratedAttrs + // Structs with fields are created using static makers methods + // Structs without fields can share constructor for the 'tag' value, we just create one + if isStruct && not (cidx = minNullaryIdx) then + [] + else + [ + (mkILSimpleStorageCtor ( + baseInit, + baseTy, + [], + (fields @ tagFieldsInObject), + ctorAccess, + cud.DebugPoint, + cud.DebugImports + )) + .With(customAttrs = mkILCustomAttrs [ GetDynamicDependencyAttribute g 0x660 baseTy ]) + |> addMethodGeneratedAttrs + ] let props, meths = mkMethodsAndPropertiesForFields @@ -1262,7 +1271,7 @@ let mkClassUnionDef baseTy alt.FieldDefs - yield (fields, ([ ctor ] @ meths), props) + yield (fields, (ctor @ meths), props) ] |> List.unzip3 |> (fun (a, b, c) -> List.concat a, List.concat b, List.concat c) @@ -1293,12 +1302,12 @@ let mkClassUnionDef else let baseTySpec = (match td.Extends with - | None -> ilg.typ_Object + | None -> g.ilg.typ_Object | Some ilTy -> ilTy) .TypeSpec [ - mkILSimpleStorageCtor ( + (mkILSimpleStorageCtor ( Some baseTySpec, baseTy, [], @@ -1306,7 +1315,8 @@ let mkClassUnionDef ILMemberAccess.Assembly, cud.DebugPoint, cud.DebugImports - ) + )) + .With(customAttrs = mkILCustomAttrs [ GetDynamicDependencyAttribute g 0x7E0 baseTy ]) |> addMethodGeneratedAttrs ] @@ -1328,7 +1338,7 @@ let mkClassUnionDef | IntegerTag -> if inRootClass then yield mkLdcInt32 fidx - yield mkNormalNewobj (mkILCtorMethSpecForTy (altTy, [ mkTagFieldType ilg cuspec ])) + yield mkNormalNewobj (mkILCtorMethSpecForTy (altTy, [ mkTagFieldType g.ilg cuspec ])) else yield mkNormalNewobj (mkILCtorMethSpecForTy (altTy, [])) @@ -1339,7 +1349,7 @@ let mkClassUnionDef cd let tagMeths, tagProps, tagEnumFields = - let tagFieldType = mkTagFieldType ilg cuspec + let tagFieldType = mkTagFieldType g.ilg cuspec let tagEnumFields = cud.UnionCases @@ -1350,7 +1360,7 @@ let mkClassUnionDef let code = genWith (fun cg -> - emitLdDataTagPrim ilg (Some mkLdarg0) cg (true, cuspec) + emitLdDataTagPrim g.ilg (Some mkLdarg0) cg (true, cuspec) cg.EmitInstr I_ret) let body = mkMethodBody (true, [], 2, code, cud.DebugPoint, cud.DebugImports) @@ -1414,7 +1424,7 @@ let mkClassUnionDef attributes = enum 0, layout = ILTypeDefLayout.Auto, implements = [], - extends = Some ilg.typ_Object, + extends = Some g.ilg.typ_Object, methods = emptyILMethods, securityDecls = emptyILSecurityDecls, fields = mkILFields tagEnumFields, @@ -1444,7 +1454,7 @@ let mkClassUnionDef ), extends = (match td.Extends with - | None -> Some ilg.typ_Object + | None -> Some g.ilg.typ_Object | _ -> td.Extends), methods = mkILMethods ( diff --git a/src/fcs-fable/src/Compiler/CodeGen/EraseUnions.fsi b/src/fcs-fable/src/Compiler/CodeGen/EraseUnions.fsi index dfb9a7e5b8..9f69dd4a5c 100644 --- a/src/fcs-fable/src/Compiler/CodeGen/EraseUnions.fsi +++ b/src/fcs-fable/src/Compiler/CodeGen/EraseUnions.fsi @@ -8,6 +8,7 @@ module internal FSharp.Compiler.AbstractIL.ILX.EraseUnions open FSharp.Compiler.AbstractIL.IL open FSharp.Compiler.AbstractIL.ILX.Types +open FSharp.Compiler.TcGlobals /// Make the instruction sequence for a "newdata" operation val mkNewData: ilg: ILGlobals -> cuspec: IlxUnionSpec * cidx: int -> ILInstr list @@ -39,7 +40,7 @@ val mkClassUnionDef: addFieldGeneratedAttrs: (ILFieldDef -> ILFieldDef) * addFieldNeverAttrs: (ILFieldDef -> ILFieldDef) * mkDebuggerTypeProxyAttribute: (ILType -> ILAttribute) -> - ilg: ILGlobals -> + g: TcGlobals -> tref: ILTypeRef -> td: ILTypeDef -> cud: IlxUnionInfo -> diff --git a/src/fcs-fable/src/Compiler/CodeGen/IlxGen.fs b/src/fcs-fable/src/Compiler/CodeGen/IlxGen.fs index 9ef62b1a50..69868fe566 100644 --- a/src/fcs-fable/src/Compiler/CodeGen/IlxGen.fs +++ b/src/fcs-fable/src/Compiler/CodeGen/IlxGen.fs @@ -3,6 +3,8 @@ /// The ILX generator. module internal FSharp.Compiler.IlxGen +open FSharp.Compiler.IlxGenSupport + open System.IO open System.Reflection open System.Collections.Generic @@ -72,25 +74,6 @@ let iLdcDouble i = AI_ldc(DT_R8, ILConst.R8 i) let iLdcSingle i = AI_ldc(DT_R4, ILConst.R4 i) -/// Make a method that simply loads a field -let mkLdfldMethodDef (ilMethName, iLAccess, isStatic, ilTy, ilFieldName, ilPropType, customAttrs) = - let ilFieldSpec = mkILFieldSpecInTy (ilTy, ilFieldName, ilPropType) - let ilReturn = mkILReturn ilPropType - - let ilMethodDef = - if isStatic then - let body = - mkMethodBody (true, [], 2, nonBranchingInstrsToCode [ mkNormalLdsfld ilFieldSpec ], None, None) - - mkILNonGenericStaticMethod (ilMethName, iLAccess, [], ilReturn, body) - else - let body = - mkMethodBody (true, [], 2, nonBranchingInstrsToCode [ mkLdarg0; mkNormalLdfld ilFieldSpec ], None, None) - - mkILNonGenericInstanceMethod (ilMethName, iLAccess, [], ilReturn, body) - - ilMethodDef.With(customAttrs = mkILCustomAttrs customAttrs).WithSpecialName - /// Choose the constructor parameter names for fields let ChooseParamNames fieldNamesAndTypes = let takenFieldNames = fieldNamesAndTypes |> List.map p23 |> Set.ofList @@ -586,138 +569,6 @@ type TypeReprEnv(reprs: Map, count: int, templateReplacement: (Ty /// Get the environment for generating a reference to items within a type definition member eenv.ForTyconRef(tcref: TyconRef) = eenv.ForTycon tcref.Deref -//-------------------------------------------------------------------------- -// Generate Local embeddable versions of framework types when necessary -//-------------------------------------------------------------------------- - -let mkFlagsAttribute cenv = - mkILCustomAttribute (cenv.g.attrib_FlagsAttribute.TypeRef, [], [], []) - -let mkLocalPrivateAttributeWithDefaultConstructor (cenv: cenv, name: string) = - let g = cenv.g - - let ilMethods = - mkILMethods - [ - g.AddMethodGeneratedAttributes(mkILNonGenericEmptyCtor (g.ilg.typ_Attribute, None, None)) - ] - - mkILGenericClass ( - name, - ILTypeDefAccess.Private, - ILGenericParameterDefs.Empty, - g.ilg.typ_Attribute, - ILTypes.Empty, - ilMethods, - emptyILFields, - emptyILTypeDefs, - emptyILProperties, - emptyILEvents, - emptyILCustomAttrs, - ILTypeInit.BeforeField - ) - -let mkILNonGenericInstanceProperty (name, ilType, propertyAttribute, customAttributes, getMethod, setMethod) = - ILPropertyDef( - name = name, - attributes = propertyAttribute, - setMethod = setMethod, - getMethod = getMethod, - callingConv = ILThisConvention.Instance, - propertyType = ilType, - init = None, - args = [], - customAttrs = customAttributes - ) - -let mkLocalPrivateAttributeWithPropertyConstructors (cenv, name: string, attrProperties: (string * ILType) list option) = - let ilTypeRef = mkILTyRef (ILScopeRef.Local, name) - let ilTy = mkILFormalNamedTy ILBoxity.AsObject ilTypeRef [] - - let ilElements = - attrProperties - |> Option.defaultValue [] - |> List.map (fun (name, ilType) -> - let fieldName = name + "@" - - (cenv.g.AddFieldGeneratedAttributes(mkILInstanceField (fieldName, ilType, None, ILMemberAccess.Private))), - (cenv.g.AddMethodGeneratedAttributes( - mkLdfldMethodDef ($"get_{name}", ILMemberAccess.Public, false, ilTy, fieldName, ilType, []) - )), - (cenv.g.AddPropertyGeneratedAttributes( - mkILNonGenericInstanceProperty ( - name, - ilType, - PropertyAttributes.None, - emptyILCustomAttrs, - Some(mkILMethRef (ilTypeRef, ILCallingConv.Instance, "get_" + name, 0, [], ilType)), - None - ) - )), - (name, fieldName, ilType)) - - // Generate constructor with required arguments - let ilCtorDef = - cenv.g.AddMethodGeneratedAttributes( - mkILSimpleStorageCtorWithParamNames ( - Some cenv.g.ilg.typ_Attribute.TypeSpec, - ilTy, - [], - (ilElements |> List.map (fun (_, _, _, fieldInfo) -> fieldInfo)), - ILMemberAccess.Public, - None, - None - ) - ) - - mkILGenericClass ( - name, - ILTypeDefAccess.Private, - ILGenericParameterDefs.Empty, - cenv.g.ilg.typ_Attribute, - ILTypes.Empty, - mkILMethods ( - ilCtorDef - :: (ilElements |> List.fold (fun acc (_, getter, _, _) -> getter :: acc) []) - ), - mkILFields (ilElements |> List.map (fun (field, _, _, _) -> field)), - emptyILTypeDefs, - mkILProperties (ilElements |> List.map (fun (_, _, property, _) -> property)), - emptyILEvents, - emptyILCustomAttrs, - ILTypeInit.BeforeField - ) - -let mkLocalPrivateInt32Enum (cenv: cenv, tref: ILTypeRef, values: (string * int32) array) = - let g = cenv.g - let ilType = ILType.Value(mkILNonGenericTySpec (tref)) - - let enumFields = - values - |> Array.map (fun (name, value) -> mkILStaticLiteralField (name, ilType, ILFieldInit.Int32 value, None, ILMemberAccess.Public)) - |> Array.append - [| - (mkILInstanceField ("value__", g.ilg.typ_Int32, Some(ILFieldInit.Int32 0), ILMemberAccess.Public)) - .WithSpecialName(true) - |] - |> Array.toList - - mkILGenericClass( - tref.Name, - ILTypeDefAccess.Private, - ILGenericParameterDefs.Empty, - g.ilg.typ_Enum, - ILTypes.Empty, - mkILMethods [], - mkILFields enumFields, - emptyILTypeDefs, - emptyILProperties, - emptyILEvents, - g.AddGeneratedAttributes(mkILCustomAttrs [ mkFlagsAttribute cenv ]), - ILTypeInit.OnAny - ) - .WithSealed(true) - //-------------------------------------------------------------------------- // Generate type references //-------------------------------------------------------------------------- @@ -745,86 +596,6 @@ type PtrsOK = | PtrTypesOK | PtrTypesNotOK -let GetReadOnlyAttribute cenv = - let g = cenv.g - let tref = g.attrib_IsReadOnlyAttribute.TypeRef - g.TryEmbedILType(tref, (fun () -> mkLocalPrivateAttributeWithDefaultConstructor (cenv, tref.Name))) - mkILCustomAttribute (g.attrib_IsReadOnlyAttribute.TypeRef, [], [], []) - -let GenReadOnlyAttributeIfNecessary cenv ty = - if isInByrefTy cenv.g ty then - let attr = GetReadOnlyAttribute cenv - Some attr - else - None - -let GetDynamicallyAccessedMemberTypes cenv = - let tref = cenv.g.enum_DynamicallyAccessedMemberTypes.TypeRef - - if not (cenv.g.compilingFSharpCore) then - cenv.g.TryEmbedILType( - tref, - (fun () -> - let values = - [| - ("All", -1) - ("None", 0) - ("PublicParameterlessConstructor", 1) - ("PublicConstructors", 3) - ("NonPublicConstructors", 4) - ("PublicMethods", 8) - ("NonPublicMethods", 16) - ("PublicFields", 32) - ("NonPublicFields", 64) - ("PublicNestedTypes", 128) - ("NonPublicNestedTypes", 256) - ("PublicProperties", 512) - ("NonPublicProperties", 1024) - ("PublicEvents", 2048) - ("NonPublicEvents", 4096) - ("Interfaces", 8192) - |] - - mkLocalPrivateInt32Enum (cenv, tref, values)) - ) - - ILType.Value(mkILNonGenericTySpec (tref)) - -let GetDynamicDependencyAttribute cenv memberTypes ilType = - let tref = cenv.g.attrib_DynamicDependencyAttribute.TypeRef - - cenv.g.TryEmbedILType( - tref, - (fun () -> - let properties = - Some - [ - "MemberType", GetDynamicallyAccessedMemberTypes cenv - "Type", cenv.g.ilg.typ_Type - ] - - mkLocalPrivateAttributeWithPropertyConstructors (cenv, tref.Name, properties)) - ) - - let typIlMemberTypes = - ILType.Value(mkILNonGenericTySpec (cenv.g.enum_DynamicallyAccessedMemberTypes.TypeRef)) - - mkILCustomAttribute ( - tref, - [ typIlMemberTypes; cenv.g.ilg.typ_Type ], - [ ILAttribElem.Int32 memberTypes; ILAttribElem.Type(Some ilType) ], - [] - ) - -/// Generate "modreq([mscorlib]System.Runtime.InteropServices.InAttribute)" on inref types. -let GenReadOnlyModReqIfNecessary (g: TcGlobals) ty ilTy = - let add = isInByrefTy g ty && g.attrib_InAttribute.TyconRef.CanDeref - - if add then - ILType.Modified(true, g.attrib_InAttribute.TypeRef, ilTy) - else - ilTy - let rec GenTypeArgAux cenv m tyenv tyarg = GenTypeAux cenv m tyenv VoidNotOK PtrTypesNotOK tyarg @@ -1907,7 +1678,7 @@ let AddExternalCcusToIlxGenEnv cenv g eenv ccus = let AddBindingsForTycon allocVal (cloc: CompileLocation) (tycon: Tycon) eenv = let unrealizedSlots = if tycon.IsFSharpObjectModelTycon then - tycon.FSharpObjectModelTypeInfo.fsobjmodel_vslots + tycon.FSharpTyconRepresentationData.fsobjmodel_vslots else [] @@ -2104,29 +1875,29 @@ let MergePropertyDefs m ilPropertyDefs = /// Information collected imperatively for each type definition type TypeDefBuilder(tdef: ILTypeDef, tdefDiscards) = - let gmethods = ResizeArray(0) - let gfields = ResizeArray(0) + let gmethods = ResizeArray(tdef.Methods.AsList()) + let gfields = ResizeArray(tdef.Fields.AsList()) let gproperties: Dictionary = Dictionary<_, _>(3, HashIdentity.Structural) - let gevents = ResizeArray(0) + let gevents = ResizeArray(tdef.Events.AsList()) let gnested = TypeDefsBuilder() - member b.Close() = + member _.Close() = tdef.With( - methods = mkILMethods (tdef.Methods.AsList() @ ResizeArray.toList gmethods), - fields = mkILFields (tdef.Fields.AsList() @ ResizeArray.toList gfields), + methods = mkILMethods (ResizeArray.toList gmethods), + fields = mkILFields (ResizeArray.toList gfields), properties = mkILProperties (tdef.Properties.AsList() @ HashRangeSorted gproperties), - events = mkILEvents (tdef.Events.AsList() @ ResizeArray.toList gevents), + events = mkILEvents (ResizeArray.toList gevents), nestedTypes = mkILTypeDefs (tdef.NestedTypes.AsList() @ gnested.Close()) ) - member b.AddEventDef edef = gevents.Add edef + member _.AddEventDef edef = gevents.Add edef - member b.AddFieldDef ilFieldDef = gfields.Add ilFieldDef + member _.AddFieldDef ilFieldDef = gfields.Add ilFieldDef - member b.AddMethodDef ilMethodDef = + member _.AddMethodDef ilMethodDef = let discard = match tdefDiscards with | Some (mdefDiscard, _) -> mdefDiscard ilMethodDef @@ -2297,7 +2068,7 @@ type AnonTypeGenerationTable() = let ilMethods = [ for propName, fldName, fldTy in flds -> - let attrs = if isStruct then [ GetReadOnlyAttribute cenv ] else [] + let attrs = if isStruct then [ GetReadOnlyAttribute g ] else [] mkLdfldMethodDef ("get_" + propName, ILMemberAccess.Public, false, ilTy, fldName, fldTy, attrs) |> g.AddMethodGeneratedAttributes @@ -2310,13 +2081,7 @@ type AnonTypeGenerationTable() = let ilCtorDef = (mkILSimpleStorageCtorWithParamNames (ilBaseTySpec, ilTy, [], flds, ILMemberAccess.Public, None, None)) - .With( - customAttrs = - mkILCustomAttrs - [ - GetDynamicDependencyAttribute cenv 0x660 (*Public and NonPublic Fields and Properties*) ilTy - ] - ) + .With(customAttrs = mkILCustomAttrs [ GetDynamicDependencyAttribute g 0x660 ilTy ]) // Create a tycon that looks exactly like a record definition, to help drive the generation of equality/comparison code let m = range0 @@ -2350,27 +2115,32 @@ type AnonTypeGenerationTable() = if isStruct then tycon.SetIsStructRecordOrUnion true - tycon.entity_tycon_repr <- - TFSharpRecdRepr( - Construct.MakeRecdFieldsTable( - (tps, flds) - ||> List.map2 (fun tp (propName, _fldName, _fldTy) -> - Construct.NewRecdField - false - None - (mkSynId m propName) - false - (mkTyparTy tp) - true - false - [] - [] - XmlDoc.Empty - taccessPublic - false) - ) - ) + let rfields = + (tps, flds) + ||> List.map2 (fun tp (propName, _fldName, _fldTy) -> + Construct.NewRecdField + false + None + (mkSynId m propName) + false + (mkTyparTy tp) + true + false + [] + [] + XmlDoc.Empty + taccessPublic + false) + let data = + { + fsobjmodel_cases = Construct.MakeUnionCases [] + fsobjmodel_rfields = Construct.MakeRecdFieldsTable rfields + fsobjmodel_kind = TFSharpRecord + fsobjmodel_vslots = [] + } + + tycon.entity_tycon_repr <- TFSharpTyconRepr data let tcref = mkLocalTyconRef tycon let ty = generalizedTyconRef g tcref let tcaug = tcref.TypeContents @@ -5805,7 +5575,7 @@ and GenGenericParam cenv eenv (tp: Typar) = let refTypeConstraint = tp.Constraints |> List.exists (function - | TyparConstraint.IsReferenceType _ -> true + | TyparConstraint.IsReferenceType _ | TyparConstraint.SupportsNull _ -> true | _ -> false) @@ -5821,6 +5591,13 @@ and GenGenericParam cenv eenv (tp: Typar) = | TyparConstraint.RequiresDefaultConstructor _ -> true | _ -> false) + let emitUnmanagedInIlOutput = + cenv.g.langVersion.SupportsFeature(LanguageFeature.UnmanagedConstraintCsharpInterop) + && tp.Constraints + |> List.exists (function + | TyparConstraint.IsUnmanaged _ -> true + | _ -> false) + let tpName = // use the CompiledName if given // Inference variables get given an IL name "TA, TB" etc. @@ -5848,16 +5625,31 @@ and GenGenericParam cenv eenv (tp: Typar) = else nm - let tpAttrs = mkILCustomAttrs (GenAttrs cenv eenv tp.Attribs) + let attributeList = + let defined = GenAttrs cenv eenv tp.Attribs + + if emitUnmanagedInIlOutput then + (GetIsUnmanagedAttribute g) :: defined + else + defined + + let tpAttrs = mkILCustomAttrs (attributeList) + + let modreqValueType () = + ILType.Modified(true, g.iltyp_UnmanagedType.TypeRef, g.iltyp_ValueType) { Name = tpName - Constraints = subTypeConstraints + Constraints = + if emitUnmanagedInIlOutput then + (modreqValueType () :: subTypeConstraints) + else + subTypeConstraints Variance = NonVariant CustomAttrsStored = storeILCustomAttrs tpAttrs MetadataIndex = NoMetadataIdx HasReferenceTypeConstraint = refTypeConstraint - HasNotNullableValueTypeConstraint = notNullableValueTypeConstraint + HasNotNullableValueTypeConstraint = notNullableValueTypeConstraint || emitUnmanagedInIlOutput HasDefaultConstructorConstraint = defaultConstructorConstraint } @@ -5876,7 +5668,7 @@ and GenSlotParam m cenv eenv slotParam : ILParameter = let ilAttribs = GenAttrs cenv eenv attribs let ilAttribs = - match GenReadOnlyAttributeIfNecessary cenv ty with + match GenReadOnlyAttributeIfNecessary cenv.g ty with | Some attr -> ilAttribs @ [ attr ] | None -> ilAttribs @@ -5934,7 +5726,7 @@ and GenFormalReturnType m cenv eenvFormal returnTy : ILReturn = match returnTy with | None -> ilRet | Some ty -> - match GenReadOnlyAttributeIfNecessary cenv ty with + match GenReadOnlyAttributeIfNecessary cenv.g ty with | Some attr -> ilRet.WithCustomAttrs(mkILCustomAttrs (ilRet.CustomAttrs.AsList() @ [ attr ])) | None -> ilRet @@ -8981,7 +8773,7 @@ and GenParams let ilAttribs = GenAttrs cenv eenv attribs let ilAttribs = - match GenReadOnlyAttributeIfNecessary cenv methodArgTy with + match GenReadOnlyAttributeIfNecessary cenv.g methodArgTy with | Some attr -> ilAttribs @ [ attr ] | None -> ilAttribs @@ -9010,7 +8802,7 @@ and GenReturnInfo cenv eenv returnTy ilRetTy (retInfo: ArgReprInfo) : ILReturn = let ilAttribs = match returnTy with | Some retTy -> - match GenReadOnlyAttributeIfNecessary cenv retTy with + match GenReadOnlyAttributeIfNecessary cenv.g retTy with | Some attr -> ilAttribs @ [ attr ] | None -> ilAttribs | _ -> ilAttribs @@ -9347,7 +9139,7 @@ and GenMethodForBinding || memberInfo.MemberFlags.MemberKind = SynMemberKind.PropertySet || memberInfo.MemberFlags.MemberKind = SynMemberKind.PropertyGetSet -> - match GenReadOnlyAttributeIfNecessary cenv returnTy with + match GenReadOnlyAttributeIfNecessary cenv.g returnTy with | Some ilAttr -> ilAttr | _ -> () | _ -> () @@ -10597,7 +10389,7 @@ and GenAbstractBinding cenv eenv tref (vref: ValRef) = || memberInfo.MemberFlags.MemberKind = SynMemberKind.PropertySet || memberInfo.MemberFlags.MemberKind = SynMemberKind.PropertyGetSet -> - match GenReadOnlyAttributeIfNecessary cenv returnTy with + match GenReadOnlyAttributeIfNecessary cenv.g returnTy with | Some ilAttr -> ilAttr | _ -> () | _ -> () @@ -10756,9 +10548,7 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = | TAsmRepr _ | TILObjectRepr _ | TMeasureableRepr _ -> () - | TFSharpObjectRepr _ - | TFSharpRecdRepr _ - | TFSharpUnionRepr _ -> + | TFSharpTyconRepr _ -> let eenvinner = EnvForTycon tycon eenv let thisTy = generalizedTyconRef g tcref @@ -10924,15 +10714,19 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = let ilTypeDefKind = match tyconRepr with - | TFSharpObjectRepr o -> + | TFSharpTyconRepr o -> match o.fsobjmodel_kind with + | TFSharpUnion + | TFSharpRecord -> + if tycon.IsStructOrEnumTycon then + ILTypeDefKind.ValueType + else + ILTypeDefKind.Class | TFSharpClass -> ILTypeDefKind.Class | TFSharpStruct -> ILTypeDefKind.ValueType | TFSharpInterface -> ILTypeDefKind.Interface | TFSharpEnum -> ILTypeDefKind.Enum | TFSharpDelegate _ -> ILTypeDefKind.Delegate - | TFSharpRecdRepr _ - | TFSharpUnionRepr _ when tycon.IsStructOrEnumTycon -> ILTypeDefKind.ValueType | _ -> ILTypeDefKind.Class let requiresExtraField = @@ -11034,7 +10828,7 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = let extraAttribs = match tyconRepr with - | TFSharpRecdRepr _ when not useGenuineField -> + | TFSharpTyconRepr { fsobjmodel_kind = TFSharpRecord } when not useGenuineField -> [ g.CompilerGeneratedAttribute; g.DebuggerBrowsableNeverAttribute ] | _ -> [] // don't hide fields in classes in debug display @@ -11113,7 +10907,7 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = let attrs = if isStruct && not isStatic then - [ GetReadOnlyAttribute cenv ] + [ GetReadOnlyAttribute g ] else [] @@ -11238,7 +11032,7 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = // Build record constructors and the funky methods that go with records and delegate types. // Constructors and delegate methods have the same access as the representation match tyconRepr with - | TFSharpRecdRepr _ when not tycon.IsEnumTycon -> + | TFSharpTyconRepr { fsobjmodel_kind = TFSharpRecord } when not tycon.IsEnumTycon -> // No constructor for enum types // Otherwise find all the non-static, non zero-init fields and build a constructor let relevantFields = @@ -11268,16 +11062,7 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = None, eenv.imports )) - .With( - customAttrs = - mkILCustomAttrs - [ - GetDynamicDependencyAttribute - cenv - 0x660 (*Public and NonPublic Fields and Properties*) - ilThisTy - ] - ) + .With(customAttrs = mkILCustomAttrs [ GetDynamicDependencyAttribute g 0x660 ilThisTy ]) yield ilMethodDef // FSharp 1.0 bug 1988: Explicitly setting the ComVisible(true) attribute on an F# type causes an F# record to be emitted in a way that enables mutation for COM interop scenarios @@ -11293,7 +11078,7 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = if not (tycon.HasMember g "ToString" []) then yield! GenToStringMethod cenv eenv ilThisTy m - | TFSharpObjectRepr r when tycon.IsFSharpDelegateTycon -> + | TFSharpTyconRepr r when tycon.IsFSharpDelegateTycon -> // Build all the methods that go with a delegate type match r.fsobjmodel_kind with @@ -11314,7 +11099,8 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = yield! mkILDelegateMethods reprAccess g.ilg (g.iltyp_AsyncCallback, g.iltyp_IAsyncResult) (parameters, ret) | _ -> () - | TFSharpUnionRepr _ when not (tycon.HasMember g "ToString" []) -> yield! GenToStringMethod cenv eenv ilThisTy m + | TFSharpTyconRepr { fsobjmodel_kind = TFSharpUnion } when not (tycon.HasMember g "ToString" []) -> + yield! GenToStringMethod cenv eenv ilThisTy m | _ -> () ] @@ -11323,6 +11109,23 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = let ilEvents = mkILEvents abstractEventDefs let ilFields = mkILFields ilFieldDefs + // For now, generic types always use ILTypeInit.BeforeField. This is because + // there appear to be some cases where ILTypeInit.OnAny causes problems for + // the .NET CLR when used in conjunction with generic classes in cross-DLL + // and NGEN scenarios. + // + // We don't apply this rule to the final file. This is because ALL classes with .cctors in + // the final file (which may in turn trigger the .cctor for the .EXE itself, which + // in turn calls the main() method) must have deterministic initialization + // that is not triggered prior to execution of the main() method. + // If this property doesn't hold then the .cctor can end up running + // before the main method even starts. + let typeDefTrigger = + if eenv.isFinalFile || tycon.TyparsNoRange.IsEmpty then + ILTypeInit.OnAny + else + ILTypeInit.BeforeField + let tdef, tdefDiscards = let isSerializable = (TryFindFSharpBoolAttribute g g.attrib_AutoSerializableAttribute tycon.Attribs @@ -11337,16 +11140,19 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = tdef, None - | TFSharpRecdRepr _ - | TFSharpObjectRepr _ as tyconRepr -> + | TFSharpTyconRepr { fsobjmodel_kind = k } when + (match k with + | TFSharpUnion -> false + | _ -> true) + -> let super = superOfTycon g tycon let ilBaseTy = GenType cenv m eenvinner.tyenv super // Build a basic type definition let isObjectType = - (match tyconRepr with - | TFSharpObjectRepr _ -> true - | _ -> false) + match k with + | TFSharpRecord -> false + | _ -> true let ilAttrs = ilCustomAttrs @@ -11363,23 +11169,6 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = )) ] - // For now, generic types always use ILTypeInit.BeforeField. This is because - // there appear to be some cases where ILTypeInit.OnAny causes problems for - // the .NET CLR when used in conjunction with generic classes in cross-DLL - // and NGEN scenarios. - // - // We don't apply this rule to the final file. This is because ALL classes with .cctors in - // the final file (which may in turn trigger the .cctor for the .EXE itself, which - // in turn calls the main() method) must have deterministic initialization - // that is not triggered prior to execution of the main() method. - // If this property doesn't hold then the .cctor can end up running - // before the main method even starts. - let typeDefTrigger = - if eenv.isFinalFile || tycon.TyparsNoRange.IsEmpty then - ILTypeInit.OnAny - else - ILTypeInit.BeforeField - let isKnownToBeAttribute = ExistsSameHeadTypeInHierarchy g cenv.amap m super g.mk_Attribute_ty @@ -11495,7 +11284,11 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = tdef, None - | TFSharpUnionRepr _ -> + | TFSharpTyconRepr { fsobjmodel_kind = k } when + (match k with + | TFSharpUnion -> true + | _ -> false) + -> let alternatives = tycon.UnionCasesArray |> Array.mapi (fun i ucspec -> @@ -11523,16 +11316,18 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = } let layout = + // Structs with no instance fields get size 1, pack 0 if isStructTy g thisTy then if - (match ilTypeDefKind with - | ILTypeDefKind.ValueType -> true - | _ -> false) + (tycon.AllFieldsArray.Length = 0 + || tycon.AllFieldsArray |> Array.exists (fun f -> not f.IsStatic)) + && (alternatives + |> Array.collect (fun a -> a.FieldDefs) + |> Array.exists (fun fd -> not fd.ILField.IsStatic)) then - // Structs with no instance fields get size 1, pack 0 - ILTypeDefLayout.Sequential { Size = Some 1; Pack = Some 0us } - else ILTypeDefLayout.Sequential { Size = None; Pack = None } + else + ILTypeDefLayout.Sequential { Size = Some 1; Pack = Some 0us } else ILTypeDefLayout.Auto @@ -11580,7 +11375,14 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = .WithSealed(true) .WithEncoding(ILDefaultPInvokeEncoding.Auto) .WithAccess(access) - .WithInitSemantics(ILTypeInit.BeforeField) + // If there are static fields in the union, use the same kind of trigger as + // for class types + .WithInitSemantics( + if ilFields.AsList().IsEmpty then + ILTypeInit.BeforeField + else + typeDefTrigger + ) let tdef2 = EraseUnions.mkClassUnionDef @@ -11590,7 +11392,7 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = g.AddFieldGeneratedAttributes, g.AddFieldNeverAttributes, g.MkDebuggerTypeProxyAttribute) - g.ilg + g tref tdef cuinfo @@ -12083,8 +11885,6 @@ let ClearGeneratedValue (ctxt: ExecutionContext) eenv (v: Val) = #endif () -#endif //!FABLE_COMPILER - /// The published API from the ILX code generator type IlxAssemblyGenerator(amap: ImportMap, tcGlobals: TcGlobals, tcVal: ConstraintSolver.TcValF, ccu: CcuThunk) = @@ -12160,7 +11960,6 @@ type IlxAssemblyGenerator(amap: ImportMap, tcGlobals: TcGlobals, tcVal: Constrai GenerateCode(cenv, anonTypeTable, ilxGenEnv, typedAssembly, assemAttribs, moduleAttribs) -#if !FABLE_COMPILER /// Invert the compilation of the given value and clear the storage of the value member _.ClearGeneratedValue(ctxt, v) = ClearGeneratedValue ctxt ilxGenEnv v @@ -12171,4 +11970,5 @@ type IlxAssemblyGenerator(amap: ImportMap, tcGlobals: TcGlobals, tcVal: Constrai /// Invert the compilation of the given value and return its current dynamic value and its compiled System.Type member _.LookupGeneratedValue(ctxt, v) = LookupGeneratedValue cenv ctxt ilxGenEnv v + #endif //!FABLE_COMPILER diff --git a/src/fcs-fable/src/Compiler/CodeGen/IlxGen.fsi b/src/fcs-fable/src/Compiler/CodeGen/IlxGen.fsi index fc15b94a68..1e98f786bb 100644 --- a/src/fcs-fable/src/Compiler/CodeGen/IlxGen.fsi +++ b/src/fcs-fable/src/Compiler/CodeGen/IlxGen.fsi @@ -91,6 +91,7 @@ type ExecutionContext = { LookupTypeRef: ILTypeRef -> Type LookupType: ILType -> Type } +#if !FABLE_COMPILER /// An incremental ILX code generator for a single assembly type public IlxAssemblyGenerator = /// Create an incremental ILX code generator for a single assembly @@ -107,7 +108,6 @@ type public IlxAssemblyGenerator = /// Generate ILX code for an assembly fragment member GenerateCode: IlxGenOptions * CheckedAssemblyAfterOptimization * Attribs * Attribs -> IlxGenResults -#if !FABLE_COMPILER /// Invert the compilation of the given value and clear the storage of the value member ClearGeneratedValue: ExecutionContext * Val -> unit diff --git a/src/fcs-fable/src/Compiler/CodeGen/IlxGenSupport.fs b/src/fcs-fable/src/Compiler/CodeGen/IlxGenSupport.fs new file mode 100644 index 0000000000..6fd2074c4e --- /dev/null +++ b/src/fcs-fable/src/Compiler/CodeGen/IlxGenSupport.fs @@ -0,0 +1,239 @@ +// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. + +/// The ILX generator. +module internal FSharp.Compiler.IlxGenSupport + +open System.Reflection +open Internal.Utilities.Library +open FSharp.Compiler.AbstractIL.IL +open FSharp.Compiler.TcGlobals +open FSharp.Compiler.TypedTreeOps + +/// Make a method that simply loads a field +let mkLdfldMethodDef (ilMethName, iLAccess, isStatic, ilTy, ilFieldName, ilPropType, customAttrs) = + let ilFieldSpec = mkILFieldSpecInTy (ilTy, ilFieldName, ilPropType) + let ilReturn = mkILReturn ilPropType + + let ilMethodDef = + if isStatic then + let body = + mkMethodBody (true, [], 2, nonBranchingInstrsToCode [ mkNormalLdsfld ilFieldSpec ], None, None) + + mkILNonGenericStaticMethod (ilMethName, iLAccess, [], ilReturn, body) + else + let body = + mkMethodBody (true, [], 2, nonBranchingInstrsToCode [ mkLdarg0; mkNormalLdfld ilFieldSpec ], None, None) + + mkILNonGenericInstanceMethod (ilMethName, iLAccess, [], ilReturn, body) + + ilMethodDef.With(customAttrs = mkILCustomAttrs customAttrs).WithSpecialName + +let mkFlagsAttribute (g: TcGlobals) = + mkILCustomAttribute (g.attrib_FlagsAttribute.TypeRef, [], [], []) + +let mkLocalPrivateAttributeWithDefaultConstructor (g: TcGlobals, name: string) = + let ilMethods = + mkILMethods + [ + g.AddMethodGeneratedAttributes(mkILNonGenericEmptyCtor (g.ilg.typ_Attribute, None, None)) + ] + + mkILGenericClass ( + name, + ILTypeDefAccess.Private, + ILGenericParameterDefs.Empty, + g.ilg.typ_Attribute, + ILTypes.Empty, + ilMethods, + emptyILFields, + emptyILTypeDefs, + emptyILProperties, + emptyILEvents, + emptyILCustomAttrs, + ILTypeInit.BeforeField + ) + +let mkILNonGenericInstanceProperty (name, ilType, propertyAttribute, customAttributes, getMethod, setMethod) = + ILPropertyDef( + name = name, + attributes = propertyAttribute, + setMethod = setMethod, + getMethod = getMethod, + callingConv = ILThisConvention.Instance, + propertyType = ilType, + init = None, + args = [], + customAttrs = customAttributes + ) + +let mkLocalPrivateAttributeWithPropertyConstructors (g: TcGlobals, name: string, attrProperties: (string * ILType) list option) = + let ilTypeRef = mkILTyRef (ILScopeRef.Local, name) + let ilTy = mkILFormalNamedTy ILBoxity.AsObject ilTypeRef [] + + let ilElements = + attrProperties + |> Option.defaultValue [] + |> List.map (fun (name, ilType) -> + let fieldName = name + "@" + + (g.AddFieldGeneratedAttributes(mkILInstanceField (fieldName, ilType, None, ILMemberAccess.Private))), + (g.AddMethodGeneratedAttributes(mkLdfldMethodDef ($"get_{name}", ILMemberAccess.Public, false, ilTy, fieldName, ilType, []))), + (g.AddPropertyGeneratedAttributes( + mkILNonGenericInstanceProperty ( + name, + ilType, + PropertyAttributes.None, + emptyILCustomAttrs, + Some(mkILMethRef (ilTypeRef, ILCallingConv.Instance, "get_" + name, 0, [], ilType)), + None + ) + )), + (name, fieldName, ilType)) + + // Generate constructor with required arguments + let ilCtorDef = + g.AddMethodGeneratedAttributes( + mkILSimpleStorageCtorWithParamNames ( + Some g.ilg.typ_Attribute.TypeSpec, + ilTy, + [], + (ilElements |> List.map (fun (_, _, _, fieldInfo) -> fieldInfo)), + ILMemberAccess.Public, + None, + None + ) + ) + + mkILGenericClass ( + name, + ILTypeDefAccess.Private, + ILGenericParameterDefs.Empty, + g.ilg.typ_Attribute, + ILTypes.Empty, + mkILMethods ( + ilCtorDef + :: (ilElements |> List.fold (fun acc (_, getter, _, _) -> getter :: acc) []) + ), + mkILFields (ilElements |> List.map (fun (field, _, _, _) -> field)), + emptyILTypeDefs, + mkILProperties (ilElements |> List.map (fun (_, _, property, _) -> property)), + emptyILEvents, + emptyILCustomAttrs, + ILTypeInit.BeforeField + ) + +let mkLocalPrivateInt32Enum (g: TcGlobals, tref: ILTypeRef, values: (string * int32) array) = + let ilType = ILType.Value(mkILNonGenericTySpec (tref)) + + let enumFields = + values + |> Array.map (fun (name, value) -> mkILStaticLiteralField (name, ilType, ILFieldInit.Int32 value, None, ILMemberAccess.Public)) + |> Array.append + [| + (mkILInstanceField ("value__", g.ilg.typ_Int32, None, ILMemberAccess.Public)) + .WithSpecialName(true) + |] + |> Array.toList + + mkILGenericClass( + tref.Name, + ILTypeDefAccess.Private, + ILGenericParameterDefs.Empty, + g.ilg.typ_Enum, + ILTypes.Empty, + mkILMethods [], + mkILFields enumFields, + emptyILTypeDefs, + emptyILProperties, + emptyILEvents, + g.AddGeneratedAttributes(mkILCustomAttrs [ mkFlagsAttribute g ]), + ILTypeInit.OnAny + ) + .WithSealed(true) + +//-------------------------------------------------------------------------- +// Generate Local embeddable versions of framework types when necessary +//-------------------------------------------------------------------------- + +let private getPotentiallyEmbedableAttribute (g: TcGlobals) (info: BuiltinAttribInfo) = + let tref = info.TypeRef + g.TryEmbedILType(tref, (fun () -> mkLocalPrivateAttributeWithDefaultConstructor (g, tref.Name))) + mkILCustomAttribute (info.TypeRef, [], [], []) + +let GetReadOnlyAttribute (g: TcGlobals) = + getPotentiallyEmbedableAttribute g g.attrib_IsReadOnlyAttribute + +let GetIsUnmanagedAttribute (g: TcGlobals) = + getPotentiallyEmbedableAttribute g g.attrib_IsUnmanagedAttribute + +let GenReadOnlyAttributeIfNecessary g ty = + if isInByrefTy g ty then + let attr = GetReadOnlyAttribute g + Some attr + else + None + +let GetDynamicallyAccessedMemberTypes (g: TcGlobals) = + let tref = g.enum_DynamicallyAccessedMemberTypes.TypeRef + + if not (g.compilingFSharpCore) then + g.TryEmbedILType( + tref, + (fun () -> + let values = + [| + ("All", -1) + ("None", 0) + ("PublicParameterlessConstructor", 1) + ("PublicConstructors", 3) + ("NonPublicConstructors", 4) + ("PublicMethods", 8) + ("NonPublicMethods", 16) + ("PublicFields", 32) + ("NonPublicFields", 64) + ("PublicNestedTypes", 128) + ("NonPublicNestedTypes", 256) + ("PublicProperties", 512) + ("NonPublicProperties", 1024) + ("PublicEvents", 2048) + ("NonPublicEvents", 4096) + ("Interfaces", 8192) + |] + + (mkLocalPrivateInt32Enum (g, tref, values)) + .WithSerializable(true) + .WithSealed(true)) + ) + + ILType.Value(mkILNonGenericTySpec (tref)) + +let GetDynamicDependencyAttribute (g: TcGlobals) memberTypes (ilType: ILType) = + let tref = g.attrib_DynamicDependencyAttribute.TypeRef + + g.TryEmbedILType( + tref, + (fun () -> + let properties = + Some [ "MemberType", GetDynamicallyAccessedMemberTypes g; "Type", g.ilg.typ_Type ] + + mkLocalPrivateAttributeWithPropertyConstructors (g, tref.Name, properties)) + ) + + let typIlMemberTypes = + ILType.Value(mkILNonGenericTySpec (g.enum_DynamicallyAccessedMemberTypes.TypeRef)) + + mkILCustomAttribute ( + tref, + [ typIlMemberTypes; g.ilg.typ_Type ], + [ ILAttribElem.Int32 memberTypes; ILAttribElem.TypeRef(Some ilType.TypeRef) ], + [] + ) + +/// Generate "modreq([mscorlib]System.Runtime.InteropServices.InAttribute)" on inref types. +let GenReadOnlyModReqIfNecessary (g: TcGlobals) ty ilTy = + let add = isInByrefTy g ty && g.attrib_InAttribute.TyconRef.CanDeref + + if add then + ILType.Modified(true, g.attrib_InAttribute.TypeRef, ilTy) + else + ilTy diff --git a/src/fcs-fable/src/Compiler/CodeGen/IlxGenSupport.fsi b/src/fcs-fable/src/Compiler/CodeGen/IlxGenSupport.fsi new file mode 100644 index 0000000000..24968a25ec --- /dev/null +++ b/src/fcs-fable/src/Compiler/CodeGen/IlxGenSupport.fsi @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. + +/// The ILX generator. +module internal FSharp.Compiler.IlxGenSupport + +open System.Reflection +open FSharp.Compiler.AbstractIL.IL +open FSharp.Compiler.TcGlobals + +val mkLdfldMethodDef: + ilMethName: string * + iLAccess: ILMemberAccess * + isStatic: bool * + ilTy: ILType * + ilFieldName: string * + ilPropType: ILType * + customAttrs: ILAttribute list -> + ILMethodDef + +val GetDynamicDependencyAttribute: g: TcGlobals -> memberTypes: int32 -> ilType: ILType -> ILAttribute +val GenReadOnlyModReqIfNecessary: g: TcGlobals -> ty: TypedTree.TType -> ilTy: ILType -> ILType +val GenReadOnlyAttributeIfNecessary: g: TcGlobals -> ty: TypedTree.TType -> ILAttribute option +val GetReadOnlyAttribute: g: TcGlobals -> ILAttribute +val GetIsUnmanagedAttribute: g: TcGlobals -> ILAttribute diff --git a/src/fcs-fable/src/Compiler/Driver/CompilerConfig.fs b/src/fcs-fable/src/Compiler/Driver/CompilerConfig.fs index f7caee5e85..3012ea0394 100644 --- a/src/fcs-fable/src/Compiler/Driver/CompilerConfig.fs +++ b/src/fcs-fable/src/Compiler/Driver/CompilerConfig.fs @@ -7,6 +7,7 @@ open System open System.Collections.Concurrent open System.Runtime.InteropServices open System.IO +open FSharp.Compiler.Optimizer open Internal.Utilities #if !FABLE_COMPILER open Internal.Utilities.FSharpEnvironment @@ -345,6 +346,7 @@ type LStatus = type TokenizeOption = | AndCompile | Only + | Debug | Unfiltered type PackageManagerLine = @@ -581,6 +583,8 @@ type TcConfigBuilder = /// If true - every expression in quotations will be augmented with full debug info (fileName, location in file) mutable emitDebugInfoInQuotations: bool + mutable strictIndentation: bool option + mutable exename: string option // If true - the compiler will copy FSharp.Core.dll along the produced binaries @@ -771,7 +775,14 @@ type TcConfigBuilder = doTLR = false doFinalSimplify = false optsOn = false - optSettings = Optimizer.OptimizationSettings.Defaults + optSettings = + { OptimizationSettings.Defaults with + processingMode = + if FSharpExperimentalFeaturesEnabledAutomatically then + OptimizationProcessingMode.Parallel + else + OptimizationProcessingMode.Sequential + } emitTailcalls = true deterministic = false concurrentBuild = true @@ -833,6 +844,7 @@ type TcConfigBuilder = DumpGraph = false } dumpSignatureData = false + strictIndentation = None } member tcConfigB.FxResolver = @@ -1261,6 +1273,7 @@ type TcConfig private (data: TcConfigBuilder, validate: bool) = member _.bufferWidth = data.bufferWidth member _.fsiMultiAssemblyEmit = data.fsiMultiAssemblyEmit member _.FxResolver = data.FxResolver + member _.strictIndentation = data.strictIndentation member _.primaryAssembly = data.primaryAssembly member _.noFeedback = data.noFeedback member _.stackReserveSize = data.stackReserveSize diff --git a/src/fcs-fable/src/Compiler/Driver/CompilerConfig.fsi b/src/fcs-fable/src/Compiler/Driver/CompilerConfig.fsi index 16e39886a0..8067f2ed8a 100644 --- a/src/fcs-fable/src/Compiler/Driver/CompilerConfig.fsi +++ b/src/fcs-fable/src/Compiler/Driver/CompilerConfig.fsi @@ -166,6 +166,8 @@ type TokenizeOption = | Only + | Debug + | Unfiltered type PackageManagerLine = @@ -477,6 +479,8 @@ type TcConfigBuilder = mutable emitDebugInfoInQuotations: bool + mutable strictIndentation: bool option + mutable exename: string option mutable copyFSharpCore: CopyFSharpCoreFlag @@ -818,6 +822,8 @@ type TcConfig = member FxResolver: FxResolver + member strictIndentation: bool option + member ComputeIndentationAwareSyntaxInitialStatus: string -> bool #if !FABLE_COMPILER diff --git a/src/fcs-fable/src/Compiler/Driver/CompilerDiagnostics.fs b/src/fcs-fable/src/Compiler/Driver/CompilerDiagnostics.fs index 116d529095..6d3644c9fa 100644 --- a/src/fcs-fable/src/Compiler/Driver/CompilerDiagnostics.fs +++ b/src/fcs-fable/src/Compiler/Driver/CompilerDiagnostics.fs @@ -81,6 +81,7 @@ type Exception with member exn.DiagnosticRange = match exn with + | ArgumentsInSigAndImplMismatch (_, implArg) -> Some implArg.idRange | ErrorFromAddingConstraint (_, exn2, _) -> exn2.DiagnosticRange #if !NO_TYPEPROVIDERS | TypeProviders.ProvidedTypeResolutionNoRange exn -> exn.DiagnosticRange @@ -133,6 +134,7 @@ type Exception with | DiagnosticEnabledWithLanguageFeature (_, _, m, _) | SyntaxError (_, m) | InternalError (_, m) + | InternalException (_, _, m) | InterfaceNotRevealed (_, _, m) | WrappedError (_, m) | PatternMatchCompilation.MatchIncomplete (_, _, m) @@ -158,7 +160,7 @@ type Exception with | IndeterminateType m | TyconBadArgs (_, _, _, m) -> Some m - | FieldNotContained (_, _, _, arf, _, _) -> Some arf.Range + | FieldNotContained (_, _, _, _, arf, _, _) -> Some arf.Range | ValueNotContained (_, _, _, aval, _, _) -> Some aval.Range | UnionCaseNotContained (_, _, _, aval, _, _) -> Some aval.Id.idRange | FSharpExceptionNotContained (_, _, aexnc, _, _) -> Some aexnc.Range @@ -322,6 +324,7 @@ type Exception with | BadEventTransformation _ -> 91 | HashLoadedScriptConsideredSource _ -> 92 | UnresolvedConversionOperator _ -> 93 + | ArgumentsInSigAndImplMismatch _ -> 3218 // avoid 94-100 for safety | ObsoleteError _ -> 101 #if !NO_TYPEPROVIDERS @@ -383,18 +386,20 @@ type PhasedDiagnostic with | 1182 -> false // chkUnusedValue - off by default | 3180 -> false // abImplicitHeapAllocation - off by default | 3186 -> false // pickleMissingDefinition - off by default - | 3366 -> false //tcIndexNotationDeprecated - currently off by default + | 3366 -> false // tcIndexNotationDeprecated - currently off by default | 3517 -> false // optFailedToInlineSuggestedValue - off by default | 3388 -> false // tcSubsumptionImplicitConversionUsed - off by default | 3389 -> false // tcBuiltInImplicitConversionUsed - off by default | 3390 -> false // xmlDocBadlyFormed - off by default | 3395 -> false // tcImplicitConversionUsedForMethodArg - off by default | 3559 -> false // typrelNeverRefinedAwayFromTop - off by default + | 3579 -> false // alwaysUseTypedStringInterpolation - off by default + | 3582 -> false // infoIfFunctionShadowsUnionCase - off by default | _ -> match x.Exception with | DiagnosticEnabledWithLanguageFeature (_, _, _, enabled) -> enabled | _ -> - (severity = FSharpDiagnosticSeverity.Info) + (severity = FSharpDiagnosticSeverity.Info && level > 0) || (severity = FSharpDiagnosticSeverity.Warning && level >= x.WarningLevel) /// Indicates if a diagnostic should be reported as an informational @@ -606,6 +611,7 @@ module OldStyleMessages = let LoadedSourceNotFoundIgnoringE () = Message("LoadedSourceNotFoundIgnoring", "%s") let MSBuildReferenceResolutionErrorE () = Message("MSBuildReferenceResolutionError", "%s%s") let TargetInvocationExceptionWrapperE () = Message("TargetInvocationExceptionWrapper", "%s") + let ArgumentsInSigAndImplMismatchE () = Message("ArgumentsInSigAndImplMismatch", "%s%s") #if DEBUG let mutable showParserStackOnParseError = false @@ -1203,6 +1209,7 @@ type Exception with | Parser.TOKEN_INLINE -> SR.GetString("Parser.TOKEN.INLINE") | Parser.TOKEN_WHEN -> SR.GetString("Parser.TOKEN.WHEN") | Parser.TOKEN_WHILE -> SR.GetString("Parser.TOKEN.WHILE") + | Parser.TOKEN_WHILE_BANG -> SR.GetString("Parser.TOKEN.WHILE.BANG") | Parser.TOKEN_WITH -> SR.GetString("Parser.TOKEN.WITH") | Parser.TOKEN_IF -> SR.GetString("Parser.TOKEN.IF") | Parser.TOKEN_DO -> SR.GetString("Parser.TOKEN.DO") @@ -1483,6 +1490,7 @@ type Exception with |> List.map Parser.tokenTagToTokenId |> List.filter (function | Parser.TOKEN_error + | Parser.TOKEN_OBLOCKSEP | Parser.TOKEN_EOF -> false | _ -> true) |> List.map tokenIdToText @@ -1582,7 +1590,7 @@ type Exception with ) ) - | FieldNotContained (denv, infoReader, enclosingTycon, v1, v2, f) -> + | FieldNotContained (denv, infoReader, enclosingTycon, _, v1, v2, f) -> let enclosingTcref = mkLocalEntityRef enclosingTycon os.AppendString( @@ -1685,6 +1693,7 @@ type Exception with OutputNameSuggestions os suggestNames suggestionF idText | InternalError (s, _) + | InternalException (_, s, _) | InvalidArgument s | Failure s as exn -> ignore exn // use the argument, even in non DEBUG @@ -1880,6 +1889,9 @@ type Exception with | MSBuildReferenceResolutionError (code, message, _) -> os.AppendString(MSBuildReferenceResolutionErrorE().Format message code) + | ArgumentsInSigAndImplMismatch (sigArg, implArg) -> + os.AppendString(ArgumentsInSigAndImplMismatchE().Format sigArg.idText implArg.idText) + #if !FABLE_COMPILER // Strip TargetInvocationException wrappers | :? TargetInvocationException as exn -> exn.InnerException.Output(os, suggestNames) @@ -1897,6 +1909,8 @@ type Exception with | :? UnauthorizedAccessException as exn -> Printf.bprintf os "%s" exn.Message #endif //!FABLE_COMPILER + | :? InvalidOperationException as exn when exn.Message.Contains "ControlledExecution.Run" -> Printf.bprintf os "%s" exn.Message + | exn -> os.AppendString(TargetInvocationExceptionWrapperE().Format exn.Message) #if DEBUG @@ -2015,7 +2029,7 @@ let FormatDiagnosticLocation (tcConfig: TcConfig) m : FormattedDiagnosticLocatio // We're adjusting the columns here to be 1-based - both for parity with C# and for MSBuild, which assumes 1-based columns for error output | DiagnosticStyle.Default -> let file = file.Replace('/', Path.DirectorySeparatorChar) - let m = mkRange m.FileName (mkPos m.StartLine (m.StartColumn + 1)) m.End + let m = withStart (mkPos m.StartLine (m.StartColumn + 1)) m (sprintf "%s(%d,%d): " file m.StartLine m.StartColumn), m, file // We may also want to change Test to be 1-based @@ -2023,7 +2037,7 @@ let FormatDiagnosticLocation (tcConfig: TcConfig) m : FormattedDiagnosticLocatio let file = file.Replace("/", "\\") let m = - mkRange m.FileName (mkPos m.StartLine (m.StartColumn + 1)) (mkPos m.EndLine (m.EndColumn + 1)) + withStartEnd (mkPos m.StartLine (m.StartColumn + 1)) (mkPos m.EndLine (m.EndColumn + 1)) m sprintf "%s(%d,%d-%d,%d): " file m.StartLine m.StartColumn m.EndLine m.EndColumn, m, file @@ -2031,7 +2045,7 @@ let FormatDiagnosticLocation (tcConfig: TcConfig) m : FormattedDiagnosticLocatio let file = file.Replace('/', Path.DirectorySeparatorChar) let m = - mkRange m.FileName (mkPos m.StartLine (m.StartColumn + 1)) (mkPos m.EndLine (m.EndColumn + 1)) + withStartEnd (mkPos m.StartLine (m.StartColumn + 1)) (mkPos m.EndLine (m.EndColumn + 1)) m sprintf "%s:%d:%d: " file m.StartLine m.StartColumn, m, file @@ -2047,7 +2061,7 @@ let FormatDiagnosticLocation (tcConfig: TcConfig) m : FormattedDiagnosticLocatio let file = file.Replace("/", "\\") let m = - mkRange m.FileName (mkPos m.StartLine (m.StartColumn + 1)) (mkPos m.EndLine (m.EndColumn + 1)) + withStartEnd (mkPos m.StartLine (m.StartColumn + 1)) (mkPos m.EndLine (m.EndColumn + 1)) m sprintf "%s(%d,%d,%d,%d): " file m.StartLine m.StartColumn m.EndLine m.EndColumn, m, file else diff --git a/src/fcs-fable/src/Compiler/Driver/CompilerImports.fs b/src/fcs-fable/src/Compiler/Driver/CompilerImports.fs index 740b167b2a..374f4d1f12 100644 --- a/src/fcs-fable/src/Compiler/Driver/CompilerImports.fs +++ b/src/fcs-fable/src/Compiler/Driver/CompilerImports.fs @@ -234,9 +234,7 @@ let EncodeOptimizationData (tcGlobals, tcConfig: TcConfig, outfile, exportRemapp else data - [ - WriteOptimizationData(tcConfig, tcGlobals, outfile, isIncrementalBuild, ccu, optData) - ] + [ WriteOptimizationData(tcConfig, tcGlobals, outfile, isIncrementalBuild, ccu, optData) ] else [] @@ -2082,6 +2080,9 @@ and [] TcImports let minfo: PickledCcuInfo = data.RawData let mspec = minfo.mspec + + if mspec.DisplayName = "FSharp.Core" then + updateSeqTypeIsPrefix mspec #if !NO_TYPEPROVIDERS let invalidateCcu = Event<_>() diff --git a/src/fcs-fable/src/Compiler/Driver/CompilerOptions.fs b/src/fcs-fable/src/Compiler/Driver/CompilerOptions.fs index aeebe92541..970e7852e7 100644 --- a/src/fcs-fable/src/Compiler/Driver/CompilerOptions.fs +++ b/src/fcs-fable/src/Compiler/Driver/CompilerOptions.fs @@ -7,6 +7,7 @@ module internal FSharp.Compiler.CompilerOptions open System open System.Diagnostics open System.IO +open FSharp.Compiler.Optimizer open Internal.Utilities.Library open Internal.Utilities.Library.Extras open FSharp.Compiler.AbstractIL.IL @@ -531,23 +532,12 @@ let SetOptimizeOff (tcConfigB: TcConfigBuilder) = tcConfigB.optSettings <- { tcConfigB.optSettings with jitOptUser = Some false - } - - tcConfigB.optSettings <- - { tcConfigB.optSettings with localOptUser = Some false - } - - tcConfigB.optSettings <- - { tcConfigB.optSettings with crossAssemblyOptimizationUser = Some false - } - - tcConfigB.optSettings <- - { tcConfigB.optSettings with lambdaInlineThreshold = 0 } + tcConfigB.onlyEssentialOptimizationData <- true tcConfigB.doDetuple <- false tcConfigB.doTLR <- false tcConfigB.doFinalSimplify <- false @@ -1156,8 +1146,18 @@ let languageFlags tcConfigB = None, Some(FSComp.SR.optsChecked ()) ) + CompilerOption("define", tagString, OptionString(defineSymbol tcConfigB), None, Some(FSComp.SR.optsDefine ())) + mlCompatibilityFlag tcConfigB + + CompilerOption( + "strict-indentation", + tagNone, + OptionSwitch(fun switch -> tcConfigB.strictIndentation <- Some(switch = OptionSwitch.On)), + None, + Some(FSComp.SR.optsStrictIndentation ()) + ) ] // OptionBlock: Advanced user options @@ -1249,9 +1249,10 @@ let noFrameworkFlag isFsc tcConfigB = "noframework", tagNone, OptionUnit(fun () -> - tcConfigB.implicitlyReferenceDotNetAssemblies <- false - + // When the compilation is not fsi do nothing. + // It is just not a usefull option when running fsi on the coreclr or the desktop framework really. if isFsc then + tcConfigB.implicitlyReferenceDotNetAssemblies <- false tcConfigB.implicitlyResolveAssemblies <- false), None, Some(FSComp.SR.optsNoframework ()) @@ -1267,7 +1268,6 @@ let advancedFlagsFsi tcConfigB = None, Some(FSComp.SR.optsClearResultsCache ()) ) - noFrameworkFlag false tcConfigB ] let advancedFlagsFsc tcConfigB = @@ -1348,7 +1348,6 @@ let advancedFlagsFsc tcConfigB = None, Some(FSComp.SR.optsEmitDebugInfoInQuotations ()) ) - ] // OptionBlock: Internal options (test use only) @@ -1403,6 +1402,11 @@ let testFlag tcConfigB = DumpGraph = true } | "DumpSignatureData" -> tcConfigB.dumpSignatureData <- true + | "ParallelOptimization" -> + tcConfigB.optSettings <- + { tcConfigB.optSettings with + processingMode = OptimizationProcessingMode.Parallel + } #if DEBUG | "ShowParserStackOnParseError" -> showParserStackOnParseError <- true #endif @@ -1574,6 +1578,14 @@ let internalFlags (tcConfigB: TcConfigBuilder) = None ) + CompilerOption( + "tokenize-debug", + tagNone, + OptionUnit(fun () -> tcConfigB.tokenize <- TokenizeOption.Debug), + Some(InternalCommandLineOption("--tokenize-debug", rangeCmdArgs)), + None + ) + CompilerOption( "tokenize-unfiltered", tagNone, @@ -1865,7 +1877,8 @@ let deprecatedFlagsBoth tcConfigB = ) ] -let deprecatedFlagsFsi tcConfigB = deprecatedFlagsBoth tcConfigB +let deprecatedFlagsFsi tcConfigB = + [ noFrameworkFlag false tcConfigB; yield! deprecatedFlagsBoth tcConfigB ] let deprecatedFlagsFsc tcConfigB = deprecatedFlagsBoth tcConfigB diff --git a/src/fcs-fable/src/Compiler/Driver/CreateILModule.fs b/src/fcs-fable/src/Compiler/Driver/CreateILModule.fs index efcf212675..45d9791ffd 100644 --- a/src/fcs-fable/src/Compiler/Driver/CreateILModule.fs +++ b/src/fcs-fable/src/Compiler/Driver/CreateILModule.fs @@ -303,8 +303,16 @@ module MainModuleBuilder = RequireCompilationThread ctok + let isEmbeddableTypeWithLocalSourceImplementation (td: ILTypeDef) = + (TcGlobals.IsInEmbeddableKnownSet td.Name) + && not (codegenResults.ilTypeDefs |> List.exists (fun r -> r.Name = td.Name)) + let ilTypeDefs = - mkILTypeDefs (codegenResults.ilTypeDefs @ tcGlobals.tryRemoveEmbeddedILTypeDefs ()) + mkILTypeDefs ( + codegenResults.ilTypeDefs + @ (tcGlobals.tryRemoveEmbeddedILTypeDefs () + |> List.filter isEmbeddableTypeWithLocalSourceImplementation) + ) let mainModule = let hashAlg = diff --git a/src/fcs-fable/src/Compiler/Driver/FxResolver.fs b/src/fcs-fable/src/Compiler/Driver/FxResolver.fs index dbc84c56fd..db0b6c3d75 100644 --- a/src/fcs-fable/src/Compiler/Driver/FxResolver.fs +++ b/src/fcs-fable/src/Compiler/Driver/FxResolver.fs @@ -416,7 +416,7 @@ type internal FxResolver match runningTfmOpt with | Some tfm -> tfm - | _ -> if isRunningOnCoreClr then "net7.0" else "net472" + | _ -> if isRunningOnCoreClr then "net8.0" else "net472" let trySdkRefsPackDirectory = lazy @@ -759,6 +759,7 @@ type internal FxResolver "System.Runtime.Serialization.Xml" "System.Security" "System.Security.Claims" + "System.Security.Cryptography" "System.Security.Cryptography.Algorithms" "System.Security.Cryptography.Cng" "System.Security.Cryptography.Csp" diff --git a/src/fcs-fable/src/Compiler/Driver/GraphChecking/DependencyResolution.fs b/src/fcs-fable/src/Compiler/Driver/GraphChecking/DependencyResolution.fs index 78e312e5fe..243d5fb177 100644 --- a/src/fcs-fable/src/Compiler/Driver/GraphChecking/DependencyResolution.fs +++ b/src/fcs-fable/src/Compiler/Driver/GraphChecking/DependencyResolution.fs @@ -1,35 +1,45 @@ module internal FSharp.Compiler.GraphChecking.DependencyResolution -open FSharp.Compiler.IO open FSharp.Compiler.Syntax +open Internal.Utilities.Library -/// Find a path in the Trie. -/// This function could be cached in future if performance is an issue. -let queryTrie (trie: TrieNode) (path: LongIdentifier) : QueryTrieNodeResult = +/// Find a path from a starting TrieNode and return the end node or None +let queryTriePartial (trie: TrieNode) (path: LongIdentifier) : TrieNode option = let rec visit (currentNode: TrieNode) (path: LongIdentifier) = match path with - | [] -> failwith "path should not be empty" - | [ lastNodeFromPath ] -> - match currentNode.Children.TryGetValue(lastNodeFromPath) with - | false, _ -> QueryTrieNodeResult.NodeDoesNotExist - | true, childNode -> - if Set.isEmpty childNode.Files then - QueryTrieNodeResult.NodeDoesNotExposeData - else - QueryTrieNodeResult.NodeExposesData(childNode.Files) + // When we get through all partial identifiers, we've reached the node the full path points to. + | [] -> Some currentNode + // More segments to get through | currentPath :: restPath -> match currentNode.Children.TryGetValue(currentPath) with - | false, _ -> QueryTrieNodeResult.NodeDoesNotExist + | false, _ -> None | true, childNode -> visit childNode restPath visit trie path -let queryTrieMemoized (trie: TrieNode) : QueryTrie = - Internal.Utilities.Library.Tables.memoize (queryTrie trie) +let mapNodeToQueryResult (node: TrieNode option) : QueryTrieNodeResult = + match node with + | Some finalNode -> + if Set.isEmpty finalNode.Files then + QueryTrieNodeResult.NodeDoesNotExposeData + else + QueryTrieNodeResult.NodeExposesData(finalNode.Files) + | None -> QueryTrieNodeResult.NodeDoesNotExist + +/// Find a path in the Trie. +let queryTrie (trie: TrieNode) (path: LongIdentifier) : QueryTrieNodeResult = + queryTriePartial trie path |> mapNodeToQueryResult + +/// Same as 'queryTrie' but allows passing in a path combined from two parts, avoiding list allocation. +let queryTrieDual (trie: TrieNode) (path1: LongIdentifier) (path2: LongIdentifier) : QueryTrieNodeResult = + match queryTriePartial trie path1 with + | Some intermediateNode -> queryTriePartial intermediateNode path2 + | None -> None + |> mapNodeToQueryResult /// Process namespace declaration. -let processNamespaceDeclaration (queryTrie: QueryTrie) (path: LongIdentifier) (state: FileContentQueryState) : FileContentQueryState = - let queryResult = queryTrie path +let processNamespaceDeclaration (trie: TrieNode) (path: LongIdentifier) (state: FileContentQueryState) : FileContentQueryState = + let queryResult = queryTrie trie path match queryResult with | QueryTrieNodeResult.NodeDoesNotExist -> state @@ -38,8 +48,8 @@ let processNamespaceDeclaration (queryTrie: QueryTrie) (path: LongIdentifier) (s /// Process an "open" statement. /// The statement could link to files and/or should be tracked as an open namespace. -let processOpenPath (queryTrie: QueryTrie) (path: LongIdentifier) (state: FileContentQueryState) : FileContentQueryState = - let queryResult = queryTrie path +let processOpenPath (trie: TrieNode) (path: LongIdentifier) (state: FileContentQueryState) : FileContentQueryState = + let queryResult = queryTrie trie path match queryResult with | QueryTrieNodeResult.NodeDoesNotExist -> state @@ -47,9 +57,7 @@ let processOpenPath (queryTrie: QueryTrie) (path: LongIdentifier) (state: FileCo | QueryTrieNodeResult.NodeExposesData files -> state.AddOpenNamespace(path, files) /// Process an identifier. -let processIdentifier (queryTrie: QueryTrie) (path: LongIdentifier) (state: FileContentQueryState) : FileContentQueryState = - let queryResult = queryTrie path - +let processIdentifier (queryResult: QueryTrieNodeResult) (state: FileContentQueryState) : FileContentQueryState = match queryResult with | QueryTrieNodeResult.NodeDoesNotExist -> state | QueryTrieNodeResult.NodeDoesNotExposeData -> @@ -59,26 +67,26 @@ let processIdentifier (queryTrie: QueryTrie) (path: LongIdentifier) (state: File | QueryTrieNodeResult.NodeExposesData files -> state.AddDependencies files /// Typically used to fold FileContentEntry items over a FileContentQueryState -let rec processStateEntry (queryTrie: QueryTrie) (state: FileContentQueryState) (entry: FileContentEntry) : FileContentQueryState = +let rec processStateEntry (trie: TrieNode) (state: FileContentQueryState) (entry: FileContentEntry) : FileContentQueryState = match entry with | FileContentEntry.TopLevelNamespace (topLevelPath, content) -> let state = match topLevelPath with | [] -> state - | _ -> processNamespaceDeclaration queryTrie topLevelPath state + | _ -> processNamespaceDeclaration trie topLevelPath state - List.fold (processStateEntry queryTrie) state content + List.fold (processStateEntry trie) state content | FileContentEntry.OpenStatement path -> // An open statement can directly reference file or be a partial open statement // Both cases need to be processed. - let stateAfterFullOpenPath = processOpenPath queryTrie path state + let stateAfterFullOpenPath = processOpenPath trie path state - // Any existing open statement could be extended with the current path (if that node where to exists in the trie) + // Any existing open statement could be extended with the current path (if that node were to exists in the trie) // The extended path could add a new link (in case of a module or namespace with types) - // It might also not add anything at all (in case it the extended path is still a partial one) + // It might also not add anything at all (in case the extended path is still a partial one) (stateAfterFullOpenPath, state.OpenNamespaces) - ||> Set.fold (fun acc openNS -> processOpenPath queryTrie [ yield! openNS; yield! path ] acc) + ||> Set.fold (fun acc openNS -> processOpenPath trie [ yield! openNS; yield! path ] acc) | FileContentEntry.PrefixedIdentifier path -> match path with @@ -91,15 +99,17 @@ let rec processStateEntry (queryTrie: QueryTrie) (state: FileContentQueryState) ||> Array.fold (fun state takeParts -> let path = List.take takeParts path // process the name was if it were a FQN - let stateAfterFullIdentifier = processIdentifier queryTrie path state + let stateAfterFullIdentifier = processIdentifier (queryTrieDual trie [] path) state // Process the name in combination with the existing open namespaces (stateAfterFullIdentifier, state.OpenNamespaces) - ||> Set.fold (fun acc openNS -> processIdentifier queryTrie [ yield! openNS; yield! path ] acc)) + ||> Set.fold (fun acc openNS -> + let queryResult = queryTrieDual trie openNS path + processIdentifier queryResult acc)) | FileContentEntry.NestedModule (nestedContent = nestedContent) -> // We don't want our current state to be affect by any open statements in the nested module - let nestedState = List.fold (processStateEntry queryTrie) state nestedContent + let nestedState = List.fold (processStateEntry trie) state nestedContent // Afterward we are only interested in the found dependencies in the nested module let foundDependencies = Set.union state.FoundDependencies nestedState.FoundDependencies @@ -108,22 +118,6 @@ let rec processStateEntry (queryTrie: QueryTrie) (state: FileContentQueryState) FoundDependencies = foundDependencies } -/// Return all files contained in the trie. -let filesInTrie (node: TrieNode) : Set = - let rec collect (node: TrieNode) (continuation: FileIndex list -> FileIndex list) : FileIndex list = - let continuations: ((FileIndex list -> FileIndex list) -> FileIndex list) list = - [ - for node in node.Children.Values do - yield collect node - ] - - let finalContinuation indexes = - continuation [ yield! node.Files; yield! List.concat indexes ] - - Continuation.sequence continuations finalContinuation - - Set.ofList (collect node id) - /// /// For a given file's content, collect all missing ("ghost") file dependencies that the core resolution algorithm didn't return, /// but are required to satisfy the type-checker. @@ -136,16 +130,16 @@ let filesInTrie (node: TrieNode) : Set = /// - the namespace does not contain any children that can be referenced implicitly (eg. by type inference), /// then the main resolution algorithm does not create a link to any file defining the namespace. /// However, to satisfy the type-checker, the namespace must be resolved. -/// This function returns a list of extra dependencies that makes sure that any such namespaces can be resolved (if it exists). -/// For each unused open namespace we return one or more file links that define it. +/// This function returns an array with a potential extra dependencies that makes sure that any such namespaces can be resolved (if they exists). +/// For each unused namespace `open` we return at most one file that defines that namespace. /// -let collectGhostDependencies (fileIndex: FileIndex) (trie: TrieNode) (queryTrie: QueryTrie) (result: FileContentQueryState) = - // Go over all open namespaces, and assert all those links eventually went anywhere +let collectGhostDependencies (fileIndex: FileIndex) (trie: TrieNode) (result: FileContentQueryState) = + // For each opened namespace, if none of already resolved dependencies define it, return the top-most file that defines it. Set.toArray result.OpenedNamespaces - |> Array.collect (fun path -> - match queryTrie path with + |> Array.choose (fun path -> + match queryTrie trie path with | QueryTrieNodeResult.NodeExposesData _ - | QueryTrieNodeResult.NodeDoesNotExist -> Array.empty + | QueryTrieNodeResult.NodeDoesNotExist -> None | QueryTrieNodeResult.NodeDoesNotExposeData -> // At this point we are following up if an open namespace really lead nowhere. let node = @@ -156,27 +150,25 @@ let collectGhostDependencies (fileIndex: FileIndex) (trie: TrieNode) (queryTrie: find trie path - let filesDefiningNamespace = - filesInTrie node |> Set.filter (fun idx -> idx < fileIndex) - - let dependenciesDefiningNamespace = - Set.intersect result.FoundDependencies filesDefiningNamespace - - [| - if Set.isEmpty dependenciesDefiningNamespace then - // There is no existing dependency defining the namespace, - // so we need to add one. - if Set.isEmpty filesDefiningNamespace then - // No file defines inferrable symbols for this namespace, but the namespace might exist. - // Because we don't track what files define a namespace without any relevant content, - // the only way to ensure the namespace is in scope is to add a link to every preceding file. - yield! [| 0 .. (fileIndex - 1) |] - else - // At least one file defines the namespace - add a dependency to the first (top) one. - yield Seq.head filesDefiningNamespace - |]) - -let mkGraph (compilingFSharpCore: bool) (filePairs: FilePairMap) (files: FileInProject array) : Graph = + match node.Current with + // Both Root and module would expose data, so we can ignore them. + | Root _ + | Module _ -> None + | Namespace (filesDefiningNamespaceWithoutTypes = filesDefiningNamespaceWithoutTypes) -> + if filesDefiningNamespaceWithoutTypes.Overlaps(result.FoundDependencies) then + // The ghost dependency is already covered by a real dependency. + None + else + // We are only interested in any file that contained the namespace when they came before the current file. + // If the namespace is defined in a file after the current file then there is no way the current file can reference it. + // Which means that namespace would come from a different assembly. + filesDefiningNamespaceWithoutTypes + |> Seq.sort + |> Seq.tryFind (fun connectedFileIdx -> + // We pick the lowest file index from the namespace to satisfy the type-checker for the open statement. + connectedFileIdx < fileIndex)) + +let mkGraph (filePairs: FilePairMap) (files: FileInProject array) : Graph * TrieNode = // We know that implementation files backed by signatures cannot be depended upon. // Do not include them when building the Trie. let trieInput = @@ -188,64 +180,63 @@ let mkGraph (compilingFSharpCore: bool) (filePairs: FilePairMap) (files: FileInP | ParsedInput.SigFile _ -> Some f) let trie = TrieMapping.mkTrie trieInput - let queryTrie: QueryTrie = queryTrieMemoized trie - let fileContents = files |> Array.Parallel.map FileContentMapping.mkFileContent + let fileContents = + files + |> Array.Parallel.map (fun file -> + if file.Idx = 0 then + List.empty + else + FileContentMapping.mkFileContent file) let findDependencies (file: FileInProject) : FileIndex array = - let fileContent = fileContents[file.Idx] - - let knownFiles = [ 0 .. (file.Idx - 1) ] |> set - // File depends on all files above it that define accessible symbols at the root level (global namespace). - let filesFromRoot = trie.Files |> Set.filter (fun rootIdx -> rootIdx < file.Idx) - // Start by listing root-level dependencies. - let initialDepsResult = - (FileContentQueryState.Create file.Idx knownFiles filesFromRoot), fileContent - // Sequentially process all relevant entries of the file and keep updating the state and set of dependencies. - let depsResult = - initialDepsResult - // Seq is faster than List in this case. - ||> Seq.fold (processStateEntry queryTrie) - - // Add missing links for cases where an unused open namespace did not create a link. - let ghostDependencies = collectGhostDependencies file.Idx trie queryTrie depsResult - - // Add a link from implementation files to their signature files. - let signatureDependency = - match filePairs.TryGetSignatureIndex file.Idx with - | None -> Array.empty - | Some sigIdx -> Array.singleton sigIdx - - // Files in FSharp.Core have an implicit dependency on `prim-types-prelude.fsi` - add it. - let fsharpCoreImplicitDependencies = - let filename = "prim-types-prelude.fsi" - - let implicitDepIdx = - files - |> Array.tryFindIndex (fun f -> FileSystemUtils.fileNameOfPath f.FileName = filename) - - [| - if compilingFSharpCore then - match implicitDepIdx with - | Some idx -> - if file.Idx > idx then - yield idx - | None -> - exn $"Expected to find file '{filename}' during compilation of FSharp.Core, but it was not found." - |> raise - |] - - let allDependencies = - [| - yield! depsResult.FoundDependencies - yield! ghostDependencies - yield! signatureDependency - yield! fsharpCoreImplicitDependencies - |] - |> Array.distinct - - allDependencies - - files - |> Array.Parallel.map (fun file -> file.Idx, findDependencies file) - |> readOnlyDict + if file.Idx = 0 then + // First file cannot have any dependencies. + Array.empty + else + let fileContent = fileContents[file.Idx] + + // The Trie we want to use is the one that contains only files before our current index. + // As we skip implementation files (backed by a signature), we cannot just use the current file index to find the right Trie. + let trieForFile = + trie + |> Array.fold (fun acc (idx, t) -> if idx < file.Idx then t else acc) TrieNode.Empty + + // File depends on all files above it that define accessible symbols at the root level (global namespace). + let filesFromRoot = + trieForFile.Files |> Set.filter (fun rootIdx -> rootIdx < file.Idx) + // Start by listing root-level dependencies. + let initialDepsResult = (FileContentQueryState.Create filesFromRoot), fileContent + // Sequentially process all relevant entries of the file and keep updating the state and set of dependencies. + let depsResult = + initialDepsResult + // Seq is faster than List in this case. + ||> Seq.fold (processStateEntry trieForFile) + + // Add missing links for cases where an unused open namespace did not create a link. + let ghostDependencies = collectGhostDependencies file.Idx trieForFile depsResult + + // Add a link from implementation files to their signature files. + let signatureDependency = + match filePairs.TryGetSignatureIndex file.Idx with + | None -> Array.empty + | Some sigIdx -> Array.singleton sigIdx + + let allDependencies = + [| + yield! depsResult.FoundDependencies + yield! ghostDependencies + yield! signatureDependency + |] + |> Array.distinct + + allDependencies + + let graph = + files + |> Array.Parallel.map (fun file -> file.Idx, findDependencies file) + |> readOnlyDict + + let trie = trie |> Array.last |> snd + + graph, trie diff --git a/src/fcs-fable/src/Compiler/Driver/GraphChecking/DependencyResolution.fsi b/src/fcs-fable/src/Compiler/Driver/GraphChecking/DependencyResolution.fsi index 8ffdf4a58c..8804999117 100644 --- a/src/fcs-fable/src/Compiler/Driver/GraphChecking/DependencyResolution.fsi +++ b/src/fcs-fable/src/Compiler/Driver/GraphChecking/DependencyResolution.fsi @@ -1,22 +1,22 @@ /// Logic for constructing a file dependency graph for the purposes of parallel type-checking. module internal FSharp.Compiler.GraphChecking.DependencyResolution -/// Query a TrieNode to find a certain path. +/// +/// Query a TrieNode to find a certain path. +/// /// This code is only used directly in unit tests. val queryTrie: trie: TrieNode -> path: LongIdentifier -> QueryTrieNodeResult /// Process an open path (found in the ParsedInput) with a given FileContentQueryState. /// This code is only used directly in unit tests. -val processOpenPath: - queryTrie: QueryTrie -> path: LongIdentifier -> state: FileContentQueryState -> FileContentQueryState +val processOpenPath: trie: TrieNode -> path: LongIdentifier -> state: FileContentQueryState -> FileContentQueryState /// /// Construct an approximate* dependency graph for files within a project, based on their ASTs. /// -/// "Are we compiling FSharp.Core?" - used to add extra dependencies for FSharp.Core that are not otherwise detectable. /// Maps the index of a signature file with the index of its implementation counterpart and vice versa. /// The files inside a project. -/// A dictionary of FileIndex (alias for int) +/// A tuple consisting of a dictionary of FileIndex (alias for int) and a Trie /// /// /// *The constructed graph is a supergraph of the "necessary" file dependency graph, @@ -30,4 +30,4 @@ val processOpenPath: /// Hence this function cannot, as it stands, be used to help create a "reasonable" file ordering for an unordered set of files. /// /// -val mkGraph: compilingFSharpCore: bool -> filePairs: FilePairMap -> files: FileInProject array -> Graph +val mkGraph: filePairs: FilePairMap -> files: FileInProject array -> Graph * TrieNode diff --git a/src/fcs-fable/src/Compiler/Driver/GraphChecking/FileContentMapping.fs b/src/fcs-fable/src/Compiler/Driver/GraphChecking/FileContentMapping.fs index f20c95fa3d..cfcdfa703c 100644 --- a/src/fcs-fable/src/Compiler/Driver/GraphChecking/FileContentMapping.fs +++ b/src/fcs-fable/src/Compiler/Driver/GraphChecking/FileContentMapping.fs @@ -103,7 +103,7 @@ let visitSynUnionCase (SynUnionCase (attributes = attributes; caseType = caseTyp let visitSynEnumCase (SynEnumCase (attributes = attributes)) = visitSynAttributes attributes let visitSynTypeDefn - (SynTypeDefn (typeInfo = SynComponentInfo (attributes = attributes; typeParams = typeParams; constraints = constraints) + (SynTypeDefn (typeInfo = SynComponentInfo (attributes = attributes; longId = longId; typeParams = typeParams; constraints = constraints) typeRepr = typeRepr members = members)) : FileContentEntry list = @@ -131,6 +131,9 @@ let visitSynTypeDefn | SynTypeDefnKind.Delegate (signature, _) -> yield! visitSynType signature yield! List.collect visitSynMemberDefn members + | SynTypeDefnKind.Augmentation _ -> + yield! visitLongIdent longId + yield! List.collect visitSynMemberDefn members | _ -> yield! List.collect visitSynMemberDefn members | SynTypeDefnRepr.Exception _ -> // This is only used in the typed tree @@ -140,7 +143,10 @@ let visitSynTypeDefn ] let visitSynTypeDefnSig - (SynTypeDefnSig (typeInfo = SynComponentInfo (attributes = attributes; typeParams = typeParams; constraints = constraints) + (SynTypeDefnSig (typeInfo = SynComponentInfo (attributes = attributes + longId = longId + typeParams = typeParams + constraints = constraints) typeRepr = typeRepr members = members)) = @@ -159,7 +165,10 @@ let visitSynTypeDefnSig | SynTypeDefnSimpleRepr.General _ | SynTypeDefnSimpleRepr.LibraryOnlyILAssembly _ -> () | SynTypeDefnSimpleRepr.TypeAbbrev (rhsType = rhsType) -> yield! visitSynType rhsType - | SynTypeDefnSimpleRepr.None _ + // This is a type augmentation in a signature file + | SynTypeDefnSimpleRepr.None _ -> + yield! visitLongIdent longId + yield! List.collect visitSynMemberSig members // This is only used in the typed tree // The parser doesn't construct this | SynTypeDefnSimpleRepr.Exception _ -> () @@ -184,7 +193,7 @@ let visitSynValSig (SynValSig (attributes = attributes; synType = synType; synEx ] let visitSynField (SynField (attributes = attributes; fieldType = fieldType)) = - [ yield! visitSynAttributes attributes; yield! visitSynType fieldType ] + visitSynAttributes attributes @ visitSynType fieldType let visitSynMemberDefn (md: SynMemberDefn) : FileContentEntry list = [ @@ -261,6 +270,9 @@ let visitSynType (t: SynType) : FileContentEntry list = let continuations = List.map visit [ lhsType; rhsType ] Continuation.concatenate continuations continuation | SynType.FromParseError _ -> continuation [] + | SynType.Intersection (types = types) -> + let continuations = List.map visit types + Continuation.concatenate continuations continuation visit t id @@ -270,33 +282,28 @@ let visitSynValTyparDecls (SynValTyparDecls (typars = typars)) = let visitSynTyparDecls (td: SynTyparDecls) : FileContentEntry list = match td with | SynTyparDecls.PostfixList (decls, constraints, _) -> - [ - yield! List.collect visitSynTyparDecl decls - yield! List.collect visitSynTypeConstraint constraints - ] + List.collect visitSynTyparDecl decls + @ List.collect visitSynTypeConstraint constraints | SynTyparDecls.PrefixList (decls = decls) -> List.collect visitSynTyparDecl decls | SynTyparDecls.SinglePrefix (decl = decl) -> visitSynTyparDecl decl -let visitSynTyparDecl (SynTyparDecl (attributes = attributes)) = visitSynAttributes attributes +let visitSynTyparDecl (SynTyparDecl (attributes = attributes; intersectionConstraints = constraints)) = + visitSynAttributes attributes @ List.collect visitSynType constraints let visitSynTypeConstraint (tc: SynTypeConstraint) : FileContentEntry list = - [ - match tc with - | SynTypeConstraint.WhereSelfConstrained _ - | SynTypeConstraint.WhereTyparIsValueType _ - | SynTypeConstraint.WhereTyparIsReferenceType _ - | SynTypeConstraint.WhereTyparIsUnmanaged _ - | SynTypeConstraint.WhereTyparSupportsNull _ - | SynTypeConstraint.WhereTyparIsComparable _ - | SynTypeConstraint.WhereTyparIsEquatable _ -> () - | SynTypeConstraint.WhereTyparDefaultsToType (typeName = typeName) -> yield! visitSynType typeName - | SynTypeConstraint.WhereTyparSubtypeOfType (typeName = typeName) -> yield! visitSynType typeName - | SynTypeConstraint.WhereTyparSupportsMember (typars, memberSig, _) -> - yield! visitSynType typars - yield! visitSynMemberSig memberSig - | SynTypeConstraint.WhereTyparIsEnum (typeArgs = typeArgs) -> yield! List.collect visitSynType typeArgs - | SynTypeConstraint.WhereTyparIsDelegate (typeArgs = typeArgs) -> yield! List.collect visitSynType typeArgs - ] + match tc with + | SynTypeConstraint.WhereSelfConstrained _ + | SynTypeConstraint.WhereTyparIsValueType _ + | SynTypeConstraint.WhereTyparIsReferenceType _ + | SynTypeConstraint.WhereTyparIsUnmanaged _ + | SynTypeConstraint.WhereTyparSupportsNull _ + | SynTypeConstraint.WhereTyparIsComparable _ + | SynTypeConstraint.WhereTyparIsEquatable _ -> [] + | SynTypeConstraint.WhereTyparDefaultsToType (typeName = typeName) -> visitSynType typeName + | SynTypeConstraint.WhereTyparSubtypeOfType (typeName = typeName) -> visitSynType typeName + | SynTypeConstraint.WhereTyparSupportsMember (typars, memberSig, _) -> visitSynType typars @ visitSynMemberSig memberSig + | SynTypeConstraint.WhereTyparIsEnum (typeArgs = typeArgs) -> List.collect visitSynType typeArgs + | SynTypeConstraint.WhereTyparIsDelegate (typeArgs = typeArgs) -> List.collect visitSynType typeArgs let visitSynExpr (e: SynExpr) : FileContentEntry list = let rec visit (e: SynExpr) (continuation: FileContentEntry list -> FileContentEntry list) : FileContentEntry list = @@ -362,6 +369,7 @@ let visitSynExpr (e: SynExpr) : FileContentEntry list = | SynExpr.IndexFromEnd (expr, _) -> visit expr continuation | SynExpr.ComputationExpr (expr = expr) -> visit expr continuation | SynExpr.Lambda (args = args; body = body) -> visit body (fun bodyNodes -> visitSynSimplePats args @ bodyNodes |> continuation) + | SynExpr.DotLambda (expr = expr) -> visit expr continuation | SynExpr.MatchLambda (matchClauses = clauses) -> List.collect visitSynMatchClause clauses |> continuation | SynExpr.Match (expr = expr; clauses = clauses) -> visit expr (fun exprNodes -> @@ -461,6 +469,8 @@ let visitSynExpr (e: SynExpr) : FileContentEntry list = [ yield! exprNodes; yield! List.collect visitSynMatchClause clauses ] |> continuation) | SynExpr.DoBang (expr, _) -> visit expr continuation + | SynExpr.WhileBang (whileExpr = whileExpr; doExpr = doExpr) -> + visit whileExpr (fun whileNodes -> visit doExpr (fun doNodes -> whileNodes @ doNodes |> continuation)) | SynExpr.LibraryOnlyILAssembly (typeArgs = typeArgs; args = args; retTy = retTy) -> let typeNodes = List.collect visitSynType (typeArgs @ retTy) let continuations = List.map visit args @@ -539,7 +549,7 @@ let visitPat (p: SynPat) : FileContentEntry list = yield! collectFromOption visitSynValTyparDecls typarDecls yield! visitSynArgPats argPats ] - | SynPat.Tuple (_, elementPats, _) -> + | SynPat.Tuple (elementPats = elementPats) -> let continuations = List.map visit elementPats Continuation.concatenate continuations continuation | SynPat.ArrayOrList (_, elementPats, _) -> @@ -564,7 +574,6 @@ let visitPat (p: SynPat) : FileContentEntry list = | SynPat.OptionalVal _ -> continuation [] | SynPat.IsInst (t, _) -> continuation (visitSynType t) | SynPat.QuoteExpr (expr, _) -> continuation (visitSynExpr expr) - | SynPat.DeprecatedCharRange _ -> continuation [] | SynPat.InstanceMember _ -> continuation [] | SynPat.FromParseError _ -> continuation [] @@ -582,13 +591,12 @@ let visitSynArgPats (argPat: SynArgPats) = let visitSynSimplePat (pat: SynSimplePat) = match pat with | SynSimplePat.Id _ -> [] - | SynSimplePat.Attrib (pat, attributes, _) -> [ yield! visitSynSimplePat pat; yield! visitSynAttributes attributes ] - | SynSimplePat.Typed (pat, t, _) -> [ yield! visitSynSimplePat pat; yield! visitSynType t ] + | SynSimplePat.Attrib (pat, attributes, _) -> visitSynSimplePat pat @ visitSynAttributes attributes + | SynSimplePat.Typed (pat, t, _) -> visitSynSimplePat pat @ visitSynType t let visitSynSimplePats (pats: SynSimplePats) = match pats with | SynSimplePats.SimplePats (pats = pats) -> List.collect visitSynSimplePat pats - | SynSimplePats.Typed (pats, t, _) -> [ yield! visitSynSimplePats pats; yield! visitSynType t ] let visitSynMatchClause (SynMatchClause (pat = pat; whenExpr = whenExpr; resultExpr = resultExpr)) = [ @@ -608,7 +616,7 @@ let visitBinding (SynBinding (attributes = attributes; headPat = headPat; return ] let visitSynBindingReturnInfo (SynBindingReturnInfo (typeName = typeName; attributes = attributes)) = - [ yield! visitSynAttributes attributes; yield! visitSynType typeName ] + visitSynAttributes attributes @ visitSynType typeName let visitSynMemberSig (ms: SynMemberSig) : FileContentEntry list = match ms with diff --git a/src/fcs-fable/src/Compiler/Driver/GraphChecking/GraphProcessing.fs b/src/fcs-fable/src/Compiler/Driver/GraphChecking/GraphProcessing.fs index 7950806671..c30a64c74d 100644 --- a/src/fcs-fable/src/Compiler/Driver/GraphChecking/GraphProcessing.fs +++ b/src/fcs-fable/src/Compiler/Driver/GraphChecking/GraphProcessing.fs @@ -93,9 +93,10 @@ let processGraph<'Item, 'Result when 'Item: equality and 'Item: comparison> /// Only the first exception encountered is stored - this can cause non-deterministic errors if more than one item fails. let raiseExn, getExn = let mutable exn: ('Item * System.Exception) option = None + let lockObj = obj () // Only set the exception if it hasn't been set already let setExn newExn = - lock exn (fun () -> + lock lockObj (fun () -> match exn with | Some _ -> () | None -> exn <- newExn diff --git a/src/fcs-fable/src/Compiler/Driver/GraphChecking/TrieMapping.fs b/src/fcs-fable/src/Compiler/Driver/GraphChecking/TrieMapping.fs index 4ab2e64dc5..60fa5b8b69 100644 --- a/src/fcs-fable/src/Compiler/Driver/GraphChecking/TrieMapping.fs +++ b/src/fcs-fable/src/Compiler/Driver/GraphChecking/TrieMapping.fs @@ -1,14 +1,19 @@ module internal FSharp.Compiler.GraphChecking.TrieMapping open System.Collections.Generic +open System.Collections.Immutable +open System.Text +open FSharp.Compiler.IO open FSharp.Compiler.Syntax [] -module private HashSet = +module private ImmutableHashSet = /// Create a new HashSet<'T> with a single element. - let singleton value = HashSet(Seq.singleton value) + let singleton (value: 'T) = + ImmutableHashSet.Create<'T>(Array.singleton value) + /// Create new new HashSet<'T> with zero elements. - let empty () = HashSet(Seq.empty) + let empty () = ImmutableHashSet.Empty let autoOpenShapes = set @@ -55,60 +60,46 @@ let doesFileExposeContentToTheRoot (ast: ParsedInput) : bool = (isAnyAttributeAutoOpen attribs && longId.Length < 2) || kind = SynModuleOrNamespaceKind.GlobalNamespace) -let mergeTrieNodes (defaultChildSize: int) (tries: TrieNode array) = - let rec mergeTrieNodesAux (root: TrieNode) (KeyValue (k, v)) = - if root.Children.ContainsKey k then - let node = root.Children[k] - - match node.Current, v.Current with - | TrieNodeInfo.Namespace (filesThatExposeTypes = currentFiles), TrieNodeInfo.Namespace (filesThatExposeTypes = otherFiles) -> - for otherFile in otherFiles do - currentFiles.Add(otherFile) |> ignore - | _ -> () - - for kv in v.Children do - mergeTrieNodesAux node kv - - else - root.Children.Add(k, v) - - match Array.tryExactlyOne tries with - | Some ({ Current = TrieNodeInfo.Root _ } as singleTrie) -> singleTrie - | _ -> - let rootFiles = HashSet.empty () - - let root = - { - Current = TrieNodeInfo.Root rootFiles - Children = Dictionary<_, _>(defaultChildSize) - } - - for trie in tries do - for rootIndex in trie.Files do - rootFiles.Add rootIndex |> ignore - - match trie.Current with - | TrieNodeInfo.Root _ -> () - | current -> System.Diagnostics.Debug.Assert(false, $"The top level node info of a trie should be Root, got {current}") - - for kv in trie.Children do - mergeTrieNodesAux root kv - - root - -let mkDictFromKeyValuePairs (items: KeyValuePair<'TKey, 'TValue> list) = - let dict = Dictionary(Seq.length items) +/// Merge all the accumulator Trie nodes into the current Trie node. +let rec mergeTrieNodes (accumulatorTrie: TrieNode) (currentTrie: TrieNode) : TrieNode = + let nextNodeInfo: TrieNodeInfo = + match accumulatorTrie.Current, currentTrie.Current with + | TrieNodeInfo.Root accFiles, TrieNodeInfo.Root currentFiles -> TrieNodeInfo.Root(accFiles.Union currentFiles) + | TrieNodeInfo.Namespace (name = name + filesThatExposeTypes = currentFilesThatExposeTypes + filesDefiningNamespaceWithoutTypes = currentFilesWithoutTypes), + TrieNodeInfo.Namespace (filesThatExposeTypes = otherFiles; filesDefiningNamespaceWithoutTypes = otherFilesWithoutTypes) -> + TrieNodeInfo.Namespace( + name, + currentFilesThatExposeTypes.Union otherFiles, + currentFilesWithoutTypes.Union otherFilesWithoutTypes + ) + // Edge case scenario detected in https://github.com/dotnet/fsharp/issues/15985 + // Keep the namespace (as it can still have nested children). + | TrieNodeInfo.Namespace (name, currentFilesThatExposeTypes, filesDefiningNamespaceWithoutTypes), TrieNodeInfo.Module (_name, file) + // Replace the module in favour of the namespace (which can hold nested children). + | TrieNodeInfo.Module (_name, file), TrieNodeInfo.Namespace (name, currentFilesThatExposeTypes, filesDefiningNamespaceWithoutTypes) -> + TrieNodeInfo.Namespace(name, currentFilesThatExposeTypes.Add file, filesDefiningNamespaceWithoutTypes) + | _ -> accumulatorTrie.Current + + let nextChildren = + (accumulatorTrie.Children, currentTrie.Children) + ||> Seq.fold (fun accChildren (KeyValue (k, v)) -> + if not (accChildren.ContainsKey k) then + accChildren.Add(k, v) + else + let accNode = accChildren[k] + accChildren.SetItem(k, mergeTrieNodes accNode v)) - for KeyValue (k, v) in items do - if not (dict.ContainsKey(k)) then - dict.Add(k, v) + { + Current = nextNodeInfo + Children = nextChildren + } - dict +let mkImmutableDictFromKeyValuePairs (items: KeyValuePair<'TKey, 'TValue> list) = ImmutableDictionary.CreateRange(items) let mkSingletonDict key value = - let dict = Dictionary(1) - dict.Add(key, value) - dict + ImmutableDictionary.Empty.Add(key, value) /// Process a top level SynModuleOrNamespace(Sig) let processSynModuleOrNamespace<'Decl> @@ -142,18 +133,18 @@ let processSynModuleOrNamespace<'Decl> // The reasoning is that a type could be inferred and a nested auto open module will lift its content one level up. let current = if isNamespace then - TrieNodeInfo.Namespace( - name, - (if hasTypesOrAutoOpenNestedModules then - HashSet.singleton idx - else - HashSet.empty ()) - ) + let filesThatExposeTypes, filesDefiningNamespaceWithoutTypes = + if hasTypesOrAutoOpenNestedModules then + ImmutableHashSet.singleton idx, ImmutableHashSet.empty () + else + ImmutableHashSet.empty (), ImmutableHashSet.singleton idx + + TrieNodeInfo.Namespace(name, filesThatExposeTypes, filesDefiningNamespaceWithoutTypes) else TrieNodeInfo.Module(name, idx) let children = - List.choose (mkTrieForDeclaration idx) decls |> mkDictFromKeyValuePairs + List.choose (mkTrieForDeclaration idx) decls |> mkImmutableDictFromKeyValuePairs mkSingletonDict name @@ -167,7 +158,7 @@ let processSynModuleOrNamespace<'Decl> visit (fun node -> - let files = + let filesThatExposeTypes, filesDefiningNamespaceWithoutTypes = match tail with | [ _ ] -> // In case you have: @@ -179,73 +170,82 @@ let processSynModuleOrNamespace<'Decl> let topLevelModuleOrNamespaceHasAutoOpen = isAnyAttributeAutoOpen attributes if topLevelModuleOrNamespaceHasAutoOpen && not isNamespace then - HashSet.singleton idx + ImmutableHashSet.singleton idx, ImmutableHashSet.empty () else - HashSet.empty () - | _ -> HashSet.empty () + ImmutableHashSet.empty (), ImmutableHashSet.singleton idx + | _ -> ImmutableHashSet.empty (), ImmutableHashSet.singleton idx - let current = TrieNodeInfo.Namespace(name, files) + let current = + TrieNodeInfo.Namespace(name, filesThatExposeTypes, filesDefiningNamespaceWithoutTypes) mkSingletonDict name { Current = current; Children = node } |> continuation) tail if kind = SynModuleOrNamespaceKind.AnonModule then // We collect the child nodes from the decls - decls |> List.choose (mkTrieForDeclaration idx) |> mkDictFromKeyValuePairs + decls + |> List.choose (mkTrieForDeclaration idx) + |> mkImmutableDictFromKeyValuePairs else visit id name { - Current = Root(HashSet.empty ()) + Current = Root(ImmutableHashSet.empty ()) Children = children } -let rec mkTrieNodeFor (file: FileInProject) : TrieNode = +let rec mkTrieNodeFor (file: FileInProject) : FileIndex * TrieNode = let idx = file.Idx if doesFileExposeContentToTheRoot file.ParsedInput then // If a file exposes content which does not need an open statement to access, we consider the file to be part of the root. + idx, { - Current = Root(HashSet.singleton idx) - Children = Dictionary(0) + Current = Root(ImmutableHashSet.singleton idx) + Children = ImmutableDictionary.Empty } else - match file.ParsedInput with - | ParsedInput.SigFile (ParsedSigFileInput (contents = contents)) -> - contents - |> List.map - (fun (SynModuleOrNamespaceSig (longId = longId - kind = kind - attribs = attribs - decls = decls - accessibility = _accessibility)) -> - let hasTypesOrAutoOpenNestedModules = - decls - |> List.exists (function - | SynModuleSigDecl.Types _ -> true - | SynModuleSigDecl.NestedModule(moduleInfo = SynComponentInfo (attributes = attributes)) -> - isAnyAttributeAutoOpen attributes - | _ -> false) - - processSynModuleOrNamespace mkTrieForSynModuleSigDecl idx longId attribs kind hasTypesOrAutoOpenNestedModules decls) - |> List.toArray - |> mergeTrieNodes contents.Length - | ParsedInput.ImplFile (ParsedImplFileInput (contents = contents)) -> - contents - |> List.map - (fun (SynModuleOrNamespace (longId = longId; attribs = attribs; kind = kind; decls = decls; accessibility = _accessibility)) -> - let hasTypesOrAutoOpenNestedModules = - List.exists - (function - | SynModuleDecl.Types _ -> true - | SynModuleDecl.NestedModule(moduleInfo = SynComponentInfo (attributes = attributes)) -> - isAnyAttributeAutoOpen attributes - | _ -> false) + let trie = + match file.ParsedInput with + | ParsedInput.SigFile (ParsedSigFileInput (contents = contents)) -> + contents + |> List.map + (fun (SynModuleOrNamespaceSig (longId = longId + kind = kind + attribs = attribs + decls = decls + accessibility = _accessibility)) -> + let hasTypesOrAutoOpenNestedModules = decls - - processSynModuleOrNamespace mkTrieForSynModuleDecl idx longId attribs kind hasTypesOrAutoOpenNestedModules decls) - |> List.toArray - |> mergeTrieNodes contents.Length + |> List.exists (function + | SynModuleSigDecl.Types _ -> true + | SynModuleSigDecl.NestedModule(moduleInfo = SynComponentInfo (attributes = attributes)) -> + isAnyAttributeAutoOpen attributes + | _ -> false) + + processSynModuleOrNamespace mkTrieForSynModuleSigDecl idx longId attribs kind hasTypesOrAutoOpenNestedModules decls) + |> List.reduce mergeTrieNodes + | ParsedInput.ImplFile (ParsedImplFileInput (contents = contents)) -> + contents + |> List.map + (fun (SynModuleOrNamespace (longId = longId + attribs = attribs + kind = kind + decls = decls + accessibility = _accessibility)) -> + let hasTypesOrAutoOpenNestedModules = + List.exists + (function + | SynModuleDecl.Types _ -> true + | SynModuleDecl.NestedModule(moduleInfo = SynComponentInfo (attributes = attributes)) -> + isAnyAttributeAutoOpen attributes + | _ -> false) + decls + + processSynModuleOrNamespace mkTrieForSynModuleDecl idx longId attribs kind hasTypesOrAutoOpenNestedModules decls) + |> List.reduce mergeTrieNodes + + idx, trie and mkTrieForSynModuleDecl (fileIndex: FileIndex) (decl: SynModuleDecl) : KeyValuePair option = match decl with @@ -255,7 +255,7 @@ and mkTrieForSynModuleDecl (fileIndex: FileIndex) (decl: SynModuleDecl) : KeyVal let children = decls |> List.choose (mkTrieForSynModuleDecl fileIndex) - |> mkDictFromKeyValuePairs + |> mkImmutableDictFromKeyValuePairs Some( KeyValuePair( @@ -276,7 +276,7 @@ and mkTrieForSynModuleSigDecl (fileIndex: FileIndex) (decl: SynModuleSigDecl) : let children = decls |> List.choose (mkTrieForSynModuleSigDecl fileIndex) - |> mkDictFromKeyValuePairs + |> mkImmutableDictFromKeyValuePairs Some( KeyValuePair( @@ -287,8 +287,100 @@ and mkTrieForSynModuleSigDecl (fileIndex: FileIndex) (decl: SynModuleSigDecl) : } ) ) - | _ -> None -let mkTrie (files: FileInProject array) : TrieNode = - mergeTrieNodes 0 (files |> Array.Parallel.map mkTrieNodeFor) +let mkTrie (files: FileInProject array) : (FileIndex * TrieNode) array = + if files.Length = 1 then + Array.singleton (mkTrieNodeFor files[0]) + else + files + |> Array.take (files.Length - 1) // Do not process the last file, it will never be looked up by anything anyway. + |> Array.Parallel.map mkTrieNodeFor + |> Array.scan + (fun (_, acc) (idx, current) -> + let next = mergeTrieNodes acc current + idx, next) + (System.Int32.MinValue, TrieNode.Empty) + // We can ignore the initial state that was used in the scan + |> Array.skip 1 + +type MermaidBoxPos = + | First + | Second + +let serializeToMermaid (path: string) (filesInProject: FileInProject array) (trie: TrieNode) = + let sb = StringBuilder() + let appendLine (line: string) = sb.AppendLine(line) |> ignore + let discovered = HashSet() + + let getName (node: TrieNodeInfo) = + match node with + | Root _ -> "root" + | Module (name, _) -> $"mod_{name}" + | Namespace (name, _, _) -> $"ns_{name}" + + let toBoxList (boxPos: MermaidBoxPos) (files: ImmutableHashSet) = + let sb = StringBuilder() + let orderedIndexes = Seq.sort files + + let opening, closing = + match boxPos with + | First -> "[", "]" + | Second -> "(", ")" + + for file in orderedIndexes do + let fileName = System.IO.Path.GetFileName(filesInProject[file].FileName) + sb.Append($" {fileName}{opening}{file}{closing}\n") |> ignore + + sb.ToString() + + let printNode (parent: TrieNode, node: TrieNode) = + match node.Current with + | TrieNodeInfo.Root files -> + let firstBox = toBoxList First files + + if System.String.IsNullOrWhiteSpace firstBox then + appendLine "class root\n" + else + appendLine $"class root {{\n{firstBox}}}\n" + | TrieNodeInfo.Module (_name, file) as md -> + let name = getName md + let fileName = System.IO.Path.GetFileName(filesInProject[file].FileName) + appendLine $"{getName parent.Current} <|-- {name}" + appendLine $"class {name} {{\n {fileName}[{file}]\n}}\n" + | TrieNodeInfo.Namespace (_name, filesThatExposeTypes, filesDefiningNamespaceWithoutTypes) as ns -> + let name = getName ns + let firstBox = toBoxList First filesThatExposeTypes + let secondBox = toBoxList Second filesDefiningNamespaceWithoutTypes + appendLine $"{getName parent.Current} <|-- {name}" + + if + System.String.IsNullOrWhiteSpace(firstBox) + && System.String.IsNullOrWhiteSpace(secondBox) + then + appendLine $"class {name}" + else + appendLine $"class {name} {{\n{firstBox}\n{secondBox}}}\n" + + let rec traverse (v: TrieNode) = + discovered.Add(v.Current) |> ignore + + for c in v.Children do + if not (discovered.Contains(c.Value.Current)) then + printNode (v, c.Value) + traverse c.Value + + appendLine "```mermaid" + appendLine "classDiagram\n" + + printNode (trie, trie) + traverse trie + + appendLine "```" + +#if !FABLE_COMPILER + use out = + FileSystem.OpenFileForWriteShim(path, fileMode = System.IO.FileMode.Create) + + out.WriteAllText(sb.ToString()) +#endif diff --git a/src/fcs-fable/src/Compiler/Driver/GraphChecking/TrieMapping.fsi b/src/fcs-fable/src/Compiler/Driver/GraphChecking/TrieMapping.fsi index c9bca8e72a..649a2a25e0 100644 --- a/src/fcs-fable/src/Compiler/Driver/GraphChecking/TrieMapping.fsi +++ b/src/fcs-fable/src/Compiler/Driver/GraphChecking/TrieMapping.fsi @@ -2,4 +2,6 @@ module internal FSharp.Compiler.GraphChecking.TrieMapping /// Process all the files (in parallel) in a project to construct a Root TrieNode. /// When the project has signature files, the implementation counterparts will not be processed. -val mkTrie: files: FileInProject array -> TrieNode +val mkTrie: files: FileInProject array -> (FileIndex * TrieNode) array + +val serializeToMermaid: path: string -> filesInProject: FileInProject array -> trie: TrieNode -> unit diff --git a/src/fcs-fable/src/Compiler/Driver/GraphChecking/TypeCheckingGraphProcessing.fs b/src/fcs-fable/src/Compiler/Driver/GraphChecking/TypeCheckingGraphProcessing.fs deleted file mode 100644 index 7f184a5888..0000000000 --- a/src/fcs-fable/src/Compiler/Driver/GraphChecking/TypeCheckingGraphProcessing.fs +++ /dev/null @@ -1,104 +0,0 @@ -module internal FSharp.Compiler.GraphChecking.TypeCheckingGraphProcessing - -open GraphProcessing -open System.Collections.Generic -open System.Threading - -// TODO Do we need to suppress some error logging if we -// TODO apply the same partial results multiple times? -// TODO Maybe we can enable logging only for the final fold -/// -/// Combine type-checking results of dependencies needed to type-check a 'higher' node in the graph -/// -/// Initial state -/// Direct dependencies of a node -/// Transitive dependencies of a node -/// A way to fold a single result into existing state -/// -/// Similar to 'processFileGraph', this function is generic yet specific to the type-checking process. -/// -let combineResults - (emptyState: 'State) - (deps: ProcessedNode<'Item, 'State * Finisher<'State, 'FinalFileResult>>[]) - (transitiveDeps: ProcessedNode<'Item, 'State * Finisher<'State, 'FinalFileResult>>[]) - (folder: 'State -> Finisher<'State, 'FinalFileResult> -> 'State) - : 'State = - match deps with - | [||] -> emptyState - | _ -> - // Instead of starting with empty state, - // reuse state produced by the dependency with the biggest number of transitive dependencies. - // This is to reduce the number of folds required to achieve the final state. - let biggestDependency = - let sizeMetric (node: ProcessedNode<_, _>) = node.Info.TransitiveDeps.Length - deps |> Array.maxBy sizeMetric - - let firstState = biggestDependency.Result |> fst - - // Find items not already included in the state. - // Note: Ordering is not preserved due to reusing results of the biggest child - // rather than starting with empty state - let itemsPresent = - set - [| - yield! biggestDependency.Info.TransitiveDeps - yield biggestDependency.Info.Item - |] - - let resultsToAdd = - transitiveDeps - |> Array.filter (fun dep -> itemsPresent.Contains dep.Info.Item = false) - |> Array.distinctBy (fun dep -> dep.Info.Item) - |> Array.map (fun dep -> dep.Result |> snd) - - // Fold results not already included and produce the final state - let state = Array.fold folder firstState resultsToAdd - state - -// TODO This function and its parameters are quite specific to type-checking despite using generic types. -// Perhaps we should make it either more specific and remove type parameters, or more generic. -/// -/// Process a graph of items. -/// A version of 'GraphProcessing.processGraph' with a signature slightly specific to type-checking. -/// -let processTypeCheckingGraph<'Item, 'ChosenItem, 'State, 'FinalFileResult when 'Item: equality and 'Item: comparison> - (graph: Graph<'Item>) - (work: 'Item -> 'State -> Finisher<'State, 'FinalFileResult>) - (folder: 'State -> Finisher<'State, 'FinalFileResult> -> 'FinalFileResult * 'State) - // Decides whether a result for an item should be included in the final state, and how to map the item if it should. - (finalStateChooser: 'Item -> 'ChosenItem option) - (emptyState: 'State) - (ct: CancellationToken) - : ('ChosenItem * 'FinalFileResult) list * 'State = - - let workWrapper - (getProcessedNode: 'Item -> ProcessedNode<'Item, 'State * Finisher<'State, 'FinalFileResult>>) - (node: NodeInfo<'Item>) - : 'State * Finisher<'State, 'FinalFileResult> = - let folder x y = folder x y |> snd - let deps = node.Deps |> Array.except [| node.Item |] |> Array.map getProcessedNode - - let transitiveDeps = - node.TransitiveDeps - |> Array.except [| node.Item |] - |> Array.map getProcessedNode - - let inputState = combineResults emptyState deps transitiveDeps folder - let singleRes = work node.Item inputState - let state = folder inputState singleRes - state, singleRes - - let results = processGraph graph workWrapper ct - - let finalFileResults, state: ('ChosenItem * 'FinalFileResult) list * 'State = - (([], emptyState), - results - |> Array.choose (fun (item, res) -> - match finalStateChooser item with - | Some item -> Some(item, res) - | None -> None)) - ||> Array.fold (fun (fileResults, state) (item, (_, itemRes)) -> - let fileResult, state = folder state itemRes - (item, fileResult) :: fileResults, state) - - finalFileResults, state diff --git a/src/fcs-fable/src/Compiler/Driver/GraphChecking/TypeCheckingGraphProcessing.fsi b/src/fcs-fable/src/Compiler/Driver/GraphChecking/TypeCheckingGraphProcessing.fsi deleted file mode 100644 index 5db01dc330..0000000000 --- a/src/fcs-fable/src/Compiler/Driver/GraphChecking/TypeCheckingGraphProcessing.fsi +++ /dev/null @@ -1,17 +0,0 @@ -/// Parallel processing of a type-checking file graph. -module internal FSharp.Compiler.GraphChecking.TypeCheckingGraphProcessing - -open System.Threading - -/// -/// Process a graph of items. -/// A version of 'GraphProcessing.processGraph' with a signature slightly specific to type-checking. -/// -val processTypeCheckingGraph<'Item, 'ChosenItem, 'State, 'FinalFileResult when 'Item: equality and 'Item: comparison> : - graph: Graph<'Item> -> - work: ('Item -> 'State -> Finisher<'State, 'FinalFileResult>) -> - folder: ('State -> Finisher<'State, 'FinalFileResult> -> 'FinalFileResult * 'State) -> - finalStateChooser: ('Item -> 'ChosenItem option) -> - emptyState: 'State -> - ct: CancellationToken -> - ('ChosenItem * 'FinalFileResult) list * 'State diff --git a/src/fcs-fable/src/Compiler/Driver/GraphChecking/Types.fs b/src/fcs-fable/src/Compiler/Driver/GraphChecking/Types.fs index 67a0c56493..72370ed41d 100644 --- a/src/fcs-fable/src/Compiler/Driver/GraphChecking/Types.fs +++ b/src/fcs-fable/src/Compiler/Driver/GraphChecking/Types.fs @@ -1,6 +1,6 @@ namespace FSharp.Compiler.GraphChecking -open System.Collections.Generic +open System.Collections.Immutable open FSharp.Compiler.Syntax /// The index of a file inside a project. @@ -30,9 +30,12 @@ type internal FileInProject = /// Only when the namespace exposes types that could later be inferred. /// Children of a namespace don't automatically depend on each other for that reason type internal TrieNodeInfo = - | Root of files: HashSet + | Root of files: ImmutableHashSet | Module of name: Identifier * file: FileIndex - | Namespace of name: Identifier * filesThatExposeTypes: HashSet + | Namespace of + name: Identifier * + filesThatExposeTypes: ImmutableHashSet * + filesDefiningNamespaceWithoutTypes: ImmutableHashSet member x.Files: Set = match x with @@ -43,11 +46,19 @@ type internal TrieNodeInfo = type internal TrieNode = { Current: TrieNodeInfo - Children: Dictionary + Children: ImmutableDictionary } member x.Files = x.Current.Files + static member Empty = + let rootFiles = ImmutableHashSet.Empty + + { + Current = TrieNodeInfo.Root rootFiles + Children = ImmutableDictionary.Empty + } + /// A significant construct found in the syntax tree of a file. /// This construct needs to be processed in order to deduce potential links to other files in the project. type internal FileContentEntry = @@ -75,25 +86,20 @@ type internal FileContentQueryState = OwnNamespace: LongIdentifier option OpenedNamespaces: Set FoundDependencies: Set - CurrentFile: FileIndex - KnownFiles: Set } - static member Create (fileIndex: FileIndex) (knownFiles: Set) (filesAtRoot: Set) = + static member Create(filesAtRoot: Set) = { OwnNamespace = None OpenedNamespaces = Set.empty FoundDependencies = filesAtRoot - CurrentFile = fileIndex - KnownFiles = knownFiles } member x.AddOwnNamespace(ns: LongIdentifier, ?files: Set) = match files with | None -> { x with OwnNamespace = Some ns } | Some files -> - let foundDependencies = - Set.filter x.KnownFiles.Contains files |> Set.union x.FoundDependencies + let foundDependencies = files |> Set.union x.FoundDependencies { x with OwnNamespace = Some ns @@ -101,7 +107,7 @@ type internal FileContentQueryState = } member x.AddDependencies(files: Set) : FileContentQueryState = - let files = Set.filter x.KnownFiles.Contains files |> Set.union x.FoundDependencies + let files = files |> Set.union x.FoundDependencies { x with FoundDependencies = files } member x.AddOpenNamespace(path: LongIdentifier, ?files: Set) = @@ -111,8 +117,7 @@ type internal FileContentQueryState = OpenedNamespaces = Set.add path x.OpenedNamespaces } | Some files -> - let foundDependencies = - Set.filter x.KnownFiles.Contains files |> Set.union x.FoundDependencies + let foundDependencies = files |> Set.union x.FoundDependencies { x with FoundDependencies = foundDependencies @@ -167,4 +172,4 @@ type internal FilePairMap(files: FileInProject array) = member x.IsSignature(index: FileIndex) = Map.containsKey index sigToImpl /// Callback that returns a previously calculated 'Result and updates 'State accordingly. -type internal Finisher<'State, 'Result> = delegate of 'State -> 'Result * 'State +type internal Finisher<'Node, 'State, 'Result> = Finisher of node: 'Node * finisher: ('State -> 'Result * 'State) diff --git a/src/fcs-fable/src/Compiler/Driver/GraphChecking/Types.fsi b/src/fcs-fable/src/Compiler/Driver/GraphChecking/Types.fsi index 852b642bd5..468ef65889 100644 --- a/src/fcs-fable/src/Compiler/Driver/GraphChecking/Types.fsi +++ b/src/fcs-fable/src/Compiler/Driver/GraphChecking/Types.fsi @@ -1,6 +1,6 @@ namespace FSharp.Compiler.GraphChecking -open System.Collections.Generic +open System.Collections.Immutable open FSharp.Compiler.Syntax /// The index of a file inside a project. @@ -28,9 +28,14 @@ type internal FileInProject = /// Only when the namespace exposes types that could later be inferred. /// Children of a namespace don't automatically depend on each other for that reason type internal TrieNodeInfo = - | Root of files: HashSet + | Root of files: ImmutableHashSet | Module of name: Identifier * file: FileIndex - | Namespace of name: Identifier * filesThatExposeTypes: HashSet + | Namespace of + name: Identifier * + /// Files that expose types that are part of this namespace. + filesThatExposeTypes: ImmutableHashSet * + /// Files that use this namespace but don't contain any types. + filesDefiningNamespaceWithoutTypes: ImmutableHashSet member Files: Set @@ -40,12 +45,14 @@ type internal TrieNode = /// Information about this node. Current: TrieNodeInfo /// Child nodes - Children: Dictionary + Children: ImmutableDictionary } /// Zero or more files that define the LongIdentifier represented by this node. member Files: Set + static member Empty: TrieNode + /// A significant construct found in the syntax tree of a file. /// This construct needs to be processed in order to deduce potential links to other files in the project. type internal FileContentEntry = @@ -70,12 +77,9 @@ type internal FileContent = type internal FileContentQueryState = { OwnNamespace: LongIdentifier option OpenedNamespaces: Set - FoundDependencies: Set - CurrentFile: FileIndex - KnownFiles: Set } + FoundDependencies: Set } - static member Create: - fileIndex: FileIndex -> knownFiles: Set -> filesAtRoot: Set -> FileContentQueryState + static member Create: filesAtRoot: Set -> FileContentQueryState member AddOwnNamespace: ns: LongIdentifier * ?files: Set -> FileContentQueryState member AddDependencies: files: Set -> FileContentQueryState member AddOpenNamespace: path: LongIdentifier * ?files: Set -> FileContentQueryState @@ -109,4 +113,4 @@ type internal FilePairMap = member IsSignature: index: FileIndex -> bool /// Callback that returns a previously calculated 'Result and updates 'State accordingly. -type internal Finisher<'State, 'Result> = delegate of 'State -> 'Result * 'State +type internal Finisher<'Node, 'State, 'Result> = Finisher of node: 'Node * finisher: ('State -> 'Result * 'State) diff --git a/src/fcs-fable/src/Compiler/Driver/OptimizeInputs.fs b/src/fcs-fable/src/Compiler/Driver/OptimizeInputs.fs index 6dea761230..e529c0b71f 100644 --- a/src/fcs-fable/src/Compiler/Driver/OptimizeInputs.fs +++ b/src/fcs-fable/src/Compiler/Driver/OptimizeInputs.fs @@ -2,7 +2,9 @@ module internal FSharp.Compiler.OptimizeInputs +open System.Collections.Generic open System.IO +open System.Threading.Tasks open Internal.Utilities.Library open FSharp.Compiler open FSharp.Compiler.AbstractIL.IL @@ -52,6 +54,261 @@ let GetInitialOptimizationEnv (tcImports: TcImports, tcGlobals: TcGlobals) = let optEnv = List.fold (AddExternalCcuToOptimizationEnv tcGlobals) optEnv ccuinfos optEnv +/// Result of the 'FirstLoop' phase +type FirstLoopRes = + { + OptEnv: Optimizer.IncrementalOptimizationEnv + OptInfo: Optimizer.ImplFileOptimizationInfo + HidingInfo: SignatureHidingInfo + OptDuringCodeGen: bool -> Expr -> Expr + } + +/// All the state optimization phases can produce (except 'CheckedImplFile') and most of what they require as input. +type PhaseContext = + { + FirstLoopRes: FirstLoopRes + OptEnvExtraLoop: Optimizer.IncrementalOptimizationEnv + OptEnvFinalSimplify: Optimizer.IncrementalOptimizationEnv + } + +/// The result of running a single Optimization Phase. +type PhaseRes = CheckedImplFile * PhaseContext + +/// 0-based index of an Optimization Phase. +type PhaseIdx = int + +/// All inputs required to evaluate each Optimization Phase. +type PhaseInputs = + { + File: CheckedImplFile + FileIdx: int + /// State returned by processing the previous phase for the current file, or initial state. + PrevPhase: PhaseContext + /// State returned by processing the current phase for the previous file, or initial state. + PrevFile: PhaseContext + } + +/// Signature of each optimization phase. +type PhaseFunc = PhaseInputs -> CheckedImplFile * PhaseContext + +/// Each file's optimization can be split into up to seven different phases, executed one after another. +type Phase = + { + Idx: PhaseIdx + Name: string + } + + override this.ToString() = $"{this.Idx}-{this.Name}" + +type PhaseInfo = { Phase: Phase; Func: PhaseFunc } + +[] +module private ParallelOptimization = + open Optimizer + + /// Identifies a work item scheduled independently of others - consists of a (file) index and OptimizationPhase. + /// There are (NumberOfFiles * NumberOfPhases) nodes in the whole optimization process. + type private Node = + { + FileIdx: int + Phase: PhaseIdx + } + + override this.ToString() = $"[{this.FileIdx}-{this.Phase}]" + + /// Final processing of file results to produce output needed for further compilation steps. + let private collectFinalResults + (fileResults: PhaseRes[]) + : (CheckedImplFileAfterOptimization * ImplFileOptimizationInfo)[] * IncrementalOptimizationEnv = + let finalFileResults = + fileResults + |> Array.map (fun (file, res) -> + let implFile = + { + ImplFile = file + OptimizeDuringCodeGen = res.FirstLoopRes.OptDuringCodeGen + } + + implFile, res.FirstLoopRes.OptInfo) + + let lastFileFirstLoopEnv = + fileResults |> Array.last |> (fun (_file, res) -> res.FirstLoopRes.OptEnv) + + finalFileResults, lastFileFirstLoopEnv + +#if !FABLE_COMPILER + let optimizeFilesInParallel + (env0: IncrementalOptimizationEnv) + (phases: PhaseInfo[]) + (files: CheckedImplFile list) + : (CheckedImplFileAfterOptimization * ImplFileOptimizationInfo)[] * IncrementalOptimizationEnv = + + let files = files |> List.toArray + + /// Initial state for processing the current file. + let initialState = + { + FirstLoopRes = + { + OptEnv = env0 + OptInfo = lazy failwith "This dummy value wrapped in a Lazy was not expected to be evaluated before being replaced." + HidingInfo = SignatureHidingInfo.Empty + // A no-op optimizer + OptDuringCodeGen = fun _ expr -> expr + } + OptEnvExtraLoop = env0 + OptEnvFinalSimplify = env0 + } + + // Functions for accessing a set of node jobs and their results + let getTask, setTask = + let tasks: Task[,] = Array2D.zeroCreate files.Length phases.Length + let getTask (node: Node) = tasks[node.FileIdx, node.Phase] + let setTask (node: Node) (task: Task) = tasks[node.FileIdx, node.Phase] <- task + getTask, setTask + + /// Asynchronously wait for dependencies of a node + let getNodeInputs (node: Node) = + backgroundTask { + let prevPhaseNode = { node with Phase = node.Phase - 1 } + let prevFileNode = { node with FileIdx = node.FileIdx - 1 } + + let prevPhaseTask = + if node.Phase > 0 then + backgroundTask { + // Make sure that creating the task does not block before other node tasks finish + do! Task.Yield() + return! getTask prevPhaseNode + } + else + // First phase uses input file without modifications + (files[node.FileIdx], initialState) |> Task.FromResult + + let prevFileTask = + if node.FileIdx > 0 then + backgroundTask { + // Make sure that creating the task does not block before other node tasks finish + do! Task.Yield() + return! getTask prevFileNode + } + else + // We don't use the file result in this case, but we need something, so just take the first input file as a placeholder. + (files[0], initialState) |> Task.FromResult + + let! results = [| prevPhaseTask; prevFileTask |] |> Task.WhenAll + let prevPhaseFile, prevPhaseRes = results[0] + let _prevFileFile, prevFileRes = results[1] + + let inputs = + { + File = prevPhaseFile + FileIdx = node.FileIdx + PrevPhase = prevPhaseRes + PrevFile = prevFileRes + } + + return inputs + } + + let startNodeTask (phase: PhaseInfo) (node: Node) = + backgroundTask { + // Make sure that creating the task does not block before other node tasks finish + do! Task.Yield() + let! inputs = getNodeInputs node + let res = phase.Func inputs + return res + } + + let fileIndices = [| 0 .. files.Length - 1 |] + + for fileIdx in fileIndices do + for phase in phases do + let node = + { + Node.Phase = phase.Phase.Idx + FileIdx = fileIdx + } + + let task = startNodeTask phase node + setTask node task + + let lastPhaseResultsTask = + let lastPhaseIndex = phases[phases.Length - 1].Phase.Idx + + fileIndices + |> Array.map (fun fileIdx -> + getTask + { + Node.FileIdx = fileIdx + Phase = lastPhaseIndex + }) + |> Task.WhenAll + + let lastPhaseResults = + try + lastPhaseResultsTask.GetAwaiter().GetResult() + // If multiple exceptions returned by multiple tasks, ignore all but the first one. + with :? System.AggregateException as ex when ex.InnerExceptions.Count > 0 -> + raise ex.InnerExceptions[0] + + collectFinalResults lastPhaseResults +#endif //!FABLE_COMPILER + +let optimizeFilesSequentially optEnv (phases: PhaseInfo[]) implFiles = + let results, (optEnvFirstLoop, _, _, _) = + let implFiles = implFiles |> List.mapi (fun i file -> i, file) + + ((optEnv, optEnv, optEnv, SignatureHidingInfo.Empty), implFiles) + + ||> List.mapFold + (fun (optEnvFirstLoop: Optimizer.IncrementalOptimizationEnv, optEnvExtraLoop, optEnvFinalSimplify, hidden) (fileIdx, implFile) -> + + /// Initial state for processing the current file. + let state = + implFile, + { + FirstLoopRes = + { + OptEnv = optEnvFirstLoop + OptInfo = + lazy + failwith + "This dummy value wrapped in a Lazy was not expected to be evaluated before being replaced." + HidingInfo = hidden + // A no-op optimizer + OptDuringCodeGen = fun _ expr -> expr + } + OptEnvExtraLoop = optEnvExtraLoop + OptEnvFinalSimplify = optEnvFinalSimplify + } + + let runPhase (file: CheckedImplFile, state: PhaseContext) (phase: PhaseInfo) = + // In the sequential mode we always process all phases of the previous file before processing the current file. + // This is why the state returned by the previous phase of the current file contains all changes made in the previous file, + // and we can use it in both places. + let input = + { + File = file + FileIdx = fileIdx + PrevPhase = state + PrevFile = state + } + + phase.Func input + + let implFile, state = Array.fold runPhase state phases + + let file = + { + ImplFile = implFile + OptimizeDuringCodeGen = state.FirstLoopRes.OptDuringCodeGen + } + + (file, state.FirstLoopRes.OptInfo), + (state.FirstLoopRes.OptEnv, state.OptEnvExtraLoop, state.OptEnvFinalSimplify, state.FirstLoopRes.HidingInfo)) + + results, optEnvFirstLoop + let ApplyAllOptimizations ( tcConfig: TcConfig, @@ -82,133 +339,227 @@ let ApplyAllOptimizations #endif #endif //!FABLE_COMPILER - let optEnv0 = optEnv #if !FABLE_COMPILER ReportTime tcConfig "Optimizations" #endif - // Only do abstract_big_targets on the first pass! Only do it when TLR is on! - let optSettings = tcConfig.optSettings - - let optSettings = - { optSettings with + let firstLoopSettings = + { tcConfig.optSettings with + // Only do abstractBigTargets in the first phase, and only when TLR is on. abstractBigTargets = tcConfig.doTLR + reportingPhase = true } - let optSettings = - { optSettings with - reportingPhase = true + // Only do these two steps in the first phase. + let extraAndFinalLoopSettings = + { firstLoopSettings with + abstractBigTargets = false + reportingPhase = false } - let results, (optEnvFirstLoop, _, _, _) = - ((optEnv0, optEnv0, optEnv0, SignatureHidingInfo.Empty), implFiles) - - ||> List.mapFold (fun (optEnvFirstLoop, optEnvExtraLoop, optEnvFinalSimplify, hidden) implFile -> - - //ReportTime tcConfig ("Initial simplify") - let (optEnvFirstLoop, implFile, implFileOptData, hidden), optimizeDuringCodeGen = - Optimizer.OptimizeImplFile( - optSettings, - ccu, - tcGlobals, - tcVal, - importMap, - optEnvFirstLoop, - isIncrementalFragment, - tcConfig.fsiMultiAssemblyEmit, - tcConfig.emitTailcalls, - hidden, - implFile - ) - - let implFile = LowerLocalMutables.TransformImplFile tcGlobals importMap implFile - - // Only do this on the first pass! - let optSettings = - { optSettings with - abstractBigTargets = false - reportingPhase = false + let addPhaseDiagnostics (f: PhaseFunc) (info: Phase) = + fun (inputs: PhaseInputs) -> + use _ = + let tags = + [| + "QualifiedNameOfFile", inputs.File.QualifiedNameOfFile.Text + "OptimisationPhase", info.Name + |] + + FSharp.Compiler.Diagnostics.Activity.start $"file-{inputs.FileIdx}_phase-{info.Name}" tags + + f inputs + + let phases = List() + + let addPhase (name: string) (phaseFunc: PhaseFunc) = + let phase = { Idx = phases.Count; Name = name } + + let phaseInfo = + { + Phase = phase + Func = addPhaseDiagnostics phaseFunc phase + } + + phases.Add(phaseInfo) + + let firstLoop + ({ + File = file + PrevPhase = prevPhase + PrevFile = prevFile + }: PhaseInputs) + : PhaseRes = + let (env, file, optInfo, hidingInfo), optDuringCodeGen = + Optimizer.OptimizeImplFile( + firstLoopSettings, + ccu, + tcGlobals, + tcVal, + importMap, + prevFile.FirstLoopRes.OptEnv, + isIncrementalFragment, + tcConfig.fsiMultiAssemblyEmit, + tcConfig.emitTailcalls, + prevFile.FirstLoopRes.HidingInfo, + file + ) + + file, + { prevPhase with + FirstLoopRes = + { + OptEnv = env + OptInfo = optInfo + HidingInfo = hidingInfo + OptDuringCodeGen = optDuringCodeGen } -#if DEBUG && !FABLE_COMPILER - if tcConfig.showOptimizationData then - dprintf - "Optimization implFileOptData:\n%s\n" - (LayoutRender.showL (Display.squashTo 192 (Optimizer.moduleInfoL tcGlobals implFileOptData))) + } + + addPhase "firstLoop" firstLoop + + let lowerLocalMutables + ({ + File = file + PrevPhase = prevPhase + PrevFile = _prevFile + }: PhaseInputs) + : PhaseRes = + let file = LowerLocalMutables.TransformImplFile tcGlobals importMap file + file, prevPhase + + addPhase "lowerLocalMutables" lowerLocalMutables + + let extraLoop + ({ + File = file + PrevPhase = prevPhase + PrevFile = prevFile + }: PhaseInputs) + : PhaseRes = + let (optEnvExtraLoop, file, _, _), _ = + Optimizer.OptimizeImplFile( + extraAndFinalLoopSettings, + ccu, + tcGlobals, + tcVal, + importMap, + prevFile.OptEnvExtraLoop, + isIncrementalFragment, + tcConfig.fsiMultiAssemblyEmit, + tcConfig.emitTailcalls, + prevPhase.FirstLoopRes.HidingInfo, + file + ) + + file, + { prevPhase with + OptEnvExtraLoop = optEnvExtraLoop + } + + if tcConfig.extraOptimizationIterations > 0 then + addPhase "ExtraLoop" extraLoop + + let detuple + ({ + File = file + PrevPhase = prevPhase + PrevFile = _prevFile + }: PhaseInputs) + : PhaseRes = + let file = file |> Detuple.DetupleImplFile ccu tcGlobals + file, prevPhase + + if tcConfig.doDetuple then + addPhase "Detuple" detuple + + let innerLambdasToToplevelFuncs + ({ + File = file + PrevPhase = prevPhase + PrevFile = _prevFile + }: PhaseInputs) + : PhaseRes = + let file = + file + |> InnerLambdasToTopLevelFuncs.MakeTopLevelRepresentationDecisions ccu tcGlobals + + file, prevPhase + + if tcConfig.doTLR then + addPhase "InnerLambdasToToplevelFuncs" innerLambdasToToplevelFuncs + + let lowerCalls + ({ + File = file + PrevPhase = prevPhase + PrevFile = _prevFile + }: PhaseInputs) + : PhaseRes = + let file = LowerCalls.LowerImplFile tcGlobals file + file, prevPhase + + addPhase "LowerCalls" lowerCalls + + let finalSimplify + ({ + File = file + PrevPhase = prevPhase + PrevFile = prevFile + }: PhaseInputs) + : PhaseRes = + let (optEnvFinalSimplify, file, _, _), _ = + Optimizer.OptimizeImplFile( + extraAndFinalLoopSettings, + ccu, + tcGlobals, + tcVal, + importMap, + prevFile.OptEnvFinalSimplify, + isIncrementalFragment, + tcConfig.fsiMultiAssemblyEmit, + tcConfig.emitTailcalls, + prevPhase.FirstLoopRes.HidingInfo, + file + ) + + file, + { prevPhase with + OptEnvFinalSimplify = optEnvFinalSimplify + } + + if tcConfig.doFinalSimplify then + addPhase "FinalSimplify" finalSimplify + + let phases = phases.ToArray() + + let results, optEnvFirstLoop = + match tcConfig.optSettings.processingMode with +#if !FABLE_COMPILER + // Parallel optimization breaks determinism - turn it off in deterministic builds. + | Optimizer.OptimizationProcessingMode.Parallel when (not tcConfig.deterministic) -> + let results, optEnvFirstPhase = + ParallelOptimization.optimizeFilesInParallel optEnv phases implFiles + + results |> Array.toList, optEnvFirstPhase #endif + | Optimizer.OptimizationProcessingMode.Parallel + | Optimizer.OptimizationProcessingMode.Sequential -> optimizeFilesSequentially optEnv phases implFiles - let implFile, optEnvExtraLoop = - if tcConfig.extraOptimizationIterations > 0 then - - //ReportTime tcConfig ("Extra simplification loop") - let (optEnvExtraLoop, implFile, _, _), _ = - Optimizer.OptimizeImplFile( - optSettings, - ccu, - tcGlobals, - tcVal, - importMap, - optEnvExtraLoop, - isIncrementalFragment, - tcConfig.fsiMultiAssemblyEmit, - tcConfig.emitTailcalls, - hidden, - implFile - ) - - //PrintWholeAssemblyImplementation tcConfig outfile (sprintf "extra-loop-%d" n) implFile - implFile, optEnvExtraLoop - else - implFile, optEnvExtraLoop - - let implFile = - if tcConfig.doDetuple then - //ReportTime tcConfig ("Detupled optimization") - let implFile = implFile |> Detuple.DetupleImplFile ccu tcGlobals - //PrintWholeAssemblyImplementation tcConfig outfile "post-detuple" implFile - implFile - else - implFile - - let implFile = - if tcConfig.doTLR then - implFile - |> InnerLambdasToTopLevelFuncs.MakeTopLevelRepresentationDecisions ccu tcGlobals - else - implFile - - let implFile = LowerCalls.LowerImplFile tcGlobals implFile - - let implFile, optEnvFinalSimplify = - if tcConfig.doFinalSimplify then - - //ReportTime tcConfig ("Final simplify pass") - let (optEnvFinalSimplify, implFile, _, _), _ = - Optimizer.OptimizeImplFile( - optSettings, - ccu, - tcGlobals, - tcVal, - importMap, - optEnvFinalSimplify, - isIncrementalFragment, - tcConfig.fsiMultiAssemblyEmit, - tcConfig.emitTailcalls, - hidden, - implFile - ) - - //PrintWholeAssemblyImplementation tcConfig outfile "post-rec-opt" implFile - implFile, optEnvFinalSimplify - else - implFile, optEnvFinalSimplify - - let implFile = - { - ImplFile = implFile - OptimizeDuringCodeGen = optimizeDuringCodeGen - } +#if DEBUG + if tcConfig.showOptimizationData then + results + |> List.map snd + |> List.iter (fun implFileOptData -> + let str = +#if FABLE_COMPILER + (LayoutRender.showL (Optimizer.moduleInfoL tcGlobals implFileOptData)) +#else + (LayoutRender.showL (Display.squashTo 192 (Optimizer.moduleInfoL tcGlobals implFileOptData))) +#endif - (implFile, implFileOptData), (optEnvFirstLoop, optEnvExtraLoop, optEnvFinalSimplify, hidden)) + dprintf $"Optimization implFileOptData:\n{str}\n") +#endif let implFiles, implFileOptDatas = List.unzip results let assemblyOptData = Optimizer.UnionOptimizationInfos implFileOptDatas @@ -269,7 +620,7 @@ let GenerateIlxCode isInteractive = tcConfig.isInteractive isInteractiveItExpr = isInteractiveItExpr alwaysCallVirt = tcConfig.alwaysCallVirt - parallelIlxGenEnabled = tcConfig.parallelIlxGen && not (tcConfig.deterministic) + parallelIlxGenEnabled = tcConfig.parallelIlxGen && not tcConfig.deterministic } ilxGenerator.GenerateCode(ilxGenOpts, optimizedImpls, topAttrs.assemblyAttrs, topAttrs.netModuleAttrs) diff --git a/src/fcs-fable/src/Compiler/Driver/ParseAndCheckInputs.fs b/src/fcs-fable/src/Compiler/Driver/ParseAndCheckInputs.fs index 29fb77aa40..7945a31d08 100644 --- a/src/fcs-fable/src/Compiler/Driver/ParseAndCheckInputs.fs +++ b/src/fcs-fable/src/Compiler/Driver/ParseAndCheckInputs.fs @@ -9,6 +9,7 @@ open System.IO open System.Threading open System.Collections.Generic +open FSharp.Compiler.Parser open Internal.Utilities.Collections open Internal.Utilities.Library open Internal.Utilities.Library.Extras @@ -508,15 +509,24 @@ let ParseInput type Tokenizer = unit -> Parser.token // Show all tokens in the stream, for testing purposes -let ShowAllTokensAndExit (shortFilename, tokenizer: Tokenizer, lexbuf: LexBuffer, exiter: Exiter) = +let ShowAllTokensAndExit (tokenizer: Tokenizer, lexbuf: LexBuffer, exiter: Exiter) = + let mutable indent = 0 + while true do - printf "tokenize - getting one token from %s\n" shortFilename let t = tokenizer () -#if FABLE_COMPILER - printf "tokenize - got %s @ %s\n" (Parser.token_to_string t) (stringOfRange lexbuf.LexemeRange) -#else - printf "tokenize - got %s @ %a\n" (Parser.token_to_string t) outputRange lexbuf.LexemeRange -#endif + + indent <- + match t with + | OBLOCKEND_IS_HERE -> max (indent - 1) 0 + | _ -> indent + + let indentStr = String.replicate indent " " + printfn $"{indentStr}{token_to_string t} {lexbuf.LexemeRange}" + + indent <- + match t with + | OBLOCKBEGIN -> indent + 1 + | _ -> indent match t with | Parser.EOF _ -> exiter.Exit 0 @@ -617,9 +627,6 @@ let ParseOneInputLexbuf (tcConfig: TcConfig, lexResourceManager, lexbuf, fileNam tcConfig.applyLineDirectives ) - // Set up the initial lexer arguments - let shortFilename = SanitizeFileName fileName tcConfig.implicitIncludeDir - let input = usingLexbufForParsing (lexbuf, fileName) (fun lexbuf -> @@ -633,7 +640,8 @@ let ParseOneInputLexbuf (tcConfig: TcConfig, lexResourceManager, lexbuf, fileNam indentationSyntaxStatus, tcConfig.compilingFSharpCore, Lexer.token lexargs skipWhitespaceTokens, - lexbuf + lexbuf, + tcConfig.tokenize = TokenizeOption.Debug ) .GetToken, true @@ -643,14 +651,15 @@ let ParseOneInputLexbuf (tcConfig: TcConfig, lexResourceManager, lexbuf, fileNam indentationSyntaxStatus, tcConfig.compilingFSharpCore, Lexer.token lexargs skipWhitespaceTokens, - lexbuf + lexbuf, + tcConfig.tokenize = TokenizeOption.Debug ) .GetToken, false // If '--tokenize' then show the tokens now and exit if tokenizeOnly then - ShowAllTokensAndExit(shortFilename, tokenizer, lexbuf, tcConfig.exiter) + ShowAllTokensAndExit(tokenizer, lexbuf, tcConfig.exiter) // Test hook for one of the parser entry points if tcConfig.testInteractionParser then @@ -707,7 +716,7 @@ let parseInputStreamAux // Set up the LexBuffer for the file let lexbuf = - UnicodeLexing.StreamReaderAsLexbuf(not tcConfig.compilingFSharpCore, tcConfig.langVersion, reader) + UnicodeLexing.StreamReaderAsLexbuf(not tcConfig.compilingFSharpCore, tcConfig.langVersion, tcConfig.strictIndentation, reader) // Parse the file drawing tokens from the lexbuf ParseOneInputLexbuf(tcConfig, lexResourceManager, lexbuf, fileName, isLastCompiland, diagnosticsLogger) @@ -723,7 +732,7 @@ let parseInputSourceTextAux ) = // Set up the LexBuffer for the file let lexbuf = - UnicodeLexing.SourceTextAsLexbuf(not tcConfig.compilingFSharpCore, tcConfig.langVersion, sourceText) + UnicodeLexing.SourceTextAsLexbuf(not tcConfig.compilingFSharpCore, tcConfig.langVersion, tcConfig.strictIndentation, sourceText) // Parse the file drawing tokens from the lexbuf ParseOneInputLexbuf(tcConfig, lexResourceManager, lexbuf, fileName, isLastCompiland, diagnosticsLogger) @@ -735,7 +744,7 @@ let parseInputFileAux (tcConfig: TcConfig, lexResourceManager, fileName, isLastC // Set up the LexBuffer for the file let lexbuf = - UnicodeLexing.StreamReaderAsLexbuf(not tcConfig.compilingFSharpCore, tcConfig.langVersion, reader) + UnicodeLexing.StreamReaderAsLexbuf(not tcConfig.compilingFSharpCore, tcConfig.langVersion, tcConfig.strictIndentation, reader) // Parse the file drawing tokens from the lexbuf ParseOneInputLexbuf(tcConfig, lexResourceManager, lexbuf, fileName, isLastCompiland, diagnosticsLogger) @@ -1483,11 +1492,10 @@ type NodeToTypeCheck = /// Even though the actual implementation file was not type-checked. | ArtificialImplFile of signatureFileIndex: FileIndex -let folder (state: State) (finisher: Finisher) : FinalFileResult * State = finisher.Invoke(state) - /// Typecheck a single file (or interactive entry into F# Interactive) /// a callback functions that takes a `TcState` and will add the checked result to it. let CheckOneInputWithCallback + (node: NodeToTypeCheck) ((checkForErrors, tcConfig: TcConfig, tcImports: TcImports, @@ -1497,7 +1505,7 @@ let CheckOneInputWithCallback tcState: TcState, inp: ParsedInput, _skipImplIfSigExists: bool): (unit -> bool) * TcConfig * TcImports * TcGlobals * LongIdent option * TcResultsSink * TcState * ParsedInput * bool) - : Cancellable> = + : Cancellable> = cancellable { try CheckSimulateException tcConfig @@ -1546,25 +1554,29 @@ let CheckOneInputWithCallback TcOpenModuleOrNamespaceDecl tcSink tcGlobals amap m tcEnv (prefixPath, m) return - Finisher(fun tcState -> - let rootSigs = Zmap.add qualNameOfFile sigFileType tcState.tcsRootSigs + Finisher( + node, + (fun tcState -> + let rootSigs = Zmap.add qualNameOfFile sigFileType tcState.tcsRootSigs - let tcSigEnv = - AddLocalRootModuleOrNamespace TcResultsSink.NoSink tcGlobals amap m tcState.tcsTcSigEnv sigFileType + let tcSigEnv = + AddLocalRootModuleOrNamespace TcResultsSink.NoSink tcGlobals amap m tcState.tcsTcSigEnv sigFileType - // Add the signature to the signature env (unless it had an explicit signature) - let ccuSigForFile = CombineCcuContentFragments [ sigFileType; tcState.tcsCcuSig ] + // Add the signature to the signature env (unless it had an explicit signature) + let ccuSigForFile = CombineCcuContentFragments [ sigFileType; tcState.tcsCcuSig ] - let partialResult = tcEnv, EmptyTopAttrs, None, ccuSigForFile + let partialResult = tcEnv, EmptyTopAttrs, None, ccuSigForFile - let tcState = - { tcState with - tcsTcSigEnv = tcSigEnv - tcsRootSigs = rootSigs - tcsCreatesGeneratedProvidedTypes = tcState.tcsCreatesGeneratedProvidedTypes || createsGeneratedProvidedTypes - } + let tcState = + { tcState with + tcsTcSigEnv = tcSigEnv + tcsRootSigs = rootSigs + tcsCreatesGeneratedProvidedTypes = + tcState.tcsCreatesGeneratedProvidedTypes || createsGeneratedProvidedTypes + } - partialResult, tcState) + partialResult, tcState) + ) | ParsedInput.ImplFile file -> let qualNameOfFile = file.QualifiedName @@ -1590,29 +1602,32 @@ let CheckOneInputWithCallback ) return - Finisher(fun tcState -> - // Check if we've already seen an implementation for this fragment - if Zset.contains qualNameOfFile tcState.tcsRootImpls then - errorR (Error(FSComp.SR.buildImplementationAlreadyGiven (qualNameOfFile.Text), m)) - - let ccuSigForFile, fsTcState = - AddCheckResultsToTcState - (tcGlobals, amap, false, prefixPathOpt, tcSink, tcState.tcsTcImplEnv, qualNameOfFile, implFile.Signature) - tcState - - let partialResult = tcEnvAtEnd, topAttrs, Some implFile, ccuSigForFile - - let tcState = - { fsTcState with - tcsCreatesGeneratedProvidedTypes = - fsTcState.tcsCreatesGeneratedProvidedTypes || createsGeneratedProvidedTypes - } - - partialResult, tcState) + Finisher( + node, + (fun tcState -> + // Check if we've already seen an implementation for this fragment + if Zset.contains qualNameOfFile tcState.tcsRootImpls then + errorR (Error(FSComp.SR.buildImplementationAlreadyGiven (qualNameOfFile.Text), m)) + + let ccuSigForFile, fsTcState = + AddCheckResultsToTcState + (tcGlobals, amap, false, prefixPathOpt, tcSink, tcState.tcsTcImplEnv, qualNameOfFile, implFile.Signature) + tcState + + let partialResult = tcEnvAtEnd, topAttrs, Some implFile, ccuSigForFile + + let tcState = + { fsTcState with + tcsCreatesGeneratedProvidedTypes = + fsTcState.tcsCreatesGeneratedProvidedTypes || createsGeneratedProvidedTypes + } + + partialResult, tcState) + ) with e -> errorRecovery e range0 - return Finisher(fun tcState -> (tcState.TcEnvFromSignatures, EmptyTopAttrs, None, tcState.tcsCcuSig), tcState) + return Finisher(node, (fun tcState -> (tcState.TcEnvFromSignatures, EmptyTopAttrs, None, tcState.tcsCcuSig), tcState)) } let AddSignatureResultToTcImplEnv (tcImports: TcImports, tcGlobals, prefixPathOpt, tcSink, tcState, input: ParsedInput) = @@ -1637,6 +1652,106 @@ let AddSignatureResultToTcImplEnv (tcImports: TcImports, tcGlobals, prefixPathOp partialResult, tcState +module private TypeCheckingGraphProcessing = + open FSharp.Compiler.GraphChecking.GraphProcessing + + // TODO Do we need to suppress some error logging if we + // TODO apply the same partial results multiple times? + // TODO Maybe we can enable logging only for the final fold + /// + /// Combine type-checking results of dependencies needed to type-check a 'higher' node in the graph + /// + /// Initial state + /// Direct dependencies of a node + /// Transitive dependencies of a node + /// A way to fold a single result into existing state + let private combineResults + (emptyState: State) + (deps: ProcessedNode> array) + (transitiveDeps: ProcessedNode> array) + (folder: State -> Finisher -> State) + : State = + match deps with + | [||] -> emptyState + | _ -> + // Instead of starting with empty state, + // reuse state produced by the dependency with the biggest number of transitive dependencies. + // This is to reduce the number of folds required to achieve the final state. + let biggestDependency = + let sizeMetric (node: ProcessedNode<_, _>) = node.Info.TransitiveDeps.Length + deps |> Array.maxBy sizeMetric + + let firstState = biggestDependency.Result |> fst + + // Find items not already included in the state. + let itemsPresent = + set + [| + yield! biggestDependency.Info.TransitiveDeps + yield biggestDependency.Info.Item + |] + + let resultsToAdd = + transitiveDeps + |> Array.filter (fun dep -> itemsPresent.Contains dep.Info.Item = false) + |> Array.distinctBy (fun dep -> dep.Info.Item) + |> Array.sortWith (fun a b -> + // We preserve the order in which items are folded to the state. + match a.Info.Item, b.Info.Item with + | NodeToTypeCheck.PhysicalFile aIdx, NodeToTypeCheck.PhysicalFile bIdx + | NodeToTypeCheck.ArtificialImplFile aIdx, NodeToTypeCheck.ArtificialImplFile bIdx -> aIdx.CompareTo bIdx + | NodeToTypeCheck.PhysicalFile _, NodeToTypeCheck.ArtificialImplFile _ -> -1 + | NodeToTypeCheck.ArtificialImplFile _, NodeToTypeCheck.PhysicalFile _ -> 1) + |> Array.map (fun dep -> dep.Result |> snd) + + // Fold results not already included and produce the final state + let state = Array.fold folder firstState resultsToAdd + state + + /// + /// Process a graph of items. + /// A version of 'GraphProcessing.processGraph' with a signature specific to type-checking. + /// + let processTypeCheckingGraph + (graph: Graph) + (work: NodeToTypeCheck -> State -> Finisher) + (emptyState: State) + (ct: CancellationToken) + : (int * FinalFileResult) list * State = + + let workWrapper + (getProcessedNode: NodeToTypeCheck -> ProcessedNode>) + (node: NodeInfo) + : State * Finisher = + let folder (state: State) (Finisher (finisher = finisher)) : State = finisher state |> snd + let deps = node.Deps |> Array.except [| node.Item |] |> Array.map getProcessedNode + + let transitiveDeps = + node.TransitiveDeps + |> Array.except [| node.Item |] + |> Array.map getProcessedNode + + let inputState = combineResults emptyState deps transitiveDeps folder + + let singleRes = work node.Item inputState + let state = folder inputState singleRes + state, singleRes + + let results = processGraph graph workWrapper ct + + let finalFileResults, state: (int * FinalFileResult) list * State = + (([], emptyState), + results + |> Array.choose (fun (item, res) -> + match item with + | NodeToTypeCheck.ArtificialImplFile _ -> None + | NodeToTypeCheck.PhysicalFile file -> Some(file, res))) + ||> Array.fold (fun (fileResults, state) (item, (_, Finisher (finisher = finisher))) -> + let fileResult, state = finisher state + (item, fileResult) :: fileResults, state) + + finalFileResults, state + /// Constructs a file dependency graph and type-checks the files in parallel where possible. let CheckMultipleInputsUsingGraphMode ((ctok, checkForErrors, tcConfig: TcConfig, tcImports: TcImports, tcGlobals, prefixPathOpt, tcState, eagerFormat, inputs): 'a * (unit -> bool) * TcConfig * TcImports * TcGlobals * LongIdent option * TcState * (PhasedDiagnostic -> PhasedDiagnostic) * ParsedInput list) @@ -1654,9 +1769,7 @@ let CheckMultipleInputsUsingGraphMode }) let filePairs = FilePairMap(sourceFiles) - - let graph = - DependencyResolution.mkGraph tcConfig.compilingFSharpCore filePairs sourceFiles + let graph, trie = DependencyResolution.mkGraph filePairs sourceFiles let nodeGraph = let mkArtificialImplFile n = NodeToTypeCheck.ArtificialImplFile n @@ -1702,6 +1815,9 @@ let CheckMultipleInputsUsingGraphMode let outputFile = FileSystem.GetFullPathShim(outputFile) let graphFile = FileSystem.ChangeExtensionShim(outputFile, ".graph.md") + let trieFile = FileSystem.ChangeExtensionShim(outputFile, ".trie.md") + TrieMapping.serializeToMermaid trieFile sourceFiles trie + graph |> Graph.map (fun idx -> let friendlyFileName = @@ -1719,38 +1835,51 @@ let CheckMultipleInputsUsingGraphMode // somewhere in the files processed prior to each one, or in the processing of this particular file. let priorErrors = checkForErrors () - let processArtificialImplFile (input: ParsedInput) ((currentTcState, _currentPriorErrors): State) : Finisher = - Finisher(fun (state: State) -> - let tcState, currentPriorErrors = state - - let f = - // Retrieve the type-checked signature information and add it to the TcEnvFromImpls. - AddSignatureResultToTcImplEnv(tcImports, tcGlobals, prefixPathOpt, TcResultsSink.NoSink, currentTcState, input) - - // The `partialResult` will be excluded at the end of `GraphProcessing.processGraph`. - // The important thing is that `nextTcState` will populated the necessary information to TcEnvFromImpls. - let partialResult, nextTcState = f tcState - partialResult, (nextTcState, currentPriorErrors)) + let processArtificialImplFile + (node: NodeToTypeCheck) + (input: ParsedInput) + ((currentTcState, _currentPriorErrors): State) + : Finisher = + Finisher( + node, + (fun (state: State) -> + let tcState, currentPriorErrors = state + + let f = + // Retrieve the type-checked signature information and add it to the TcEnvFromImpls. + AddSignatureResultToTcImplEnv(tcImports, tcGlobals, prefixPathOpt, TcResultsSink.NoSink, currentTcState, input) + + // The `partialResult` will be excluded at the end of `GraphProcessing.processGraph`. + // The important thing is that `nextTcState` will populated the necessary information to TcEnvFromImpls. + let partialResult, nextTcState = f tcState + partialResult, (nextTcState, currentPriorErrors)) + ) let processFile + (node: NodeToTypeCheck) ((input, logger): ParsedInput * DiagnosticsLogger) ((currentTcState, _currentPriorErrors): State) - : Finisher = + : Finisher = use _ = UseDiagnosticsLogger logger let checkForErrors2 () = priorErrors || (logger.ErrorCount > 0) let tcSink = TcResultsSink.NoSink - let finisher = - CheckOneInputWithCallback(checkForErrors2, tcConfig, tcImports, tcGlobals, prefixPathOpt, tcSink, currentTcState, input, false) + let (Finisher (finisher = finisher)) = + CheckOneInputWithCallback + node + (checkForErrors2, tcConfig, tcImports, tcGlobals, prefixPathOpt, tcSink, currentTcState, input, false) |> Cancellable.runWithoutCancellation - Finisher(fun (state: State) -> - let tcState, priorErrors = state - let (partialResult: PartialResult, tcState) = finisher.Invoke(tcState) - let hasErrors = logger.ErrorCount > 0 - let priorOrCurrentErrors = priorErrors || hasErrors - let state: State = tcState, priorOrCurrentErrors - partialResult, state) + Finisher( + node, + (fun (state: State) -> + let tcState, priorErrors = state + let (partialResult: PartialResult, tcState) = finisher tcState + let hasErrors = logger.ErrorCount > 0 + let priorOrCurrentErrors = priorErrors || hasErrors + let state: State = tcState, priorOrCurrentErrors + partialResult, state) + ) UseMultipleDiagnosticLoggers (inputs, diagnosticsLogger, Some eagerFormat) (fun inputsWithLoggers -> // Equip loggers to locally filter w.r.t. scope pragmas in each input @@ -1761,30 +1890,19 @@ let CheckMultipleInputsUsingGraphMode let logger = DiagnosticsLoggerForInput(tcConfig, input, oldLogger) input, logger) - let processFile (node: NodeToTypeCheck) (state: State) : Finisher = + let processFile (node: NodeToTypeCheck) (state: State) : Finisher = match node with | NodeToTypeCheck.ArtificialImplFile idx -> let parsedInput, _ = inputsWithLoggers[idx] - processArtificialImplFile parsedInput state + processArtificialImplFile node parsedInput state | NodeToTypeCheck.PhysicalFile idx -> let parsedInput, logger = inputsWithLoggers[idx] - processFile (parsedInput, logger) state + processFile node (parsedInput, logger) state let state: State = tcState, priorErrors - let finalStateItemChooser node = - match node with - | NodeToTypeCheck.ArtificialImplFile _ -> None - | NodeToTypeCheck.PhysicalFile file -> Some file - let partialResults, (tcState, _) = - TypeCheckingGraphProcessing.processTypeCheckingGraph - nodeGraph - processFile - folder - finalStateItemChooser - state - cts.Token + TypeCheckingGraphProcessing.processTypeCheckingGraph nodeGraph processFile state cts.Token let partialResults = partialResults @@ -1804,7 +1922,7 @@ let CheckClosedInputSet (ctok, checkForErrors, tcConfig: TcConfig, tcImports, tc let results, tcState = match tcConfig.typeCheckingConfig.Mode with #if !FABLE_COMPILER - | TypeCheckingMode.Graph when (not tcConfig.isInteractive) -> + | TypeCheckingMode.Graph when (not tcConfig.isInteractive && not tcConfig.compilingFSharpCore) -> CheckMultipleInputsUsingGraphMode( ctok, checkForErrors, diff --git a/src/fcs-fable/src/Compiler/Driver/ScriptClosure.fs b/src/fcs-fable/src/Compiler/Driver/ScriptClosure.fs index 77246c3fc1..a54424ff49 100644 --- a/src/fcs-fable/src/Compiler/Driver/ScriptClosure.fs +++ b/src/fcs-fable/src/Compiler/Driver/ScriptClosure.fs @@ -139,7 +139,7 @@ module ScriptPreprocessClosure = let tcConfig = TcConfig.Create(tcConfigB, false) let lexbuf = - UnicodeLexing.SourceTextAsLexbuf(true, tcConfig.langVersion, sourceText) + UnicodeLexing.SourceTextAsLexbuf(true, tcConfig.langVersion, tcConfig.strictIndentation, sourceText) // The root compiland is last in the list of compilands. let isLastCompiland = (IsScript fileName, tcConfig.target.IsExe) diff --git a/src/fcs-fable/src/Compiler/Driver/StaticLinking.fs b/src/fcs-fable/src/Compiler/Driver/StaticLinking.fs index 443294a9b6..54a47568f4 100644 --- a/src/fcs-fable/src/Compiler/Driver/StaticLinking.fs +++ b/src/fcs-fable/src/Compiler/Driver/StaticLinking.fs @@ -16,6 +16,7 @@ open FSharp.Compiler.CompilerOptions open FSharp.Compiler.DiagnosticsLogger open FSharp.Compiler.IO open FSharp.Compiler.OptimizeInputs +open FSharp.Compiler.TcGlobals open FSharp.Compiler.Text.Range open FSharp.Compiler.TypedTree open FSharp.Compiler.TypedTreeBasics @@ -254,7 +255,7 @@ let StaticLinkILModules NativeResources = savedNativeResources } - Morphs.morphILTypeRefsInILModuleMemoized typeForwarding.TypeForwardILTypeRef main + Morphs.morphILTypeRefsInILModuleMemoized TcGlobals.IsInEmbeddableKnownSet typeForwarding.TypeForwardILTypeRef main ilxMainModule, rewriteExternalRefsToLocalRefs @@ -495,7 +496,9 @@ let rec implantTypeDef ilGlobals isNested (tdefs: ILTypeDefs) (enc: string list) // Compute a static linker. This only captures tcImports (a large data structure) if // static linking is enabled. Normally this is not the case, which lets us collect tcImports // prior to this point. -let StaticLink (ctok, tcConfig: TcConfig, tcImports: TcImports, ilGlobals: ILGlobals) = +let StaticLink (ctok, tcConfig: TcConfig, tcImports: TcImports, tcGlobals: TcGlobals) = + + let ilGlobals = tcGlobals.ilg #if !NO_TYPEPROVIDERS let providerGeneratedAssemblies = @@ -549,7 +552,7 @@ let StaticLink (ctok, tcConfig: TcConfig, tcImports: TcImports, ilGlobals: ILGlo let ilModule = ilModule - |> Morphs.morphILTypeRefsInILModuleMemoized (fun tref -> + |> Morphs.morphILTypeRefsInILModuleMemoized TcGlobals.IsInEmbeddableKnownSet (fun tref -> if debugStaticLinking then printfn "deciding whether to rewrite type ref %A" tref.QualifiedName @@ -718,6 +721,7 @@ let StaticLink (ctok, tcConfig: TcConfig, tcImports: TcImports, ilGlobals: ILGlo NormalizeAssemblyRefs(ctok, ilGlobals, tcImports) Morphs.morphILTypeRefsInILModuleMemoized + TcGlobals.IsInEmbeddableKnownSet (Morphs.morphILScopeRefsInILTypeRef ( validateTargetPlatform >> rewriteExternalRefsToLocalRefs diff --git a/src/fcs-fable/src/Compiler/Driver/StaticLinking.fsi b/src/fcs-fable/src/Compiler/Driver/StaticLinking.fsi index 58445dfc3b..55ad9bc127 100644 --- a/src/fcs-fable/src/Compiler/Driver/StaticLinking.fsi +++ b/src/fcs-fable/src/Compiler/Driver/StaticLinking.fsi @@ -7,10 +7,11 @@ open Internal.Utilities.Library open FSharp.Compiler.AbstractIL.IL open FSharp.Compiler.CompilerConfig open FSharp.Compiler.CompilerImports +open FSharp.Compiler.TcGlobals // Compute a static linker. This only captures tcImports (a large data structure) if // static linking is enabled. Normally this is not the case, which lets us collect tcImports // prior to this point. val StaticLink: - ctok: CompilationThreadToken * tcConfig: TcConfig * tcImports: TcImports * ilGlobals: ILGlobals -> + ctok: CompilationThreadToken * tcConfig: TcConfig * tcImports: TcImports * tcGlobals: TcGlobals -> (ILModuleDef -> ILModuleDef) diff --git a/src/fcs-fable/src/Compiler/Driver/fsc.fs b/src/fcs-fable/src/Compiler/Driver/fsc.fs index d59676d082..6a537c62d6 100644 --- a/src/fcs-fable/src/Compiler/Driver/fsc.fs +++ b/src/fcs-fable/src/Compiler/Driver/fsc.fs @@ -40,6 +40,7 @@ open FSharp.Compiler.CreateILModule open FSharp.Compiler.DependencyManager open FSharp.Compiler.Diagnostics open FSharp.Compiler.DiagnosticsLogger +open FSharp.Compiler.Features open FSharp.Compiler.IlxGen open FSharp.Compiler.InfoReader open FSharp.Compiler.IO @@ -878,6 +879,47 @@ let main3 optimizedImpls, EncodeOptimizationData(tcGlobals, tcConfig, outfile, exportRemapping, (generatedCcu, optimizationData), false) + if tcGlobals.langVersion.SupportsFeature LanguageFeature.WarningWhenTailRecAttributeButNonTailRecUsage then + match optimizedImpls with + | CheckedAssemblyAfterOptimization checkedImplFileAfterOptimizations -> + ReportTime tcConfig ("TailCall Checks") + + for f in checkedImplFileAfterOptimizations do + TailCallChecks.CheckImplFile(tcGlobals, tcImports.GetImportMap(), true, f.ImplFile.Contents) + + let refAssemblySignatureHash = + match tcConfig.emitMetadataAssembly with + | MetadataAssemblyGeneration.None -> None + | MetadataAssemblyGeneration.ReferenceOnly + | MetadataAssemblyGeneration.ReferenceOut _ -> + let hasIvt = + TryFindFSharpStringAttribute tcGlobals tcGlobals.attrib_InternalsVisibleToAttribute topAttrs.assemblyAttrs + |> Option.isSome + + let observer = + if hasIvt then + Fsharp.Compiler.SignatureHash.PublicAndInternal + else + Fsharp.Compiler.SignatureHash.PublicOnly + + let optDataHash = + optDataResources + |> List.map (fun ilResource -> + use s = ilResource.GetBytes().AsStream() + let sha256 = System.Security.Cryptography.SHA256.Create() + sha256.ComputeHash s) + |> List.sumBy (hash >> int64) + |> hash + + try + Fsharp.Compiler.SignatureHash.calculateSignatureHashOfFiles typedImplFiles tcGlobals observer + + Fsharp.Compiler.SignatureHash.calculateHashOfAssemblyTopAttributes topAttrs tcConfig.platform + + optDataHash + |> Some + with e -> + printfn "Unexpected error when hashing implied signature, will hash the all of .NET metadata instead. Error: %O " e + None + // Pass on only the minimum information required for the next phase Args( ctok, @@ -898,7 +940,8 @@ let main3 signingInfo, metadataVersion, exiter, - ilSourceDocs + ilSourceDocs, + refAssemblySignatureHash ) /// Fourth phase of compilation. @@ -924,19 +967,18 @@ let main4 signingInfo, metadataVersion, exiter: Exiter, - ilSourceDocs)) + ilSourceDocs, + refAssemblySignatureHash)) = match tcImportsCapture with | None -> () | Some f -> f tcImports - // Compute a static linker, it gets called later. - let ilGlobals = tcGlobals.ilg - if tcConfig.standalone && generatedCcu.UsesFSharp20PlusQuotations then error (Error(FSComp.SR.fscQuotationLiteralsStaticLinking0 (), rangeStartup)) - let staticLinker = StaticLink(ctok, tcConfig, tcImports, ilGlobals) + // Compute a static linker, it gets called later. + let staticLinker = StaticLink(ctok, tcConfig, tcImports, tcGlobals) ReportTime tcConfig "TAST -> IL" use _ = UseBuildPhase BuildPhase.IlxGen @@ -1009,7 +1051,8 @@ let main4 ilxMainModule, signingInfo, exiter, - ilSourceDocs + ilSourceDocs, + refAssemblySignatureHash ) /// Fifth phase of compilation. @@ -1026,7 +1069,8 @@ let main5 ilxMainModule, signingInfo, exiter: Exiter, - ilSourceDocs)) + ilSourceDocs, + refAssemblySignatureHash)) = use _ = UseBuildPhase BuildPhase.Output @@ -1042,7 +1086,20 @@ let main5 AbortOnError(diagnosticsLogger, exiter) // Pass on only the minimum information required for the next phase - Args(ctok, tcConfig, tcImports, tcGlobals, diagnosticsLogger, ilxMainModule, outfile, pdbfile, signingInfo, exiter, ilSourceDocs) + Args( + ctok, + tcConfig, + tcImports, + tcGlobals, + diagnosticsLogger, + ilxMainModule, + outfile, + pdbfile, + signingInfo, + exiter, + ilSourceDocs, + refAssemblySignatureHash + ) /// Sixth phase of compilation. /// - write the binaries @@ -1058,7 +1115,8 @@ let main6 pdbfile, signingInfo, exiter: Exiter, - ilSourceDocs)) + ilSourceDocs, + refAssemblySignatureHash)) = ReportTime tcConfig "Write .NET Binary" @@ -1113,6 +1171,7 @@ let main6 dumpDebugInfo = tcConfig.dumpDebugInfo referenceAssemblyOnly = true referenceAssemblyAttribOpt = referenceAssemblyAttribOpt + referenceAssemblySignatureHash = refAssemblySignatureHash pathMap = tcConfig.pathMap }, ilxMainModule, @@ -1143,6 +1202,7 @@ let main6 dumpDebugInfo = tcConfig.dumpDebugInfo referenceAssemblyOnly = false referenceAssemblyAttribOpt = None + referenceAssemblySignatureHash = None pathMap = tcConfig.pathMap }, ilxMainModule, diff --git a/src/fcs-fable/src/Compiler/Driver/parallel-optimization.drawio.svg b/src/fcs-fable/src/Compiler/Driver/parallel-optimization.drawio.svg new file mode 100644 index 0000000000..141b0cfa7f --- /dev/null +++ b/src/fcs-fable/src/Compiler/Driver/parallel-optimization.drawio.svg @@ -0,0 +1,4 @@ + + + +
A.fs
A.fs
B.fs
B.fs
C.fs
C.fs
Phase 1
Phase 1
Phase 2
Phase 2
Phase 3*
Phase 3*
A - 1
A - 1
A - 2
A - 2
A - 3
A - 3
B - 1
B - 1
B - 2
B - 2
B - 3
B - 3
C - 1
C - 1
C - 2
C - 2
C - 3
C - 3
A.fs
A.fs
B.fs
B.fs
C.fs
C.fs
Phase 1
Phase 1
Phase 2
Phase 2
Phase 3
Phase 3
A - 1
A - 1
A - 2
A - 2
A - 3
A - 3
B - 1
B - 1
B - 2
B - 2
B - 3
B - 3
C - 1
C - 1
C - 2
C - 2
C - 3
C - 3
Sequential
Sequential
Partially parallel
Partially parallel
Single sequence of work items, no parallelism.
Single sequence of work items, no parallelis...
Three sequences of work items, up to 3 work items processed at a time.
Three sequences of work items, up to 3 work items processed at a t...
Comparison of work scheduling between fully sequential and parallel optimization
Comparison of work scheduling between fully sequential and parallel optimization
B waits for A
B waits for A
A
A
B
B
* There are up to 7 phases
* There are up to 7 phases
Text is not SVG - cannot display
\ No newline at end of file diff --git a/src/fcs-fable/src/Compiler/Driver/parallel-optimization.md b/src/fcs-fable/src/Compiler/Driver/parallel-optimization.md new file mode 100644 index 0000000000..bf7d79104e --- /dev/null +++ b/src/fcs-fable/src/Compiler/Driver/parallel-optimization.md @@ -0,0 +1,15 @@ +# Parallel Optimizations + +The Optimization phase of standalone compilation can take a significant part of compilation time. + +By default it runs fully sequentially, file-by-file. + +However, optimization of each file can be decomposed into up to 7 distinct 'phases', +with the interesting property that evaluating phase P of file F does not depend on results of phases P+1... for any of the preceding files. + +This allows us to parallelize the whole process as shown in the diagram below: + +![Optimisation chart](parallel-optimization.drawio.svg) + +This parallelization is implemented in `OptimizeInputs.fs`. +It can enabled with an experimental flag `--test:ParallelOptimization`. \ No newline at end of file diff --git a/src/fcs-fable/src/Compiler/FSComp.txt b/src/fcs-fable/src/Compiler/FSComp.txt index 26ef0736dc..c6baff5fc2 100644 --- a/src/fcs-fable/src/Compiler/FSComp.txt +++ b/src/fcs-fable/src/Compiler/FSComp.txt @@ -1,6 +1,7 @@ # ------------------------------------------------------------------------------- # use a completely new error number and keep messages in their surrounding groups # ------------------------------------------------------------------------------- +# Error numbers before 200 are listed in src/Compiler/Driver/CompilerDiagnostics.fs from the line with "member exn.DiagnosticNumber =" undefinedNameNamespace,"The namespace '%s' is not defined." undefinedNameNamespaceOrModule,"The namespace or module '%s' is not defined." undefinedNameFieldConstructorOrMember,"The field, constructor or member '%s' is not defined." @@ -36,6 +37,8 @@ buildUnexpectedTypeArgs,"The non-generic type '%s' does not expect any type argu returnUsedInsteadOfReturnBang,"Consider using 'return!' instead of 'return'." yieldUsedInsteadOfYieldBang,"Consider using 'yield!' instead of 'yield'." tupleRequiredInAbstractMethod,"\nA tuple type is required for one or more arguments. Consider wrapping the given arguments in additional parentheses or review the definition of the interface." +10,parsUnexpectedSymbolDot,"Unexpected symbol '.' in member definition. Expected 'with', '=' or other token." +201,tcNamespaceCannotContainValues,"Namespaces cannot contain values. Consider using a module to hold your value declarations." 202,unsupportedAttribute,"This attribute is currently unsupported by the F# compiler. Applying it will not achieve its intended effect." 203,buildInvalidWarningNumber,"Invalid warning number '%s'" 204,buildInvalidVersionString,"Invalid version string '%s'" @@ -73,7 +76,7 @@ tupleRequiredInAbstractMethod,"\nA tuple type is required for one or more argume 240,buildSignatureWithoutImplementation,"The signature file '%s' does not have a corresponding implementation file. If an implementation file exists then check the 'module' and 'namespace' declarations in the signature and implementation files match." 241,buildArgInvalidInt,"'%s' is not a valid integer argument" 242,buildArgInvalidFloat,"'%s' is not a valid floating point argument" -243,buildUnrecognizedOption,"Unrecognized option: '%s'" +243,buildUnrecognizedOption,"Unrecognized option: '%s'. Use '--help' to learn about recognized command line options." 244,buildInvalidModuleOrNamespaceName,"Invalid module or namespace name" pickleErrorReadingWritingMetadata,"Error reading/writing metadata for the F# compiled DLL '%s'. Was the DLL compiled with an earlier version of the F# compiler? (error: '%s')." 245,tastTypeOrModuleNotConcrete,"The type/module '%s' is not a concrete module or type" @@ -198,10 +201,10 @@ ExceptionDefsNotCompatibleFieldOrderDiffers,"The exception definitions are not c 363,typrelNeedExplicitImplementation,"The interface '%s' is included in multiple explicitly implemented interface types. Add an explicit implementation of this interface." 364,typrelNamedArgumentHasBeenAssignedMoreThenOnce,"The named argument '%s' has been assigned more than one value" 365,typrelNoImplementationGiven,"No implementation was given for '%s'" -366,typrelNoImplementationGivenWithSuggestion,"No implementation was given for '%s'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'." 365,typrelNoImplementationGivenSeveral,"No implementation was given for those members: %s" -366,typrelNoImplementationGivenSeveralWithSuggestion,"No implementation was given for those members: %sNote that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'." 365,typrelNoImplementationGivenSeveralTruncated,"No implementation was given for those members (some results omitted): %s" +366,typrelNoImplementationGivenWithSuggestion,"No implementation was given for '%s'. Note that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'." +366,typrelNoImplementationGivenSeveralWithSuggestion,"No implementation was given for those members: %sNote that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'." 366,typrelNoImplementationGivenSeveralTruncatedWithSuggestion,"No implementation was given for those members (some results omitted): %sNote that all interface members must be implemented and listed under an appropriate 'interface' declaration, e.g. 'interface ... with member ...'." 367,typrelMemberDoesNotHaveCorrectNumberOfArguments,"The member '%s' does not have the correct number of arguments. The required signature is '%s'." 368,typrelMemberDoesNotHaveCorrectNumberOfTypeParameters,"The member '%s' does not have the correct number of method type parameters. The required signature is '%s'." @@ -318,6 +321,7 @@ csTypeDoesNotSupportConversion,"The type '%s' does not support a conversion to t csMethodFoundButIsStatic,"The type '%s' has a method '%s' (full name '%s'), but the method is static" csMethodFoundButIsNotStatic,"The type '%s' has a method '%s' (full name '%s'), but the method is not static" 472,csStructConstraintInconsistent,"The constraints 'struct' and 'not struct' are inconsistent" +473,csUnmanagedConstraintInconsistent,"The constraints 'unmanaged' and 'not struct' are inconsistent" csTypeDoesNotHaveNull,"The type '%s' does not have 'null' as a proper value" csNullableTypeDoesNotHaveNull,"The type '%s' does not have 'null' as a proper value. To create a null value for a Nullable type use 'System.Nullable()'." csTypeDoesNotSupportComparison1,"The type '%s' does not support the 'comparison' constraint because it has the 'NoComparison' attribute" @@ -421,7 +425,7 @@ parsAttributesMustComeBeforeVal,"Attributes should be placed before 'val'" 555,parsGetAndOrSetRequired,"'get' and/or 'set' required" 556,parsTypeAnnotationsOnGetSet,"Type annotations on property getters and setters must be given after the 'get()' or 'set(v)', e.g. 'with get() : string = ...'" 557,parsGetterMustHaveAtLeastOneArgument,"A getter property is expected to be a function, e.g. 'get() = ...' or 'get(index) = ...'" -558,parsMultipleAccessibilitiesForGetSet,"Multiple accessibilities given for property getter or setter" +558,parsMultipleAccessibilitiesForGetSet,"When the visibility for a property is specified, setting the visibility of the set or get method is not allowed." 559,parsSetSyntax,"Property setters must be defined using 'set value = ', 'set idx value = ' or 'set (idx1,...,idxN) value = ... '" 560,parsInterfacesHaveSameVisibilityAsEnclosingType,"Interfaces always have the same visibility as the enclosing type" 561,parsAccessibilityModsIllegalForAbstract,"Accessibility modifiers are not allowed on this member. Abstract slots always have the same visibility as the enclosing type." @@ -434,7 +438,6 @@ parsAttributesMustComeBeforeVal,"Attributes should be placed before 'val'" 568,parsAllEnumFieldsRequireValues,"All enum fields must be given values" 569,parsInlineAssemblyCannotHaveVisibilityDeclarations,"Accessibility modifiers are not permitted on inline assembly code types" 571,parsUnexpectedIdentifier,"Unexpected identifier: '%s'" -10,parsUnexpectedSymbolDot,"Unexpected symbol '.' in member definition. Expected 'with', '=' or other token." 572,parsUnionCasesCannotHaveVisibilityDeclarations,"Accessibility modifiers are not permitted on union cases. Use 'type U = internal ...' or 'type U = private ...' to give an accessibility to the whole representation." 573,parsEnumFieldsCannotHaveVisibilityDeclarations,"Accessibility modifiers are not permitted on enumeration fields" parsConsiderUsingSeparateRecordType,"Consider using a separate record type instead" @@ -491,7 +494,6 @@ tcUnexpectedConstByteArray,"Unexpected Const_bytearray" 640,tcParameterRequiresName,"A parameter with attributes must also be given a name, e.g. '[] Name : Type'" 641,tcReturnValuesCannotHaveNames,"Return values cannot have names" tcMemberKindPropertyGetSetNotExpected,"SynMemberKind.PropertyGetSet only expected in parse trees" -201,tcNamespaceCannotContainValues,"Namespaces cannot contain values. Consider using a module to hold your value declarations." 644,tcNamespaceCannotContainExtensionMembers,"Namespaces cannot contain extension members except in the same file and namespace declaration group where the type is defined. Consider using a module to hold declarations of extension members." 645,tcMultipleVisibilityAttributes,"Multiple visibility attributes have been specified for this identifier" 646,tcMultipleVisibilityAttributesWithLet,"Multiple visibility attributes have been specified for this identifier. 'let' bindings in classes are always private, as are any 'let' bindings inside expressions." @@ -519,7 +521,7 @@ tcExpectModuleOrNamespaceParent,"Expected module or namespace parent %s" 665,tcExplicitTypeParameterInvalid,"Explicit type parameters may only be used on module or member bindings" 666,tcOverridingMethodRequiresAllOrNoTypeParameters,"You must explicitly declare either all or no type parameters when overriding a generic abstract method" 667,tcFieldsDoNotDetermineUniqueRecordType,"The field labels and expected type of this record expression or pattern do not uniquely determine a corresponding record type" -668,tcFieldAppearsTwiceInRecord,"The field '%s' appears twice in this record expression or pattern" +668,tcMultipleFieldsInRecord,"The field '%s' appears multiple times in this record expression or pattern" 669,tcUnknownUnion,"Unknown union case" 670,tcNotSufficientlyGenericBecauseOfScope,"This code is not sufficiently generic. The type variable %s could not be generalized because it would escape its scope." 671,tcPropertyRequiresExplicitTypeParameters,"A property cannot have explicit type parameters. Consider using a method instead." @@ -581,7 +583,6 @@ tcCouldNotFindIDisposable,"Couldn't find Dispose on IDisposable, or it was overl 729,tcFieldNotLiteralCannotBeUsedInPattern,"This field is not a literal and cannot be used in a pattern" 730,tcRequireVarConstRecogOrLiteral,"This is not a variable, constant, active recognizer or literal" 731,tcInvalidPattern,"This is not a valid pattern" -tcUseWhenPatternGuard,"Character range matches have been removed in F#. Consider using a 'when' pattern guard instead." 733,tcIllegalPattern,"Illegal pattern" 734,tcSyntaxErrorUnexpectedQMark,"Syntax error - unexpected '?' symbol" 735,tcExpressionCountMisMatch,"Expected %d expressions, got %d" @@ -749,7 +750,7 @@ tcTypeAbbreviationsCheckedAtCompileTime,"As of F# 4.1, the accessibility of type 897,tcMeasureDeclarationsRequireStaticMembers,"Measure declarations may have only static members" tcStructsMayNotContainDoBindings,"Structs cannot contain 'do' bindings because the default constructor for structs would not execute these bindings" 901,tcStructsMayNotContainLetBindings,"Structs cannot contain value definitions because the default constructor for structs will not execute these bindings. Consider adding additional arguments to the primary constructor for the type." -902,tcStaticLetBindingsRequireClassesWithImplicitConstructors,"Static value definitions may only be used in types with a primary constructor. Consider adding arguments to the type definition, e.g. 'type X(args) = ...'." +902,tcStaticLetBindingsRequireClassesWithImplicitConstructors,"For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'." 904,tcMeasureDeclarationsRequireStaticMembersNotConstructors,"Measure declarations may have only static members: constructors are not available" 905,tcMemberAndLocalClassBindingHaveSameName,"A member and a local class binding both have the name '%s'" 906,tcTypeAbbreviationsCannotHaveInterfaceDeclaration,"Type abbreviations cannot have interface declarations" @@ -838,6 +839,8 @@ ilDynamicInvocationNotSupported,"Dynamic invocation of %s is not supported" 992,ilStructLayoutAttributeCouldNotBeDecoded,"The StructLayout attribute could not be decoded" 993,ilDefaultAugmentationAttributeCouldNotBeDecoded,"The DefaultAugmentation attribute could not be decoded" 994,ilReflectedDefinitionsCannotUseSliceOperator,"Reflected definitions cannot contain uses of the prefix splice operator '%%'" +998,packageManagerUnknown,"Package manager key '%s' was not registered in %s. Currently registered: %s. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager" +999,packageManagerError,"%s" 1000,optsProblemWithCodepage,"Problem with codepage '%d': %s" optsCopyright,"Copyright (c) Microsoft Corporation. All Rights Reserved." optsCopyrightCommunity,"Freely distributed under the MIT Open Source License. https://github.com/Microsoft/visualfsharp/blob/master/License.txt" @@ -866,7 +869,7 @@ optsNowin32manifest,"Do not include the default Win32 manifest" optsEmbedAllSource,"Embed all source files in the portable PDB file" optsEmbedSource,"Embed specific source files in the portable PDB file" optsSourceLink,"Source link information file to embed in the portable PDB file" -1503,optsPdbMatchesOutputFileName,"The pdb output file name cannot match the build output filename use --pdb:filename.pdb" +1001,optsPdbMatchesOutputFileName,"The pdb output file name cannot match the build output filename use --pdb:filename.pdb" srcFileTooLarge,"Source file is too large to embed in a portable PDB" optsResource,"Embed the specified managed resource" optsLinkresource,"Link the specified resource to this assembly where the resinfo format is [,[,public|private]]" @@ -905,9 +908,6 @@ optsStaticlink,"Statically link the given assembly and all referenced DLLs that optsResident,"Use a resident background compilation service to improve compiler startup times." optsPdb,"Name the output debug file" optsSimpleresolution,"Resolve assembly references using directory-based rules rather than MSBuild resolution" -1048,optsUnrecognizedTarget,"Unrecognized target '%s', expected 'exe', 'winexe', 'library' or 'module'" -1049,optsUnrecognizedDebugType,"Unrecognized debug type '%s', expected 'pdbonly' or 'full'" -1050,optsInvalidWarningLevel,"Invalid warning level '%d'" optsShortFormOf,"Short form of '%s'" optsClirootDeprecatedMsg,"The command-line option '--cliroot' has been deprecated. Use an explicit reference to a specific copy of mscorlib.dll instead." optsClirootDescription,"Use to override where the compiler looks for mscorlib.dll and framework components" @@ -919,9 +919,6 @@ optsHelpBannerAdvanced,"- ADVANCED -" optsHelpBannerMisc,"- MISCELLANEOUS -" optsHelpBannerLanguage,"- LANGUAGE -" optsHelpBannerErrsAndWarns,"- ERRORS AND WARNINGS -" -1063,optsUnknownArgumentToTheTestSwitch,"Unknown --test argument: '%s'" -1064,optsUnknownPlatform,"Unrecognized platform '%s', valid values are 'x86', 'x64', 'Arm', 'Arm64', 'Itanium', 'anycpu32bitpreferred', and 'anycpu'. The default is anycpu." -1065,optsUnknownChecksumAlgorithm,"Algorithm '%s' is not supported" optsInternalNoDescription,"The command-line option '%s' is for test purposes only" optsDCLONoDescription,"The command-line option '%s' has been deprecated" optsDCLODeprecatedSuggestAlternative,"The command-line option '%s' has been deprecated. Use '%s' instead." @@ -937,8 +934,14 @@ optsSignatureData,"Include F# interface information, the default is file. Essent 1046,optsUnknownSignatureData,"Invalid value '%s' for --interfacedata, valid value are: none, file, compress." optsOptimizationData,"Specify included optimization information, the default is file. Important for distributed libraries." 1047,optsUnknownOptimizationData,"Invalid value '%s' for --optimizationdata, valid value are: none, file, compress." +1048,optsUnrecognizedTarget,"Unrecognized target '%s', expected 'exe', 'winexe', 'library' or 'module'" +1049,optsUnrecognizedDebugType,"Unrecognized debug type '%s', expected 'pdbonly' or 'full'" +1050,optsInvalidWarningLevel,"Invalid warning level '%d'" 1051,optsInvalidSubSystemVersion,"Invalid version '%s' for '--subsystemversion'. The version must be 4.00 or greater." 1052,optsInvalidTargetProfile,"Invalid value '%s' for '--targetprofile', valid values are 'mscorlib', 'netcore' or 'netstandard'." +1063,optsUnknownArgumentToTheTestSwitch,"Unknown --test argument: '%s'" +1064,optsUnknownPlatform,"Unrecognized platform '%s', valid values are 'x86', 'x64', 'Arm', 'Arm64', 'Itanium', 'anycpu32bitpreferred', and 'anycpu'. The default is anycpu." +1065,optsUnknownChecksumAlgorithm,"Algorithm '%s' is not supported" typeInfoFullName,"Full name" # typeInfoType,"type" # typeInfoInherits,"inherits" @@ -962,6 +965,7 @@ typeInfoFromFirst,"from %s" typeInfoFromNext,"also from %s" typeInfoGeneratedProperty,"generated property" typeInfoGeneratedType,"generated type" +suggestedName,"(Suggested name)" 1089,recursiveClassHierarchy,"Recursive class hierarchy in type '%s'" 1090,InvalidRecursiveReferenceToAbstractSlot,"Invalid recursive reference to an abstract slot" 1091,eventHasNonStandardType,"The event '%s' has a non-standard type. If this event is declared in another CLI language, you may need to access this event using the explicit %s and %s methods for the event. If this event is declared in F#, make the type of the event an instantiation of either 'IDelegateEvent<_>' or 'IEvent<_,_>'." @@ -994,7 +998,7 @@ lexhlpIdentifierReserved,"The identifier '%s' is reserved for future use by F#" 1118,optFailedToInlineValue,"Failed to inline the value '%s' marked 'inline', perhaps because a recursive value was marked 'inline'" 1119,optRecursiveValValue,"Recursive ValValue %s" lexfltIncorrentIndentationOfIn,"The indentation of this 'in' token is incorrect with respect to the corresponding 'let'" -lexfltTokenIsOffsideOfContextStartedEarlier,"Possible incorrect indentation: this token is offside of context started at position %s. Try indenting this token further or using standard formatting conventions." +lexfltTokenIsOffsideOfContextStartedEarlier,"Unexpected syntax or possible incorrect indentation: this token is offside of context started at position %s. Try indenting this further.\nTo continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7." lexfltSeparatorTokensOfPatternMatchMisaligned,"The '|' tokens separating rules of this pattern match are misaligned by one column. Consider realigning your code or using further indentation." 1123,nrInvalidModuleExprType,"Invalid module/expression/type" 1124,nrTypeInstantiationNeededToDisambiguateTypesWithSameName,"Multiple types exist called '%s', taking different numbers of generic parameters. Provide a type instantiation to disambiguate the type resolution, e.g. '%s'." @@ -1122,6 +1126,10 @@ lexIfOCaml,"IF-FSHARP/IF-CAML regions are no longer supported" 1245,lexInvalidUnicodeLiteral,"\U%s is not a valid Unicode character escape sequence" 1246,tcCallerInfoWrongType,"'%s' must be applied to an argument of type '%s', but has been applied to an argument of type '%s'" 1247,tcCallerInfoNotOptional,"'%s' can only be applied to optional arguments" +1248,lexTooManyLBracesInTripleQuote,"The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content." +1249,lexUnmatchedRBracesInTripleQuote,"The interpolated string contains unmatched closing braces." +1250,lexTooManyPercentsInTripleQuote,"The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%%' characters." +1251,lexExtendedStringInterpolationNotSupported,"Extended string interpolation is not supported in this version of F#." # reshapedmsbuild.fs 1300,toolLocationHelperUnsupportedFrameworkVersion,"The specified .NET Framework version '%s' is not supported. Please specify a value from the enumeration Microsoft.Build.Utilities.TargetDotNetFrameworkVersion." # ----------------------------------------------------------------------------- @@ -1375,7 +1383,7 @@ tcTupleStructMismatch,"One tuple type is a struct tuple, the other is a referenc 3203,parsInvalidUseOfRec,"Invalid use of 'rec' keyword" 3204,tcStructUnionMultiCaseDistinctFields,"If a multicase union type is a struct, then all union cases must have unique names. For example: 'type A = B of b: int | C of c: int'." 3206,CallerMemberNameIsOverriden,"The CallerMemberNameAttribute applied to parameter '%s' will have no effect. It is overridden by the CallerFilePathAttribute." -3207,tcFixedNotAllowed,"Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is an array, the address of a field, the address of an array element or a string'" +3207,tcFixedNotAllowed,"Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is one of the following: an array, the address of an array element, a string, a byref, an inref, or a type implementing GetPinnableReference()" 3208,tcCouldNotFindOffsetToStringData,"Could not find method System.Runtime.CompilerServices.OffsetToStringData in references when building 'fixed' expression." 3209,chkNoByrefAddressOfLocal,"The address of the variable '%s' or a related expression cannot be used at this point. This is to ensure the address of the local value does not escape its scope." 3210,tcNamedActivePattern,"%s is an active pattern and cannot be treated as a discriminated union case with named fields." @@ -1384,14 +1392,17 @@ tcGlobalsSystemTypeNotFound,"The system type '%s' was required but no referenced 3213,typrelMemberHasMultiplePossibleDispatchSlots,"The member '%s' matches multiple overloads of the same method.\nPlease restrict it to one of the following:%s." 3214,methodIsNotStatic,"Method or object constructor '%s' is not static" 3215,parsUnexpectedSymbolEqualsInsteadOfIn,"Unexpected symbol '=' in expression. Did you intend to use 'for x in y .. z do' instead?" -3216,packageManagerUnknown,"Package manager key '%s' was not registered in %s. Currently registered: %s" -3217,packageManagerError,"%s" tcAnonRecdInvalid,"Invalid Anonymous Record type declaration." tcAnonRecdCcuMismatch,"Two anonymous record types are from different assemblies '%s' and '%s'" tcAnonRecdFieldNameMismatch,"This anonymous record does not exactly match the expected shape. Add the missing fields %s and remove the extra fields %s." -tcAnonRecdFieldNameSubset,"This anonymous record does not have enough fields. Add the missing fields %s." -tcAnonRecdFieldNameSuperset,"This anonymous record has too many fields. Remove the extra fields %s." -tcAnonRecdFieldNameDifferent,"This is the wrong anonymous record. It should have the fields %s." +tcAnonRecdSingleFieldNameSubset,"This anonymous record is missing field '%s'." +tcAnonRecdMultipleFieldsNameSubset,"This anonymous record is missing fields %s." +tcAnonRecdSingleFieldNameSuperset,"This anonymous record has an extra field. Remove field '%s'." +tcAnonRecdMultipleFieldsNameSuperset,"This anonymous record has extra fields. Remove fields %s." +tcAnonRecdSingleFieldNameSingleDifferent,"This anonymous record should have field '%s' but here has field '%s'." +tcAnonRecdSingleFieldNameMultipleDifferent,"This anonymous record should have field '%s' but here has fields %s." +tcAnonRecdMultipleFieldNameSingleDifferent,"This anonymous record should have fields %s; but here has field '%s'." +tcAnonRecdMultipleFieldNameMultipleDifferent,"This anonymous record should have fields %s; but here has fields %s." keywordDescriptionAbstract,"Indicates a method that either has no implementation in the type in which it is declared or that is virtual and has a default implementation." keywordDescriptionAnd,"Used in mutually recursive bindings, in property declarations, and with multiple constraints on generic parameters." keywordDescriptionAs,"Used to give the current class object an object name. Also used to give a name to a whole pattern within a pattern match." @@ -1460,6 +1471,7 @@ keywordDescriptionVal,"Used in a signature to indicate a value, or in a type to keywordDescriptionVoid,"Indicates the .NET void type. Used when interoperating with other .NET languages." keywordDescriptionWhen,"Used for Boolean conditions (when guards) on pattern matches and to introduce a constraint clause for a generic type parameter." keywordDescriptionWhile,"Introduces a looping construct." +keywordDescriptionWhileBang,"Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression." keywordDescriptionWith,"Used together with the match keyword in pattern matching expressions. Also used in object expressions, record copying expressions, and type extensions to introduce member definitions, and to introduce exception handlers." keywordDescriptionYield,"Used in a sequence expression to produce a value for a sequence." keywordDescriptionYieldBang,"Used in a computation expression to append the result of a given computation expression to a collection of results for the containing computation expression." @@ -1479,7 +1491,6 @@ notAFunctionButMaybeIndexerWithName2,"This value is not a function and cannot be notAFunctionButMaybeIndexer2,"This expression is not a function and cannot be applied. Did you intend to access the indexer via 'expr[index]'?" 3217,notAFunctionButMaybeIndexerErrorCode,"" notAFunctionButMaybeDeclaration,"This value is not a function and cannot be applied. Did you forget to terminate a declaration?" -3218,ArgumentsInSigAndImplMismatch,"The argument names in the signature '%s' and implementation '%s' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling." 3219,pickleUnexpectedNonZero,"An error occurred while reading the F# metadata of assembly '%s'. A reserved construct was utilized. You may need to upgrade your F# compiler or use an earlier version of the assembly that doesn't make use of a specific construct." 3220,tcTupleMemberNotNormallyUsed,"This method or property is not normally used from F# code, use an explicit tuple pattern for deconstruction instead." 3221,implicitlyDiscardedInSequenceExpression,"This expression returns a value of type '%s' but is implicitly discarded. Consider using 'let' to bind the result to a name, e.g. 'let result = expression'. If you intended to use the expression as a value in the sequence then use an explicit 'yield'." @@ -1498,7 +1509,7 @@ notAFunctionButMaybeDeclaration,"This value is not a function and cannot be appl 3234,chkNoSpanLikeVariable,"The Span or IsByRefLike variable '%s' cannot be used at this point. This is to ensure the address of the local value does not escape its scope." 3235,chkNoSpanLikeValueFromExpression,"A Span or IsByRefLike value returned from the expression cannot be used at ths point. This is to ensure the address of the local value does not escape its scope." 3236,tastCantTakeAddressOfExpression,"Cannot take the address of the value returned from the expression. Assign the returned value to a let-bound value before taking the address." -3237,tcCannotCallExtensionMethodInrefToByref,"Cannot call the byref extension method '%s. The first parameter requires the value to be mutable or a non-readonly byref type." +3237,tcCannotCallExtensionMethodInrefToByref,"Cannot call the byref extension method '%s. 'this' parameter requires the value to be mutable or a non-readonly byref type." 3238,tcByrefsMayNotHaveTypeExtensions,"Byref types are not allowed to have optional type extensions." 3239,tcCannotPartiallyApplyExtensionMethodForByref,"Cannot partially apply the extension method '%s' because the first parameter is a byref type." 3242,tcTypeDoesNotInheritAttribute,"This type does not inherit Attribute, it will not work correctly with other .NET languages." @@ -1515,18 +1526,19 @@ notAFunctionButMaybeDeclaration,"This value is not a function and cannot be appl 3302,packageManagementRequiresVFive,"The 'package management' feature requires language version 5.0 or above" 3303,fromEndSlicingRequiresVFive,"The 'from the end slicing' feature requires language version 'preview'." 3304,poundiNotSupportedByRegisteredDependencyManagers,"#i is not supported by the registered PackageManagers" -3343,tcRequireMergeSourcesOrBindN,"The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '%s' method or appropriate 'MergeSource' and 'Bind' methods" +3343,tcRequireMergeSourcesOrBindN,"The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '%s' method or appropriate 'MergeSources' and 'Bind' methods" 3344,tcAndBangNotSupported,"This feature is not supported in this version of F#. You may need to add /langversion:preview to use this feature." 3345,tcInvalidUseBangBindingNoAndBangs,"use! may not be combined with and!" +3349,chkFeatureNotSupportedInLibrary,"Feature '%s' requires the F# library for language version %s or greater." 3350,chkFeatureNotLanguageSupported,"Feature '%s' is not available in F# %s. Please use language version %s or greater." 3351,chkFeatureNotRuntimeSupported,"Feature '%s' is not supported by target runtime." 3352,typrelInterfaceMemberNoMostSpecificImplementation,"Interface member '%s' does not have a most specific implementation." -3353,chkFeatureNotSupportedInLibrary,"Feature '%s' requires the F# library for language version %s or greater." -3360,parsEqualsMissingInTypeDefinition,"Unexpected token in type definition. Expected '=' after the type '%s'." +3353,fsiInvalidDirective,"Invalid directive '#%s %s'" useSdkRefs,"Use reference assemblies for .NET framework references when available (Enabled by default)." optsGetLangVersions,"Display the allowed values for language version." optsSetLangVersion,"Specify language version such as 'latest' or 'preview'." optsSupportedLangVersions,"Supported language versions:" +optsStrictIndentation,"Override indentation rules implied by the language version" nativeResourceFormatError,"Stream does not begin with a null resource and is not in '.RES' format." nativeResourceHeaderMalformed,"Resource header beginning at offset %s is malformed." formatDashItem," - %s" @@ -1567,7 +1579,15 @@ featureWarningWhenCopyAndUpdateRecordChangesAllFields,"Raises warnings when an c featureStaticMembersInInterfaces,"Static members in interfaces" featureNonInlineLiteralsAsPrintfFormat,"String values marked as literals and IL constants as printf format" featureNestedCopyAndUpdate,"Nested record field copy-and-update" -3353,fsiInvalidDirective,"Invalid directive '#%s %s'" +featureExtendedStringInterpolation,"Extended string interpolation similar to C# raw string literals." +featureWarningWhenMultipleRecdTypeChoice,"Raises warnings when multiple record type matches were found during name resolution because of overlapping field names." +featureImprovedImpliedArgumentNames,"Improved implied argument names" +featureStrictIndentation,"Raises errors on incorrect indentation, allows better recovery and analysis during editing" +featureConstraintIntersectionOnFlexibleTypes,"Constraint intersection on flexible types" +featureChkNotTailRecursive,"Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way." +featureWhileBang,"'while!' expression" +featureExtendedFixedBindings,"extended fixed bindings for byref and GetPinnableReference" +featurePreferStringGetPinnableReference,"prefer String.GetPinnableReference in fixed bindings" 3354,tcNotAFunctionButIndexerNamedIndexingNotYetEnabled,"This value supports indexing, e.g. '%s.[index]'. The syntax '%s[index]' requires /langversion:preview. See https://aka.ms/fsharp-index-notation." 3354,tcNotAFunctionButIndexerIndexingNotYetEnabled,"This expression supports indexing, e.g. 'expr.[index]'. The syntax 'expr[index]' requires /langversion:preview. See https://aka.ms/fsharp-index-notation." 3355,tcNotAnIndexerNamedIndexingNotYetEnabled,"The value '%s' is not a function and does not support index notation." @@ -1614,7 +1634,6 @@ forFormatInvalidForInterpolated4,"Interpolated strings used as type IFormattable 3387,tcAmbiguousImplicitConversion,"This expression has type '%s' and is only made compatible with type '%s' through an ambiguous implicit conversion. Consider using an explicit call to 'op_Implicit'. The applicable implicit conversions are:%s" 3388,tcSubsumptionImplicitConversionUsed,"This expression implicitly converts type '%s' to type '%s'. See https://aka.ms/fsharp-implicit-convs." 3389,tcBuiltInImplicitConversionUsed,"This expression uses a built-in implicit conversion to convert type '%s' to type '%s'. See https://aka.ms/fsharp-implicit-convs." -3391,tcImplicitConversionUsedForNonMethodArg,"This expression uses the implicit conversion '%s' to convert type '%s' to type '%s'. See https://aka.ms/fsharp-implicit-convs. This warning may be disabled using '#nowarn \"3391\"." 3390,xmlDocBadlyFormed,"This XML comment is invalid: '%s'" 3390,xmlDocMissingParameterName,"This XML comment is invalid: missing 'name' attribute for parameter or parameter reference" 3390,xmlDocMissingCrossReference,"This XML comment is invalid: missing 'cref' attribute for cross-reference" @@ -1622,6 +1641,7 @@ forFormatInvalidForInterpolated4,"Interpolated strings used as type IFormattable 3390,xmlDocDuplicateParameter,"This XML comment is invalid: multiple documentation entries for parameter '%s'" 3390,xmlDocUnresolvedCrossReference,"This XML comment is invalid: unresolved cross-reference '%s'" 3390,xmlDocMissingParameter,"This XML comment is incomplete: no documentation for parameter '%s'" +3391,tcImplicitConversionUsedForNonMethodArg,"This expression uses the implicit conversion '%s' to convert type '%s' to type '%s'. See https://aka.ms/fsharp-implicit-convs. This warning may be disabled using '#nowarn \"3391\"." 3392,containerDeprecated,"The 'AssemblyKeyNameAttribute' has been deprecated. Use 'AssemblyKeyFileAttribute' instead." 3393,containerSigningUnsupportedOnThisPlatform,"Key container signing is not supported on this platform." 3394,parsNewExprMemberAccess,"This member access is ambiguous. Please use parentheses around the object creation, e.g. '(new SomeType(args)).MemberName'" @@ -1656,7 +1676,7 @@ reprStateMachineInvalidForm,"The state machine has an unexpected form" 3521,tcInvalidMemberDeclNameMissingOrHasParen,"Invalid member declaration. The name of the member is missing or has parentheses." 3522,tcAnonRecdDuplicateFieldId,"The field '%s' appears multiple times in this record expression." 3523,tcAnonRecdTypeDuplicateFieldId,"The field '%s' appears multiple times in this anonymous record type." -3524,parsExpectingExpressionInTuple,"Expecting expression" +3524,parsExpectingExpression,"Expecting expression" 3530,tcTraitIsStatic,"Trait '%s' is static" 3531,tcTraitIsNotStatic,"Trait '%s' is not static" 3532,tcTraitMayNotUseComplexThings,"A trait may not specify optional, in, out, ParamArray, CallerInfo or Quote arguments" @@ -1666,7 +1686,7 @@ reprStateMachineInvalidForm,"The state machine has an unexpected form" 3536,tcUsingInterfaceWithStaticAbstractMethodAsType,"'%s' is normally used as a type constraint in generic code, e.g. \"'T when ISomeInterface<'T>\" or \"let f (x: #ISomeInterface<_>)\". See https://aka.ms/fsharp-iwsams for guidance. You can disable this warning by using '#nowarn \"3536\"' or '--nowarn:3536'." 3537,tcTraitHasMultipleSupportTypes,"The trait '%s' invoked by this call has multiple support types. This invocation syntax is not permitted for such traits. See https://aka.ms/fsharp-srtp for guidance." 3545,tcMissingRequiredMembers,"The following required properties have to be initalized:%s" -3546,parsExpectingPatternInTuple,"Expecting pattern" +3546,parsExpectingPattern,"Expecting pattern" 3547,parsExpectedPatternAfterToken,"Expected a pattern after this point" 3548,matchNotAllowedForUnionCaseWithNoData,"Pattern discard is not allowed for union case that takes no data." 3549,tcSynTypeOrInvalidInDeclaration,"SynType.Or is not permitted in this declaration" @@ -1687,3 +1707,21 @@ featureEscapeBracesInFormattableString,"Escapes curly braces before calling Form 3563,lexInvalidIdentifier,"This is not a valid identifier" 3564,parsMissingUnionCaseName,"Missing union case name" 3565,parsExpectingType,"Expecting type" +featureInformationalObjInferenceDiagnostic,"Diagnostic 3559 (warn when obj inferred) at informational level, off by default" +featureStaticLetInRecordsDusEmptyTypes,"Allow static let bindings in union, record, struct, non-incremental-class types" +3566,tcMultipleRecdTypeChoice,"Multiple type matches were found:\n%s\nThe type '%s' was used. Due to the overlapping field names\n%s\nconsider using type annotations or change the order of open statements." +3567,parsMissingMemberBody,"Expecting member body" +3568,parsMissingKeyword,"Missing keyword '%s'" +3569,chkNotTailRecursive,"The member or function '%s' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way." +3570,tcAmbiguousDiscardDotLambda,"The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope." +3571,parsUnderScoreDotLambdaNonAtomic," _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses." +featureAccessorFunctionShorthand,"underscore dot shorthand for accessor only function" +3572,parsConstraintIntersectionSyntaxUsedWithNonFlexibleType,"Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'." +3573,tcStaticBindingInExtrinsicAugmentation,"Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead." +3574,pickleFsharpCoreBackwardsCompatible,"Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: %s . Context: \n %s " +3577,tcOverrideUsesMultipleArgumentsInsteadOfTuple,"This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c')." +featureUnmanagedConstraintCsharpInterop,"Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq)" +3578,chkCopyUpdateSyntaxInAnonRecords,"This expression is an anonymous record, use {{|...|}} instead of {{...}}." +3579,alwaysUseTypedStringInterpolation,"Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended." +3580,tcUnexpectedFunTypeInUnionCaseField,"Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b)." +3582,tcInfoIfFunctionShadowsUnionCase,"This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses." diff --git a/src/fcs-fable/src/Compiler/FSCompCheck.fsx b/src/fcs-fable/src/Compiler/FSCompCheck.fsx new file mode 100644 index 0000000000..03dc23a38b --- /dev/null +++ b/src/fcs-fable/src/Compiler/FSCompCheck.fsx @@ -0,0 +1,32 @@ +let digits = set { '0' .. '9' } + +let rec intStringEndIndex i s = + if i >= String.length s then + String.length s - 1 + elif Set.contains s[i] digits then + intStringEndIndex (i + 1) s + else + i - 1 + +__SOURCE_DIRECTORY__ + "/FSComp.txt" +|> System.IO.File.ReadAllLines +|> Seq.fold + (fun counters line -> + let line = line.TrimStart [| ' '; '#' |] + let intStringEndIndex = intStringEndIndex 0 line + + if intStringEndIndex >= 0 then // Line starts with an integer (error code) + let errorCode = line[..intStringEndIndex] |> int + + match counters with + | [] -> [ errorCode ] // Initialise a counter + | head :: tail when errorCode >= head -> errorCode :: tail // Increment current counter + | _ -> errorCode :: counters // Start a new counter + else + counters) + [] +|> function + | [] -> failwith "FSComp.txt contained no error codes but expected at least one" + | [ _finalErrorCode ] -> () // Expected: One counter counted to the end + | _finalErrorCode :: counters -> + failwith $"Error codes not sorted in FSComp.txt, break(s) happened after {List.rev counters}" diff --git a/src/fcs-fable/src/Compiler/FSStrings.resx b/src/fcs-fable/src/Compiler/FSStrings.resx index 92013c7bba..04946671a8 100644 --- a/src/fcs-fable/src/Compiler/FSStrings.resx +++ b/src/fcs-fable/src/Compiler/FSStrings.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 . See also {0}. @@ -1113,4 +1113,10 @@ Type mismatch. Expecting a tuple of length {0} of type\n {1} \nbut given a tuple of length {2} of type\n {3} {4}\n + + The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. + + + keyword 'while!' + \ No newline at end of file diff --git a/src/fcs-fable/src/Compiler/FSharp.Compiler.Service.fsproj b/src/fcs-fable/src/Compiler/FSharp.Compiler.Service.fsproj index 6025101e55..45ae22a3e5 100644 --- a/src/fcs-fable/src/Compiler/FSharp.Compiler.Service.fsproj +++ b/src/fcs-fable/src/Compiler/FSharp.Compiler.Service.fsproj @@ -25,6 +25,7 @@ $(IntermediateOutputPath)$(TargetFramework)\ $(IntermediateOutputPath)$(TargetFramework)\ false + Debug;Release;ReleaseCompressed @@ -154,14 +155,14 @@ - --unicode --lexlib Internal.Utilities.Text.Lexing + --module FSharp.Compiler.AbstractIL.AsciiLexer --internal --open Internal.Utilities.Text.Lexing --open FSharp.Compiler.AbstractIL.AsciiParser --unicode --lexlib Internal.Utilities.Text.Lexing AbstractIL\illex.fsl AbstractIL\illex.fsl - --module FSharp.Compiler.AbstractIL.AsciiParser --open FSharp.Compiler.AbstractIL --internal --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing + --module FSharp.Compiler.AbstractIL.AsciiParser --open FSharp.Compiler.AbstractIL.AsciiConstants --open FSharp.Compiler.AbstractIL.IL --internal --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing --buffer-type-argument char AbstractIL\ilpars.fsy @@ -173,9 +174,15 @@ + + AbstractIL\FsYaccOut\ilpars.fsi + AbstractIL\FsYaccOut\ilpars.fs + + AbstractIL\FsLexOut\illex.fsi + AbstractIL\FsLexOut\illex.fs @@ -202,19 +209,19 @@ - --unicode --lexlib Internal.Utilities.Text.Lexing + --module FSharp.Compiler.PPLexer --internal --open FSharp.Compiler.Lexhelp --open Internal.Utilities.Text.Lexing --open FSharp.Compiler.PPParser --unicode --lexlib Internal.Utilities.Text.Lexing SyntaxTree\pplex.fsl - --module FSharp.Compiler.PPParser --open FSharp.Compiler --open FSharp.Compiler.Syntax --internal --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing + --module FSharp.Compiler.PPParser --open FSharp.Compiler.ParseHelpers --internal --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing --buffer-type-argument char SyntaxTree\pppars.fsy - --unicode --lexlib Internal.Utilities.Text.Lexing + --module FSharp.Compiler.Lexer --open FSharp.Compiler.Lexhelp --open Internal.Utilities.Text.Lexing --open FSharp.Compiler.Parser --open FSharp.Compiler.Text --open FSharp.Compiler.ParseHelpers --internal --unicode --lexlib Internal.Utilities.Text.Lexing SyntaxTree\lex.fsl - -v --module FSharp.Compiler.Parser --open FSharp.Compiler --open FSharp.Compiler.Syntax --internal --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing + -v --module FSharp.Compiler.Parser --open FSharp.Compiler --open FSharp.Compiler.Syntax --open FSharp.Compiler.Text --internal --lexlib Internal.Utilities.Text.Lexing --parslib Internal.Utilities.Text.Parsing --buffer-type-argument char SyntaxTree\pars.fsy @@ -241,9 +248,15 @@ + + SyntaxTree\FsYaccOutput\pppars.fsi + SyntaxTree\FsYaccOutput\pppars.fs + + SyntaxTree\FsYaccOutput\pars.fsi + SyntaxTree\FsYaccOutput\pars.fs @@ -253,9 +266,15 @@ SyntaxTree\LexHelpers.fs + + SyntaxTree\FsLexOutput\pplex.fsi + SyntaxTree\FsLexOutput\pplex.fs + + SyntaxTree\FsLexOutput\lex.fsi + SyntaxTree\FsLexOutput\lex.fs @@ -318,6 +337,8 @@ + + @@ -332,6 +353,8 @@ + + @@ -348,6 +371,8 @@ + + @@ -394,8 +419,6 @@ - - @@ -417,12 +440,12 @@ - - + + @@ -498,15 +521,15 @@ - TargetFramework=net7.0 + TargetFramework=net8.0 compile - TargetFramework=net7.0 + TargetFramework=net8.0 compile - TargetFramework=net7.0 + TargetFramework=net8.0 compile @@ -533,4 +556,9 @@ + + + + + diff --git a/src/fcs-fable/src/Compiler/Facilities/BuildGraph.fsi b/src/fcs-fable/src/Compiler/Facilities/BuildGraph.fsi index 0e88db1ce3..3cc8220429 100644 --- a/src/fcs-fable/src/Compiler/Facilities/BuildGraph.fsi +++ b/src/fcs-fable/src/Compiler/Facilities/BuildGraph.fsi @@ -72,6 +72,8 @@ type NodeCode = static member Parallel: computations: (NodeCode<'T> seq) -> NodeCode<'T[]> + static member AwaitAsync: computation: Async<'T> -> NodeCode<'T> + static member AwaitTask: task: Task<'T> -> NodeCode<'T> static member AwaitTask: task: Task -> NodeCode diff --git a/src/fcs-fable/src/Compiler/Facilities/CompilerLocation.fs b/src/fcs-fable/src/Compiler/Facilities/CompilerLocation.fs index 8c59a95d0c..7bee5f1c92 100644 --- a/src/fcs-fable/src/Compiler/Facilities/CompilerLocation.fs +++ b/src/fcs-fable/src/Compiler/Facilities/CompilerLocation.fs @@ -104,6 +104,7 @@ module internal FSharpEnvironment = let toolingCompatibleVersions = if typeof.Assembly.GetName().Name = "mscorlib" then [| + "net481" "net48" "net472" "net471" @@ -117,6 +118,7 @@ module internal FSharpEnvironment = |] elif typeof.Assembly.GetName().Name = "System.Private.CoreLib" then [| + "net8.0" "net7.0" "net6.0" "net5.0" diff --git a/src/fcs-fable/src/Compiler/Facilities/DiagnosticsLogger.fs b/src/fcs-fable/src/Compiler/Facilities/DiagnosticsLogger.fs index 7fd6b582b7..534ca6e65c 100644 --- a/src/fcs-fable/src/Compiler/Facilities/DiagnosticsLogger.fs +++ b/src/fcs-fable/src/Compiler/Facilities/DiagnosticsLogger.fs @@ -85,6 +85,17 @@ exception InternalError of message: string * range: range with | InternalError (msg, m) -> msg + m.ToString() | _ -> "impossible" +exception InternalException of exn: Exception * msg: string * range: range with + override this.Message = + match this :> exn with + | InternalException (_, msg, _) -> msg + | _ -> "impossible" + + override this.ToString() = + match this :> exn with + | InternalException (exn, _, _) -> exn.ToString() + | _ -> "impossible" + exception UserCompilerMessage of message: string * number: int * range: range exception LibraryUseOnly of range: range @@ -132,21 +143,21 @@ let ErrorWithSuggestions ((n, message), m, id, suggestions) = let ErrorEnabledWithLanguageFeature ((n, message), m, enabledByLangFeature) = DiagnosticEnabledWithLanguageFeature(n, message, m, enabledByLangFeature) -let inline protectAssemblyExploration dflt f = +let inline protectAssemblyExploration dflt ([] f) = try f () with | UnresolvedPathReferenceNoRange _ -> dflt | _ -> reraise () -let inline protectAssemblyExplorationF dflt f = +let inline protectAssemblyExplorationF dflt ([] f) = try f () with | UnresolvedPathReferenceNoRange (asmName, path) -> dflt (asmName, path) | _ -> reraise () -let inline protectAssemblyExplorationNoReraise dflt1 dflt2 f = +let inline protectAssemblyExplorationNoReraise dflt1 dflt2 ([] f) = try f () with @@ -161,13 +172,13 @@ let rec AttachRange m (exn: exn) = match exn with #if !FABLE_COMPILER // Strip TargetInvocationException wrappers - | :? System.Reflection.TargetInvocationException -> AttachRange m exn.InnerException + | :? TargetInvocationException -> AttachRange m exn.InnerException #endif | UnresolvedReferenceNoRange a -> UnresolvedReferenceError(a, m) | UnresolvedPathReferenceNoRange (a, p) -> UnresolvedPathReference(a, p, m) - | Failure msg -> InternalError(msg + " (Failure)", m) #if !FABLE_COMPILER - | :? ArgumentException as exn -> InternalError(exn.Message + " (ArgumentException)", m) + | :? NotSupportedException -> exn + | :? SystemException -> InternalException(exn, exn.Message, m) #endif | _ -> exn @@ -426,26 +437,13 @@ module DiagnosticsLoggerExtensions = () #endif - /// Reraise an exception if it is one we want to report to Watson. - let ReraiseIfWatsonable (exn: exn) = - match exn with - // These few SystemExceptions which we don't report to Watson are because we handle these in some way in Build.fs - | :? TargetInvocationException -> () - | :? NotSupportedException -> () - | :? System.IO.IOException -> () // This covers FileNotFoundException and DirectoryNotFoundException - | :? UnauthorizedAccessException -> () - | Failure _ // This gives reports for compiler INTERNAL ERRORs - | :? SystemException -> - PreserveStackTrace exn - raise exn - | _ -> () - type DiagnosticsLogger with member x.EmitDiagnostic(exn, severity) = #if !FABLE_COMPILER match exn with | InternalError (s, _) + | InternalException (_, s, _) | Failure s as exn -> Debug.Assert(false, sprintf "Unexpected exception raised in compiler: %s\n%s" s (exn.ToString())) | _ -> () #endif @@ -492,7 +490,6 @@ module DiagnosticsLoggerExtensions = | _ -> try x.ErrorR(AttachRange m exn) // may raise exceptions, e.g. an fsi error sink raises StopProcessing. - ReraiseIfWatsonable exn with | ReportedError _ | WrappedError (ReportedError _, _) -> () @@ -663,22 +660,21 @@ let CommitOperationResult res = let RaiseOperationResult res : unit = CommitOperationResult res -let ErrorD err = ErrorResult([], err) +let inline ErrorD err = ErrorResult([], err) -let WarnD err = OkResult([ err ], ()) +let inline WarnD err = OkResult([ err ], ()) let CompleteD = OkResult([], ()) -let ResultD x = OkResult([], x) +let inline ResultD x = OkResult([], x) let CheckNoErrorsAndGetWarnings res = match res with | OkResult (warns, res2) -> Some(warns, res2) | ErrorResult _ -> None -/// The bind in the monad. Stop on first error. Accumulate warnings and continue. [] -let (++) res f = +let inline bind f res = match res with | OkResult ([], res) -> (* tailcall *) f res | OkResult (warns, res) -> @@ -692,12 +688,12 @@ let (++) res f = let rec IterateD f xs = match xs with | [] -> CompleteD - | h :: t -> f h ++ (fun () -> IterateD f t) + | h :: t -> f h |> bind (fun () -> IterateD f t) [] let rec WhileD gd body = if gd () then - body () ++ (fun () -> WhileD gd body) + body () |> bind (fun () -> WhileD gd body) else CompleteD @@ -705,21 +701,21 @@ let rec WhileD gd body = let rec MapD_loop f acc xs = match xs with | [] -> ResultD(List.rev acc) - | h :: t -> f h ++ (fun x -> MapD_loop f (x :: acc) t) + | h :: t -> f h |> bind (fun x -> MapD_loop f (x :: acc) t) [] let MapD f xs = MapD_loop f [] xs type TrackErrorsBuilder() = - member x.Bind(res, k) = res ++ k - member x.Return res = ResultD res - member x.ReturnFrom res = res - member x.For(seq, k) = IterateD k seq - member x.Combine(expr1, expr2) = expr1 ++ expr2 - member x.While(gd, k) = WhileD gd k - member x.Zero() = CompleteD - member x.Delay fn = fun () -> fn () - member x.Run fn = fn () + member inline x.Bind(res, k) = bind k res + member inline x.Return res = ResultD res + member inline x.ReturnFrom res = res + member inline x.For(seq, k) = IterateD k seq + member inline x.Combine(expr1, expr2) = bind expr2 expr1 + member inline x.While(gd, k) = WhileD gd k + member inline x.Zero() = CompleteD + member inline x.Delay(fn: unit -> _) = fn + member inline x.Run fn = fn () let trackErrors = TrackErrorsBuilder() @@ -736,7 +732,7 @@ let IterateIdxD f xs = let rec loop xs i = match xs with | [] -> CompleteD - | h :: t -> f i h ++ (fun () -> loop t (i + 1)) + | h :: t -> f i h |> bind (fun () -> loop t (i + 1)) loop xs 0 @@ -745,7 +741,7 @@ let IterateIdxD f xs = let rec Iterate2D f xs ys = match xs, ys with | [], [] -> CompleteD - | h1 :: t1, h2 :: t2 -> f h1 h2 ++ (fun () -> Iterate2D f t1 t2) + | h1 :: t1, h2 :: t2 -> f h1 h2 |> bind (fun () -> Iterate2D f t1 t2) | _ -> failwith "Iterate2D" /// Keep the warnings, propagate the error to the exception continuation. @@ -761,11 +757,12 @@ let TryD f g = [] let rec RepeatWhileD nDeep body = - body nDeep ++ (fun x -> if x then RepeatWhileD (nDeep + 1) body else CompleteD) + body nDeep + |> bind (fun x -> if x then RepeatWhileD (nDeep + 1) body else CompleteD) [] let inline AtLeastOneD f l = - MapD f l ++ (fun res -> ResultD(List.exists id res)) + MapD f l |> bind (fun res -> ResultD(List.exists id res)) [] let inline AtLeastOne2D f xs ys = @@ -774,7 +771,7 @@ let inline AtLeastOne2D f xs ys = [] let inline MapReduceD mapper zero reducer l = MapD mapper l - ++ (fun res -> + |> bind (fun res -> ResultD( match res with | [] -> zero @@ -836,12 +833,15 @@ type internal SuppressLanguageFeatureCheck = | Yes | No +let internal languageFeatureError (langVersion: LanguageVersion) (langFeature: LanguageFeature) (m: range) = + let featureStr = LanguageVersion.GetFeatureString langFeature + let currentVersionStr = langVersion.SpecifiedVersionString + let suggestedVersionStr = LanguageVersion.GetFeatureVersionString langFeature + Error(FSComp.SR.chkFeatureNotLanguageSupported (featureStr, currentVersionStr, suggestedVersionStr), m) + let private tryLanguageFeatureErrorAux (langVersion: LanguageVersion) (langFeature: LanguageFeature) (m: range) = if not (langVersion.SupportsFeature langFeature) then - let featureStr = LanguageVersion.GetFeatureString langFeature - let currentVersionStr = langVersion.SpecifiedVersionString - let suggestedVersionStr = LanguageVersion.GetFeatureVersionString langFeature - Some(Error(FSComp.SR.chkFeatureNotLanguageSupported (featureStr, currentVersionStr, suggestedVersionStr), m)) + Some(languageFeatureError langVersion langFeature m) else None diff --git a/src/fcs-fable/src/Compiler/Facilities/DiagnosticsLogger.fsi b/src/fcs-fable/src/Compiler/Facilities/DiagnosticsLogger.fsi index 03b27b922a..e9040da36e 100644 --- a/src/fcs-fable/src/Compiler/Facilities/DiagnosticsLogger.fsi +++ b/src/fcs-fable/src/Compiler/Facilities/DiagnosticsLogger.fsi @@ -56,6 +56,8 @@ val Error: (int * string) * range -> exn exception InternalError of message: string * range: range +exception InternalException of exn: Exception * msg: string * range: range + exception UserCompilerMessage of message: string * number: int * range: range exception LibraryUseOnly of range: range @@ -242,9 +244,6 @@ module DiagnosticsLoggerExtensions = /// Instruct the exception not to reset itself when thrown again. val PreserveStackTrace: exn: 'T -> unit - /// Reraise an exception if it is one we want to report to Watson. - val ReraiseIfWatsonable: exn: exn -> unit - type DiagnosticsLogger with /// Report a diagnostic as an error and recover @@ -343,17 +342,19 @@ val CommitOperationResult: res: OperationResult<'T> -> 'T val RaiseOperationResult: res: OperationResult -> unit -val ErrorD: err: exn -> OperationResult<'T> +val inline ErrorD: err: exn -> OperationResult<'T> -val WarnD: err: exn -> OperationResult +val inline WarnD: err: exn -> OperationResult val CompleteD: OperationResult -val ResultD: x: 'T -> OperationResult<'T> +val inline ResultD: x: 'T -> OperationResult<'T> val CheckNoErrorsAndGetWarnings: res: OperationResult<'T> -> (exn list * 'T) option -val (++): res: OperationResult<'T> -> f: ('T -> OperationResult<'b>) -> OperationResult<'b> +/// The bind in the monad. Stop on first error. Accumulate warnings and continue. +/// Not meant for direct usage. Used in other inlined functions +val inline bind: f: ('T -> OperationResult<'b>) -> res: OperationResult<'T> -> OperationResult<'b> /// Stop on first error. Accumulate warnings and continue. val IterateD: f: ('T -> OperationResult) -> xs: 'T list -> OperationResult @@ -366,23 +367,23 @@ type TrackErrorsBuilder = new: unit -> TrackErrorsBuilder - member Bind: res: OperationResult<'h> * k: ('h -> OperationResult<'i>) -> OperationResult<'i> + member inline Bind: res: OperationResult<'h> * k: ('h -> OperationResult<'i>) -> OperationResult<'i> - member Combine: expr1: OperationResult<'c> * expr2: ('c -> OperationResult<'d>) -> OperationResult<'d> + member inline Combine: expr1: OperationResult<'c> * expr2: ('c -> OperationResult<'d>) -> OperationResult<'d> - member Delay: fn: (unit -> 'b) -> (unit -> 'b) + member inline Delay: fn: (unit -> 'b) -> (unit -> 'b) - member For: seq: 'e list * k: ('e -> OperationResult) -> OperationResult + member inline For: seq: 'e list * k: ('e -> OperationResult) -> OperationResult - member Return: res: 'g -> OperationResult<'g> + member inline Return: res: 'g -> OperationResult<'g> - member ReturnFrom: res: 'f -> 'f + member inline ReturnFrom: res: 'f -> 'f - member Run: fn: (unit -> 'T) -> 'T + member inline Run: fn: (unit -> 'T) -> 'T - member While: gd: (unit -> bool) * k: (unit -> OperationResult) -> OperationResult + member inline While: gd: (unit -> bool) * k: (unit -> OperationResult) -> OperationResult - member Zero: unit -> OperationResult + member inline Zero: unit -> OperationResult val trackErrors: TrackErrorsBuilder @@ -432,6 +433,8 @@ type SuppressLanguageFeatureCheck = | Yes | No +val languageFeatureError: langVersion: LanguageVersion -> langFeature: LanguageFeature -> m: range -> exn + val checkLanguageFeatureError: langVersion: LanguageVersion -> langFeature: LanguageFeature -> m: range -> unit val checkLanguageFeatureAndRecover: langVersion: LanguageVersion -> langFeature: LanguageFeature -> m: range -> unit diff --git a/src/fcs-fable/src/Compiler/Facilities/LanguageFeatures.fs b/src/fcs-fable/src/Compiler/Facilities/LanguageFeatures.fs index 3e4b2465fc..0cc5370d57 100644 --- a/src/fcs-fable/src/Compiler/Facilities/LanguageFeatures.fs +++ b/src/fcs-fable/src/Compiler/Facilities/LanguageFeatures.fs @@ -20,6 +20,7 @@ type LanguageFeature = | WildCardInForLoop | RelaxWhitespace | RelaxWhitespace2 + | StrictIndentation | NameOf | ImplicitYield | OpenTypeDeclaration @@ -54,6 +55,7 @@ type LanguageFeature = | LowercaseDUWhenRequireQualifiedAccess | InterfacesWithAbstractStaticMembers | SelfTypeConstraints + | AccessorFunctionShorthand | MatchNotAllowedForUnionCaseWithNoData | CSharpExtensionAttributeNotRequired | ErrorForNonVirtualMembersOverrides @@ -66,6 +68,17 @@ type LanguageFeature = | StaticMembersInInterfaces | NonInlineLiteralsAsPrintfFormat | NestedCopyAndUpdate + | ExtendedStringInterpolation + | WarningWhenMultipleRecdTypeChoice + | ImprovedImpliedArgumentNames + | DiagnosticForObjInference + | ConstraintIntersectionOnFlexibleTypes + | StaticLetInRecordsDusEmptyTypes + | WarningWhenTailRecAttributeButNonTailRecUsage + | UnmanagedConstraintCsharpInterop + | WhileBang + | ExtendedFixedBindings + | PreferStringGetPinnableReference /// LanguageVersion management type LanguageVersion(versionText) = @@ -76,10 +89,11 @@ type LanguageVersion(versionText) = static let languageVersion50 = 5.0m static let languageVersion60 = 6.0m static let languageVersion70 = 7.0m + static let languageVersion80 = 8.0m static let previewVersion = 9999m // Language version when preview specified - static let defaultVersion = languageVersion70 // Language version when default specified + static let defaultVersion = languageVersion80 // Language version when default specified static let latestVersion = defaultVersion // Language version when latest specified - static let latestMajorVersion = languageVersion70 // Language version when latestmajor specified + static let latestMajorVersion = languageVersion80 // Language version when latestmajor specified static let validOptions = [| "preview"; "default"; "latest"; "latestmajor" |] @@ -91,6 +105,7 @@ type LanguageVersion(versionText) = languageVersion50 languageVersion60 languageVersion70 + languageVersion80 |] static let features = @@ -141,21 +156,35 @@ type LanguageVersion(versionText) = LanguageFeature.InterfacesWithAbstractStaticMembers, languageVersion70 LanguageFeature.SelfTypeConstraints, languageVersion70 + // F# 8.0 + LanguageFeature.AccessorFunctionShorthand, languageVersion80 + LanguageFeature.MatchNotAllowedForUnionCaseWithNoData, languageVersion80 + LanguageFeature.CSharpExtensionAttributeNotRequired, languageVersion80 + LanguageFeature.ErrorForNonVirtualMembersOverrides, languageVersion80 + LanguageFeature.WarningWhenInliningMethodImplNoInlineMarkedFunction, languageVersion80 + LanguageFeature.EscapeDotnetFormattableStrings, languageVersion80 + LanguageFeature.ArithmeticInLiterals, languageVersion80 + LanguageFeature.ErrorReportingOnStaticClasses, languageVersion80 + LanguageFeature.TryWithInSeqExpression, languageVersion80 + LanguageFeature.WarningWhenCopyAndUpdateRecordChangesAllFields, languageVersion80 + LanguageFeature.StaticMembersInInterfaces, languageVersion80 + LanguageFeature.NonInlineLiteralsAsPrintfFormat, languageVersion80 + LanguageFeature.NestedCopyAndUpdate, languageVersion80 + LanguageFeature.ExtendedStringInterpolation, languageVersion80 + LanguageFeature.WarningWhenMultipleRecdTypeChoice, languageVersion80 + LanguageFeature.ImprovedImpliedArgumentNames, languageVersion80 + LanguageFeature.DiagnosticForObjInference, languageVersion80 + LanguageFeature.WarningWhenTailRecAttributeButNonTailRecUsage, languageVersion80 + LanguageFeature.StaticLetInRecordsDusEmptyTypes, languageVersion80 + LanguageFeature.StrictIndentation, languageVersion80 + LanguageFeature.ConstraintIntersectionOnFlexibleTypes, languageVersion80 + LanguageFeature.WhileBang, languageVersion80 + LanguageFeature.ExtendedFixedBindings, languageVersion80 + LanguageFeature.PreferStringGetPinnableReference, languageVersion80 + // F# preview LanguageFeature.FromEndSlicing, previewVersion - LanguageFeature.MatchNotAllowedForUnionCaseWithNoData, previewVersion - LanguageFeature.CSharpExtensionAttributeNotRequired, previewVersion - LanguageFeature.ErrorForNonVirtualMembersOverrides, previewVersion - LanguageFeature.WarningWhenInliningMethodImplNoInlineMarkedFunction, previewVersion - LanguageFeature.EscapeDotnetFormattableStrings, previewVersion - LanguageFeature.ArithmeticInLiterals, previewVersion - LanguageFeature.ErrorReportingOnStaticClasses, previewVersion - LanguageFeature.TryWithInSeqExpression, previewVersion - LanguageFeature.WarningWhenCopyAndUpdateRecordChangesAllFields, previewVersion - LanguageFeature.StaticMembersInInterfaces, previewVersion - LanguageFeature.NonInlineLiteralsAsPrintfFormat, previewVersion - LanguageFeature.NestedCopyAndUpdate, previewVersion - + LanguageFeature.UnmanagedConstraintCsharpInterop, previewVersion ] static let defaultLanguageVersion = LanguageVersion("default") @@ -175,6 +204,8 @@ type LanguageVersion(versionText) = | "6" -> languageVersion60 | "7.0" | "7" -> languageVersion70 + | "8.0" + | "8" -> languageVersion80 | _ -> 0m let specified = getVersionFromString versionText @@ -262,6 +293,7 @@ type LanguageVersion(versionText) = | LanguageFeature.LowercaseDUWhenRequireQualifiedAccess -> FSComp.SR.featureLowercaseDUWhenRequireQualifiedAccess () | LanguageFeature.InterfacesWithAbstractStaticMembers -> FSComp.SR.featureInterfacesWithAbstractStaticMembers () | LanguageFeature.SelfTypeConstraints -> FSComp.SR.featureSelfTypeConstraints () + | LanguageFeature.AccessorFunctionShorthand -> FSComp.SR.featureAccessorFunctionShorthand () | LanguageFeature.MatchNotAllowedForUnionCaseWithNoData -> FSComp.SR.featureMatchNotAllowedForUnionCaseWithNoData () | LanguageFeature.CSharpExtensionAttributeNotRequired -> FSComp.SR.featureCSharpExtensionAttributeNotRequired () | LanguageFeature.ErrorForNonVirtualMembersOverrides -> FSComp.SR.featureErrorForNonVirtualMembersOverrides () @@ -276,6 +308,19 @@ type LanguageVersion(versionText) = | LanguageFeature.StaticMembersInInterfaces -> FSComp.SR.featureStaticMembersInInterfaces () | LanguageFeature.NonInlineLiteralsAsPrintfFormat -> FSComp.SR.featureNonInlineLiteralsAsPrintfFormat () | LanguageFeature.NestedCopyAndUpdate -> FSComp.SR.featureNestedCopyAndUpdate () + | LanguageFeature.ExtendedStringInterpolation -> FSComp.SR.featureExtendedStringInterpolation () + | LanguageFeature.WarningWhenMultipleRecdTypeChoice -> FSComp.SR.featureWarningWhenMultipleRecdTypeChoice () + | LanguageFeature.ImprovedImpliedArgumentNames -> FSComp.SR.featureImprovedImpliedArgumentNames () + | LanguageFeature.DiagnosticForObjInference -> FSComp.SR.featureInformationalObjInferenceDiagnostic () + + | LanguageFeature.StaticLetInRecordsDusEmptyTypes -> FSComp.SR.featureStaticLetInRecordsDusEmptyTypes () + | LanguageFeature.StrictIndentation -> FSComp.SR.featureStrictIndentation () + | LanguageFeature.ConstraintIntersectionOnFlexibleTypes -> FSComp.SR.featureConstraintIntersectionOnFlexibleTypes () + | LanguageFeature.WarningWhenTailRecAttributeButNonTailRecUsage -> FSComp.SR.featureChkNotTailRecursive () + | LanguageFeature.UnmanagedConstraintCsharpInterop -> FSComp.SR.featureUnmanagedConstraintCsharpInterop () + | LanguageFeature.WhileBang -> FSComp.SR.featureWhileBang () + | LanguageFeature.ExtendedFixedBindings -> FSComp.SR.featureExtendedFixedBindings () + | LanguageFeature.PreferStringGetPinnableReference -> FSComp.SR.featurePreferStringGetPinnableReference () /// Get a version string associated with the given feature. static member GetFeatureVersionString feature = diff --git a/src/fcs-fable/src/Compiler/Facilities/LanguageFeatures.fsi b/src/fcs-fable/src/Compiler/Facilities/LanguageFeatures.fsi index c5c407e80b..c1cb2378d4 100644 --- a/src/fcs-fable/src/Compiler/Facilities/LanguageFeatures.fsi +++ b/src/fcs-fable/src/Compiler/Facilities/LanguageFeatures.fsi @@ -10,6 +10,7 @@ type LanguageFeature = | WildCardInForLoop | RelaxWhitespace | RelaxWhitespace2 + | StrictIndentation | NameOf | ImplicitYield | OpenTypeDeclaration @@ -44,6 +45,7 @@ type LanguageFeature = | LowercaseDUWhenRequireQualifiedAccess | InterfacesWithAbstractStaticMembers | SelfTypeConstraints + | AccessorFunctionShorthand | MatchNotAllowedForUnionCaseWithNoData | CSharpExtensionAttributeNotRequired | ErrorForNonVirtualMembersOverrides @@ -56,6 +58,17 @@ type LanguageFeature = | StaticMembersInInterfaces | NonInlineLiteralsAsPrintfFormat | NestedCopyAndUpdate + | ExtendedStringInterpolation + | WarningWhenMultipleRecdTypeChoice + | ImprovedImpliedArgumentNames + | DiagnosticForObjInference + | ConstraintIntersectionOnFlexibleTypes + | StaticLetInRecordsDusEmptyTypes + | WarningWhenTailRecAttributeButNonTailRecUsage + | UnmanagedConstraintCsharpInterop + | WhileBang + | ExtendedFixedBindings + | PreferStringGetPinnableReference /// LanguageVersion management type LanguageVersion = diff --git a/src/fcs-fable/src/Compiler/Facilities/TextLayoutRender.fs b/src/fcs-fable/src/Compiler/Facilities/TextLayoutRender.fs index 38c9a439b8..aa0b3742b9 100644 --- a/src/fcs-fable/src/Compiler/Facilities/TextLayoutRender.fs +++ b/src/fcs-fable/src/Compiler/Facilities/TextLayoutRender.fs @@ -59,6 +59,10 @@ module WordL = let keywordAbstract = wordL TaggedText.keywordAbstract let keywordOverride = wordL TaggedText.keywordOverride let keywordEnum = wordL TaggedText.keywordEnum + let keywordInline = wordL TaggedText.keywordInline + let leftAngle = wordL TaggedText.leftAngle + let keywordModule = wordL TaggedText.keywordModule + let keywordNamespace = wordL TaggedText.keywordNamespace module LeftL = let leftParen = leftL TaggedText.leftParen @@ -77,6 +81,7 @@ module RightL = let rightAngle = rightL TaggedText.rightAngle let rightBracketAngle = rightL TaggedText.rightBracketAngle let rightBracketBar = rightL TaggedText.rightBracketBar + let semicolon = rightL TaggedText.semicolon type LayoutRenderer<'a, 'b> = abstract Start: unit -> 'b diff --git a/src/fcs-fable/src/Compiler/Facilities/TextLayoutRender.fsi b/src/fcs-fable/src/Compiler/Facilities/TextLayoutRender.fsi index e6977691f6..de40c9d5d7 100644 --- a/src/fcs-fable/src/Compiler/Facilities/TextLayoutRender.fsi +++ b/src/fcs-fable/src/Compiler/Facilities/TextLayoutRender.fsi @@ -102,6 +102,10 @@ module internal WordL = val keywordAbstract: Layout val keywordOverride: Layout val keywordEnum: Layout + val keywordInline: Layout + val leftAngle: Layout + val keywordModule: Layout + val keywordNamespace: Layout module internal LeftL = val leftParen: Layout @@ -120,3 +124,4 @@ module internal RightL = val rightAngle: Layout val rightBracketAngle: Layout val rightBracketBar: Layout + val semicolon: Layout diff --git a/src/fcs-fable/src/Compiler/Facilities/prim-lexing.fs b/src/fcs-fable/src/Compiler/Facilities/prim-lexing.fs index 98449d248d..45cb204831 100644 --- a/src/fcs-fable/src/Compiler/Facilities/prim-lexing.fs +++ b/src/fcs-fable/src/Compiler/Facilities/prim-lexing.fs @@ -6,7 +6,6 @@ namespace FSharp.Compiler.Text open System open System.IO -open FSharp.Compiler type ISourceText = @@ -28,6 +27,8 @@ type ISourceText = abstract CopyTo: sourceIndex: int * destination: char[] * destinationIndex: int * count: int -> unit + abstract GetSubTextFromRange: range: range -> string + [] type StringText(str: string) = @@ -121,6 +122,41 @@ type StringText(str: string) = str.CopyTo(sourceIndex, destination, destinationIndex, count) #endif + member this.GetSubTextFromRange(range) = + let totalAmountOfLines = getLines.Value.Length + + if + range.StartLine = 0 + && range.StartColumn = 0 + && range.EndLine = 0 + && range.EndColumn = 0 + then + String.Empty + elif + range.StartLine < 1 + || (range.StartLine - 1) > totalAmountOfLines + || range.EndLine < 1 + || (range.EndLine - 1) > totalAmountOfLines + then + invalidArg (nameof range) "The range is outside the file boundaries" + else + let sourceText = this :> ISourceText + let startLine = range.StartLine - 1 + let line = sourceText.GetLineString startLine + + if range.StartLine = range.EndLine then + let length = range.EndColumn - range.StartColumn + line.Substring(range.StartColumn, length) + else + let firstLineContent = line.Substring(range.StartColumn) + let sb = System.Text.StringBuilder().AppendLine(firstLineContent) + + for lineNumber in range.StartLine .. range.EndLine - 2 do + sb.AppendLine(sourceText.GetLineString lineNumber) |> ignore + + let lastLine = sourceText.GetLineString(range.EndLine - 1) + sb.Append(lastLine.Substring(0, range.EndColumn)).ToString() + module SourceText = let ofString str = StringText(str) :> ISourceText @@ -167,6 +203,8 @@ type internal Position = member x.ApplyLineDirective(fileIdx, line) = Position(fileIdx, line, x.OriginalLine, x.AbsoluteOffset, x.AbsoluteOffset) + override p.ToString() = $"({p.Line},{p.Column})" + static member Empty = Position() static member FirstLine fileIdx = Position(fileIdx, 1, 0, 0, 0) @@ -179,7 +217,13 @@ type internal Position = type internal LexBufferFiller<'Char> = LexBuffer<'Char> -> unit -and [] internal LexBuffer<'Char>(filler: LexBufferFiller<'Char>, reportLibraryOnlyFeatures: bool, langVersion: LanguageVersion) = +and [] internal LexBuffer<'Char> + ( + filler: LexBufferFiller<'Char>, + reportLibraryOnlyFeatures: bool, + langVersion: LanguageVersion, + strictIndentation: bool option + ) = let context = Dictionary(1) let mutable buffer = [||] /// number of valid characters beyond bufferScanStart. @@ -287,10 +331,18 @@ and [] internal LexBuffer<'Char>(filler: LexBufferFiller<'Char>, reportL member _.SupportsFeature featureId = langVersion.SupportsFeature featureId + member _.StrictIndentation = strictIndentation + member _.CheckLanguageFeatureAndRecover featureId range = FSharp.Compiler.DiagnosticsLogger.checkLanguageFeatureAndRecover langVersion featureId range - static member FromFunction(reportLibraryOnlyFeatures, langVersion, f: 'Char[] * int * int -> int) : LexBuffer<'Char> = + static member FromFunction + ( + reportLibraryOnlyFeatures, + langVersion, + strictIndentation, + f: 'Char[] * int * int -> int + ) : LexBuffer<'Char> = let extension = Array.zeroCreate 4096 let filler (lexBuffer: LexBuffer<'Char>) = @@ -299,36 +351,37 @@ and [] internal LexBuffer<'Char>(filler: LexBufferFiller<'Char>, reportL Array.blit extension 0 lexBuffer.Buffer lexBuffer.BufferScanPos n lexBuffer.BufferMaxScanLength <- lexBuffer.BufferScanLength + n - new LexBuffer<'Char>(filler, reportLibraryOnlyFeatures, langVersion) + new LexBuffer<'Char>(filler, reportLibraryOnlyFeatures, langVersion, strictIndentation) // Important: This method takes ownership of the array - static member FromArrayNoCopy(reportLibraryOnlyFeatures, langVersion, buffer: 'Char[]) : LexBuffer<'Char> = + static member FromArrayNoCopy(reportLibraryOnlyFeatures, langVersion, strictIndentation, buffer: 'Char[]) : LexBuffer<'Char> = let lexBuffer = - new LexBuffer<'Char>((fun _ -> ()), reportLibraryOnlyFeatures, langVersion) + new LexBuffer<'Char>((fun _ -> ()), reportLibraryOnlyFeatures, langVersion, strictIndentation) lexBuffer.Buffer <- buffer lexBuffer.BufferMaxScanLength <- buffer.Length lexBuffer // Important: this method does copy the array - static member FromArray(reportLibraryOnlyFeatures, langVersion, s: 'Char[]) : LexBuffer<'Char> = + static member FromArray(reportLibraryOnlyFeatures, langVersion, strictIndentation, s: 'Char[]) : LexBuffer<'Char> = let buffer = Array.copy s - LexBuffer<'Char>.FromArrayNoCopy (reportLibraryOnlyFeatures, langVersion, buffer) + LexBuffer<'Char>.FromArrayNoCopy (reportLibraryOnlyFeatures, langVersion, strictIndentation, buffer) // Important: This method takes ownership of the array - static member FromChars(reportLibraryOnlyFeatures, langVersion, arr: char[]) = - LexBuffer.FromArrayNoCopy(reportLibraryOnlyFeatures, langVersion, arr) + static member FromChars(reportLibraryOnlyFeatures, langVersion, strictIndentation, arr: char[]) = + LexBuffer.FromArrayNoCopy(reportLibraryOnlyFeatures, langVersion, strictIndentation, arr) - static member FromSourceText(reportLibraryOnlyFeatures, langVersion, sourceText: ISourceText) = + static member FromSourceText(reportLibraryOnlyFeatures, langVersion, strictIndentation, sourceText: ISourceText) = #if FABLE_COMPILER let arr = Array.init sourceText.Length (fun i -> uint16 (sourceText.Item i)) - LexBuffer.FromArrayNoCopy (reportLibraryOnlyFeatures, langVersion, arr) + LexBuffer.FromArrayNoCopy (reportLibraryOnlyFeatures, langVersion, strictIndentation, arr) #else let mutable currentSourceIndex = 0 LexBuffer.FromFunction (reportLibraryOnlyFeatures, langVersion, + strictIndentation, fun (chars, start, length) -> let lengthToCopy = if currentSourceIndex + length <= sourceText.Length then @@ -344,12 +397,12 @@ and [] internal LexBuffer<'Char>(filler: LexBufferFiller<'Char>, reportL lengthToCopy) #endif //!FABLE_COMPILER - static member FromString (reportLibraryOnlyFeatures, langVersion, s: string) = + static member FromString (reportLibraryOnlyFeatures, langVersion, strictIndentation, s: string) = #if FABLE_COMPILER let arr = Array.init s.Length (fun i -> uint16 s.[i]) - LexBuffer.FromArrayNoCopy (reportLibraryOnlyFeatures, langVersion, arr) + LexBuffer.FromArrayNoCopy (reportLibraryOnlyFeatures, langVersion, strictIndentation, arr) #else - LexBuffer.FromArrayNoCopy (reportLibraryOnlyFeatures, langVersion, s.ToCharArray()) + LexBuffer.FromArrayNoCopy (reportLibraryOnlyFeatures, langVersion, strictIndentation, s.ToCharArray()) #endif module GenericImplFragments = diff --git a/src/fcs-fable/src/Compiler/Facilities/prim-lexing.fsi b/src/fcs-fable/src/Compiler/Facilities/prim-lexing.fsi index 6d94d522aa..582861c697 100644 --- a/src/fcs-fable/src/Compiler/Facilities/prim-lexing.fsi +++ b/src/fcs-fable/src/Compiler/Facilities/prim-lexing.fsi @@ -35,6 +35,10 @@ type ISourceText = /// Copies a section of the input to the given destination ad the given index abstract CopyTo: sourceIndex: int * destination: char[] * destinationIndex: int * count: int -> unit + /// Gets a section of the input based on a given range. + /// Throws an exception when the input range is outside the file boundaries. + abstract GetSubTextFromRange: range: range -> string + /// Functions related to ISourceText objects module SourceText = @@ -146,24 +150,32 @@ type internal LexBuffer<'Char> = /// True if the specified language feature is supported. member SupportsFeature: LanguageFeature -> bool + member StrictIndentation: bool option + /// Logs a recoverable error if a language feature is unsupported, at the specified range. member CheckLanguageFeatureAndRecover: LanguageFeature -> range -> unit /// Create a lex buffer suitable for Unicode lexing that reads characters from the given array. /// Important: does take ownership of the array. - static member FromChars: reportLibraryOnlyFeatures: bool * langVersion: LanguageVersion * char[] -> LexBuffer + static member FromChars: + reportLibraryOnlyFeatures: bool * langVersion: LanguageVersion * strictIndentation: bool option * char[] -> + LexBuffer /// Create a lex buffer suitable for Unicode lexing that reads characters from the given string. - static member FromString: reportLibraryOnlyFeatures: bool * langVersion: LanguageVersion * string -> LexBuffer + static member FromString: reportLibraryOnlyFeatures: bool * langVersion: LanguageVersion * strictIndentation: bool option * string -> LexBuffer /// Create a lex buffer that reads character or byte inputs by using the given function. static member FromFunction: - reportLibraryOnlyFeatures: bool * langVersion: LanguageVersion * ('Char[] * int * int -> int) -> + reportLibraryOnlyFeatures: bool * + langVersion: LanguageVersion * + strictIndentation: bool option * + ('Char[] * int * int -> int) -> LexBuffer<'Char> /// Create a lex buffer backed by source text. static member FromSourceText: - reportLibraryOnlyFeatures: bool * langVersion: LanguageVersion * ISourceText -> LexBuffer + reportLibraryOnlyFeatures: bool * langVersion: LanguageVersion * strictIndentation: bool option * ISourceText -> + LexBuffer /// The type of tables for an unicode lexer generated by fslex.exe. [] diff --git a/src/fcs-fable/src/Compiler/Interactive/ControlledExecution.fs b/src/fcs-fable/src/Compiler/Interactive/ControlledExecution.fs index bbcd0b7408..24f2dcb2ae 100644 --- a/src/fcs-fable/src/Compiler/Interactive/ControlledExecution.fs +++ b/src/fcs-fable/src/Compiler/Interactive/ControlledExecution.fs @@ -16,7 +16,7 @@ open Internal.Utilities.FSharpEnvironment open Unchecked -type internal ControlledExecution() = +type internal ControlledExecution(isInteractive: bool) = let mutable cts: CancellationTokenSource voption = ValueNone let mutable thread: Thread voption = ValueNone @@ -46,8 +46,8 @@ type internal ControlledExecution() = | _ -> None member _.Run(action: Action) = - match ceRun with - | Some run -> + match isInteractive, ceRun with + | true, Some run -> cts <- ValueSome(new CancellationTokenSource()) run.Invoke(null, [| action; cts.Value.Token |]) |> ignore | _ -> @@ -55,16 +55,14 @@ type internal ControlledExecution() = action.Invoke() member _.TryAbort() : unit = - match isRunningOnCoreClr, cts, thread with - | true, ValueSome cts, _ -> cts.Cancel() - | false, _, ValueSome thread -> - thread.Abort() - () + match isInteractive, isRunningOnCoreClr, cts, thread with + | true, true, ValueSome cts, _ -> cts.Cancel() + | true, false, _, ValueSome thread -> thread.Abort() | _ -> () member _.ResetAbort() = - match thread, threadResetAbort with - | thread, Some threadResetAbort -> threadResetAbort.Invoke(thread, [||]) |> ignore + match isInteractive, thread, threadResetAbort with + | true, thread, Some threadResetAbort -> threadResetAbort.Invoke(thread, [||]) |> ignore | _ -> () static member StripTargetInvocationException(exn: Exception) = diff --git a/src/fcs-fable/src/Compiler/Interactive/fsi.fs b/src/fcs-fable/src/Compiler/Interactive/fsi.fs index f3472f256f..671e0a15f5 100644 --- a/src/fcs-fable/src/Compiler/Interactive/fsi.fs +++ b/src/fcs-fable/src/Compiler/Interactive/fsi.fs @@ -6,6 +6,7 @@ module FSharp.Compiler.Interactive.Shell #nowarn "57" #nowarn "55" +#nowarn "9" [] [] @@ -102,9 +103,25 @@ module internal Utilities = member _.FsiAnyToLayout(options, o: obj, ty: Type) = Display.fsi_any_to_layout options ((Unchecked.unbox o: 'T), ty) - let getAnyToLayoutCall ty = - let specialized = typedefof>.MakeGenericType [| ty |] - Activator.CreateInstance(specialized) :?> IAnyToLayoutCall + let getAnyToLayoutCall (ty: Type) = + if ty.IsPointer then + let pointerToNativeInt (o: obj) : nativeint = + System.Reflection.Pointer.Unbox o + |> NativeInterop.NativePtr.ofVoidPtr> + |> NativeInterop.NativePtr.toNativeInt + + { new IAnyToLayoutCall with + member _.AnyToLayout(options, o: obj, ty: Type) = + let n = pointerToNativeInt o + Display.any_to_layout options (n, n.GetType()) + + member _.FsiAnyToLayout(options, o: obj, ty: Type) = + let n = pointerToNativeInt o + Display.any_to_layout options (n, n.GetType()) + } + else + let specialized = typedefof>.MakeGenericType [| ty |] + Activator.CreateInstance(specialized) :?> IAnyToLayoutCall let callStaticMethod (ty: Type) name args = ty.InvokeMember( @@ -1814,12 +1831,13 @@ type internal FsiDynamicCompiler // Rewrite references to local types to their respective dynamic assemblies let ilxMainModule = - ilxMainModule |> Morphs.morphILTypeRefsInILModuleMemoized emEnv.MapTypeRef + ilxMainModule + |> Morphs.morphILTypeRefsInILModuleMemoized TcGlobals.IsInEmbeddableKnownSet emEnv.MapTypeRef let opts = { ilg = tcGlobals.ilg - outfile = multiAssemblyName + ".dll" + outfile = $"{multiAssemblyName}-{dynamicAssemblyId}.dll" pdbfile = Some(Path.Combine(scriptingSymbolsPath.Value, $"{multiAssemblyName}-{dynamicAssemblyId}.pdb")) emitTailcalls = tcConfig.emitTailcalls deterministic = tcConfig.deterministic @@ -1834,6 +1852,7 @@ type internal FsiDynamicCompiler dumpDebugInfo = tcConfig.dumpDebugInfo referenceAssemblyOnly = false referenceAssemblyAttribOpt = None + referenceAssemblySignatureHash = None pathMap = tcConfig.pathMap } @@ -1943,7 +1962,10 @@ type internal FsiDynamicCompiler ReportTime tcConfig "Assembly refs Normalised" let ilxMainModule = - Morphs.morphILScopeRefsInILModuleMemoized (NormalizeAssemblyRefs(ctok, ilGlobals, tcImports)) ilxMainModule + Morphs.morphILScopeRefsInILModuleMemoized + TcGlobals.IsInEmbeddableKnownSet + (NormalizeAssemblyRefs(ctok, ilGlobals, tcImports)) + ilxMainModule diagnosticsLogger.AbortOnError(fsiConsoleOutput) @@ -3284,8 +3306,8 @@ type internal MagicAssemblyResolution() = | None -> // Check dynamic assemblies by simple name match fsiDynamicCompiler.FindDynamicAssembly(simpleAssemName, false) with - | Some asm -> asm - | None -> + | Some asm when not (tcConfigB.fsiMultiAssemblyEmit) -> asm + | _ -> // Otherwise continue let assemblyReferenceTextDll = (simpleAssemName + ".dll") @@ -3487,10 +3509,11 @@ type FsiStdinLexerProvider IndentationAwareSyntaxStatus(initialIndentationAwareSyntaxStatus, warn = false) - let LexbufFromLineReader (fsiStdinSyphon: FsiStdinSyphon) readF = + let LexbufFromLineReader (fsiStdinSyphon: FsiStdinSyphon) (readF: unit -> string MaybeNull) = UnicodeLexing.FunctionAsLexbuf( true, tcConfigB.langVersion, + tcConfigB.strictIndentation, (fun (buf: char[], start, len) -> //fprintf fsiConsoleOutput.Out "Calling ReadLine\n" let inputOption = @@ -3499,7 +3522,11 @@ type FsiStdinLexerProvider with :? EndOfStreamException -> None - inputOption |> Option.iter (fun t -> fsiStdinSyphon.Add(t + "\n")) + inputOption + |> Option.iter (fun t -> + match t with + | Null -> () + | NonNull t -> fsiStdinSyphon.Add(t + "\n")) match inputOption with | Some null @@ -3526,11 +3553,14 @@ type FsiStdinLexerProvider // Reading stdin as a lex stream //---------------------------------------------------------------------------- - let removeZeroCharsFromString (str: string) = - if str <> null && str.Contains("\000") then - String(str |> Seq.filter (fun c -> c <> '\000') |> Seq.toArray) - else - str + let removeZeroCharsFromString (str: string MaybeNull) : string MaybeNull = + match str with + | Null -> str + | NonNull str -> + if str.Contains("\000") then + String(str |> Seq.filter (fun c -> c <> '\000') |> Seq.toArray) + else + str let CreateLexerForLexBuffer (sourceFileName, lexbuf, diagnosticsLogger) = @@ -3550,7 +3580,13 @@ type FsiStdinLexerProvider ) let tokenizer = - LexFilter.LexFilter(indentationSyntaxStatus, tcConfigB.compilingFSharpCore, Lexer.token lexargs skip, lexbuf) + LexFilter.LexFilter( + indentationSyntaxStatus, + tcConfigB.compilingFSharpCore, + Lexer.token lexargs skip, + lexbuf, + tcConfigB.tokenize = TokenizeOption.Debug + ) tokenizer @@ -3570,12 +3606,16 @@ type FsiStdinLexerProvider // Create a new lexer to read an "included" script file member _.CreateIncludedScriptLexer(sourceFileName, reader, diagnosticsLogger) = - let lexbuf = UnicodeLexing.StreamReaderAsLexbuf(true, tcConfigB.langVersion, reader) + let lexbuf = + UnicodeLexing.StreamReaderAsLexbuf(true, tcConfigB.langVersion, tcConfigB.strictIndentation, reader) + CreateLexerForLexBuffer(sourceFileName, lexbuf, diagnosticsLogger) // Create a new lexer to read a string member _.CreateStringLexer(sourceFileName, source, diagnosticsLogger) = - let lexbuf = UnicodeLexing.StringAsLexbuf(true, tcConfigB.langVersion, source) + let lexbuf = + UnicodeLexing.StringAsLexbuf(true, tcConfigB.langVersion, tcConfigB.strictIndentation, source) + CreateLexerForLexBuffer(sourceFileName, lexbuf, diagnosticsLogger) member _.ConsoleInput = fsiConsoleInput @@ -4190,7 +4230,9 @@ type FsiInteractionProcessor use _ = UseBuildPhase BuildPhase.Interactive use _ = UseDiagnosticsLogger diagnosticsLogger use _scope = SetCurrentUICultureForThread fsiOptions.FsiLCID - let lexbuf = UnicodeLexing.StringAsLexbuf(true, tcConfigB.langVersion, sourceText) + + let lexbuf = + UnicodeLexing.StringAsLexbuf(true, tcConfigB.langVersion, tcConfigB.strictIndentation, sourceText) let tokenizer = fsiStdinLexerProvider.CreateBufferLexer(scriptFileName, lexbuf, diagnosticsLogger) @@ -4210,7 +4252,9 @@ type FsiInteractionProcessor use _unwind1 = UseBuildPhase BuildPhase.Interactive use _unwind2 = UseDiagnosticsLogger diagnosticsLogger use _scope = SetCurrentUICultureForThread fsiOptions.FsiLCID - let lexbuf = UnicodeLexing.StringAsLexbuf(true, tcConfigB.langVersion, sourceText) + + let lexbuf = + UnicodeLexing.StringAsLexbuf(true, tcConfigB.langVersion, tcConfigB.strictIndentation, sourceText) let tokenizer = fsiStdinLexerProvider.CreateBufferLexer(scriptFileName, lexbuf, diagnosticsLogger) @@ -4435,8 +4479,6 @@ type FsiEvaluationSession legacyReferenceResolver: LegacyReferenceResolver option ) = - do UnmanagedProcessExecutionOptions.EnableHeapTerminationOnCorruption() (* SDL recommendation *) - // Explanation: When FsiEvaluationSession.Create is called we do a bunch of processing. For fsi.exe // and fsiAnyCpu.exe there are no other active threads at this point, so we can assume this is the // unique compilation thread. For other users of FsiEvaluationSession it is reasonable to assume that @@ -4597,9 +4639,9 @@ type FsiEvaluationSession | Some assembly -> Some(Choice2Of2 assembly) | None -> #endif - match tcImports.TryFindExistingFullyQualifiedPathByExactAssemblyRef aref with - | Some resolvedPath -> Some(Choice1Of2 resolvedPath) - | None -> None + match tcImports.TryFindExistingFullyQualifiedPathByExactAssemblyRef aref with + | Some resolvedPath -> Some(Choice1Of2 resolvedPath) + | None -> None let fsiDynamicCompiler = FsiDynamicCompiler( @@ -4616,7 +4658,7 @@ type FsiEvaluationSession resolveAssemblyRef ) - let controlledExecution = ControlledExecution() + let controlledExecution = ControlledExecution(fsiOptions.Interact) let fsiInterruptController = FsiInterruptController(fsiOptions, controlledExecution, fsiConsoleOutput) @@ -4661,7 +4703,7 @@ type FsiEvaluationSession let errs = diagnosticsLogger.GetDiagnostics() let errorInfos = - DiagnosticHelpers.CreateDiagnostics(errorOptions, true, scriptFile, errs, true) + DiagnosticHelpers.CreateDiagnostics(errorOptions, true, scriptFile, errs, true, tcConfigB.flatErrors, None) let userRes = match res with @@ -4711,68 +4753,11 @@ type FsiEvaluationSession /// A host calls this to report an unhandled exception in a standard way, e.g. an exception on the GUI thread gets printed to stderr member x.ReportUnhandledException exn = x.ReportUnhandledExceptionSafe true exn - member _.ReportUnhandledExceptionSafe isFromThreadException (exn: exn) = + member _.ReportUnhandledExceptionSafe _isFromThreadException (exn: exn) = fsi.EventLoopInvoke(fun () -> fprintfn fsiConsoleOutput.Error "%s" (exn.ToString()) diagnosticsLogger.SetError() - - try - diagnosticsLogger.AbortOnError(fsiConsoleOutput) - with StopProcessing -> - // BUG 664864 some window that use System.Windows.Forms.DataVisualization types (possible FSCharts) was created in FSI. - // at some moment one chart has raised InvalidArgumentException from OnPaint, this exception was intercepted by the code in higher layer and - // passed to Application.OnThreadException. FSI has already attached its own ThreadException handler, inside it will log the original error - // and then raise StopProcessing exception to unwind the stack (and possibly shut down current Application) and get to DriveFsiEventLoop. - // DriveFsiEventLoop handles StopProcessing by suppressing it and restarting event loop from the beginning. - // This schema works almost always except when FSI is started as 64 bit process (FsiAnyCpu) on Windows 7. - - // http://msdn.microsoft.com/en-us/library/windows/desktop/ms633573(v=vs.85).aspx - // Remarks: - // If your application runs on a 32-bit version of Windows operating system, uncaught exceptions from the callback - // will be passed onto higher-level exception handlers of your application when available. - // The system then calls the unhandled exception filter to handle the exception prior to terminating the process. - // If the PCA is enabled, it will offer to fix the problem the next time you run the application. - // However, if your application runs on a 64-bit version of Windows operating system or WOW64, - // you should be aware that a 64-bit operating system handles uncaught exceptions differently based on its 64-bit processor architecture, - // exception architecture, and calling convention. - // The following table summarizes all possible ways that a 64-bit Windows operating system or WOW64 handles uncaught exceptions. - // 1. The system suppresses any uncaught exceptions. - // 2. The system first terminates the process, and then the Program Compatibility Assistant (PCA) offers to fix it the next time - // you run the application. You can disable the PCA mitigation by adding a Compatibility section to the application manifest. - // 3. The system calls the exception filters but suppresses any uncaught exceptions when it leaves the callback scope, - // without invoking the associated handlers. - // Behavior type 2 only applies to the 64-bit version of the Windows 7 operating system. - - // NOTE: tests on Win8 box showed that 64 bit version of the Windows 8 always apply type 2 behavior - - // Effectively this means that when StopProcessing exception is raised from ThreadException callback - it won't be intercepted in DriveFsiEventLoop. - // Instead it will be interpreted as unhandled exception and crash the whole process. - - // FIX: detect if current process in 64 bit running on Windows 7 or Windows 8 and if yes - swallow the StopProcessing and ScheduleRestart instead. - // Visible behavior should not be different, previously exception unwinds the stack and aborts currently running Application. - // After that it will be intercepted and suppressed in DriveFsiEventLoop. - // Now we explicitly shut down Application so after execution of callback will be completed the control flow - // will also go out of WinFormsEventLoop.Run and again get to DriveFsiEventLoop => restart the loop. I'd like the fix to be as conservative as possible - // so we use special case for problematic case instead of just always scheduling restart. - - // http://msdn.microsoft.com/en-us/library/windows/desktop/ms724832(v=vs.85).aspx - let os = Environment.OSVersion - // Win7 6.1 - let isWindows7 = os.Version.Major = 6 && os.Version.Minor = 1 - // Win8 6.2 - let isWindows8Plus = os.Version >= Version(6, 2, 0, 0) - - if - isFromThreadException - && ((isWindows7 && (IntPtr.Size = 8) && isWindows8Plus)) -#if DEBUG - // for debug purposes - && Environment.GetEnvironmentVariable("FSI_SCHEDULE_RESTART_WITH_ERRORS") = null -#endif - then - fsi.EventLoopScheduleRestart() - else - reraise ()) + diagnosticsLogger.AbortOnError(fsiConsoleOutput)) member _.PartialAssemblySignatureUpdated = fsiInteractionProcessor.PartialAssemblySignatureUpdated diff --git a/src/fcs-fable/src/Compiler/Optimize/Optimizer.fs b/src/fcs-fable/src/Compiler/Optimize/Optimizer.fs index 91eacaf2e6..1286d8ae6d 100644 --- a/src/fcs-fable/src/Compiler/Optimize/Optimizer.fs +++ b/src/fcs-fable/src/Compiler/Optimize/Optimizer.fs @@ -294,6 +294,11 @@ let [] crossAssemblyOptimizationDefault = true let [] debugPointsForPipeRightDefault = true +[] +type OptimizationProcessingMode = + | Sequential + | Parallel + type OptimizationSettings = { abstractBigTargets : bool @@ -325,6 +330,8 @@ type OptimizationSettings = reportHasEffect : bool reportTotalSizes : bool + + processingMode : OptimizationProcessingMode } static member Defaults = @@ -341,6 +348,7 @@ type OptimizationSettings = reportFunctionSizes = false reportHasEffect = false reportTotalSizes = false + processingMode = OptimizationProcessingMode.Sequential } /// Determines if JIT optimizations are enabled @@ -401,7 +409,10 @@ type OptimizationSettings = /// Determines if we should expand "let x = (exp1, exp2, ...)" bindings as prior tmps /// Also if we should expand "let x = Some exp1" bindings as prior tmps - member x.ExpandStructuralValues() = x.LocalOptimizationsEnabled + member x.ExpandStructuralValues() = x.LocalOptimizationsEnabled + + /// Determines how to process optimization of multiple files and individual optimization phases + member x.ProcessingMode() = x.processingMode type cenv = { g: TcGlobals diff --git a/src/fcs-fable/src/Compiler/Optimize/Optimizer.fsi b/src/fcs-fable/src/Compiler/Optimize/Optimizer.fsi index 76b7881f48..cb4f71247e 100644 --- a/src/fcs-fable/src/Compiler/Optimize/Optimizer.fsi +++ b/src/fcs-fable/src/Compiler/Optimize/Optimizer.fsi @@ -9,6 +9,14 @@ open FSharp.Compiler.TypedTree open FSharp.Compiler.TypedTreeOps open FSharp.Compiler.TypedTreePickle +[] +type OptimizationProcessingMode = + /// Process files sequentially, on a single thread, doing all optimization phases for each file next to each other. + | Sequential + /// Use multiple threads. + /// As soon as a given phase for a file has finished, start processing the next phase of the current file and the same phase of the next file. + | Parallel + type OptimizationSettings = { abstractBigTargets: bool @@ -40,6 +48,8 @@ type OptimizationSettings = reportHasEffect: bool reportTotalSizes: bool + + processingMode: OptimizationProcessingMode } member JitOptimizationsEnabled: bool diff --git a/src/fcs-fable/src/Compiler/Service/FSharpCheckerResults.fs b/src/fcs-fable/src/Compiler/Service/FSharpCheckerResults.fs index 34879aca62..70ff652481 100644 --- a/src/fcs-fable/src/Compiler/Service/FSharpCheckerResults.fs +++ b/src/fcs-fable/src/Compiler/Service/FSharpCheckerResults.fs @@ -49,13 +49,6 @@ open FSharp.Compiler.Text.Range open FSharp.Compiler.TypedTree open FSharp.Compiler.TypedTreeBasics open FSharp.Compiler.TypedTreeOps -open FSharp.Compiler.AbstractIL -#if !FABLE_COMPILER -open System.Reflection.PortableExecutable -open FSharp.Compiler.CreateILModule -#endif -open FSharp.Compiler.IlxGen -open FSharp.Compiler.BuildGraph open Internal.Utilities open Internal.Utilities.Collections @@ -64,8 +57,7 @@ open FSharp.Compiler.AbstractIL.ILBinaryReader type FSharpUnresolvedReferencesSet = FSharpUnresolvedReferencesSet of UnresolvedAssemblyReference list [] -type internal DelayedILModuleReader = - +type DelayedILModuleReader = val private name: string val private gate: obj val mutable private getStream: (CancellationToken -> Stream option) @@ -79,6 +71,8 @@ type internal DelayedILModuleReader = result = Unchecked.defaultof<_> } + member this.OutputFile = this.name + member this.TryGetILModuleReader() = #if FABLE_COMPILER cancellable.Return(None) @@ -123,23 +117,14 @@ type internal DelayedILModuleReader = [] type FSharpReferencedProject = | FSharpReference of projectOutputFile: string * options: FSharpProjectOptions - | PEReference of projectOutputFile: string * getStamp: (unit -> DateTime) * delayedReader: DelayedILModuleReader + | PEReference of getStamp: (unit -> DateTime) * delayedReader: DelayedILModuleReader | ILModuleReference of projectOutputFile: string * getStamp: (unit -> DateTime) * getReader: (unit -> ILModuleReader) member this.OutputFile = match this with | FSharpReference (projectOutputFile = projectOutputFile) - | PEReference (projectOutputFile = projectOutputFile) | ILModuleReference (projectOutputFile = projectOutputFile) -> projectOutputFile - - static member CreateFSharp(projectOutputFile, options) = - FSharpReference(projectOutputFile, options) - - static member CreatePortableExecutable(projectOutputFile, getStamp, getStream) = - PEReference(projectOutputFile, getStamp, DelayedILModuleReader(projectOutputFile, getStream)) - - static member CreateFromILModuleReader(projectOutputFile, getStamp, getReader) = - ILModuleReference(projectOutputFile, getStamp, getReader) + | PEReference (delayedReader = reader) -> reader.OutputFile override this.Equals(o) = match o with @@ -147,8 +132,8 @@ type FSharpReferencedProject = match this, o with | FSharpReference (projectOutputFile1, options1), FSharpReference (projectOutputFile2, options2) -> projectOutputFile1 = projectOutputFile2 && options1 = options2 - | PEReference (projectOutputFile1, getStamp1, _), PEReference (projectOutputFile2, getStamp2, _) -> - projectOutputFile1 = projectOutputFile2 && (getStamp1 ()) = (getStamp2 ()) + | PEReference (getStamp1, reader1), PEReference (getStamp2, reader2) -> + reader1.OutputFile = reader2.OutputFile && (getStamp1 ()) = (getStamp2 ()) | ILModuleReference (projectOutputFile1, getStamp1, _), ILModuleReference (projectOutputFile2, getStamp2, _) -> projectOutputFile1 = projectOutputFile2 && (getStamp1 ()) = (getStamp2 ()) | _ -> false @@ -198,8 +183,8 @@ and FSharpProjectOptions = match r1, r2 with | FSharpReferencedProject.FSharpReference (n1, a), FSharpReferencedProject.FSharpReference (n2, b) -> n1 = n2 && FSharpProjectOptions.AreSameForChecking(a, b) - | FSharpReferencedProject.PEReference (n1, getStamp1, _), FSharpReferencedProject.PEReference (n2, getStamp2, _) -> - n1 = n2 && (getStamp1 ()) = (getStamp2 ()) + | FSharpReferencedProject.PEReference (getStamp1, reader1), FSharpReferencedProject.PEReference (getStamp2, reader2) -> + reader1.OutputFile = reader2.OutputFile && (getStamp1 ()) = (getStamp2 ()) | _ -> false) && options1.LoadTime = options2.LoadTime @@ -693,7 +678,7 @@ type internal TypeCheckInfo None | id :: rest -> match fields |> List.tryFind (fun f -> f.LogicalName = id) with - | Some f -> dive f.RecdField.FormalType denv ad m rest true wasPathEmpty + | Some f -> dive f.FieldType denv ad m rest true wasPathEmpty | _ -> // Field name can be optionally qualified. // If we haven't matched a field name yet, keep peeling off the prefix. @@ -823,6 +808,28 @@ type internal TypeCheckInfo | Item.Types (_, ty :: _) when isInterfaceTy g ty -> true | _ -> false + /// Is the item suitable for completion in a pattern + let IsPatternCandidate (item: CompletionItem) = + match item.Item with + | Item.Value v -> v.LiteralValue.IsSome + | Item.ILField field -> field.LiteralValue.IsSome + | Item.ActivePatternCase _ + | Item.ExnCase _ + | Item.ModuleOrNamespaces _ + | Item.Types _ + | Item.UnionCase _ -> true + | _ -> false + + /// Is the item suitable for completion in a type application or type annotation + let IsTypeCandidate (item: CompletionItem) = + match item.Item with + | Item.ModuleOrNamespaces _ + | Item.Types _ + | Item.TypeVar _ + | Item.UnqualifiedType _ + | Item.ExnCase _ -> true + | _ -> false + /// Return only items with the specified name, modulo "Attribute" for type completions let FilterDeclItemsByResidue (getItem: 'a -> Item) residue (items: 'a list) = let attributedResidue = residue + "Attribute" @@ -847,6 +854,7 @@ type internal TypeCheckInfo || #endif nameMatchesResidue tcref.DisplayName) + | Item.Value v when (v.IsPropertyGetterMethod || v.IsPropertySetterMethod) -> residue = v.Id.idText || residue = n1 | _ -> residue = n1) /// Post-filter items to make sure they have precisely the right name @@ -906,17 +914,16 @@ type internal TypeCheckInfo match minfos with | [] -> CompletionItemKind.Method false | minfo :: _ -> CompletionItemKind.Method minfo.IsExtensionMember + | Item.AnonRecdField _ | Item.RecdField _ + | Item.UnionCaseField _ | Item.Property _ -> CompletionItemKind.Property | Item.Event _ -> CompletionItemKind.Event | Item.ILField _ | Item.Value _ -> CompletionItemKind.Field | Item.CustomOperation _ -> CompletionItemKind.CustomOperation // These items are not given a completion kind. This could be reviewed - | Item.AnonRecdField _ | Item.ActivePatternResult _ - | Item.CustomOperation _ - | Item.CtorGroup _ | Item.ExnCase _ | Item.ImplicitOp _ | Item.ModuleOrNamespaces _ @@ -924,9 +931,7 @@ type internal TypeCheckInfo | Item.TypeVar _ | Item.Types _ | Item.UnionCase _ - | Item.UnionCaseField _ | Item.UnqualifiedType _ - | Item.Value _ | Item.NewDef _ | Item.SetterArg _ | Item.CustomBuilder _ @@ -954,8 +959,224 @@ type internal TypeCheckInfo let DefaultCompletionItem item = CompletionItem ValueNone ValueNone item + let CompletionItemSuggestedName displayName = + { + ItemWithInst = ItemWithNoInst(Item.NewDef(Ident(displayName, range0))) + MinorPriority = 0 + Type = None + Kind = CompletionItemKind.SuggestedName + IsOwnMember = false + Unresolved = None + } + let getItem (x: ItemWithInst) = x.Item + let getItem2 (x: CompletionItem) = x.Item + + /// Checks whether the suggested name is unused. + /// In the future we could use an increasing numeric suffix for conflict resolution + let CreateCompletionItemForSuggestedPatternName (pos: pos) name = + if String.IsNullOrWhiteSpace name then + None + else + let name = String.lowerCaseFirstChar name + + let unused = + sResolutions.CapturedNameResolutions + |> ResizeArray.forall (fun r -> + match r.Item with + | Item.Value vref when r.Pos.Line = pos.Line -> vref.DisplayName <> name + | _ -> true) + + if unused then + Some(CompletionItemSuggestedName name) + else + None + + /// Suggest name based on type + let SuggestNameBasedOnType (g: TcGlobals) pos ty = + match stripTyparEqns ty with + | TType_app (tyconRef = tcref) when tcref.IsTypeAbbrev && (tcref.IsLocalRef || not (ccuEq g.fslibCcu tcref.nlr.Ccu)) -> + // Respect user-defined aliases + CreateCompletionItemForSuggestedPatternName pos tcref.DisplayName + | ty -> + if isNumericType g ty then + CreateCompletionItemForSuggestedPatternName pos "num" + else + match tryTcrefOfAppTy g ty with + | ValueSome tcref when not (tyconRefEq g g.system_Object_tcref tcref) -> + CreateCompletionItemForSuggestedPatternName pos tcref.DisplayName + | _ -> None + + /// Suggest names based on field name and type, add them to the list + let SuggestNameForUnionCaseFieldPattern g caseIdPos fieldPatternPos (uci: UnionCaseInfo) indexOrName isTheOnlyField completions = + let field = + match indexOrName with + | Choice1Of2 index -> + match uci.UnionCase.RecdFieldsArray, index with + | [| field |], None -> + // Index is None when parentheses were not used, i.e. `| Some v ->` - suggest a name only when the case has a single field + Some field + | [| _ |], Some _ when not isTheOnlyField -> + // When completing `| Some (a| , b)`, we're binding the first tuple element, not the sole case field + None + | _, None -> None + | arr, Some index -> arr |> Array.tryItem index + | Choice2Of2 name -> uci.UnionCase.RecdFieldsArray |> Array.tryFind (fun x -> x.DisplayName = name) + + field + |> Option.map (fun field -> + let ty = + // If the field type is generic, suggest a name based on the solution + if isTyparTy g field.FormalType then + sResolutions.CapturedNameResolutions + |> ResizeArray.tryPick (fun r -> + match r.Item with + | Item.Value vref when r.Pos = fieldPatternPos -> Some vref.Type + | _ -> None) + |> Option.defaultValue field.FormalType + else + field.FormalType + + let fieldName = + // If the field has not been given an explicit name, do not suggest the generated one + if field.rfield_name_generated then + "" + else + field.DisplayName + + completions + |> List.prependIfSome (SuggestNameBasedOnType g caseIdPos ty) + |> List.prependIfSome (CreateCompletionItemForSuggestedPatternName caseIdPos fieldName)) + |> Option.defaultValue completions + + /// Gets all methods that a type can override, but has not yet done so. + let GetOverridableMethods pos typeNameRange = + let isMethodOverridable alreadyOverridden (candidate: MethInfo) = + not candidate.IsFinal + && not ( + alreadyOverridden + |> List.exists (MethInfosEquivByNameAndSig EraseNone true g amap range0 candidate) + ) + + let (nenv, ad), m = GetBestEnvForPos pos + + sResolutions.CapturedNameResolutions + |> ResizeArray.tryPick (fun r -> + match r.Item with + | Item.Types (_, ty :: _) when equals r.Range typeNameRange && isAppTy g ty -> + let superTy = + (tcrefOfAppTy g ty).TypeContents.tcaug_super |> Option.defaultValue g.obj_ty + + let overriddenMethods = + GetImmediateIntrinsicMethInfosOfType (None, ad) g amap typeNameRange ty + |> List.filter (fun x -> x.IsDefiniteFSharpOverride) + + let overridableMethods = + GetIntrinsicMethInfosOfType + infoReader + None + ad + TypeHierarchy.AllowMultiIntfInstantiations.No + FindMemberFlag.PreferOverrides + range0 + superTy + |> List.filter (isMethodOverridable overriddenMethods) + |> List.groupBy (fun x -> x.DisplayName) + |> List.map (fun (name, overloads) -> + Item.MethodGroup(name, overloads, None) + |> ItemWithNoInst + |> DefaultCompletionItem) + + Some(overridableMethods, nenv.DisplayEnv, m) + | _ -> None) + + /// Gets all field identifiers of a union case that can be referred to in a pattern. + let GetUnionCaseFields caseIdRange alreadyReferencedFields = + sResolutions.CapturedNameResolutions + |> ResizeArray.tryPick (fun r -> + match r.Item with + | Item.UnionCase (uci, _) when equals r.Range caseIdRange -> + uci.UnionCase.RecdFields + |> List.indexed + |> List.choose (fun (index, field) -> + if List.contains field.LogicalName alreadyReferencedFields then + None + else + Item.UnionCaseField(uci, index) + |> ItemWithNoInst + |> DefaultCompletionItem + |> Some) + |> Some + | _ -> None) + + let GetCompletionsForUnionCaseField pos indexOrName caseIdRange isTheOnlyField declaredItems = + let declaredItems = + declaredItems + |> Option.bind (FilterRelevantItemsBy getItem2 None IsPatternCandidate) + + // When the user types `fun (Case (x| )) ->`, we do not yet know whether the intention is to use positional or named arguments, + // so let's show options for both. + let fields indexOrName isTheOnlyField (uci: UnionCaseInfo) = + match indexOrName, isTheOnlyField with + | Choice1Of2 (Some 0), true -> + uci.UnionCase.RecdFields + |> List.mapi (fun index _ -> Item.UnionCaseField(uci, index) |> ItemWithNoInst |> DefaultCompletionItem) + | _ -> [] + + sResolutions.CapturedNameResolutions + |> ResizeArray.tryPick (fun r -> + match r.Item with + | Item.UnionCase (uci, _) when equals r.Range caseIdRange -> + let list = + declaredItems + |> Option.map p13 + |> Option.defaultValue [] + |> List.append (fields indexOrName isTheOnlyField uci) + + Some(SuggestNameForUnionCaseFieldPattern g caseIdRange.End pos uci indexOrName isTheOnlyField list, r.DisplayEnv, r.Range) + | _ -> None) + |> Option.orElse declaredItems + + let GetCompletionsForRecordField pos referencedFields declaredItems = + declaredItems + |> Option.map (fun (items: CompletionItem list, denv, range) -> + let fields = + // Try to find a name resolution for any of the referenced fields, and through it access all available fields of the record + referencedFields + |> List.tryPick (fun (_, fieldRange) -> + sResolutions.CapturedNameResolutions + |> ResizeArray.tryPick (fun cnr -> + match cnr.Item with + | Item.RecdField info when equals cnr.Range fieldRange -> + info.TyconRef.AllFieldAsRefList + |> List.choose (fun field -> + if + referencedFields + |> List.exists (fun (fieldName, _) -> fieldName = field.DisplayName) + then + None + else + FreshenRecdFieldRef ncenv field.Range field |> Item.RecdField |> Some) + |> Some + | _ -> None)) + |> Option.defaultWith (fun () -> + // Fall back to showing all record field names in scope + let (nenv, _), _ = GetBestEnvForPos pos + getRecordFieldsInScope nenv) + |> List.map (ItemWithNoInst >> DefaultCompletionItem) + + let items = + items + |> List.filter (fun item -> + match item.Item with + | Item.ModuleOrNamespaces _ -> true + | Item.Types (_, ty :: _) -> isRecdTy g ty + | _ -> false) + |> List.append fields + + items, denv, range) + let GetDeclaredItems ( parseResultsOpt: FSharpParseFileResults option, @@ -1202,10 +1423,26 @@ type internal TypeCheckInfo | atStart when atStart = 0 -> 0 | otherwise -> otherwise - 1 + let getDeclaredItemsNotInRangeOpWithAllSymbols () = + GetDeclaredItems( + parseResultsOpt, + lineStr, + origLongIdentOpt, + colAtEndOfNamesAndResidue, + residueOpt, + lastDotPos, + line, + loc, + filterCtors, + resolveOverloads, + false, + getAllSymbols + ) + + let pos = mkPos line colAtEndOfNamesAndResidue + // Look for a "special" completion context let completionContext = - let pos = mkPos line colAtEndOfNamesAndResidue - // If the completion context we have computed higher up the stack is for the same position, // reuse it, otherwise recompute match completionContextAtPos with @@ -1331,21 +1568,7 @@ type internal TypeCheckInfo | Some (CompletionContext.ParameterList (endPos, fields)) -> let results = GetNamedParametersAndSettableFields endPos - let declaredItems = - GetDeclaredItems( - parseResultsOpt, - lineStr, - origLongIdentOpt, - colAtEndOfNamesAndResidue, - residueOpt, - lastDotPos, - line, - loc, - filterCtors, - resolveOverloads, - false, - getAllSymbols - ) + let declaredItems = getDeclaredItemsNotInRangeOpWithAllSymbols () match results with | NameResResult.Members (items, denv, m) -> @@ -1370,20 +1593,7 @@ type internal TypeCheckInfo | _ -> declaredItems | Some (CompletionContext.AttributeApplication) -> - GetDeclaredItems( - parseResultsOpt, - lineStr, - origLongIdentOpt, - colAtEndOfNamesAndResidue, - residueOpt, - lastDotPos, - line, - loc, - filterCtors, - resolveOverloads, - false, - getAllSymbols - ) + getDeclaredItemsNotInRangeOpWithAllSymbols () |> Option.map (fun (items, denv, m) -> items |> List.filter (fun cItem -> @@ -1395,20 +1605,7 @@ type internal TypeCheckInfo m) | Some (CompletionContext.OpenDeclaration isOpenType) -> - GetDeclaredItems( - parseResultsOpt, - lineStr, - origLongIdentOpt, - colAtEndOfNamesAndResidue, - residueOpt, - lastDotPos, - line, - loc, - filterCtors, - resolveOverloads, - false, - getAllSymbols - ) + getDeclaredItemsNotInRangeOpWithAllSymbols () |> Option.map (fun (items, denv, m) -> items |> List.filter (fun x -> @@ -1420,39 +1617,37 @@ type internal TypeCheckInfo m) // Completion at '(x: ...)" - | Some CompletionContext.PatternType + | Some CompletionContext.Type // Completion at '| Case1 of ...' | Some CompletionContext.UnionCaseFieldsDeclaration // Completion at 'type Long = int6...' or 'type SomeUnion = Abc...' | Some CompletionContext.TypeAbbreviationOrSingleCaseUnion // Completion at 'Field1: ...' | Some (CompletionContext.RecordField (RecordContext.Declaration false)) -> - GetDeclaredItems( - parseResultsOpt, - lineStr, - origLongIdentOpt, - colAtEndOfNamesAndResidue, - residueOpt, - lastDotPos, - line, - loc, - filterCtors, - resolveOverloads, - false, - getAllSymbols - ) - |> Option.map (fun (items, denv, m) -> - items - |> List.filter (fun cItem -> - match cItem.Item with - | Item.ModuleOrNamespaces _ - | Item.Types _ - | Item.TypeVar _ - | Item.UnqualifiedType _ - | Item.ExnCase _ -> true - | _ -> false), - denv, - m) + getDeclaredItemsNotInRangeOpWithAllSymbols () + |> Option.bind (FilterRelevantItemsBy getItem2 None IsTypeCandidate) + + | Some (CompletionContext.Pattern patternContext) -> + match patternContext with + | PatternContext.UnionCaseFieldIdentifier (referencedFields, caseIdRange) -> + GetUnionCaseFields caseIdRange referencedFields + |> Option.map (fun completions -> + let (nenv, _ad), m = GetBestEnvForPos pos + completions, nenv.DisplayEnv, m) + | PatternContext.PositionalUnionCaseField (fieldIndex, isTheOnlyField, caseIdRange) -> + getDeclaredItemsNotInRangeOpWithAllSymbols () + |> GetCompletionsForUnionCaseField pos (Choice1Of2 fieldIndex) caseIdRange isTheOnlyField + | PatternContext.NamedUnionCaseField (fieldName, caseIdRange) -> + getDeclaredItemsNotInRangeOpWithAllSymbols () + |> GetCompletionsForUnionCaseField pos (Choice2Of2 fieldName) caseIdRange false + | PatternContext.RecordFieldIdentifier referencedFields -> + getDeclaredItemsNotInRangeOpWithAllSymbols () + |> GetCompletionsForRecordField pos referencedFields + | PatternContext.Other -> + getDeclaredItemsNotInRangeOpWithAllSymbols () + |> Option.bind (FilterRelevantItemsBy getItem2 None IsPatternCandidate) + + | Some (CompletionContext.MethodOverride enclosingTypeNameRange) -> GetOverridableMethods pos enclosingTypeNameRange // Other completions | cc -> @@ -1559,7 +1754,10 @@ type internal TypeCheckInfo |> Option.map (fun parsedInput -> ParsedInput.GetFullNameOfSmallestModuleOrNamespaceAtPoint(mkPos line 0, parsedInput)) - let isAttributeApplication = ctx = Some CompletionContext.AttributeApplication + let isAttributeApplication = + match ctx with + | Some CompletionContext.AttributeApplication -> true + | _ -> false DeclarationListInfo.Create( infoReader, @@ -1790,7 +1988,6 @@ type internal TypeCheckInfo let symbol = Some(FSharpSymbol.Create(cenv, x.Item)) FormatStructuredDescriptionOfItem false infoReader tcAccessRights m denv x.ItemWithInst symbol width) )) - (fun err -> Trace.TraceInformation(sprintf "FCS: recovering from error in GetStructuredToolTipText: '%s'" err) ToolTipText [ ToolTipElement.CompositionError err ]) @@ -1995,7 +2192,7 @@ type internal TypeCheckInfo FindDeclResult.ExternalDecl(assemblyRef.Name, externalSym)) | _ -> None - | Item.Property (name, ILProp propInfo :: _) -> + | Item.Property (name, ILProp propInfo :: _, _) -> let methInfo = if propInfo.HasGetter then Some propInfo.GetterMethod elif propInfo.HasSetter then Some propInfo.SetterMethod @@ -2066,7 +2263,7 @@ type internal TypeCheckInfo // provided items may have TypeProviderDefinitionLocationAttribute that binds them to some location | Item.CtorGroup (name, ProvidedMeth _ :: _) | Item.MethodGroup (name, ProvidedMeth _ :: _, _) - | Item.Property (name, ProvidedProp _ :: _) -> FindDeclFailureReason.ProvidedMember name + | Item.Property (name, ProvidedProp _ :: _, _) -> FindDeclFailureReason.ProvidedMember name | Item.Event (ProvidedEvent _ as e) -> FindDeclFailureReason.ProvidedMember e.EventName | Item.ILField (ProvidedField _ as f) -> FindDeclFailureReason.ProvidedMember f.FieldName | ItemIsProvidedType g tcref -> FindDeclFailureReason.ProvidedType tcref.DisplayName @@ -2106,6 +2303,36 @@ type internal TypeCheckInfo Trace.TraceInformation(sprintf "FCS: recovering from error in GetSymbolUseAtLocation: '%s'" msg) None) + member _.GetSymbolUsesAtLocation(line, lineStr, colAtEndOfNames, names) = + DiagnosticsScope.Protect + range0 + (fun () -> + let declItemsOpt = + GetDeclItemsForNamesAtPosition( + None, + Some names, + None, + None, + line, + lineStr, + colAtEndOfNames, + ResolveTypeNamesToCtors, + ResolveOverloads.Yes, + None, + (fun () -> []) + ) + + match declItemsOpt with + | None -> List.empty + | Some (items, denv, _, m) -> + items + |> List.map (fun item -> + let symbol = FSharpSymbol.Create(cenv, item.Item) + symbol, item.ItemWithInst, denv, m)) + (fun msg -> + Trace.TraceInformation(sprintf "FCS: recovering from error in GetSymbolUsesAtLocation: '%s'" msg) + List.empty) + member _.PartialAssemblySignatureForFile = FSharpAssemblySignature(g, thisCcu, ccuSigForFile, tcImports, None, ccuSigForFile) @@ -2160,6 +2387,7 @@ type FSharpParsingOptions = LangVersionText: string IsInteractive: bool IndentationAwareSyntax: bool option + StrictIndentation: bool option CompilingFSharpCore: bool IsExe: bool } @@ -2177,6 +2405,7 @@ type FSharpParsingOptions = LangVersionText = LanguageVersion.Default.VersionText IsInteractive = false IndentationAwareSyntax = None + StrictIndentation = None CompilingFSharpCore = false IsExe = false } @@ -2190,6 +2419,7 @@ type FSharpParsingOptions = LangVersionText = tcConfig.langVersion.VersionText IsInteractive = isInteractive IndentationAwareSyntax = tcConfig.indentationAwareSyntax + StrictIndentation = tcConfig.strictIndentation CompilingFSharpCore = tcConfig.compilingFSharpCore IsExe = tcConfig.target.IsExe } @@ -2203,6 +2433,7 @@ type FSharpParsingOptions = LangVersionText = tcConfigB.langVersion.VersionText IsInteractive = isInteractive IndentationAwareSyntax = tcConfigB.indentationAwareSyntax + StrictIndentation = tcConfigB.strictIndentation CompilingFSharpCore = tcConfigB.compilingFSharpCore IsExe = tcConfigB.target.IsExe } @@ -2216,7 +2447,8 @@ module internal ParseAndCheckFile = mainInputFileName, diagnosticsOptions: FSharpDiagnosticOptions, sourceText: ISourceText, - suggestNamesForErrors: bool + suggestNamesForErrors: bool, + flatErrors: bool ) = let mutable options = diagnosticsOptions let diagnosticsCollector = ResizeArray<_>() @@ -2226,12 +2458,18 @@ module internal ParseAndCheckFile = let fileInfo = sourceText.GetLastCharacterPosition() let collectOne severity diagnostic = - for diagnostic in - DiagnosticHelpers.ReportDiagnostic(options, false, mainInputFileName, fileInfo, diagnostic, severity, suggestNamesForErrors) do - diagnosticsCollector.Add diagnostic + // 1. Extended diagnostic data should be created after typechecking because it requires a valid SymbolEnv + // 2. Diagnostic message should be created during the diagnostic sink, because after typechecking + // the formatting of types in it may change (for example, 'a to obj) + // + // So we'll create a diagnostic later, but cache the FormatCore message now +#if !FABLE_COMPILER + diagnostic.Exception.Data[ "CachedFormatCore" ] <- diagnostic.FormatCore(flatErrors, suggestNamesForErrors) +#endif + diagnosticsCollector.Add(struct (diagnostic, severity)) - if severity = FSharpDiagnosticSeverity.Error then - errorCount <- errorCount + 1 + if severity = FSharpDiagnosticSeverity.Error then + errorCount <- errorCount + 1 // This function gets called whenever an error happens during parsing or checking let diagnosticSink severity (diagnostic: PhasedDiagnostic) = @@ -2270,8 +2508,6 @@ module internal ParseAndCheckFile = // Public members member _.DiagnosticsLogger = diagnosticsLogger - member _.CollectedDiagnostics = diagnosticsCollector.ToArray() - member _.ErrorCount = errorCount member _.DiagnosticOptions @@ -2279,6 +2515,23 @@ module internal ParseAndCheckFile = member _.AnyErrors = errorCount > 0 + member _.CollectedDiagnostics(symbolEnv: SymbolEnv option) = + [| + for struct (diagnostic, severity) in diagnosticsCollector do + yield! + DiagnosticHelpers.ReportDiagnostic( + options, + false, + mainInputFileName, + fileInfo, + diagnostic, + severity, + suggestNamesForErrors, + flatErrors, + symbolEnv + ) + |] + let getLightSyntaxStatus fileName options = let indentationAwareSyntaxOnByDefault = List.exists (FileSystemUtils.checkSuffix fileName) FSharpIndentationAwareSyntaxFileSuffixes @@ -2291,7 +2544,7 @@ module internal ParseAndCheckFile = IndentationAwareSyntaxStatus(indentationSyntaxStatus, true) - let createLexerFunction fileName options lexbuf (errHandler: DiagnosticsHandler) = + let createLexerFunction fileName options lexbuf (errHandler: DiagnosticsHandler) (ct: CancellationToken) = let indentationSyntaxStatus = getLightSyntaxStatus fileName options // If we're editing a script then we define INTERACTIVE otherwise COMPILED. @@ -2317,14 +2570,31 @@ module internal ParseAndCheckFile = ) let tokenizer = - LexFilter.LexFilter(indentationSyntaxStatus, options.CompilingFSharpCore, Lexer.token lexargs true, lexbuf) + LexFilter.LexFilter(indentationSyntaxStatus, options.CompilingFSharpCore, Lexer.token lexargs true, lexbuf, false) - (fun _ -> tokenizer.GetToken()) +#if FABLE_COMPILER + if false then +#else + if ct.CanBeCanceled then +#endif + (fun _ -> + ct.ThrowIfCancellationRequested() + tokenizer.GetToken()) + else + (fun _ -> tokenizer.GetToken()) - let createLexbuf langVersion sourceText = - UnicodeLexing.SourceTextAsLexbuf(true, LanguageVersion(langVersion), sourceText) + let createLexbuf langVersion strictIndentation sourceText = + UnicodeLexing.SourceTextAsLexbuf(true, LanguageVersion(langVersion), strictIndentation, sourceText) - let matchBraces (sourceText: ISourceText, fileName, options: FSharpParsingOptions, userOpName: string, suggestNamesForErrors: bool) = + let matchBraces + ( + sourceText: ISourceText, + fileName, + options: FSharpParsingOptions, + userOpName: string, + suggestNamesForErrors: bool, + ct: CancellationToken + ) = // Make sure there is an DiagnosticsLogger installed whenever we do stuff that might record errors, even if we ultimately ignore the errors let delayedLogger = CapturingDiagnosticsLogger("matchBraces") use _ = UseDiagnosticsLogger delayedLogger @@ -2334,11 +2604,11 @@ module internal ParseAndCheckFile = let matchingBraces = ResizeArray<_>() - usingLexbufForParsing (createLexbuf options.LangVersionText sourceText, fileName) (fun lexbuf -> + usingLexbufForParsing (createLexbuf options.LangVersionText options.StrictIndentation sourceText, fileName) (fun lexbuf -> let errHandler = - DiagnosticsHandler(false, fileName, options.DiagnosticOptions, sourceText, suggestNamesForErrors) + DiagnosticsHandler(false, fileName, options.DiagnosticOptions, sourceText, suggestNamesForErrors, false) - let lexfun = createLexerFunction fileName options lexbuf errHandler + let lexfun = createLexerFunction fileName options lexbuf errHandler ct let parenTokensBalance t1 t2 = match t1, t2 with @@ -2362,7 +2632,7 @@ module internal ParseAndCheckFile = let rec matchBraces stack = match lexfun lexbuf, stack with - | tok2, (tok1, m1) :: stackAfterMatch when parenTokensBalance tok1 tok2 -> + | tok2, (tok1, braceOffset, m1) :: stackAfterMatch when parenTokensBalance tok1 tok2 -> let m2 = lexbuf.LexemeRange // For INTERP_STRING_PART and INTERP_STRING_END grab the one character @@ -2370,7 +2640,11 @@ module internal ParseAndCheckFile = let m2Start = match tok2 with | INTERP_STRING_PART _ - | INTERP_STRING_END _ -> mkFileIndexRange m2.FileIndex m2.Start (mkPos m2.Start.Line (m2.Start.Column + 1)) + | INTERP_STRING_END _ -> + mkFileIndexRange + m2.FileIndex + (mkPos m2.Start.Line (m2.Start.Column - braceOffset)) + (mkPos m2.Start.Line (m2.Start.Column + 1)) | _ -> m2 matchingBraces.Add(m1, m2Start) @@ -2381,15 +2655,15 @@ module internal ParseAndCheckFile = match tok2 with | INTERP_STRING_PART _ -> let m2End = - mkFileIndexRange m2.FileIndex (mkPos m2.End.Line (max (m2.End.Column - 1) 0)) m2.End + mkFileIndexRange m2.FileIndex (mkPos m2.End.Line (max (m2.End.Column - 1 - braceOffset) 0)) m2.End - (tok2, m2End) :: stackAfterMatch + (tok2, braceOffset, m2End) :: stackAfterMatch | _ -> stackAfterMatch matchBraces stackAfterMatch | LPAREN | LBRACE _ | LBRACK | LBRACE_BAR | LBRACK_BAR | LQUOTE _ | LBRACK_LESS as tok, _ -> - matchBraces ((tok, lexbuf.LexemeRange) :: stack) + matchBraces ((tok, 0, lexbuf.LexemeRange) :: stack) // INTERP_STRING_BEGIN_PART corresponds to $"... {" at the start of an interpolated string // @@ -2399,12 +2673,18 @@ module internal ParseAndCheckFile = // // Either way we start a new potential match at the last character | INTERP_STRING_BEGIN_PART _ | INTERP_STRING_PART _ as tok, _ -> + let braceOffset = + match tok with + | INTERP_STRING_BEGIN_PART (_, SynStringKind.TripleQuote, (LexerContinuation.Token (_, (_, _, dl, _) :: _))) -> + dl - 1 + | _ -> 0 + let m = lexbuf.LexemeRange let m2 = - mkFileIndexRange m.FileIndex (mkPos m.End.Line (max (m.End.Column - 1) 0)) m.End + mkFileIndexRange m.FileIndex (mkPos m.End.Line (max (m.End.Column - 1 - braceOffset) 0)) m.End - matchBraces ((tok, m2) :: stack) + matchBraces ((tok, braceOffset, m2) :: stack) | (EOF _ | LEX_FAILURE _), _ -> () | _ -> matchBraces stack @@ -2420,7 +2700,9 @@ module internal ParseAndCheckFile = options: FSharpParsingOptions, userOpName: string, suggestNamesForErrors: bool, - identCapture: bool + flatErrors: bool, + identCapture: bool, + ct: CancellationToken ) = Trace.TraceInformation("FCS: {0}.{1} ({2})", userOpName, "parseFile", fileName) @@ -2428,16 +2710,16 @@ module internal ParseAndCheckFile = Activity.start "ParseAndCheckFile.parseFile" [| Activity.Tags.fileName, fileName |] let errHandler = - DiagnosticsHandler(true, fileName, options.DiagnosticOptions, sourceText, suggestNamesForErrors) + DiagnosticsHandler(true, fileName, options.DiagnosticOptions, sourceText, suggestNamesForErrors, flatErrors) use _ = UseDiagnosticsLogger errHandler.DiagnosticsLogger use _ = UseBuildPhase BuildPhase.Parse let parseResult = - usingLexbufForParsing (createLexbuf options.LangVersionText sourceText, fileName) (fun lexbuf -> + usingLexbufForParsing (createLexbuf options.LangVersionText options.StrictIndentation sourceText, fileName) (fun lexbuf -> - let lexfun = createLexerFunction fileName options lexbuf errHandler + let lexfun = createLexerFunction fileName options lexbuf errHandler ct let isLastCompiland = fileName.Equals(options.LastFileName, StringComparison.CurrentCultureIgnoreCase) @@ -2457,11 +2739,13 @@ module internal ParseAndCheckFile = identCapture, Some userOpName ) - with e -> + with + | :? OperationCanceledException -> reraise () + | e -> errHandler.DiagnosticsLogger.StopProcessingRecovery e range0 // don't re-raise any exceptions, we must return None. EmptyParsedInput(fileName, (isLastCompiland, isExe))) - errHandler.CollectedDiagnostics, parseResult, errHandler.AnyErrors + errHandler.CollectedDiagnostics(None), parseResult, errHandler.AnyErrors #if !FABLE_COMPILER @@ -2599,7 +2883,14 @@ module internal ParseAndCheckFile = // Initialize the error handler let errHandler = - DiagnosticsHandler(true, mainInputFileName, tcConfig.diagnosticsOptions, sourceText, suggestNamesForErrors) + DiagnosticsHandler( + true, + mainInputFileName, + tcConfig.diagnosticsOptions, + sourceText, + suggestNamesForErrors, + tcConfig.flatErrors + ) use _ = UseDiagnosticsLogger errHandler.DiagnosticsLogger @@ -2664,28 +2955,29 @@ module internal ParseAndCheckFile = return ((tcState.TcEnvFromSignatures, EmptyTopAttrs, [], [ mty ]), tcState) } - let errors = errHandler.CollectedDiagnostics + let (tcEnvAtEnd, _, implFiles, ccuSigsForFiles), tcState = resOpt + + let symbolEnv = SymbolEnv(tcGlobals, tcState.Ccu, Some tcState.CcuSig, tcImports) + let errors = errHandler.CollectedDiagnostics(Some symbolEnv) let res = - match resOpt with - | (tcEnvAtEnd, _, implFiles, ccuSigsForFiles), tcState -> - TypeCheckInfo( - tcConfig, - tcGlobals, - List.head ccuSigsForFiles, - tcState.Ccu, - tcImports, - tcEnvAtEnd.AccessRights, - projectFileName, - mainInputFileName, - projectOptions, - sink.GetResolutions(), - sink.GetSymbolUses(), - tcEnvAtEnd.NameEnv, - loadClosure, - List.tryHead implFiles, - sink.GetOpenDeclarations() - ) + TypeCheckInfo( + tcConfig, + tcGlobals, + List.head ccuSigsForFiles, + tcState.Ccu, + tcImports, + tcEnvAtEnd.AccessRights, + projectFileName, + mainInputFileName, + projectOptions, + sink.GetResolutions(), + sink.GetSymbolUses(), + tcEnvAtEnd.NameEnv, + loadClosure, + List.tryHead implFiles, + sink.GetOpenDeclarations() + ) return errors, res } @@ -2793,12 +3085,16 @@ type FSharpCheckFileResults | None -> emptyFindDeclResult | Some (scope, _builderOpt) -> scope.GetDeclarationLocation(line, lineText, colAtEndOfNames, names, preferFlag) - member _.GetSymbolUseAtLocation(line, colAtEndOfNames, lineText, names) = + member this.GetSymbolUseAtLocation(line, colAtEndOfNames, lineText, names) = + this.GetSymbolUsesAtLocation(line, colAtEndOfNames, lineText, names) + |> List.tryHead + + member _.GetSymbolUsesAtLocation(line, colAtEndOfNames, lineText, names) = match details with - | None -> None + | None -> List.empty | Some (scope, _builderOpt) -> - scope.GetSymbolUseAtLocation(line, lineText, colAtEndOfNames, names) - |> Option.map (fun (sym, itemWithInst, denv, m) -> + scope.GetSymbolUsesAtLocation(line, lineText, colAtEndOfNames, names) + |> List.map (fun (sym, itemWithInst, denv, m) -> FSharpSymbolUse(denv, sym, itemWithInst.TyparInstantiation, ItemOccurence.Use, m)) member _.GetMethodsAsSymbols(line, colAtEndOfNames, lineText, names) = @@ -2925,6 +3221,16 @@ type FSharpCheckFileResults |> LayoutRender.showL |> SourceText.ofString) + member internal _.CalculateSignatureHash() = + let visibility = Fsharp.Compiler.SignatureHash.PublicAndInternal + + match details with + | None -> failwith "Typechecked details not available for CalculateSignatureHash() operation." + | Some (scope, _builderOpt) -> + scope.ImplementationFile + |> Option.map (fun implFile -> + Fsharp.Compiler.SignatureHash.calculateSignatureHashOfFiles [ implFile ] scope.TcGlobals visibility) + member _.ImplementationFile = if not keepAssemblyContents then invalidOp @@ -3280,6 +3586,8 @@ type FsiInteractiveChecker(legacyReferenceResolver, tcConfig: TcConfig, tcGlobal let parsingOptions = FSharpParsingOptions.FromTcConfig(tcConfig, [| fileName |], true) + let! ct = Cancellable.token () + let parseErrors, parsedInput, anyErrors = ParseAndCheckFile.parseFile ( sourceText, @@ -3287,7 +3595,9 @@ type FsiInteractiveChecker(legacyReferenceResolver, tcConfig: TcConfig, tcGlobal parsingOptions, userOpName, suggestNamesForErrors, - tcConfig.captureIdentifiersWhenParsing + tcConfig.flatErrors, + tcConfig.captureIdentifiersWhenParsing, + ct ) let dependencyFiles = [||] // interactions have no dependencies diff --git a/src/fcs-fable/src/Compiler/Service/FSharpCheckerResults.fsi b/src/fcs-fable/src/Compiler/Service/FSharpCheckerResults.fsi index 5a8832c718..cfbfd66396 100644 --- a/src/fcs-fable/src/Compiler/Service/FSharpCheckerResults.fsi +++ b/src/fcs-fable/src/Compiler/Service/FSharpCheckerResults.fsi @@ -28,13 +28,15 @@ open FSharp.Compiler.Text /// Delays the creation of an ILModuleReader [] -type internal DelayedILModuleReader = +type DelayedILModuleReader = new: name: string * getStream: (CancellationToken -> Stream option) -> DelayedILModuleReader + member OutputFile: string + /// Will lazily create the ILModuleReader. /// Is only evaluated once and can be called by multiple threads. - member TryGetILModuleReader: unit -> Cancellable + member internal TryGetILModuleReader: unit -> Cancellable /// Unused in this API type public FSharpUnresolvedReferencesSet = internal FSharpUnresolvedReferencesSet of UnresolvedAssemblyReference list @@ -92,50 +94,41 @@ type public FSharpProjectOptions = /// Compute the project directory. member internal ProjectDirectory: string -and [] public FSharpReferencedProject = - internal - | FSharpReference of projectOutputFile: string * options: FSharpProjectOptions - | PEReference of projectOutputFile: string * getStamp: (unit -> DateTime) * delayedReader: DelayedILModuleReader - | ILModuleReference of - projectOutputFile: string * - getStamp: (unit -> DateTime) * - getReader: (unit -> ILModuleReader) - - /// - /// The fully qualified path to the output of the referenced project. This should be the same value as the -r - /// reference in the project options for this referenced project. - /// - member OutputFile: string +and [] FSharpReferencedProject = /// - /// Creates a reference for an F# project. The physical data for it is stored/cached inside of the compiler service. + /// A reference for an F# project. The physical data for it is stored/cached inside of the compiler service. /// /// The fully qualified path to the output of the referenced project. This should be the same value as the -r reference in the project options for this referenced project. /// The Project Options for this F# project - static member CreateFSharp: projectOutputFile: string * options: FSharpProjectOptions -> FSharpReferencedProject + | FSharpReference of projectOutputFile: string * options: FSharpProjectOptions /// - /// Creates a reference for any portable executable, including F#. The stream is owned by this reference. + /// A reference for any portable executable, including F#. The stream is owned by this reference. /// The stream will be automatically disposed when there are no references to FSharpReferencedProject and is GC collected. /// Once the stream is evaluated, the function that constructs the stream will no longer be referenced by anything. /// If the stream evaluation throws an exception, it will be automatically handled. /// - /// The fully qualified path to the output of the referenced project. This should be the same value as the -r reference in the project options for this referenced project. /// A function that calculates a last-modified timestamp for this reference. This will be used to determine if the reference is up-to-date. - /// A function that opens a Portable Executable data stream for reading. - static member CreatePortableExecutable: - projectOutputFile: string * getStamp: (unit -> DateTime) * getStream: (CancellationToken -> Stream option) -> - FSharpReferencedProject + /// A function that opens a Portable Executable data stream for reading. + | PEReference of getStamp: (unit -> DateTime) * delayedReader: DelayedILModuleReader /// - /// Creates a reference from an ILModuleReader. + /// A reference from an ILModuleReader. /// /// The fully qualified path to the output of the referenced project. This should be the same value as the -r reference in the project options for this referenced project. /// A function that calculates a last-modified timestamp for this reference. This will be used to determine if the reference is up-to-date. /// A function that creates an ILModuleReader for reading module data. - static member CreateFromILModuleReader: - projectOutputFile: string * getStamp: (unit -> DateTime) * getReader: (unit -> ILModuleReader) -> - FSharpReferencedProject + | ILModuleReference of + projectOutputFile: string * + getStamp: (unit -> DateTime) * + getReader: (unit -> ILModuleReader) + + /// + /// The fully qualified path to the output of the referenced project. This should be the same value as the -r + /// reference in the project options for this referenced project. + /// + member OutputFile: string /// Represents the use of an F# symbol from F# source code [] @@ -227,6 +220,8 @@ type public FSharpParsingOptions = IndentationAwareSyntax: bool option + StrictIndentation: bool option + CompilingFSharpCore: bool IsExe: bool @@ -434,6 +429,15 @@ type public FSharpCheckFileResults = member GetSymbolUseAtLocation: line: int * colAtEndOfNames: int * lineText: string * names: string list -> FSharpSymbolUse option + /// Similar to GetSymbolUseAtLocation, but returns all found symbols if there are multiple. + /// + /// The line number where the information is being requested. + /// The column number at the end of the identifiers where the information is being requested. + /// The text of the line where the information is being requested. + /// The identifiers at the location where the information is being requested. + member GetSymbolUsesAtLocation: + line: int * colAtEndOfNames: int * lineText: string * names: string list -> FSharpSymbolUse list + /// Get any extra colorization info that is available after the typecheck member GetSemanticClassification: range option -> SemanticClassificationItem[] @@ -470,6 +474,8 @@ type public FSharpCheckFileResults = /// Lays out and returns the formatted signature for the typechecked file as source text. member GenerateSignature: ?pageWidth: int -> ISourceText option + member internal CalculateSignatureHash: unit -> int option + /// Internal constructor static member internal MakeEmpty: fileName: string * creationErrors: FSharpDiagnostic[] * keepAssemblyContents: bool -> FSharpCheckFileResults @@ -583,7 +589,9 @@ module internal ParseAndCheckFile = options: FSharpParsingOptions * userOpName: string * suggestNamesForErrors: bool * - identCapture: bool -> + flatErrors: bool * + identCapture: bool * + ct: CancellationToken -> FSharpDiagnostic[] * ParsedInput * bool val matchBraces: @@ -591,7 +599,8 @@ module internal ParseAndCheckFile = fileName: string * options: FSharpParsingOptions * userOpName: string * - suggestNamesForErrors: bool -> + suggestNamesForErrors: bool * + ct: CancellationToken -> (range * range)[] #if !FABLE_COMPILER diff --git a/src/fcs-fable/src/Compiler/Service/FSharpParseFileResults.fs b/src/fcs-fable/src/Compiler/Service/FSharpParseFileResults.fs index 3589c79f0d..427a01b3c4 100644 --- a/src/fcs-fable/src/Compiler/Service/FSharpParseFileResults.fs +++ b/src/fcs-fable/src/Compiler/Service/FSharpParseFileResults.fs @@ -7,7 +7,6 @@ open System.IO open System.Collections.Generic open System.Diagnostics open Internal.Utilities.Library -open Internal.Utilities.Library.Extras open FSharp.Compiler.Diagnostics open FSharp.Compiler.EditorServices open FSharp.Compiler.Syntax @@ -170,6 +169,21 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, let result = SyntaxTraversal.Traverse(pos, input, visitor) result.IsSome + member _.IsTypeName(range: range) = + let visitor = + { new SyntaxVisitorBase<_>() with + member _.VisitModuleDecl(_, _, synModuleDecl) = + match synModuleDecl with + | SynModuleDecl.Types (typeDefns, _) -> + typeDefns + |> Seq.exists (fun (SynTypeDefn (typeInfo, _, _, _, _, _)) -> typeInfo.Range = range) + |> Some + | _ -> None + } + + let result = SyntaxTraversal.Traverse(range.Start, input, visitor) + result |> Option.contains true + member _.TryRangeOfFunctionOrMethodBeingApplied pos = let rec getIdentRangeForFuncExprInApp traverseSynExpr expr pos = match expr with @@ -277,6 +291,8 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, // Capture the body of a lambda, often nested in a call to a collection function | SynExpr.Lambda (body = body) when rangeContainsPos body.Range pos -> getIdentRangeForFuncExprInApp traverseSynExpr body pos + | SynExpr.DotLambda (expr = body) when rangeContainsPos body.Range pos -> getIdentRangeForFuncExprInApp traverseSynExpr body pos + | SynExpr.Do (expr, range) when rangeContainsPos range pos -> getIdentRangeForFuncExprInApp traverseSynExpr expr pos | SynExpr.Assert (expr, range) when rangeContainsPos range pos -> getIdentRangeForFuncExprInApp traverseSynExpr expr pos @@ -410,9 +426,10 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, override _.VisitBinding(_path, defaultTraverse, binding) = match binding with | SynBinding(expr = SynExpr.Lambda _) when skipLambdas -> defaultTraverse binding + | SynBinding(expr = SynExpr.DotLambda _) when skipLambdas -> defaultTraverse binding // Skip manually type-annotated bindings - | SynBinding(returnInfo = Some (SynBindingReturnInfo(typeName = SynType.LongIdent _))) -> defaultTraverse binding + | SynBinding(returnInfo = Some (SynBindingReturnInfo _)) -> defaultTraverse binding // Let binding | SynBinding (trivia = { EqualsRange = Some equalsRange }; range = range) when range.Start = symbolUseStart -> @@ -490,6 +507,24 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, let result = SyntaxTraversal.Traverse(pos, input, visitor) result.IsSome + member _.IsPositionWithinTypeDefinition pos = + let visitor = + { new SyntaxVisitorBase<_>() with + override _.VisitComponentInfo(path, _) = + let typeDefs = + path + |> List.filter (function + | SyntaxNode.SynModule (SynModuleDecl.Types _) -> true + | _ -> false) + + match typeDefs with + | [] -> None + | _ -> Some true + } + + let result = SyntaxTraversal.Traverse(pos, input, visitor) + result.IsSome + member _.IsBindingALambdaAtPosition pos = let visitor = { new SyntaxVisitorBase<_>() with @@ -500,6 +535,7 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, | SynBinding.SynBinding (expr = expr; range = range) when Position.posEq range.Start pos -> match expr with | SynExpr.Lambda _ -> Some range + | SynExpr.DotLambda _ -> Some range | _ -> None | _ -> defaultTraverse binding } @@ -507,6 +543,27 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, let result = SyntaxTraversal.Traverse(pos, input, visitor) result.IsSome + member _.IsPositionWithinRecordDefinition pos = + let isWithin left right middle = + Position.posGt right left && Position.posLt middle right + + let visitor = + { new SyntaxVisitorBase<_>() with + override _.VisitRecordDefn(_, _, range) = + if pos |> isWithin range.Start range.End then + Some true + else + None + + override _.VisitTypeAbbrev(_, synType, range) = + match synType with + | SynType.AnonRecd _ when pos |> isWithin range.Start range.End -> Some true + | _ -> None + } + + let result = SyntaxTraversal.Traverse(pos, input, visitor) + result.IsSome + /// Get declared items and the selected item at the specified location member _.GetNavigationItemsImpl() = DiagnosticsScope.Protect @@ -634,6 +691,7 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, match expr with | SynExpr.ArbitraryAfterError _ | SynExpr.LongIdent _ + | SynExpr.DotLambda _ | SynExpr.LibraryOnlyILAssembly _ | SynExpr.LibraryOnlyStaticOptimization _ | SynExpr.Null _ @@ -763,7 +821,8 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, for SynInterfaceImpl (bindings = bs) in is do yield! walkBinds bs - | SynExpr.While (spWhile, e1, e2, _) -> + | SynExpr.While (spWhile, e1, e2, _) + | SynExpr.WhileBang (spWhile, e1, e2, _) -> yield! walkWhileSeqPt spWhile yield! walkExpr false e1 yield! walkExpr true e2 @@ -795,7 +854,8 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, | SynExpr.Lambda (body = bodyExpr) -> yield! walkExpr true bodyExpr - | SynExpr.Match (matchDebugPoint = spBind; expr = inpExpr; clauses = cl) -> + | SynExpr.Match (matchDebugPoint = spBind; expr = inpExpr; clauses = cl) + | SynExpr.MatchBang (matchDebugPoint = spBind; expr = inpExpr; clauses = cl) -> yield! walkBindSeqPt spBind yield! walkExpr false inpExpr @@ -877,14 +937,6 @@ type FSharpParseFileResults(diagnostics: FSharpDiagnostic[], input: ParsedInput, yield! walkExpr true eAndBang yield! walkExpr true bodyExpr - - | SynExpr.MatchBang (matchDebugPoint = spBind; expr = inpExpr; clauses = clauses) -> - yield! walkBindSeqPt spBind - yield! walkExpr false inpExpr - - for SynMatchClause (whenExpr = whenExpr; resultExpr = resExpr) in clauses do - yield! walkExprOpt true whenExpr - yield! walkExpr true resExpr ] // Process a class declaration or F# type declaration diff --git a/src/fcs-fable/src/Compiler/Service/FSharpParseFileResults.fsi b/src/fcs-fable/src/Compiler/Service/FSharpParseFileResults.fsi index 2d3918015c..e892c78aa8 100644 --- a/src/fcs-fable/src/Compiler/Service/FSharpParseFileResults.fsi +++ b/src/fcs-fable/src/Compiler/Service/FSharpParseFileResults.fsi @@ -36,6 +36,9 @@ type public FSharpParseFileResults = /// Determines if the given position is inside a function or method application. member IsPosContainedInApplication: pos: pos -> bool + /// Determines if the range points to a type name in the type definition. + member IsTypeName: range: range -> bool + /// Attempts to find the range of a function or method that is being applied. Also accounts for functions in pipelines. member TryRangeOfFunctionOrMethodBeingApplied: pos: pos -> range option @@ -65,9 +68,15 @@ type public FSharpParseFileResults = /// Determines if the expression or pattern at the given position has a type annotation member IsTypeAnnotationGivenAtPosition: pos -> bool + /// Determines if the given position is bound to a type definition + member IsPositionWithinTypeDefinition: pos -> bool + /// Determines if the binding at the given position is bound to a lambda expression member IsBindingALambdaAtPosition: pos -> bool + /// Determines if the given position is bound to a record definition + member IsPositionWithinRecordDefinition: pos -> bool + /// Name of the file for which this information were created member FileName: string diff --git a/src/fcs-fable/src/Compiler/Service/FSharpSource.fs b/src/fcs-fable/src/Compiler/Service/FSharpSource.fs index 9c29b18849..f7cc8868ff 100644 --- a/src/fcs-fable/src/Compiler/Service/FSharpSource.fs +++ b/src/fcs-fable/src/Compiler/Service/FSharpSource.fs @@ -32,7 +32,7 @@ type FSharpSource internal () = abstract TimeStamp: DateTime - abstract GetTextContainer: unit -> TextContainer + abstract GetTextContainer: unit -> Async #if !FABLE_COMPILER @@ -43,7 +43,8 @@ type private FSharpSourceMemoryMappedFile(filePath: string, timeStamp: DateTime, override _.TimeStamp = timeStamp - override _.GetTextContainer() = openStream () |> TextContainer.Stream + override _.GetTextContainer() = + openStream () |> TextContainer.Stream |> async.Return type private FSharpSourceByteArray(filePath: string, timeStamp: DateTime, bytes: byte[]) = inherit FSharpSource() @@ -54,6 +55,7 @@ type private FSharpSourceByteArray(filePath: string, timeStamp: DateTime, bytes: override _.GetTextContainer() = TextContainer.Stream(new MemoryStream(bytes, 0, bytes.Length, false) :> Stream) + |> async.Return type private FSharpSourceFromFile(filePath: string) = inherit FSharpSource() @@ -62,7 +64,7 @@ type private FSharpSourceFromFile(filePath: string) = override _.TimeStamp = FileSystem.GetLastWriteTimeShim(filePath) - override _.GetTextContainer() = TextContainer.OnDisk + override _.GetTextContainer() = TextContainer.OnDisk |> async.Return #endif //!FABLE_COMPILER @@ -74,9 +76,14 @@ type private FSharpSourceCustom(filePath: string, getTimeStamp, getSourceText) = override _.TimeStamp = getTimeStamp () override _.GetTextContainer() = - getSourceText () - |> Option.map TextContainer.SourceText - |> Option.defaultValue TextContainer.OnDisk + async { + let! sourceOpt = getSourceText () + + return + sourceOpt + |> Option.map TextContainer.SourceText + |> Option.defaultValue TextContainer.OnDisk + } type FSharpSource with diff --git a/src/fcs-fable/src/Compiler/Service/FSharpSource.fsi b/src/fcs-fable/src/Compiler/Service/FSharpSource.fsi index 2ab2fb1240..d2b349327e 100644 --- a/src/fcs-fable/src/Compiler/Service/FSharpSource.fsi +++ b/src/fcs-fable/src/Compiler/Service/FSharpSource.fsi @@ -28,7 +28,7 @@ type internal FSharpSource = abstract TimeStamp: DateTime /// Gets the internal text container. Text may be on-disk, in a stream, or a source text. - abstract internal GetTextContainer: unit -> TextContainer + abstract internal GetTextContainer: unit -> Async #if !FABLE_COMPILER /// Creates a FSharpSource from disk. Only used internally. @@ -40,5 +40,5 @@ type internal FSharpSource = /// Creates a FSharpSource. static member Create: - filePath: string * getTimeStamp: (unit -> DateTime) * getSourceText: (unit -> ISourceText option) -> + filePath: string * getTimeStamp: (unit -> DateTime) * getSourceText: (unit -> Async) -> FSharpSource diff --git a/src/fcs-fable/src/Compiler/Service/IncrementalBuild.fs b/src/fcs-fable/src/Compiler/Service/IncrementalBuild.fs index 21d8ef1706..c296e1f6a5 100644 --- a/src/fcs-fable/src/Compiler/Service/IncrementalBuild.fs +++ b/src/fcs-fable/src/Compiler/Service/IncrementalBuild.fs @@ -152,38 +152,41 @@ module IncrementalBuildSyntaxTree = ), sourceRange, fileName, [||] let parse (source: FSharpSource) = - IncrementalBuilderEventTesting.MRU.Add(IncrementalBuilderEventTesting.IBEParsed fileName) - use _ = - Activity.start "IncrementalBuildSyntaxTree.parse" - [| - Activity.Tags.fileName, fileName - Activity.Tags.buildPhase, BuildPhase.Parse.ToString() - |] - - try - let diagnosticsLogger = CompilationDiagnosticLogger("Parse", tcConfig.diagnosticsOptions) - // Return the disposable object that cleans up - use _holder = new CompilationGlobalsScope(diagnosticsLogger, BuildPhase.Parse) - use text = source.GetTextContainer() - let input = - match text with - | TextContainer.Stream(stream) -> - ParseOneInputStream(tcConfig, lexResourceManager, fileName, isLastCompiland, diagnosticsLogger, false, stream) - | TextContainer.SourceText(sourceText) -> - ParseOneInputSourceText(tcConfig, lexResourceManager, fileName, isLastCompiland, diagnosticsLogger, sourceText) - | TextContainer.OnDisk -> - ParseOneInputFile(tcConfig, lexResourceManager, fileName, isLastCompiland, diagnosticsLogger, true) - - fileParsed.Trigger fileName - - input, sourceRange, fileName, diagnosticsLogger.GetDiagnostics() - with exn -> - let msg = sprintf "unexpected failure in SyntaxTree.parse\nerror = %s" (exn.ToString()) - System.Diagnostics.Debug.Assert(false, msg) - failwith msg + node { + IncrementalBuilderEventTesting.MRU.Add(IncrementalBuilderEventTesting.IBEParsed fileName) + use _ = + Activity.start "IncrementalBuildSyntaxTree.parse" + [| + Activity.Tags.fileName, fileName + Activity.Tags.buildPhase, BuildPhase.Parse.ToString() + |] + + try + let diagnosticsLogger = CompilationDiagnosticLogger("Parse", tcConfig.diagnosticsOptions) + // Return the disposable object that cleans up + use _holder = new CompilationGlobalsScope(diagnosticsLogger, BuildPhase.Parse) + use! text = source.GetTextContainer() |> NodeCode.AwaitAsync + let input = + match text :?> TextContainer with + | TextContainer.Stream(stream) -> + ParseOneInputStream(tcConfig, lexResourceManager, fileName, isLastCompiland, diagnosticsLogger, false, stream) + | TextContainer.SourceText(sourceText) -> + ParseOneInputSourceText(tcConfig, lexResourceManager, fileName, isLastCompiland, diagnosticsLogger, sourceText) + | TextContainer.OnDisk -> + ParseOneInputFile(tcConfig, lexResourceManager, fileName, isLastCompiland, diagnosticsLogger, true) + + fileParsed.Trigger fileName + + return input, sourceRange, fileName, diagnosticsLogger.GetDiagnostics() + with exn -> + let msg = sprintf "unexpected failure in SyntaxTree.parse\nerror = %s" (exn.ToString()) + System.Diagnostics.Debug.Assert(false, msg) + failwith msg + return Unchecked.defaultof<_> + } /// Parse the given file and return the given input. - member val ParseNode : GraphNode = node { return parse source } |> GraphNode + member val ParseNode : GraphNode = parse source |> GraphNode member _.Invalidate() = SyntaxTree(tcConfig, fileParsed, lexResourceManager, file, hasSignature) @@ -247,7 +250,8 @@ module ValueOption = | ValueSome x -> Some x | _ -> None -type private TypeCheck = TcInfo * TcResultsSinkImpl * CheckedImplFile option * string +type private SingleFileDiagnostics = (PhasedDiagnostic * FSharpDiagnosticSeverity) array +type private TypeCheck = TcInfo * TcResultsSinkImpl * CheckedImplFile option * string * SingleFileDiagnostics /// Bound model of an underlying syntax and typed tree. type BoundModel private ( @@ -312,7 +316,7 @@ type BoundModel private ( | _ -> None } - return tcInfo, sink, implFile, fileName + return tcInfo, sink, implFile, fileName, newErrors } let skippedImplemetationTypeCheck = @@ -335,19 +339,19 @@ type BoundModel private ( let getTcInfo (typeCheck: GraphNode) = node { - let! tcInfo , _, _, _ = typeCheck.GetOrComputeValue() + let! tcInfo , _, _, _, _ = typeCheck.GetOrComputeValue() return tcInfo } |> GraphNode let getTcInfoExtras (typeCheck: GraphNode) = node { - let! _ , sink, implFile, fileName = typeCheck.GetOrComputeValue() + let! _ , sink, implFile, fileName, _ = typeCheck.GetOrComputeValue() // Build symbol keys let itemKeyStore, semanticClassification = if enableBackgroundItemKeyStoreAndSemanticClassification then use _ = Activity.start "IncrementalBuild.CreateItemKeyStoreAndSemanticClassification" [|Activity.Tags.fileName, fileName|] let sResolutions = sink.GetResolutions() - let builder = ItemKeyStoreBuilder() + let builder = ItemKeyStoreBuilder(tcGlobals) let preventDuplicates = HashSet({ new IEqualityComparer with member _.Equals((s1, e1): struct(pos * pos), (s2, e2): struct(pos * pos)) = Position.posEq s1 s2 && Position.posEq e1 e2 member _.GetHashCode o = o.GetHashCode() }) @@ -378,22 +382,36 @@ type BoundModel private ( } } |> GraphNode + let defaultTypeCheck = node { return prevTcInfo, TcResultsSinkImpl(tcGlobals), None, "default typecheck - no syntaxTree", [||] } + let typeCheckNode = syntaxTreeOpt |> Option.map getTypeCheck |> Option.defaultValue defaultTypeCheck |> GraphNode + let tcInfoExtras = getTcInfoExtras typeCheckNode + let diagnostics = + node { + let! _, _, _, _, diags = typeCheckNode.GetOrComputeValue() + return diags + } |> GraphNode + + let startComputingFullTypeCheck = + node { + let! _ = tcInfoExtras.GetOrComputeValue() + return! diagnostics.GetOrComputeValue() + } + let tcInfo, tcInfoExtras = - let defaultTypeCheck = node { return prevTcInfo, TcResultsSinkImpl(tcGlobals), None, "default typecheck - no syntaxTree" } - let typeCheckNode = syntaxTreeOpt |> Option.map getTypeCheck |> Option.defaultValue defaultTypeCheck |> GraphNode match tcStateOpt with | Some tcState -> tcState | _ -> match skippedImplemetationTypeCheck with - | Some info -> + | Some tcInfo -> // For skipped implementation sources do full type check only when requested. - GraphNode.FromResult info, getTcInfoExtras typeCheckNode + GraphNode.FromResult tcInfo, tcInfoExtras | _ -> - let tcInfoExtras = getTcInfoExtras typeCheckNode // start computing extras, so that typeCheckNode can be GC'd quickly - tcInfoExtras.GetOrComputeValue() |> Async.AwaitNodeCode |> Async.Ignore |> Async.Start + startComputingFullTypeCheck |> Async.AwaitNodeCode |> Async.Catch |> Async.Ignore |> Async.Start getTcInfo typeCheckNode, tcInfoExtras + member val Diagnostics = diagnostics + member val TcInfo = tcInfo member val TcInfoExtras = tcInfoExtras @@ -646,7 +664,7 @@ module IncrementalBuilderHelpers = #if !NO_TYPEPROVIDERS ,importsInvalidatedByTypeProvider: Event #endif - ) : NodeCode = + ) : NodeCode = node { let diagnosticsLogger = CompilationDiagnosticLogger("CombineImportedAssembliesTask", tcConfig.diagnosticsOptions) @@ -719,11 +737,11 @@ module IncrementalBuilderHelpers = fileChecked, tcInfo, None - ) + ), initialErrors } /// Finish up the typechecking to produce outputs for the rest of the compilation process - let FinalizeTypeCheckTask (tcConfig: TcConfig) tcGlobals partialCheck assemblyName outfile (boundModels: GraphNode seq) = + let FinalizeTypeCheckTask (tcConfig: TcConfig) tcGlobals partialCheck assemblyName outfile (initialErrors: SingleFileDiagnostics) (boundModels: GraphNode seq) = node { let diagnosticsLogger = CompilationDiagnosticLogger("FinalizeTypeCheckTask", tcConfig.diagnosticsOptions) use _ = new CompilationGlobalsScope(diagnosticsLogger, BuildPhase.TypeCheck) @@ -809,7 +827,18 @@ module IncrementalBuilderHelpers = mkSimpleAssemblyRef assemblyName, ProjectAssemblyDataResult.Unavailable true, None let finalBoundModel = Array.last computedBoundModels - let diagnostics = diagnosticsLogger.GetDiagnostics() :: finalInfo.tcDiagnosticsRev + + // Collect diagnostics. This will type check in parallel any implementation files skipped so far. + let! partialDiagnostics = + computedBoundModels + |> Seq.map (fun m -> m.Diagnostics.GetOrComputeValue()) + |> NodeCode.Parallel + let diagnostics = [ + diagnosticsLogger.GetDiagnostics() + yield! partialDiagnostics |> Seq.rev + initialErrors + ] + let! finalBoundModelWithErrors = finalBoundModel.Finish(diagnostics, Some topAttrs) return ilAssemRef, tcAssemblyDataOpt, tcAssemblyExprOpt, finalBoundModelWithErrors } @@ -818,6 +847,7 @@ module IncrementalBuilderHelpers = type IncrementalBuilderInitialState = { initialBoundModel: BoundModel + initialErrors: SingleFileDiagnostics tcGlobals: TcGlobals referencedAssemblies: ImmutableArray * (TimeStampCache -> DateTime)> tcConfig: TcConfig @@ -843,6 +873,7 @@ type IncrementalBuilderInitialState = static member Create ( initialBoundModel: BoundModel, + initialErrors: SingleFileDiagnostics, tcGlobals, nonFrameworkAssemblyInputs, tcConfig: TcConfig, @@ -865,6 +896,7 @@ type IncrementalBuilderInitialState = let initialState = { initialBoundModel = initialBoundModel + initialErrors = initialErrors tcGlobals = tcGlobals referencedAssemblies = nonFrameworkAssemblyInputs |> ImmutableArray.ofSeq tcConfig = tcConfig @@ -930,9 +962,10 @@ module IncrementalBuilderStateHelpers = return! prevBoundModel.Next(syntaxTree) }) - let rec createFinalizeBoundModelGraphNode (initialState: IncrementalBuilderInitialState) (boundModels: GraphNode seq) = + let createFinalizeBoundModelGraphNode (initialState: IncrementalBuilderInitialState) (boundModels: GraphNode seq) = GraphNode(node { use _ = Activity.start "GetCheckResultsAndImplementationsForProject" [|Activity.Tags.project, initialState.outfile|] + let! initialErrors = initialState.initialBoundModel.Diagnostics.GetOrComputeValue() let! result = FinalizeTypeCheckTask initialState.tcConfig @@ -940,11 +973,12 @@ module IncrementalBuilderStateHelpers = initialState.enablePartialTypeChecking initialState.assemblyName initialState.outfile + initialErrors boundModels return result, DateTime.UtcNow }) - and computeStampedFileNames (initialState: IncrementalBuilderInitialState) (state: IncrementalBuilderState) (cache: TimeStampCache) = + let computeStampedFileNames (initialState: IncrementalBuilderInitialState) (state: IncrementalBuilderState) (cache: TimeStampCache) = let slots = if initialState.useChangeNotifications then state.slots @@ -983,7 +1017,7 @@ module IncrementalBuilderStateHelpers = else state - and computeStampedReferencedAssemblies (initialState: IncrementalBuilderInitialState) state canTriggerInvalidation (cache: TimeStampCache) = + let computeStampedReferencedAssemblies (initialState: IncrementalBuilderInitialState) state canTriggerInvalidation (cache: TimeStampCache) = let stampedReferencedAssemblies = state.stampedReferencedAssemblies.ToBuilder() let mutable referencesUpdated = false @@ -1051,7 +1085,7 @@ type IncrementalBuilderState with HasSignature = hasSignature Stamp = DateTime.MinValue LogicalStamp = DateTime.MinValue - Notified = false + Notified = true SyntaxTree = syntaxTree BoundModel = model } @@ -1148,11 +1182,6 @@ type IncrementalBuilder(initialState: IncrementalBuilderInitialState, state: Inc do! setCurrentState currentState cache ct } - let checkFileTimeStampsSynchronously cache = - checkFileTimeStamps cache - |> Async.AwaitNodeCode - |> Async.RunSynchronously - do IncrementalBuilderEventTesting.MRU.Add(IncrementalBuilderEventTesting.IBECreated) member _.TcConfig = tcConfig @@ -1208,10 +1237,10 @@ type IncrementalBuilder(initialState: IncrementalBuilderInitialState, state: Inc member builder.TryGetCheckResultsBeforeFileInProject fileName = let cache = TimeStampCache defaultTimeStamp - checkFileTimeStampsSynchronously cache + let tmpState = computeStampedFileNames initialState currentState cache let slotOfFile = builder.GetSlotOfFileName fileName - match tryGetBeforeSlot currentState slotOfFile with + match tryGetBeforeSlot tmpState slotOfFile with | Some(boundModel, timestamp) -> let projectTimeStamp = builder.GetLogicalTimeStampForFileInProject(fileName) Some (PartialCheckResults (boundModel, timestamp, projectTimeStamp)) @@ -1293,12 +1322,12 @@ type IncrementalBuilder(initialState: IncrementalBuilderInitialState, state: Inc member _.GetLogicalTimeStampForFileInProject(slotOfFile: int) = let cache = TimeStampCache defaultTimeStamp - checkFileTimeStampsSynchronously cache - computeProjectTimeStamp currentState slotOfFile + let tempState = computeStampedFileNames initialState currentState cache + computeProjectTimeStamp tempState slotOfFile member _.GetLogicalTimeStampForProject(cache) = - checkFileTimeStampsSynchronously cache - computeProjectTimeStamp currentState -1 + let tempState = computeStampedFileNames initialState currentState cache + computeProjectTimeStamp tempState -1 member _.TryGetSlotOfFileName(fileName: string) = // Get the slot of the given file and force it to build. @@ -1550,7 +1579,7 @@ type IncrementalBuilder(initialState: IncrementalBuilderInitialState, state: Inc let defaultTimeStamp = DateTime.UtcNow - let! initialBoundModel = + let! initialBoundModel, initialErrors = CombineImportedAssembliesTask( assemblyName, tcConfig, @@ -1584,12 +1613,13 @@ type IncrementalBuilder(initialState: IncrementalBuilderInitialState, state: Inc let sourceFiles = sourceFiles - |> List.map (fun (m, fileName, isLastCompiland) -> + |> List.map (fun (m, fileName, isLastCompiland) -> { Range = m; Source = getFSharpSource fileName; Flags = isLastCompiland } ) let initialState = IncrementalBuilderInitialState.Create( initialBoundModel, + initialErrors, tcGlobals, nonFrameworkAssemblyInputs, tcConfig, @@ -1617,16 +1647,18 @@ type IncrementalBuilder(initialState: IncrementalBuilderInitialState, state: Inc } let diagnostics = - match builderOpt with - | Some builder -> - let diagnosticsOptions = builder.TcConfig.diagnosticsOptions - let diagnosticsLogger = CompilationDiagnosticLogger("IncrementalBuilderCreation", diagnosticsOptions) - delayedLogger.CommitDelayedDiagnostics diagnosticsLogger - diagnosticsLogger.GetDiagnostics() - | _ -> - Array.ofList delayedLogger.Diagnostics + let diagnostics, flatErrors = + match builderOpt with + | Some builder -> + let diagnosticsOptions = builder.TcConfig.diagnosticsOptions + let diagnosticsLogger = CompilationDiagnosticLogger("IncrementalBuilderCreation", diagnosticsOptions) + delayedLogger.CommitDelayedDiagnostics diagnosticsLogger + diagnosticsLogger.GetDiagnostics(), builder.TcConfig.flatErrors + | _ -> + Array.ofList delayedLogger.Diagnostics, false + diagnostics |> Array.map (fun (diagnostic, severity) -> - FSharpDiagnostic.CreateFromException(diagnostic, severity, range.Zero, suggestNamesForErrors)) + FSharpDiagnostic.CreateFromException(diagnostic, severity, range.Zero, suggestNamesForErrors, flatErrors, None)) return builderOpt, diagnostics } diff --git a/src/fcs-fable/src/Compiler/Service/IncrementalBuild.fsi b/src/fcs-fable/src/Compiler/Service/IncrementalBuild.fsi index 2df83f7bb9..c5742d9d15 100644 --- a/src/fcs-fable/src/Compiler/Service/IncrementalBuild.fsi +++ b/src/fcs-fable/src/Compiler/Service/IncrementalBuild.fsi @@ -197,6 +197,8 @@ type internal IncrementalBuilder = /// This is safe for use from non-compiler threads but the objects returned must in many cases be accessed only from the compiler thread. member GetCheckResultsForFileInProjectEvenIfStale: fileName: string -> PartialCheckResults option + // TODO: Looks like the following doc does not match the actual method or it's signature. + /// Get the preceding typecheck state of a slot, but only if it is up-to-date w.r.t. /// the timestamps on files and referenced DLLs prior to this one. Return None if the result is not available. /// This is a relatively quick operation. @@ -204,8 +206,9 @@ type internal IncrementalBuilder = /// This is safe for use from non-compiler threads member AreCheckResultsBeforeFileInProjectReady: fileName: string -> bool - /// Get the preceding typecheck state of a slot, WITH checking if it is up-to-date w.r.t. However, files will not be parsed or checked. - /// the timestamps on files and referenced DLLs prior to this one. Return None if the result is not available or if it is not up-to-date. + /// Get the preceding typecheck state of a slot, WITH checking if it is up-to-date w.r.t. the timestamps of files and referenced DLLs prior to this one. + /// However, files will not be parsed or checked. + /// Return None if the result is not available or if it is not up-to-date. /// /// This is safe for use from non-compiler threads but the objects returned must in many cases be accessed only from the compiler thread. member TryGetCheckResultsBeforeFileInProject: fileName: string -> PartialCheckResults option @@ -280,7 +283,7 @@ type internal IncrementalBuilder = dependencyProvider: DependencyProvider option * parallelReferenceResolution: ParallelReferenceResolution * captureIdentifiersWhenParsing: bool * - getSource: (string -> ISourceText option) option * + getSource: (string -> Async) option * useChangeNotifications: bool * useSyntaxTreeCache: bool -> NodeCode diff --git a/src/fcs-fable/src/Compiler/Service/ItemKey.fs b/src/fcs-fable/src/Compiler/Service/ItemKey.fs index ef0ddedc3e..c44fc6401d 100644 --- a/src/fcs-fable/src/Compiler/Service/ItemKey.fs +++ b/src/fcs-fable/src/Compiler/Service/ItemKey.fs @@ -16,6 +16,8 @@ open FSharp.Compiler.Text.Range open FSharp.Compiler.TypedTree open FSharp.Compiler.TypedTreeBasics open FSharp.Compiler.Syntax.PrettyNaming +open FSharp.Compiler.TypedTreeOps +open FSharp.Compiler.TcGlobals #nowarn "9" #nowarn "51" @@ -96,8 +98,82 @@ module ItemKeyTags = [] let parameters = "p$p$" +[] +module DebugKeyStore = + + /// A debugging tool to show what's being written into the ItemKeyStore in a more human readable way in the debugger. + type DebugKeyStore() = + + let mutable debugCurrentItem = ResizeArray() + + member val Items = ResizeArray() + + member _.WriteRange(m: range) = debugCurrentItem.Add("range", $"{m}") + + member _.WriteEntityRef(eref: EntityRef) = + debugCurrentItem.Add("EntityRef", $"{eref}") + + member _.WriteILType(ilTy: ILType) = + debugCurrentItem.Add("ILType", $"%A{ilTy}") + + member _.WriteType isStandalone (ty: TType) = + debugCurrentItem.Add("Type", $"{isStandalone} %A{ty}") + + member _.WriteMeasure isStandalone (ms: Measure) = + debugCurrentItem.Add("Measure", $"{isStandalone} %A{ms}") + + member _.WriteTypar (isStandalone: bool) (typar: Typar) = + debugCurrentItem.Add("Typar", $"{isStandalone} %A{typar}") + + member _.WriteValRef(vref: ValRef) = + debugCurrentItem.Add("ValRef", $"{vref}") + + member _.WriteValue(vref: ValRef) = + debugCurrentItem.Add("Value", $"{vref}") + + member _.WriteActivePatternCase (apInfo: ActivePatternInfo) index = + debugCurrentItem.Add("ActivePatternCase", $"{apInfo} {index}") + + member this.FinishItem(item, length) = + debugCurrentItem.Add("length", $"{length}") + this.Items.Add(item, debugCurrentItem) + let itemCount = this.Items.Count + assert (itemCount > 0) + debugCurrentItem <- ResizeArray() + + member _.New() = DebugKeyStore() + + /// A replacement for DebugKeyStore for when we're not debugging. + type _DebugKeyStoreNoop() = + + member inline _.Items = Unchecked.defaultof<_> + + member inline _.WriteRange(_m: range) = () + + member inline _.WriteEntityRef(_eref: EntityRef) = () + + member inline _.WriteILType(_ilTy: ILType) = () + + member inline _.WriteType _isStandalone (_ty: TType) = () + + member inline _.WriteMeasure _isStandalone (_ms: Measure) = () + + member inline _.WriteTypar (_isStandalone: bool) (_typar: Typar) = () + + member inline _.WriteValRef(_vref: ValRef) = () + + member inline _.WriteValue(_vref: ValRef) = () + + member inline _.WriteActivePatternCase (_apInfo: ActivePatternInfo) _index = () + + member inline _.FinishItem(_item, _length) = () + + member inline this.New() = this + + let DebugKeyStoreNoop = _DebugKeyStoreNoop () + [] -type ItemKeyStore(mmf: MemoryMappedFile, length) = +type ItemKeyStore(mmf: MemoryMappedFile, length, tcGlobals, debugStore) = let rangeBuffer = Array.zeroCreate sizeof @@ -107,6 +183,8 @@ type ItemKeyStore(mmf: MemoryMappedFile, length) = if isDisposed then raise (ObjectDisposedException("ItemKeyStore")) + member _.DebugStore = debugStore + member _.ReadRange(reader: byref) = reader.ReadBytes(sizeof, rangeBuffer, 0) MemoryMarshal.Cast(Span(rangeBuffer)).[0] @@ -133,7 +211,7 @@ type ItemKeyStore(mmf: MemoryMappedFile, length) = member this.FindAll(item: Item) = checkDispose () - let builder = ItemKeyStoreBuilder() + let builder = ItemKeyStoreBuilder(tcGlobals) builder.Write(range0, item) match builder.TryBuildAndReset() with @@ -166,10 +244,13 @@ type ItemKeyStore(mmf: MemoryMappedFile, length) = isDisposed <- true mmf.Dispose() -and [] ItemKeyStoreBuilder() = +and [] ItemKeyStoreBuilder(tcGlobals: TcGlobals) = let b = BlobBuilder() + // Change this to DebugKeyStore() for debugging (DebugStore will be available on ItemKeyStore) + let mutable debug = DebugKeyStoreNoop + let writeChar (c: char) = b.WriteUInt16(uint16 c) let writeUInt16 (i: uint16) = b.WriteUInt16 i @@ -181,16 +262,20 @@ and [] ItemKeyStoreBuilder() = let writeString (str: string) = b.WriteUTF16 str let writeRange (m: range) = + debug.WriteRange m let mutable m = m let ptr = &&m |> NativePtr.toNativeInt |> NativePtr.ofNativeInt b.WriteBytes(ptr, sizeof) let writeEntityRef (eref: EntityRef) = + debug.WriteEntityRef eref writeString ItemKeyTags.entityRef writeString eref.CompiledName eref.CompilationPath.MangledPath |> List.iter (fun str -> writeString str) let rec writeILType (ilTy: ILType) = + debug.WriteILType ilTy + match ilTy with | ILType.TypeVar n -> writeString "!" @@ -231,6 +316,8 @@ and [] ItemKeyStoreBuilder() = writeILType mref.ReturnType let rec writeType isStandalone (ty: TType) = + debug.WriteType isStandalone ty + match stripTyparEqns ty with | TType_forall (_, ty) -> writeType false ty @@ -268,6 +355,8 @@ and [] ItemKeyStoreBuilder() = writeString nm and writeMeasure isStandalone (ms: Measure) = + debug.WriteMeasure isStandalone ms + match ms with | Measure.Var typar -> writeString ItemKeyTags.typeMeasureVar @@ -278,6 +367,8 @@ and [] ItemKeyStoreBuilder() = | _ -> () and writeTypar (isStandalone: bool) (typar: Typar) = + debug.WriteTypar isStandalone typar + match typar.Solution with | Some ty -> writeType isStandalone ty | _ -> @@ -285,13 +376,29 @@ and [] ItemKeyStoreBuilder() = writeInt64 typar.Stamp let writeValRef (vref: ValRef) = + debug.WriteValRef vref + match vref.MemberInfo with | Some memberInfo -> writeString ItemKeyTags.itemValueMember - writeEntityRef memberInfo.ApparentEnclosingEntity + + match vref.IsOverrideOrExplicitImpl, vref.MemberInfo with + | true, + Some { + ImplementedSlotSigs = slotSig :: _tail + } -> slotSig.DeclaringType |> writeType false + | _ -> writeEntityRef memberInfo.ApparentEnclosingEntity + writeString vref.LogicalName writeString ItemKeyTags.parameters - writeType false vref.Type + + match vref.IsInstanceMember, tryDestFunTy tcGlobals vref.Type with + // In case of an instance member, we will skip the type of "this" because it will differ + // between the definition and overrides. Also it's not needed to uniquely identify the reference. + | true, ValueSome (_thisTy, funTy) -> funTy + | _ -> vref.Type + |> writeType false + | _ -> writeString ItemKeyTags.itemValue writeString vref.LogicalName @@ -306,7 +413,26 @@ and [] ItemKeyStoreBuilder() = | ParentNone -> writeChar '%' | Parent eref -> writeEntityRef eref + let writeValue (vref: ValRef) = + debug.WriteValue vref + + if vref.IsPropertyGetterMethod || vref.IsPropertySetterMethod then + writeString ItemKeyTags.itemProperty + writeString vref.PropertyName + + match vref.IsOverrideOrExplicitImpl, vref.MemberInfo with + | true, Some { ImplementedSlotSigs = slotSig :: _ } -> slotSig.DeclaringType |> writeType false + | _ -> + + match vref.TryDeclaringEntity with + | ParentRef.Parent parent -> writeEntityRef parent + | _ -> () + else + writeValRef vref + let writeActivePatternCase (apInfo: ActivePatternInfo) index = + debug.WriteActivePatternCase apInfo index + writeString ItemKeyTags.itemActivePattern match apInfo.ActiveTagsWithRanges with @@ -327,16 +453,7 @@ and [] ItemKeyStoreBuilder() = let preCount = b.Count match item with - | Item.Value vref -> - if vref.IsPropertyGetterMethod || vref.IsPropertySetterMethod then - writeString ItemKeyTags.itemProperty - writeString vref.PropertyName - - match vref.TryDeclaringEntity with - | ParentRef.Parent parent -> writeEntityRef parent - | _ -> () - else - writeValRef vref + | Item.Value vref -> writeValue vref | Item.UnionCase (info, _) -> writeString ItemKeyTags.typeUnionCase @@ -383,7 +500,7 @@ and [] ItemKeyStoreBuilder() = writeString info.EventName writeEntityRef info.DeclaringTyconRef - | Item.Property (nm, infos) -> + | Item.Property (nm, infos, _) -> writeString ItemKeyTags.itemProperty writeString nm @@ -408,12 +525,13 @@ and [] ItemKeyStoreBuilder() = | Item.CtorGroup (_, [ info ]) -> match info with | FSMeth (_, ty, vref, _) when vref.IsConstructor -> writeType true ty - | FSMeth (_, _, vref, _) -> writeValRef vref - | ILMeth (_, info, _) -> - info.ILMethodRef.ArgTypes |> List.iter writeILType - writeILType info.ILMethodRef.ReturnType - writeString info.ILName - writeType false info.ApparentEnclosingType + | FSMeth (_, _, vref, _) -> writeValue vref + | ILMeth (_, ilMethInfo, _) when info.IsConstructor -> writeType true ilMethInfo.ApparentEnclosingType + | ILMeth (_, ilMethInfo, _) -> + ilMethInfo.ILMethodRef.ArgTypes |> List.iter writeILType + writeILType ilMethInfo.ILMethodRef.ReturnType + writeString ilMethInfo.ILName + writeType false ilMethInfo.ApparentEnclosingType | _ -> writeString ItemKeyTags.itemValueMember writeEntityRef info.DeclaringTyconRef @@ -467,6 +585,7 @@ and [] ItemKeyStoreBuilder() = let postCount = b.Count fixup.WriteInt32(postCount - preCount) + debug.FinishItem(item, postCount - preCount) member _.TryBuildAndReset() = if b.Count > 0 then @@ -488,7 +607,10 @@ and [] ItemKeyStoreBuilder() = b.Clear() - Some(new ItemKeyStore(mmf, length)) + let result = Some(new ItemKeyStore(mmf, length, tcGlobals, debug.Items)) + debug <- debug.New() + result else b.Clear() + debug <- debug.New() None diff --git a/src/fcs-fable/src/Compiler/Service/ItemKey.fsi b/src/fcs-fable/src/Compiler/Service/ItemKey.fsi index aac62b5f27..11d99e5c00 100644 --- a/src/fcs-fable/src/Compiler/Service/ItemKey.fsi +++ b/src/fcs-fable/src/Compiler/Service/ItemKey.fsi @@ -5,6 +5,7 @@ namespace FSharp.Compiler.CodeAnalysis open System open FSharp.Compiler.NameResolution open FSharp.Compiler.Text +open FSharp.Compiler.TcGlobals /// Stores a list of item key strings and their ranges in a memory mapped file. [] @@ -17,7 +18,7 @@ type internal ItemKeyStore = [] type internal ItemKeyStoreBuilder = - new: unit -> ItemKeyStoreBuilder + new: TcGlobals -> ItemKeyStoreBuilder member Write: range * Item -> unit diff --git a/src/fcs-fable/src/Compiler/Service/QuickParse.fs b/src/fcs-fable/src/Compiler/Service/QuickParse.fs index dba79e70f9..50b3fabed0 100644 --- a/src/fcs-fable/src/Compiler/Service/QuickParse.fs +++ b/src/fcs-fable/src/Compiler/Service/QuickParse.fs @@ -88,7 +88,7 @@ module QuickParse = #endif | _ -> false - let GetCompleteIdentifierIslandImpl (lineStr: string) (index: int) : (string * int * bool) option = + let GetCompleteIdentifierIslandImplAux (lineStr: string) (index: int) : (string * int * bool) option = if index < 0 || isNull lineStr || index >= lineStr.Length then None else @@ -182,6 +182,11 @@ module QuickParse = let pos = r + MagicalAdjustmentConstant Some(ident, pos, false)) + let GetCompleteIdentifierIslandImpl (lineStr: string MaybeNull) (index: int) : (string * int * bool) option = + match lineStr with + | Null -> None + | NonNull lineStr -> GetCompleteIdentifierIslandImplAux lineStr index + /// Given a string and a position in that string, find an identifier as /// expected by `GotoDefinition`. This will work when the cursor is /// immediately before the identifier, within the identifier, or immediately @@ -219,10 +224,8 @@ module QuickParse = let private defaultName = [], "" /// Get the partial long name of the identifier to the left of index. - let GetPartialLongName (lineStr: string, index: int) = - if isNull lineStr then - defaultName - elif index < 0 then + let GetPartialLongNameAux (lineStr: string, index: int) = + if index < 0 then defaultName elif index >= lineStr.Length then defaultName @@ -273,16 +276,19 @@ module QuickParse = let result = InResidue(index, index) result + let GetPartialLongName (lineStr: string MaybeNull, index: int) = + match lineStr with + | Null -> defaultName + | NonNull lineStr -> GetPartialLongNameAux(lineStr, index) + type private EatCommentCallContext = | SkipWhiteSpaces of ident: string * current: string list * throwAwayNext: bool | StartIdentifier of current: string list * throwAway: bool /// Get the partial long name of the identifier to the left of index. /// For example, for `System.DateTime.Now` it returns PartialLongName ([|"System"; "DateTime"|], "Now", Some 32), where "32" pos of the last dot. - let GetPartialLongNameEx (lineStr: string, index: int) : PartialLongName = - if isNull lineStr then - PartialLongName.Empty(index) - elif index < 0 then + let GetPartialLongNameExAux (lineStr: string, index: int) : PartialLongName = + if index < 0 then PartialLongName.Empty(index) elif index >= lineStr.Length then PartialLongName.Empty(index) @@ -425,6 +431,11 @@ module QuickParse = QualifyingIdents = plid } + let GetPartialLongNameEx (lineStr: string MaybeNull, index: int) : PartialLongName = + match lineStr with + | Null -> PartialLongName.Empty(index) + | NonNull lineStr -> GetPartialLongNameExAux(lineStr, index) + let TokenNameEquals (tokenInfo: FSharpTokenInfo) (token2: string) = String.Compare(tokenInfo.TokenName, token2, StringComparison.OrdinalIgnoreCase) = 0 diff --git a/src/fcs-fable/src/Compiler/Service/SemanticClassification.fs b/src/fcs-fable/src/Compiler/Service/SemanticClassification.fs index c385fedf24..c221d175c7 100644 --- a/src/fcs-fable/src/Compiler/Service/SemanticClassification.fs +++ b/src/fcs-fable/src/Compiler/Service/SemanticClassification.fs @@ -101,19 +101,19 @@ module TcResolutionsExtensions = let reprToClassificationType g repr tcref = match repr with - | TFSharpObjectRepr om -> + | TFSharpTyconRepr om -> match om.fsobjmodel_kind with + | TFSharpUnion + | TFSharpRecord -> + if isStructTyconRef g tcref then + SemanticClassificationType.ValueType + else + SemanticClassificationType.Type | TFSharpClass -> SemanticClassificationType.ReferenceType | TFSharpInterface -> SemanticClassificationType.Interface | TFSharpStruct -> SemanticClassificationType.ValueType | TFSharpDelegate _ -> SemanticClassificationType.Delegate | TFSharpEnum -> SemanticClassificationType.Enumeration - | TFSharpRecdRepr _ - | TFSharpUnionRepr _ -> - if isStructTyconRef g tcref then - SemanticClassificationType.ValueType - else - SemanticClassificationType.Type | TILObjectRepr (TILObjectReprData (_, _, td)) -> if td.IsClass then SemanticClassificationType.ReferenceType @@ -170,7 +170,7 @@ module TcResolutionsExtensions = let (|EnumCaseFieldInfo|_|) (rfinfo: RecdFieldInfo) = match rfinfo.TyconRef.TypeReprInfo with - | TFSharpObjectRepr x -> + | TFSharpTyconRepr x -> match x.fsobjmodel_kind with | TFSharpEnum -> Some() | _ -> None @@ -203,11 +203,7 @@ module TcResolutionsExtensions = let duplicates = HashSet(comparer) -#if FABLE_COMPILER - let results = ResizeArray<_>() -#else let results = ImmutableArray.CreateBuilder() -#endif let inline add m (typ: SemanticClassificationType) = if duplicates.Add m then @@ -272,7 +268,7 @@ module TcResolutionsExtensions = else add m SemanticClassificationType.RecordField - | Item.Property (_, pinfo :: _), _, m -> + | Item.Property(info = pinfo :: _), _, m -> if not pinfo.IsIndexer then add m SemanticClassificationType.Property @@ -360,8 +356,6 @@ module TcResolutionsExtensions = | Item.SetterArg _, _, m -> add m SemanticClassificationType.NamedArgument - | Item.SetterArg _, _, m -> add m SemanticClassificationType.Property - | Item.UnqualifiedType (tcref :: _), LegitTypeOccurence, m -> if tcref.IsEnumTycon || tcref.IsILEnumTycon then add m SemanticClassificationType.Enumeration @@ -402,7 +396,11 @@ module TcResolutionsExtensions = formatSpecifierLocations |> Array.map (fun (m, _) -> SemanticClassificationItem((m, SemanticClassificationType.Printf))) +#if FABLE_COMPILER + results.AddRange(locs :> IEnumerable) +#else results.AddRange(locs) +#endif results.ToArray()) (fun msg -> Trace.TraceInformation(sprintf "FCS: recovering from error in GetSemanticClassification: '%s'" msg) diff --git a/src/fcs-fable/src/Compiler/Service/ServiceAnalysis.fs b/src/fcs-fable/src/Compiler/Service/ServiceAnalysis.fs index 38af8f7156..9d639bfc0a 100644 --- a/src/fcs-fable/src/Compiler/Service/ServiceAnalysis.fs +++ b/src/fcs-fable/src/Compiler/Service/ServiceAnalysis.fs @@ -373,7 +373,7 @@ module SimplifyNames = r.EndColumn - name.Length - (getPlidLength necessaryPlid) let unnecessaryRange = - mkRange r.FileName (Position.mkPos r.StartLine plidStartCol) (Position.mkPos r.EndLine necessaryPlidStartCol) + withStartEnd (Position.mkPos r.StartLine plidStartCol) (Position.mkPos r.EndLine necessaryPlidStartCol) r let relativeName = (String.concat "." plid) + "." + name diff --git a/src/fcs-fable/src/Compiler/Service/ServiceAssemblyContent.fs b/src/fcs-fable/src/Compiler/Service/ServiceAssemblyContent.fs index 1086bba0f4..46d5ad97d7 100644 --- a/src/fcs-fable/src/Compiler/Service/ServiceAssemblyContent.fs +++ b/src/fcs-fable/src/Compiler/Service/ServiceAssemblyContent.fs @@ -249,7 +249,7 @@ module AssemblyContent = // are not triggered (see "if not entity.IsProvided") and the other data accessed is immutable or computed safely // on-demand. However a more compete review may be warranted. - use _ignoreAllDiagnostics = new DiagnosticsScope() + use _ignoreAllDiagnostics = new DiagnosticsScope(false) signature.TryGetEntities() |> Seq.collect (traverseEntity contentType Parent.Empty) @@ -267,7 +267,7 @@ module AssemblyContent = // concurrently with other threads. On an initial review this is not a problem since type provider computations // are not triggered (see "if not entity.IsProvided") and the other data accessed is immutable or computed safely // on-demand. However a more compete review may be warranted. - use _ignoreAllDiagnostics = new DiagnosticsScope() + use _ignoreAllDiagnostics = new DiagnosticsScope(false) #if !NO_TYPEPROVIDERS match assemblies |> List.filter (fun x -> not x.IsProviderGenerated), fileName with diff --git a/src/fcs-fable/src/Compiler/Service/ServiceDeclarationLists.fs b/src/fcs-fable/src/Compiler/Service/ServiceDeclarationLists.fs index 1e18cc4a22..be9ad7d709 100644 --- a/src/fcs-fable/src/Compiler/Service/ServiceDeclarationLists.fs +++ b/src/fcs-fable/src/Compiler/Service/ServiceDeclarationLists.fs @@ -66,6 +66,7 @@ type ToolTipText = [] type CompletionItemKind = + | SuggestedName | Field | Property | Method of isExtension : bool @@ -320,7 +321,7 @@ module DeclarationListHelpers = ToolTipElement.Single (layout, xml, ?symbol = symbol) // F# and .NET properties - | Item.Property(_, pinfo :: _) -> + | Item.Property(info = pinfo :: _) -> let layout = NicePrint.prettyLayoutOfPropInfoFreeStyle g amap m denv pinfo let layout = PrintUtilities.squashToWidth width layout let layout = toArray layout @@ -520,7 +521,7 @@ module DeclarationListHelpers = // We don't expect these cases | Item.Types (_, []) - | Item.Property (_, []) + | Item.Property (info = []) | Item.UnqualifiedType [] | Item.ModuleOrNamespaces [] | Item.CustomOperation (_, _, None) -> ToolTipElement.None @@ -798,7 +799,7 @@ module internal DescriptionListsImpl = let _prettyTyparInst, prettyRetTyL = NicePrint.prettyLayoutOfUncurriedSig denv item.TyparInstantiation [] (PropTypeOfEventInfo infoReader m AccessibleFromSomewhere einfo) [], prettyRetTyL - | Item.Property(_, pinfo :: _) -> + | Item.Property(info = pinfo :: _) -> let paramDatas = pinfo.GetParamDatas(amap, m) let propTy = pinfo.GetPropertyType(amap, m) @@ -874,7 +875,7 @@ module internal DescriptionListsImpl = | Item.OtherName _ | Item.MethodGroup(_, [], _) | Item.CtorGroup(_,[]) - | Item.Property(_,[]) -> + | Item.Property(info = []) -> [], emptyL @@ -883,15 +884,15 @@ module internal DescriptionListsImpl = /// Find the glyph for the given representation. let reprToGlyph repr = match repr with - | TFSharpObjectRepr om -> + | TFSharpTyconRepr om -> match om.fsobjmodel_kind with + | TFSharpUnion -> FSharpGlyph.Union + | TFSharpRecord -> FSharpGlyph.Type | TFSharpClass -> FSharpGlyph.Class | TFSharpInterface -> FSharpGlyph.Interface | TFSharpStruct -> FSharpGlyph.Struct | TFSharpDelegate _ -> FSharpGlyph.Delegate | TFSharpEnum -> FSharpGlyph.Enum - | TFSharpRecdRepr _ -> FSharpGlyph.Type - | TFSharpUnionRepr _ -> FSharpGlyph.Union | TILObjectRepr (TILObjectReprData (_, _, td)) -> if td.IsClass then FSharpGlyph.Class elif td.IsStruct then FSharpGlyph.Struct @@ -999,7 +1000,7 @@ module internal DescriptionListsImpl = if not ucr.UnionCase.IsNullary then [item] else [] | Item.ExnCase(ecr) -> if isNil (recdFieldsOfExnDefRef ecr) then [] else [item] - | Item.Property(_, pinfos) -> + | Item.Property(info = pinfos) -> let pinfo = List.head pinfos if pinfo.IsIndexer then [item] else [] #if !NO_TYPEPROVIDERS @@ -1035,10 +1036,12 @@ type DeclarationListItem(textInDeclList: string, textInCode: string, fullName: s member _.NameInCode = textInCode member _.Description = - match info with - | Choice1Of2 (items: CompletionItem list, infoReader, ad, m, denv) -> + match kind, info with + | CompletionItemKind.SuggestedName, _ -> + ToolTipText [ ToolTipElement.Single ([| tagText (FSComp.SR.suggestedName()) |], FSharpXmlDoc.None) ] + | _, Choice1Of2 (items: CompletionItem list, infoReader, ad, m, denv) -> ToolTipText(items |> List.map (fun x -> FormatStructuredDescriptionOfItem true infoReader ad m denv x.ItemWithInst None None)) - | Choice2Of2 result -> + | _, Choice2Of2 result -> result member _.Glyph = glyph @@ -1112,7 +1115,7 @@ type DeclarationListInfo(declarations: DeclarationListItem[], isForType: bool, i // Put type ctors after types, sorted by #typars. RemoveDuplicateItems will remove DefaultStructCtors if a type is also reported with this name | Item.CtorGroup (_, cinfo :: _) -> { x with MinorPriority = 1000 + 10 * cinfo.DeclaringTyconRef.TyparsNoRange.Length } | Item.MethodGroup(_, minfo :: _, _) -> { x with IsOwnMember = tyconRefOptEq x.Type minfo.DeclaringTyconRef } - | Item.Property(_, pinfo :: _) -> { x with IsOwnMember = tyconRefOptEq x.Type pinfo.DeclaringTyconRef } + | Item.Property(info = pinfo :: _) -> { x with IsOwnMember = tyconRefOptEq x.Type pinfo.DeclaringTyconRef } | Item.ILField finfo -> { x with IsOwnMember = tyconRefOptEq x.Type finfo.DeclaringTyconRef } | _ -> x) |> List.sortBy (fun x -> x.MinorPriority) diff --git a/src/fcs-fable/src/Compiler/Service/ServiceDeclarationLists.fsi b/src/fcs-fable/src/Compiler/Service/ServiceDeclarationLists.fsi index c0de77f525..4611ff86a1 100644 --- a/src/fcs-fable/src/Compiler/Service/ServiceDeclarationLists.fsi +++ b/src/fcs-fable/src/Compiler/Service/ServiceDeclarationLists.fsi @@ -60,6 +60,7 @@ type public ToolTipText = [] type public CompletionItemKind = + | SuggestedName | Field | Property | Method of isExtension: bool diff --git a/src/fcs-fable/src/Compiler/Service/ServiceInterfaceStubGenerator.fs b/src/fcs-fable/src/Compiler/Service/ServiceInterfaceStubGenerator.fs index e0e31850e3..cc56ba4149 100644 --- a/src/fcs-fable/src/Compiler/Service/ServiceInterfaceStubGenerator.fs +++ b/src/fcs-fable/src/Compiler/Service/ServiceInterfaceStubGenerator.fs @@ -105,9 +105,10 @@ type InterfaceData = | InterfaceData.ObjExpr (StripParenTypes ty, _) -> let rec (|RationalConst|) = function - | SynRationalConst.Integer i -> string i - | SynRationalConst.Rational (numerator, denominator, _) -> sprintf "(%i/%i)" numerator denominator - | SynRationalConst.Negate (RationalConst s) -> sprintf "- %s" s + | SynRationalConst.Integer (value = i) -> string i + | SynRationalConst.Rational (numerator = numerator; denominator = denominator) -> sprintf "%i/%i" numerator denominator + | SynRationalConst.Negate (rationalConst = (RationalConst s)) -> sprintf "- %s" s + | SynRationalConst.Paren (rationalConst = (RationalConst s)) -> sprintf "(%s)" s let rec (|TypeIdent|_|) = function @@ -880,6 +881,8 @@ module InterfaceStubGenerator = | SynExpr.Lambda (body = synExpr) -> walkExpr synExpr + | SynExpr.DotLambda (expr = synExpr) -> walkExpr synExpr + | SynExpr.MatchLambda (_isExnMatch, _argm, synMatchClauseList, _spBind, _wholem) -> synMatchClauseList |> List.tryPick (fun (SynMatchClause (resultExpr = e)) -> walkExpr e) diff --git a/src/fcs-fable/src/Compiler/Service/ServiceLexing.fs b/src/fcs-fable/src/Compiler/Service/ServiceLexing.fs index 4b3297d873..3fbfad8a94 100644 --- a/src/fcs-fable/src/Compiler/Service/ServiceLexing.fs +++ b/src/fcs-fable/src/Compiler/Service/ServiceLexing.fs @@ -173,11 +173,7 @@ module internal TokenClassifications = match token with | HASH_IDENT s | IDENT s -> - if s.Length <= 0 then - System.Diagnostics.Debug.Assert(false, "BUG: Received zero length IDENT token.") - // This is related to 4783. Recover by treating as lower case identifier. - (FSharpTokenColorKind.Identifier, FSharpTokenCharKind.Identifier, FSharpTokenTriggerClass.None) - else if Char.ToUpperInvariant s[0] = s[0] then + if s.Length > 0 && Char.ToUpperInvariant s[0] = s[0] then (FSharpTokenColorKind.UpperIdentifier, FSharpTokenCharKind.Identifier, FSharpTokenTriggerClass.None) else (FSharpTokenColorKind.Identifier, FSharpTokenCharKind.Identifier, FSharpTokenTriggerClass.None) @@ -316,12 +312,12 @@ module internal TokenClassifications = | NAMESPACE | OASSERT | OLAZY - | ODECLEND + | ODECLEND _ | OBLOCKSEP | OEND | OBLOCKBEGIN - | ORIGHT_BLOCK_END - | OBLOCKEND + | ORIGHT_BLOCK_END _ + | OBLOCKEND _ | OBLOCKEND_COMING_SOON | OBLOCKEND_IS_HERE | OTHEN @@ -382,6 +378,7 @@ module internal TokenClassifications = | INLINE | WHEN | WHILE + | WHILE_BANG | WITH | IF | THEN @@ -475,6 +472,7 @@ type FSharpTokenizerColorState = | EndLineThenToken = 12 | TripleQuoteString = 13 | TripleQuoteStringInComment = 14 + | ExtendedInterpolatedString = 15 | InitialState = 0 module internal LexerStateEncoding = @@ -512,6 +510,7 @@ module internal LexerStateEncoding = let ifdefstackNumBits = 24 // 0 means if, 1 means else let stringKindBits = 3 let nestingBits = 12 + let delimLenBits = 3 let _ = assert @@ -522,6 +521,7 @@ module internal LexerStateEncoding = + ifdefstackNumBits + stringKindBits + nestingBits + + delimLenBits <= 64) let lexstateStart = 0 @@ -547,6 +547,15 @@ module internal LexerStateEncoding = + ifdefstackNumBits + stringKindBits + let delimLenStart = + lexstateNumBits + + ncommentsNumBits + + hardwhiteNumBits + + ifdefstackCountNumBits + + ifdefstackNumBits + + stringKindBits + + nestingBits + let lexstateMask = Bits.mask64 lexstateStart lexstateNumBits let ncommentsMask = Bits.mask64 ncommentsStart ncommentsNumBits let hardwhitePosMask = Bits.mask64 hardwhitePosStart hardwhiteNumBits @@ -554,6 +563,7 @@ module internal LexerStateEncoding = let ifdefstackMask = Bits.mask64 ifdefstackStart ifdefstackNumBits let stringKindMask = Bits.mask64 stringKindStart stringKindBits let nestingMask = Bits.mask64 nestingStart nestingBits + let delimLenMask = Bits.mask64 delimLenStart delimLenBits let bitOfBool b = if b then 1 else 0 let boolOfBit n = (n = 1L) @@ -569,12 +579,14 @@ module internal LexerStateEncoding = | LexerStringStyle.SingleQuote -> 0 | LexerStringStyle.Verbatim -> 1 | LexerStringStyle.TripleQuote -> 2 + | LexerStringStyle.ExtendedInterpolated -> 3 let decodeStringStyle kind = match kind with | 0 -> LexerStringStyle.SingleQuote | 1 -> LexerStringStyle.Verbatim | 2 -> LexerStringStyle.TripleQuote + | 3 -> LexerStringStyle.ExtendedInterpolated | _ -> assert false LexerStringStyle.SingleQuote @@ -587,7 +599,8 @@ module internal LexerStateEncoding = ifdefStack, light, stringKind: LexerStringKind, - stringNest + stringNest, + delimLen: int ) = let mutable ifdefStackCount = 0 let mutable ifdefStackBits = 0 @@ -608,12 +621,12 @@ module internal LexerStateEncoding = let tag1, i1, kind1, rest = match stringNest with | [] -> false, 0, 0, [] - | (i1, kind1, _) :: rest -> true, i1, encodeStringStyle kind1, rest + | (i1, kind1, _, _) :: rest -> true, i1, encodeStringStyle kind1, rest let tag2, i2, kind2 = match rest with | [] -> false, 0, 0 - | (i2, kind2, _) :: _ -> true, i2, encodeStringStyle kind2 + | (i2, kind2, _, _) :: _ -> true, i2, encodeStringStyle kind2 (if tag1 then 0b100000000000 else 0) ||| (if tag2 then 0b010000000000 else 0) @@ -622,6 +635,8 @@ module internal LexerStateEncoding = ||| ((kind1 <<< 2) &&& 0b000000001100) ||| ((kind2 <<< 0) &&& 0b000000000011) + let delimLen = min delimLen (Bits.pown32 delimLenBits) + let bits = lexStateOfColorState colorState ||| ((numComments <<< ncommentsStart) &&& ncommentsMask) @@ -630,6 +645,7 @@ module internal LexerStateEncoding = ||| ((int64 ifdefStackBits <<< ifdefstackStart) &&& ifdefstackMask) ||| ((int64 stringKindValue <<< stringKindStart) &&& stringKindMask) ||| ((int64 nestingValue <<< nestingStart) &&& nestingMask) + ||| ((int64 delimLen <<< delimLenStart) &&& delimLenMask) { PosBits = b.Encoding @@ -677,19 +693,33 @@ module internal LexerStateEncoding = let kind1 = ((nestingValue &&& 0b000000001100) >>> 2) let kind2 = ((nestingValue &&& 0b000000000011) >>> 0) - [ - if tag1 then - i1, decodeStringStyle kind1, range0 - if tag2 then - i2, decodeStringStyle kind2, range0 - ] + let nest = + [ + if tag1 then + i1, decodeStringStyle kind1, 0, range0 + if tag2 then + i2, decodeStringStyle kind2, 0, range0 + ] + + nest - (colorState, ncomments, pos, ifDefs, hardwhite, stringKind, stringNest) + let delimLen = int32 ((bits &&& delimLenMask) >>> delimLenStart) + + (colorState, ncomments, pos, ifDefs, hardwhite, stringKind, stringNest, delimLen) let encodeLexInt indentationSyntaxStatus (lexcont: LexerContinuation) = match lexcont with | LexCont.Token (ifdefs, stringNest) -> - encodeLexCont (FSharpTokenizerColorState.Token, 0L, pos0, ifdefs, indentationSyntaxStatus, LexerStringKind.String, stringNest) + encodeLexCont ( + FSharpTokenizerColorState.Token, + 0L, + pos0, + ifdefs, + indentationSyntaxStatus, + LexerStringKind.String, + stringNest, + 0 + ) | LexCont.IfDefSkip (ifdefs, stringNest, n, m) -> encodeLexCont ( FSharpTokenizerColorState.IfDefSkip, @@ -698,7 +728,8 @@ module internal LexerStateEncoding = ifdefs, indentationSyntaxStatus, LexerStringKind.String, - stringNest + stringNest, + 0 ) | LexCont.EndLine (ifdefs, stringNest, econt) -> match econt with @@ -710,7 +741,8 @@ module internal LexerStateEncoding = ifdefs, indentationSyntaxStatus, LexerStringKind.String, - stringNest + stringNest, + 0 ) | LexerEndlineContinuation.Token -> encodeLexCont ( @@ -720,16 +752,18 @@ module internal LexerStateEncoding = ifdefs, indentationSyntaxStatus, LexerStringKind.String, - stringNest + stringNest, + 0 ) - | LexCont.String (ifdefs, stringNest, style, kind, m) -> + | LexCont.String (ifdefs, stringNest, style, kind, delimLen, m) -> let state = match style with | LexerStringStyle.SingleQuote -> FSharpTokenizerColorState.String | LexerStringStyle.Verbatim -> FSharpTokenizerColorState.VerbatimString | LexerStringStyle.TripleQuote -> FSharpTokenizerColorState.TripleQuoteString + | LexerStringStyle.ExtendedInterpolated -> FSharpTokenizerColorState.ExtendedInterpolatedString - encodeLexCont (state, 0L, m.Start, ifdefs, indentationSyntaxStatus, kind, stringNest) + encodeLexCont (state, 0L, m.Start, ifdefs, indentationSyntaxStatus, kind, stringNest, delimLen) | LexCont.Comment (ifdefs, stringNest, n, m) -> encodeLexCont ( FSharpTokenizerColorState.Comment, @@ -738,7 +772,8 @@ module internal LexerStateEncoding = ifdefs, indentationSyntaxStatus, LexerStringKind.String, - stringNest + stringNest, + 0 ) | LexCont.SingleLineComment (ifdefs, stringNest, n, m) -> encodeLexCont ( @@ -748,16 +783,18 @@ module internal LexerStateEncoding = ifdefs, indentationSyntaxStatus, LexerStringKind.String, - stringNest + stringNest, + 0 ) | LexCont.StringInComment (ifdefs, stringNest, style, n, m) -> let state = match style with | LexerStringStyle.SingleQuote -> FSharpTokenizerColorState.StringInComment | LexerStringStyle.Verbatim -> FSharpTokenizerColorState.VerbatimStringInComment - | LexerStringStyle.TripleQuote -> FSharpTokenizerColorState.TripleQuoteStringInComment + | LexerStringStyle.TripleQuote + | LexerStringStyle.ExtendedInterpolated -> FSharpTokenizerColorState.TripleQuoteStringInComment - encodeLexCont (state, int64 n, m.Start, ifdefs, indentationSyntaxStatus, LexerStringKind.String, stringNest) + encodeLexCont (state, int64 n, m.Start, ifdefs, indentationSyntaxStatus, LexerStringKind.String, stringNest, 0) | LexCont.MLOnly (ifdefs, stringNest, m) -> encodeLexCont ( FSharpTokenizerColorState.CamlOnly, @@ -766,11 +803,12 @@ module internal LexerStateEncoding = ifdefs, indentationSyntaxStatus, LexerStringKind.String, - stringNest + stringNest, + 0 ) let decodeLexInt (state: FSharpTokenizerLexState) = - let tag, n1, p1, ifdefs, lightSyntaxStatusInitial, stringKind, stringNest = + let tag, n1, p1, ifdefs, lightSyntaxStatusInitial, stringKind, stringNest, delimLen = decodeLexCont state let lexcont = @@ -778,7 +816,7 @@ module internal LexerStateEncoding = | FSharpTokenizerColorState.Token -> LexCont.Token(ifdefs, stringNest) | FSharpTokenizerColorState.IfDefSkip -> LexCont.IfDefSkip(ifdefs, stringNest, n1, mkRange "file" p1 p1) | FSharpTokenizerColorState.String -> - LexCont.String(ifdefs, stringNest, LexerStringStyle.SingleQuote, stringKind, mkRange "file" p1 p1) + LexCont.String(ifdefs, stringNest, LexerStringStyle.SingleQuote, stringKind, delimLen, mkRange "file" p1 p1) | FSharpTokenizerColorState.Comment -> LexCont.Comment(ifdefs, stringNest, n1, mkRange "file" p1 p1) | FSharpTokenizerColorState.SingleLineComment -> LexCont.SingleLineComment(ifdefs, stringNest, n1, mkRange "file" p1 p1) | FSharpTokenizerColorState.StringInComment -> @@ -789,9 +827,11 @@ module internal LexerStateEncoding = LexCont.StringInComment(ifdefs, stringNest, LexerStringStyle.TripleQuote, n1, mkRange "file" p1 p1) | FSharpTokenizerColorState.CamlOnly -> LexCont.MLOnly(ifdefs, stringNest, mkRange "file" p1 p1) | FSharpTokenizerColorState.VerbatimString -> - LexCont.String(ifdefs, stringNest, LexerStringStyle.Verbatim, stringKind, mkRange "file" p1 p1) + LexCont.String(ifdefs, stringNest, LexerStringStyle.Verbatim, stringKind, delimLen, mkRange "file" p1 p1) | FSharpTokenizerColorState.TripleQuoteString -> - LexCont.String(ifdefs, stringNest, LexerStringStyle.TripleQuote, stringKind, mkRange "file" p1 p1) + LexCont.String(ifdefs, stringNest, LexerStringStyle.TripleQuote, stringKind, delimLen, mkRange "file" p1 p1) + | FSharpTokenizerColorState.ExtendedInterpolatedString -> + LexCont.String(ifdefs, stringNest, LexerStringStyle.ExtendedInterpolated, stringKind, delimLen, mkRange "file" p1 p1) | FSharpTokenizerColorState.EndLineThenSkip -> LexCont.EndLine(ifdefs, stringNest, LexerEndlineContinuation.Skip(n1, mkRange "file" p1 p1)) | FSharpTokenizerColorState.EndLineThenToken -> LexCont.EndLine(ifdefs, stringNest, LexerEndlineContinuation.Token) @@ -927,16 +967,18 @@ type FSharpLineTokenizer(lexbuf: UnicodeLexing.Lexbuf, maxLength: int option, fi lexargs.stringNest <- stringNest Lexer.ifdefSkip n m lexargs skip lexbuf - | LexCont.String (ifdefs, stringNest, style, kind, m) -> + | LexCont.String (ifdefs, stringNest, style, kind, delimLen, m) -> lexargs.ifdefStack <- ifdefs lexargs.stringNest <- stringNest - use buf = ByteBuffer.Create Lexer.StringCapacity + lexargs.interpolationDelimiterLength <- delimLen + use buf = ByteBuffer.Create StringCapacity let args = (buf, LexerStringFinisher.Default, m, kind, lexargs) match style with | LexerStringStyle.SingleQuote -> Lexer.singleQuoteString args skip lexbuf | LexerStringStyle.Verbatim -> Lexer.verbatimString args skip lexbuf | LexerStringStyle.TripleQuote -> Lexer.tripleQuoteString args skip lexbuf + | LexerStringStyle.ExtendedInterpolated -> Lexer.extendedInterpolatedString args skip lexbuf | LexCont.Comment (ifdefs, stringNest, n, m) -> lexargs.ifdefStack <- ifdefs @@ -956,7 +998,8 @@ type FSharpLineTokenizer(lexbuf: UnicodeLexing.Lexbuf, maxLength: int option, fi match style with | LexerStringStyle.SingleQuote -> Lexer.stringInComment n m lexargs skip lexbuf | LexerStringStyle.Verbatim -> Lexer.verbatimStringInComment n m lexargs skip lexbuf - | LexerStringStyle.TripleQuote -> Lexer.tripleQuoteStringInComment n m lexargs skip lexbuf + | LexerStringStyle.TripleQuote + | LexerStringStyle.ExtendedInterpolated -> Lexer.tripleQuoteStringInComment n m lexargs skip lexbuf | LexCont.MLOnly (ifdefs, stringNest, m) -> lexargs.ifdefStack <- ifdefs @@ -1176,9 +1219,19 @@ type FSharpLineTokenizer(lexbuf: UnicodeLexing.Lexbuf, maxLength: int option, fi } [] -type FSharpSourceTokenizer(conditionalDefines: string list, fileName: string option) = +type FSharpSourceTokenizer + ( + conditionalDefines: string list, + fileName: string option, + langVersion: string option, + strictIndentation: bool option + ) = + + let langVersion = + langVersion + |> Option.map LanguageVersion + |> Option.defaultValue LanguageVersion.Default - let langVersion = LanguageVersion.Default let reportLibraryOnlyFeatures = true let lexResourceManager = LexResourceManager() @@ -1199,13 +1252,13 @@ type FSharpSourceTokenizer(conditionalDefines: string list, fileName: string opt member _.CreateLineTokenizer(lineText: string) = let lexbuf = - UnicodeLexing.StringAsLexbuf(reportLibraryOnlyFeatures, langVersion, lineText) + UnicodeLexing.StringAsLexbuf(reportLibraryOnlyFeatures, langVersion, strictIndentation, lineText) FSharpLineTokenizer(lexbuf, Some lineText.Length, fileName, lexargs) member _.CreateBufferTokenizer bufferFiller = let lexbuf = - UnicodeLexing.FunctionAsLexbuf(reportLibraryOnlyFeatures, langVersion, bufferFiller) + UnicodeLexing.FunctionAsLexbuf(reportLibraryOnlyFeatures, langVersion, strictIndentation, bufferFiller) FSharpLineTokenizer(lexbuf, None, fileName, lexargs) @@ -1314,6 +1367,7 @@ type FSharpTokenKind = | ColonEquals | When | While + | WhileBang | With | Hash | Ampersand @@ -1460,9 +1514,9 @@ type FSharpToken = | STRING_TEXT _ -> FSharpTokenKind.StringText | FIXED -> FSharpTokenKind.Fixed | OINTERFACE_MEMBER -> FSharpTokenKind.OffsideInterfaceMember - | OBLOCKEND -> FSharpTokenKind.OffsideBlockEnd - | ORIGHT_BLOCK_END -> FSharpTokenKind.OffsideRightBlockEnd - | ODECLEND -> FSharpTokenKind.OffsideDeclEnd + | OBLOCKEND _ -> FSharpTokenKind.OffsideBlockEnd + | ORIGHT_BLOCK_END _ -> FSharpTokenKind.OffsideRightBlockEnd + | ODECLEND _ -> FSharpTokenKind.OffsideDeclEnd | OEND -> FSharpTokenKind.OffsideEnd | OBLOCKSEP -> FSharpTokenKind.OffsideBlockSep | OBLOCKBEGIN -> FSharpTokenKind.OffsideBlockBegin @@ -1524,6 +1578,7 @@ type FSharpToken = | SEMICOLON -> FSharpTokenKind.SemicolonSemicolon | WHEN -> FSharpTokenKind.When | WHILE -> FSharpTokenKind.While + | WHILE_BANG -> FSharpTokenKind.WhileBang | WITH -> FSharpTokenKind.With | HASH -> FSharpTokenKind.Hash | AMP -> FSharpTokenKind.Ampersand @@ -1795,6 +1850,7 @@ module FSharpLexerImpl = (flags: FSharpLexerFlags) reportLibraryOnlyFeatures langVersion + strictIndentation diagnosticsLogger onToken pathMap @@ -1816,7 +1872,7 @@ module FSharpLexerImpl = (flags &&& FSharpLexerFlags.UseLexFilter) = FSharpLexerFlags.UseLexFilter let lexbuf = - UnicodeLexing.SourceTextAsLexbuf(reportLibraryOnlyFeatures, langVersion, text) + UnicodeLexing.SourceTextAsLexbuf(reportLibraryOnlyFeatures, langVersion, strictIndentation, text) let indentationSyntaxStatus = IndentationAwareSyntaxStatus(isLightSyntaxOn, true) let applyLineDirectives = isCompiling @@ -1837,7 +1893,7 @@ module FSharpLexerImpl = if canUseLexFilter then let lexFilter = - LexFilter.LexFilter(lexargs.indentationSyntaxStatus, isCompilingFSharpCore, lexer, lexbuf) + LexFilter.LexFilter(lexargs.indentationSyntaxStatus, isCompilingFSharpCore, lexer, lexbuf, false) (fun _ -> lexFilter.GetToken()) else @@ -1852,7 +1908,7 @@ module FSharpLexerImpl = ct.ThrowIfCancellationRequested() onToken (getNextToken lexbuf) lexbuf.LexemeRange - let lex text conditionalDefines flags reportLibraryOnlyFeatures langVersion lexCallback pathMap ct = + let lex text conditionalDefines flags reportLibraryOnlyFeatures langVersion strictIndentation lexCallback pathMap ct = let diagnosticsLogger = CompilationDiagnosticLogger("Lexer", FSharpDiagnosticOptions.Default) @@ -1862,6 +1918,7 @@ module FSharpLexerImpl = flags reportLibraryOnlyFeatures langVersion + strictIndentation diagnosticsLogger lexCallback pathMap @@ -1870,7 +1927,18 @@ module FSharpLexerImpl = [] type FSharpLexer = - static member Tokenize(text: ISourceText, tokenCallback, ?langVersion, ?filePath: string, ?conditionalDefines, ?flags, ?pathMap, ?ct) = + static member Tokenize + ( + text: ISourceText, + tokenCallback, + ?langVersion, + ?strictIndentation, + ?filePath: string, + ?conditionalDefines, + ?flags, + ?pathMap, + ?ct + ) = let langVersion = defaultArg langVersion "latestmajor" |> LanguageVersion let flags = defaultArg flags FSharpLexerFlags.Default ignore filePath // can be removed at later point @@ -1890,4 +1958,4 @@ type FSharpLexer = | _ -> tokenCallback fsTok let reportLibraryOnlyFeatures = true - lex text conditionalDefines flags reportLibraryOnlyFeatures langVersion onToken pathMap ct + lex text conditionalDefines flags reportLibraryOnlyFeatures langVersion strictIndentation onToken pathMap ct diff --git a/src/fcs-fable/src/Compiler/Service/ServiceLexing.fsi b/src/fcs-fable/src/Compiler/Service/ServiceLexing.fsi index b1976cf70a..f2d85b80a9 100755 --- a/src/fcs-fable/src/Compiler/Service/ServiceLexing.fsi +++ b/src/fcs-fable/src/Compiler/Service/ServiceLexing.fsi @@ -6,6 +6,7 @@ open System open System.Threading open FSharp.Compiler open FSharp.Compiler.Text +open FSharp.Compiler.Features open Internal.Utilities.Text.Lexing #nowarn "57" @@ -326,7 +327,12 @@ type FSharpLineTokenizer = type FSharpSourceTokenizer = /// Create a tokenizer for a source file. - new: conditionalDefines: string list * fileName: string option -> FSharpSourceTokenizer + new: + conditionalDefines: string list * + fileName: string option * + langVersion: string option * + strictIndentation: bool option -> + FSharpSourceTokenizer /// Create a tokenizer for a line of this source file member CreateLineTokenizer: lineText: string -> FSharpLineTokenizer @@ -439,6 +445,7 @@ type public FSharpTokenKind = | ColonEquals | When | While + | WhileBang | With | Hash | Ampersand @@ -581,6 +588,7 @@ type public FSharpLexer = text: ISourceText * tokenCallback: (FSharpToken -> unit) * ?langVersion: string * + ?strictIndentation: bool * ?filePath: string * ?conditionalDefines: string list * ?flags: FSharpLexerFlags * diff --git a/src/fcs-fable/src/Compiler/Service/ServiceNavigation.fs b/src/fcs-fable/src/Compiler/Service/ServiceNavigation.fs index c46fad0bb9..8fc5722cd5 100755 --- a/src/fcs-fable/src/Compiler/Service/ServiceNavigation.fs +++ b/src/fcs-fable/src/Compiler/Service/ServiceNavigation.fs @@ -168,7 +168,7 @@ module NavigationImpl = // Process let-binding let processBinding isMember enclosingEntityKind isAbstract synBinding = let (SynBinding (valData = valData; headPat = synPat; expr = synExpr)) = synBinding - let (SynValData (memberOpt, _, _)) = valData + let (SynValData (memberFlags = memberOpt)) = valData let m = match synExpr with @@ -811,7 +811,7 @@ module NavigateTo = let addBinding synBinding itemKind container = let (SynBinding (valData = valData; headPat = headPat)) = synBinding - let (SynValData (memberFlagsOpt, _, _)) = valData + let (SynValData (memberFlags = memberFlagsOpt)) = valData let kind = match itemKind with diff --git a/src/fcs-fable/src/Compiler/Service/ServiceParamInfoLocations.fs b/src/fcs-fable/src/Compiler/Service/ServiceParamInfoLocations.fs index b757120b62..4f39e96145 100755 --- a/src/fcs-fable/src/Compiler/Service/ServiceParamInfoLocations.fs +++ b/src/fcs-fable/src/Compiler/Service/ServiceParamInfoLocations.fs @@ -220,7 +220,7 @@ module internal ParameterLocationsImpl = _pf, wholem) -> let lidm = lidwd.Range - let betweenTheBrackets = mkRange wholem.FileName mLess.Start wholem.End + let betweenTheBrackets = withStart mLess.Start wholem if SyntaxTraversal.rangeContainsPosEdgesExclusive betweenTheBrackets pos @@ -290,7 +290,7 @@ module internal ParameterLocationsImpl = match fResult with | Some _ -> fResult | _ -> - let typeArgsm = mkRange mLess.FileName mLess.Start wholem.End + let typeArgsm = withEnd wholem.End mLess if SyntaxTraversal.rangeContainsPosEdgesExclusive typeArgsm pos then // We found it, dig out ident @@ -344,7 +344,7 @@ module internal ParameterLocationsImpl = match traverseSynExpr synExpr with | Some _ as r -> r | None -> - let typeArgsm = mkRange mLess.FileName mLess.Start wholem.End + let typeArgsm = withEnd wholem.End mLess if SyntaxTraversal.rangeContainsPosEdgesExclusive typeArgsm pos diff --git a/src/fcs-fable/src/Compiler/Service/ServiceParseTreeWalk.fs b/src/fcs-fable/src/Compiler/Service/ServiceParseTreeWalk.fs index d9e7cf1395..025ab8a665 100644 --- a/src/fcs-fable/src/Compiler/Service/ServiceParseTreeWalk.fs +++ b/src/fcs-fable/src/Compiler/Service/ServiceParseTreeWalk.fs @@ -25,6 +25,11 @@ type SyntaxNode = | SynMemberDefn of SynMemberDefn | SynMatchClause of SynMatchClause | SynBinding of SynBinding + | SynModuleOrNamespaceSig of SynModuleOrNamespaceSig + | SynModuleSigDecl of SynModuleSigDecl + | SynValSig of SynValSig + | SynTypeDefnSig of SynTypeDefnSig + | SynMemberSig of SynMemberSig type SyntaxVisitorPath = SyntaxNode list @@ -184,9 +189,30 @@ type SyntaxVisitorBase<'T>() = ignore (path, attributes) None + /// VisitModuleOrNamespaceSig allows overriding behavior when visiting module or namespaces + abstract VisitModuleOrNamespaceSig: path: SyntaxVisitorPath * synModuleOrNamespaceSig: SynModuleOrNamespaceSig -> 'T option + + default _.VisitModuleOrNamespaceSig(path, synModuleOrNamespaceSig) = + ignore (path, synModuleOrNamespaceSig) + None + + /// VisitModuleDecl allows overriding signature module declaration behavior + abstract VisitModuleSigDecl: + path: SyntaxVisitorPath * defaultTraverse: (SynModuleSigDecl -> 'T option) * synModuleSigDecl: SynModuleSigDecl -> 'T option + + default _.VisitModuleSigDecl(path, defaultTraverse, synModuleSigDecl) = + ignore path + defaultTraverse synModuleSigDecl + + /// VisitValSig allows overriding SynValSig behavior + abstract VisitValSig: path: SyntaxVisitorPath * defaultTraverse: (SynValSig -> 'T option) * valSig: SynValSig -> 'T option + + default _.VisitValSig(path, defaultTraverse, valSig) = + ignore path + defaultTraverse valSig + /// A range of utility functions to assist with traversing an AST module SyntaxTraversal = - // treat ranges as though they are half-open: [,) let rangeContainsPosLeftEdgeInclusive (m1: range) p = if posEq m1.Start m1.End then @@ -329,18 +355,31 @@ module SyntaxTraversal = let traversePat = traversePat path match e with - - | SynExpr.Paren (synExpr, _, _, _parenRange) -> traverseSynExpr synExpr - - | SynExpr.Quote (_synExpr, _, synExpr2, _, _range) -> - [ //dive synExpr synExpr.Range traverseSynExpr // TODO, what is this? - dive synExpr2 synExpr2.Range traverseSynExpr - ] - |> pick expr - - | SynExpr.Const (_synConst, _range) -> None - - | SynExpr.InterpolatedString (parts, _, _) -> + | SynExpr.LongIdentSet (expr = synExpr) + | SynExpr.DotGet (expr = synExpr) + | SynExpr.Do (expr = synExpr) + | SynExpr.DoBang (expr = synExpr) + | SynExpr.Assert (expr = synExpr) + | SynExpr.Fixed (expr = synExpr) + | SynExpr.DebugPoint (innerExpr = synExpr) + | SynExpr.AddressOf (expr = synExpr) + | SynExpr.TraitCall (argExpr = synExpr) + | SynExpr.Lazy (expr = synExpr) + | SynExpr.InferredUpcast (expr = synExpr) + | SynExpr.InferredDowncast (expr = synExpr) + | SynExpr.YieldOrReturn (expr = synExpr) + | SynExpr.YieldOrReturnFrom (expr = synExpr) + | SynExpr.FromParseError (expr = synExpr) + | SynExpr.DiscardAfterMissingQualificationAfterDot (expr = synExpr) + | SynExpr.IndexFromEnd (expr = synExpr) + | SynExpr.New (expr = synExpr) + | SynExpr.ArrayOrListComputed (expr = synExpr) + | SynExpr.TypeApp (expr = synExpr) + | SynExpr.DotLambda (expr = synExpr) + | SynExpr.Quote (quotedExpr = synExpr) + | SynExpr.Paren (expr = synExpr) -> traverseSynExpr synExpr + + | SynExpr.InterpolatedString (contents = parts) -> [ for part in parts do match part with @@ -349,13 +388,13 @@ module SyntaxTraversal = ] |> pick expr - | SynExpr.Typed (synExpr, synType, _range) -> + | SynExpr.Typed (expr = synExpr; targetType = synType) -> match traverseSynExpr synExpr with | None -> traverseSynType synType | x -> x - | SynExpr.Tuple (_, synExprList, _, _range) - | SynExpr.ArrayOrList (_, synExprList, _range) -> + | SynExpr.Tuple (exprs = synExprList) + | SynExpr.ArrayOrList (exprs = synExprList) -> synExprList |> List.map (fun x -> dive x x.Range traverseSynExpr) |> pick expr | SynExpr.AnonRecd (copyInfo = copyOpt; recordFields = fields) -> @@ -380,7 +419,7 @@ module SyntaxTraversal = ] |> pick expr - | SynExpr.Record (inheritOpt, copyOpt, fields, _range) -> + | SynExpr.Record (baseInfo = inheritOpt; copyInfo = copyOpt; recordFields = fields) -> [ let diveIntoSeparator offsideColumn scPosOpt copyOpt = match scPosOpt with @@ -485,7 +524,6 @@ module SyntaxTraversal = ] |> pick expr - | SynExpr.New (_, _synType, synExpr, _range) -> traverseSynExpr synExpr | SynExpr.ObjExpr (objType = ty; argOptions = baseCallOpt; bindings = binds; members = ms; extraImpls = ifaces) -> let binds = unionBindingAndMembers binds ms @@ -512,22 +550,7 @@ module SyntaxTraversal = ] |> pick expr - | SynExpr.While (_spWhile, synExpr, synExpr2, _range) -> - [ - dive synExpr synExpr.Range traverseSynExpr - dive synExpr2 synExpr2.Range traverseSynExpr - ] - |> pick expr - - | SynExpr.For (identBody = synExpr; toBody = synExpr2; doBody = synExpr3) -> - [ - dive synExpr synExpr.Range traverseSynExpr - dive synExpr2 synExpr2.Range traverseSynExpr - dive synExpr3 synExpr3.Range traverseSynExpr - ] - |> pick expr - - | SynExpr.ForEach (_spFor, _spIn, _seqExprOnly, _isFromSource, synPat, synExpr, synExpr2, _range) -> + | SynExpr.ForEach (pat = synPat; enumExpr = synExpr; bodyExpr = synExpr2) -> [ dive synPat synPat.Range traversePat dive synExpr synExpr.Range traverseSynExpr @@ -535,9 +558,7 @@ module SyntaxTraversal = ] |> pick expr - | SynExpr.ArrayOrListComputed (_, synExpr, _range) -> traverseSynExpr synExpr - - | SynExpr.ComputationExpr (_, synExpr, _range) -> + | SynExpr.ComputationExpr (expr = synExpr) -> // now parser treats this syntactic expression as computation expression // { identifier } // here we detect this situation and treat ComputationExpr { Identifier } as attempt to create record @@ -554,20 +575,19 @@ module SyntaxTraversal = if ok.IsSome then ok else traverseSynExpr synExpr - | SynExpr.Lambda (args = synSimplePats; body = synExpr) -> - match synSimplePats with - | SynSimplePats.SimplePats (pats, _) -> - match traverseSynSimplePats path pats with - | None -> traverseSynExpr synExpr - | x -> x - | _ -> traverseSynExpr synExpr + | SynExpr.Lambda (args = SynSimplePats.SimplePats (pats = pats); body = synExpr) -> + match traverseSynSimplePats path pats with + | None -> traverseSynExpr synExpr + | x -> x - | SynExpr.MatchLambda (_isExnMatch, _argm, synMatchClauseList, _spBind, _wholem) -> + | SynExpr.MatchLambda (matchClauses = synMatchClauseList) -> synMatchClauseList |> List.map (fun x -> dive x x.Range (traverseSynMatchClause path)) |> pick expr - | SynExpr.Match (expr = synExpr; clauses = synMatchClauseList) -> + | SynExpr.TryWith (tryExpr = synExpr; withCases = synMatchClauseList) + | SynExpr.Match (expr = synExpr; clauses = synMatchClauseList) + | SynExpr.MatchBang (expr = synExpr; clauses = synMatchClauseList) -> [ yield dive synExpr synExpr.Range traverseSynExpr yield! @@ -576,17 +596,7 @@ module SyntaxTraversal = ] |> pick expr - | SynExpr.Do (synExpr, _range) -> traverseSynExpr synExpr - - | SynExpr.Assert (synExpr, _range) -> traverseSynExpr synExpr - - | SynExpr.Fixed (synExpr, _range) -> traverseSynExpr synExpr - - | SynExpr.DebugPoint (_, _, synExpr) -> traverseSynExpr synExpr - - | SynExpr.Dynamic _ -> None - - | SynExpr.App (_exprAtomicFlag, isInfix, synExpr, synExpr2, _range) -> + | SynExpr.App (isInfix = isInfix; funcExpr = synExpr; argExpr = synExpr2) -> if isInfix then [ dive synExpr2 synExpr2.Range traverseSynExpr @@ -600,9 +610,7 @@ module SyntaxTraversal = ] |> pick expr - | SynExpr.TypeApp (synExpr, _, _synTypeList, _commas, _, _, _range) -> traverseSynExpr synExpr - - | SynExpr.LetOrUse (isRecursive, _, synBindingList, synExpr, range, _) -> + | SynExpr.LetOrUse (isRecursive = isRecursive; bindings = synBindingList; body = synExpr; range = range) -> match visitor.VisitLetOrUse(path, isRecursive, traverseSynBinding path, synBindingList, range) with | None -> [ @@ -614,33 +622,6 @@ module SyntaxTraversal = |> pick expr | x -> x - | SynExpr.TryWith (tryExpr = synExpr; withCases = synMatchClauseList) -> - [ - yield dive synExpr synExpr.Range traverseSynExpr - yield! - synMatchClauseList - |> List.map (fun x -> dive x x.Range (traverseSynMatchClause path)) - ] - |> pick expr - - | SynExpr.TryFinally (tryExpr = synExpr; finallyExpr = synExpr2) -> - [ - dive synExpr synExpr.Range traverseSynExpr - dive synExpr2 synExpr2.Range traverseSynExpr - ] - |> pick expr - - | SynExpr.Lazy (synExpr, _range) -> traverseSynExpr synExpr - - | SynExpr.SequentialOrImplicitYield (_sequencePointInfoForSequential, synExpr, synExpr2, _, _range) - - | SynExpr.Sequential (_sequencePointInfoForSequential, _, synExpr, synExpr2, _range) -> - [ - dive synExpr synExpr.Range traverseSynExpr - dive synExpr2 synExpr2.Range traverseSynExpr - ] - |> pick expr - | SynExpr.IfThenElse (ifExpr = synExpr; thenExpr = synExpr2; elseExpr = synExprOpt) -> [ yield dive synExpr synExpr.Range traverseSynExpr @@ -651,26 +632,7 @@ module SyntaxTraversal = ] |> pick expr - | SynExpr.Ident _ident -> None - - | SynExpr.LongIdent (_, _longIdent, _altNameRefCell, _range) -> None - - | SynExpr.Typar (_typar, _range) -> None - - | SynExpr.LongIdentSet (_longIdent, synExpr, _range) -> traverseSynExpr synExpr - - | SynExpr.DotGet (synExpr, _dotm, _longIdent, _range) -> traverseSynExpr synExpr - - | SynExpr.Set (synExpr, synExpr2, _) - - | SynExpr.DotSet (synExpr, _, synExpr2, _) -> - [ - dive synExpr synExpr.Range traverseSynExpr - dive synExpr2 synExpr2.Range traverseSynExpr - ] - |> pick expr - - | SynExpr.IndexRange (expr1, _, expr2, _, _, _) -> + | SynExpr.IndexRange (expr1 = expr1; expr2 = expr2) -> [ match expr1 with | Some e -> dive e e.Range traverseSynExpr @@ -681,72 +643,41 @@ module SyntaxTraversal = ] |> pick expr - | SynExpr.IndexFromEnd (e, _) -> traverseSynExpr e - - | SynExpr.DotIndexedGet (synExpr, indexArgs, _range, _range2) -> - [ - yield dive synExpr synExpr.Range traverseSynExpr - yield dive indexArgs indexArgs.Range traverseSynExpr - ] - |> pick expr - - | SynExpr.DotIndexedSet (synExpr, indexArgs, synExpr2, _, _range, _range2) -> - [ - yield dive synExpr synExpr.Range traverseSynExpr - yield dive indexArgs indexArgs.Range traverseSynExpr - yield dive synExpr2 synExpr2.Range traverseSynExpr - ] - |> pick expr - - | SynExpr.JoinIn (synExpr1, _range, synExpr2, _range2) -> + | SynExpr.Set (targetExpr = synExpr1; rhsExpr = synExpr2) + | SynExpr.DotSet (targetExpr = synExpr1; rhsExpr = synExpr2) + | SynExpr.TryFinally (tryExpr = synExpr1; finallyExpr = synExpr2) + | SynExpr.SequentialOrImplicitYield (expr1 = synExpr1; expr2 = synExpr2) + | SynExpr.Sequential (expr1 = synExpr1; expr2 = synExpr2) + | SynExpr.While (whileExpr = synExpr1; doExpr = synExpr2) + | SynExpr.WhileBang (whileExpr = synExpr1; doExpr = synExpr2) + | SynExpr.DotIndexedGet (objectExpr = synExpr1; indexArgs = synExpr2) + | SynExpr.JoinIn (lhsExpr = synExpr1; rhsExpr = synExpr2) + | SynExpr.NamedIndexedPropertySet (expr1 = synExpr1; expr2 = synExpr2) -> [ dive synExpr1 synExpr1.Range traverseSynExpr dive synExpr2 synExpr2.Range traverseSynExpr ] |> pick expr - | SynExpr.NamedIndexedPropertySet (_longIdent, synExpr, synExpr2, _range) -> - [ - dive synExpr synExpr.Range traverseSynExpr - dive synExpr2 synExpr2.Range traverseSynExpr - ] - |> pick expr - - | SynExpr.DotNamedIndexedPropertySet (synExpr, _longIdent, synExpr2, synExpr3, _range) -> + | SynExpr.For (identBody = synExpr1; toBody = synExpr2; doBody = synExpr3) + | SynExpr.DotIndexedSet (objectExpr = synExpr1; indexArgs = synExpr2; valueExpr = synExpr3) + | SynExpr.DotNamedIndexedPropertySet (targetExpr = synExpr1; argExpr = synExpr2; rhsExpr = synExpr3) -> [ - dive synExpr synExpr.Range traverseSynExpr + dive synExpr1 synExpr1.Range traverseSynExpr dive synExpr2 synExpr2.Range traverseSynExpr dive synExpr3 synExpr3.Range traverseSynExpr ] |> pick expr - | SynExpr.TypeTest (synExpr, synType, _range) - - | SynExpr.Upcast (synExpr, synType, _range) - - | SynExpr.Downcast (synExpr, synType, _range) -> + | SynExpr.TypeTest (expr = synExpr; targetType = synType) + | SynExpr.Upcast (expr = synExpr; targetType = synType) + | SynExpr.Downcast (expr = synExpr; targetType = synType) -> [ dive synExpr synExpr.Range traverseSynExpr dive synType synType.Range traverseSynType ] |> pick expr - | SynExpr.InferredUpcast (synExpr, _range) -> traverseSynExpr synExpr - - | SynExpr.InferredDowncast (synExpr, _range) -> traverseSynExpr synExpr - - | SynExpr.Null _range -> None - - | SynExpr.AddressOf (_, synExpr, _range, _range2) -> traverseSynExpr synExpr - - | SynExpr.TraitCall (_synTyparList, _synMemberSig, synExpr, _range) -> traverseSynExpr synExpr - - | SynExpr.ImplicitZero _range -> None - - | SynExpr.YieldOrReturn (_, synExpr, _range) -> traverseSynExpr synExpr - - | SynExpr.YieldOrReturnFrom (_, synExpr, _range) -> traverseSynExpr synExpr - | SynExpr.LetOrUseBang (pat = synPat; rhs = synExpr; andBangs = andBangSynExprs; body = synExpr2) -> [ yield dive synPat synPat.Range traversePat @@ -761,30 +692,18 @@ module SyntaxTraversal = ] |> pick expr - | SynExpr.MatchBang (expr = synExpr; clauses = synMatchClauseList) -> - [ - yield dive synExpr synExpr.Range traverseSynExpr - yield! - synMatchClauseList - |> List.map (fun x -> dive x x.Range (traverseSynMatchClause path)) - ] - |> pick expr - - | SynExpr.DoBang (synExpr, _range) -> traverseSynExpr synExpr - - | SynExpr.LibraryOnlyILAssembly _ -> None - - | SynExpr.LibraryOnlyStaticOptimization _ -> None - - | SynExpr.LibraryOnlyUnionCaseFieldGet _ -> None - - | SynExpr.LibraryOnlyUnionCaseFieldSet _ -> None - - | SynExpr.ArbitraryAfterError (_debugStr, _range) -> None - - | SynExpr.FromParseError (synExpr, _range) -> traverseSynExpr synExpr - - | SynExpr.DiscardAfterMissingQualificationAfterDot (synExpr, _, _range) -> traverseSynExpr synExpr + | SynExpr.Dynamic _ + | SynExpr.Ident _ + | SynExpr.LongIdent _ + | SynExpr.Typar _ + | SynExpr.Const _ + | SynExpr.Null _ + | SynExpr.ImplicitZero _ + | SynExpr.LibraryOnlyILAssembly _ + | SynExpr.LibraryOnlyStaticOptimization _ + | SynExpr.LibraryOnlyUnionCaseFieldGet _ + | SynExpr.LibraryOnlyUnionCaseFieldSet _ + | SynExpr.ArbitraryAfterError _ -> None visitor.VisitExpr(origPath, traverseSynExpr origPath, defaultTraverse, expr) @@ -798,7 +717,7 @@ module SyntaxTraversal = | SynPat.Or (p1, p2, _, _) | SynPat.ListCons (p1, p2, _, _) -> [ p1; p2 ] |> List.tryPick (traversePat path) | SynPat.Ands (ps, _) - | SynPat.Tuple (_, ps, _) + | SynPat.Tuple (elementPats = ps) | SynPat.ArrayOrList (_, ps, _) -> ps |> List.tryPick (traversePat path) | SynPat.Attrib (p, attributes, m) -> match traversePat path p with @@ -845,6 +764,7 @@ module SyntaxTraversal = | SynType.StaticConstantExpr (expr, _) -> traverseSynExpr [] expr | SynType.Paren (innerType = t) | SynType.SignatureParameter (usedType = t) -> traverseSynType path t + | SynType.Intersection (types = types) -> List.tryPick (traverseSynType path) types | SynType.Anon _ | SynType.AnonRecd _ | SynType.LongIdent _ @@ -954,8 +874,7 @@ module SyntaxTraversal = | SynMemberDefn.ImplicitCtor (ctorArgs = simplePats) -> match simplePats with - | SynSimplePats.SimplePats (simplePats, _) -> traverseSynSimplePats path simplePats - | _ -> None + | SynSimplePats.SimplePats (pats = simplePats) -> traverseSynSimplePats path simplePats | SynMemberDefn.ImplicitInherit (synType, synExpr, _identOption, range) -> [ dive () synType.Range (fun () -> @@ -1034,6 +953,101 @@ module SyntaxTraversal = attributes |> List.map (fun attributes -> dive () attributes.Range (fun () -> visitor.VisitAttributeApplication(origPath, attributes))) + and traverseSynModuleOrNamespaceSig origPath (SynModuleOrNamespaceSig (decls = synModuleSigDecls; range = range) as mors) = + match visitor.VisitModuleOrNamespaceSig(origPath, mors) with + | Some x -> Some x + | None -> + let path = SyntaxNode.SynModuleOrNamespaceSig mors :: origPath + + synModuleSigDecls + |> List.map (fun x -> dive x x.Range (traverseSynModuleSigDecl path)) + |> pick range mors + + and traverseSynModuleSigDecl origPath (decl: SynModuleSigDecl) = + let pick = pick decl.Range + + let defaultTraverse m = + let path = SyntaxNode.SynModuleSigDecl m :: origPath + + match m with + | SynModuleSigDecl.ModuleAbbrev (_ident, _longIdent, _range) -> None + | SynModuleSigDecl.NestedModule (moduleDecls = synModuleDecls; moduleInfo = SynComponentInfo (attributes = attributes)) -> + synModuleDecls + |> List.map (fun x -> dive x x.Range (traverseSynModuleSigDecl path)) + |> List.append (attributeApplicationDives path attributes) + |> pick decl + | SynModuleSigDecl.Val (synValSig, range) -> [ dive synValSig range (traverseSynValSig path) ] |> pick decl + | SynModuleSigDecl.Types (types = types; range = range) -> + types + |> List.map (fun t -> dive t range (traverseSynTypeDefnSig path)) + |> pick decl + | SynModuleSigDecl.Exception (_synExceptionDefn, _range) -> None + | SynModuleSigDecl.Open (_target, _range) -> None + | SynModuleSigDecl.HashDirective (parsedHashDirective, range) -> + visitor.VisitHashDirective(path, parsedHashDirective, range) + | SynModuleSigDecl.NamespaceFragment synModuleOrNamespaceSig -> traverseSynModuleOrNamespaceSig path synModuleOrNamespaceSig + + visitor.VisitModuleSigDecl(origPath, defaultTraverse, decl) + + and traverseSynValSig origPath (valSig: SynValSig) = + let defaultTraverse (SynValSig (synType = t; attributes = attributes; synExpr = expr; range = m)) = + let path = SyntaxNode.SynValSig valSig :: origPath + + [ + yield! attributeApplicationDives path attributes + yield dive t t.Range (traverseSynType path) + match expr with + | Some expr -> yield dive expr expr.Range (traverseSynExpr path) + | None -> () + ] + |> pick m valSig + + visitor.VisitValSig(origPath, defaultTraverse, valSig) + + and traverseSynTypeDefnSig origPath (SynTypeDefnSig (synComponentInfo, typeRepr, members, tRange, _) as tydef) = + let path = SyntaxNode.SynTypeDefnSig tydef :: origPath + + match visitor.VisitComponentInfo(origPath, synComponentInfo) with + | Some x -> Some x + | None -> + match synComponentInfo with + | SynComponentInfo (attributes = attributes) -> + [ + yield! attributeApplicationDives path attributes + + match typeRepr with + | SynTypeDefnSigRepr.Exception _ -> + // This node is generated in CheckExpressions.fs, not in the AST. + // But note exception declarations are missing from this tree walk. + () + | SynTypeDefnSigRepr.ObjectModel (memberSigs = memberSigs) -> + yield! memberSigs |> List.map (fun ms -> dive ms ms.Range (traverseSynMemberSig path)) + | SynTypeDefnSigRepr.Simple (synTypeDefnSimpleRepr, _range) -> + match synTypeDefnSimpleRepr with + | SynTypeDefnSimpleRepr.Record (_synAccessOption, fields, m) -> + yield dive () typeRepr.Range (fun () -> traverseRecordDefn path fields m) + | SynTypeDefnSimpleRepr.Union (_synAccessOption, cases, m) -> + yield dive () typeRepr.Range (fun () -> traverseUnionDefn path cases m) + | SynTypeDefnSimpleRepr.Enum (cases, m) -> + yield dive () typeRepr.Range (fun () -> traverseEnumDefn path cases m) + | SynTypeDefnSimpleRepr.TypeAbbrev (_, synType, m) -> + yield dive typeRepr typeRepr.Range (fun _ -> visitor.VisitTypeAbbrev(path, synType, m)) + | _ -> () + yield! members |> List.map (fun ms -> dive ms ms.Range (traverseSynMemberSig path)) + ] + |> pick tRange tydef + + and traverseSynMemberSig path (m: SynMemberSig) = + let path = SyntaxNode.SynMemberSig m :: path + + match m with + | SynMemberSig.Member (memberSig = memberSig) -> traverseSynValSig path memberSig + | SynMemberSig.Interface (interfaceType = synType) -> traverseSynType path synType + | SynMemberSig.Inherit (inheritedType = synType) -> traverseSynType path synType + | SynMemberSig.ValField(field = SynField (attributes = attributes)) -> + attributeApplicationDives path attributes |> pick m.Range attributes + | SynMemberSig.NestedType (nestedType = nestedType) -> traverseSynTypeDefnSig path nestedType + match parseTree with | ParsedInput.ImplFile file -> let l = file.Contents @@ -1049,4 +1063,17 @@ module SyntaxTraversal = l |> List.map (fun x -> dive x x.Range (traverseSynModuleOrNamespace [])) |> pick fileRange l - | ParsedInput.SigFile _sigFile -> None + | ParsedInput.SigFile sigFile -> + let l = sigFile.Contents + + let fileRange = +#if DEBUG + match l with + | [] -> range0 + | _ -> l |> List.map (fun x -> x.Range) |> List.reduce unionRanges +#else + range0 // only used for asserting, does not matter in non-debug +#endif + l + |> List.map (fun x -> dive x x.Range (traverseSynModuleOrNamespaceSig [])) + |> pick fileRange l diff --git a/src/fcs-fable/src/Compiler/Service/ServiceParseTreeWalk.fsi b/src/fcs-fable/src/Compiler/Service/ServiceParseTreeWalk.fsi index d073ca1e73..0a17dd468e 100644 --- a/src/fcs-fable/src/Compiler/Service/ServiceParseTreeWalk.fsi +++ b/src/fcs-fable/src/Compiler/Service/ServiceParseTreeWalk.fsi @@ -17,6 +17,11 @@ type SyntaxNode = | SynMemberDefn of SynMemberDefn | SynMatchClause of SynMatchClause | SynBinding of SynBinding + | SynModuleOrNamespaceSig of SynModuleOrNamespaceSig + | SynModuleSigDecl of SynModuleSigDecl + | SynValSig of SynValSig + | SynTypeDefnSig of SynTypeDefnSig + | SynMemberSig of SynMemberSig type SyntaxVisitorPath = SyntaxNode list @@ -151,6 +156,24 @@ type SyntaxVisitorBase<'T> = abstract VisitAttributeApplication: path: SyntaxVisitorPath * attributes: SynAttributeList -> 'T option default VisitAttributeApplication: path: SyntaxVisitorPath * attributes: SynAttributeList -> 'T option + abstract VisitModuleOrNamespaceSig: + path: SyntaxVisitorPath * synModuleOrNamespaceSig: SynModuleOrNamespaceSig -> 'T option + default VisitModuleOrNamespaceSig: + path: SyntaxVisitorPath * synModuleOrNamespaceSig: SynModuleOrNamespaceSig -> 'T option + + abstract VisitModuleSigDecl: + path: SyntaxVisitorPath * defaultTraverse: (SynModuleSigDecl -> 'T option) * synModuleSigDecl: SynModuleSigDecl -> + 'T option + default VisitModuleSigDecl: + path: SyntaxVisitorPath * defaultTraverse: (SynModuleSigDecl -> 'T option) * synModuleSigDecl: SynModuleSigDecl -> + 'T option + + abstract VisitValSig: + path: SyntaxVisitorPath * defaultTraverse: (SynValSig -> 'T option) * valSig: SynValSig -> 'T option + + default VisitValSig: + path: SyntaxVisitorPath * defaultTraverse: (SynValSig -> 'T option) * valSig: SynValSig -> 'T option + module public SyntaxTraversal = val internal rangeContainsPosLeftEdgeInclusive: m1: range -> p: pos -> bool diff --git a/src/fcs-fable/src/Compiler/Service/ServiceParsedInputOps.fs b/src/fcs-fable/src/Compiler/Service/ServiceParsedInputOps.fs index 2b434aae7a..17b8db11c2 100644 --- a/src/fcs-fable/src/Compiler/Service/ServiceParsedInputOps.fs +++ b/src/fcs-fable/src/Compiler/Service/ServiceParsedInputOps.fs @@ -9,6 +9,7 @@ open System.Text.RegularExpressions open Internal.Utilities.Library open FSharp.Compiler.Diagnostics open FSharp.Compiler.Syntax +open FSharp.Compiler.SyntaxTrivia open FSharp.Compiler.Syntax.PrettyNaming open FSharp.Compiler.SyntaxTreeOps open FSharp.Compiler.Text @@ -49,6 +50,26 @@ type RecordContext = | New of path: CompletionPath * isFirstField: bool | Declaration of isInIdentifier: bool +[] +type PatternContext = + /// Completing union case field pattern (e.g. fun (Some v| ) -> ) or fun (Some (v| )) -> ). In theory, this could also be parameterized active pattern usage. + /// Position in the tuple. None if there is no tuple, with only one field outside of parentheses - `Some v|` + /// True when completing the first field in the tuple and no other field is bound - `Case (a|)` but not `Case (a|, b)` + /// Range of the case identifier + | PositionalUnionCaseField of fieldIndex: int option * isTheOnlyField: bool * caseIdRange: range + + /// Completing union case field pattern (e.g. fun (Some (Value = v| )) -> ) + | NamedUnionCaseField of fieldName: string * caseIdRange: range + + /// Completing union case field identifier in a pattern (e.g. fun (Case (field1 = a; fie| )) -> ) + | UnionCaseFieldIdentifier of referencedFields: string list * caseIdRange: range + + /// Completing a record field identifier in a pattern (e.g. fun { Field1 = a; Fie| } -> ) + | RecordFieldIdentifier of referencedFields: (string * range) list + + /// Any other position in a pattern that does not need special handling + | Other + [] type CompletionContext = /// Completion context cannot be determined due to errors @@ -71,8 +92,9 @@ type CompletionContext = | OpenDeclaration of isOpenType: bool - /// Completing pattern type (e.g. foo (x: |)) - | PatternType + /// Completing a type annotation (e.g. foo (x: |)) + /// Completing a type application (e.g. typeof) + | Type /// Completing union case fields declaration (e.g. 'A of stri|' but not 'B of tex|: string') | UnionCaseFieldsDeclaration @@ -81,6 +103,12 @@ type CompletionContext = /// or a single case union without a bar (type SomeUnion = Abc|) | TypeAbbreviationOrSingleCaseUnion + /// Completing a pattern in a match clause, member/let binding or lambda + | Pattern of context: PatternContext + + /// Completing a method override (e.g. override this.ToStr|) + | MethodOverride of enclosingTypeNameRange: range + type ShortIdent = string type ShortIdents = ShortIdent[] @@ -491,7 +519,7 @@ module ParsedInput = |> pick expr | SynExpr.DotGet (exprLeft, mDot, lidwd, _m) -> - let afterDotBeforeLid = mkRange mDot.FileName mDot.End lidwd.Range.Start + let afterDotBeforeLid = withStartEnd mDot.End lidwd.Range.Start mDot [ dive exprLeft exprLeft.Range traverseSynExpr @@ -599,10 +627,11 @@ module ParsedInput = ifPosInRange ident.idRange (fun _ -> Some EntityKind.Type) and walkTyparDecl typarDecl = - let (SynTyparDecl (Attributes attrs, typar)) = typarDecl + let (SynTyparDecl (Attributes attrs, typar, intersectionContraints, _)) = typarDecl List.tryPick walkAttribute attrs |> Option.orElseWith (fun () -> walkTypar typar) + |> Option.orElseWith (fun () -> intersectionContraints |> List.tryPick walkType) and walkTypeConstraint cx = match cx with @@ -636,7 +665,7 @@ module ParsedInput = List.tryPick walkTyparDecl typars |> Option.orElseWith (fun () -> List.tryPick walkTypeConstraint constraints))) |> Option.orElseWith (fun () -> List.tryPick walkPat pats) - | SynPat.Tuple (_, pats, _) -> List.tryPick walkPat pats + | SynPat.Tuple (elementPats = pats) -> List.tryPick walkPat pats | SynPat.Paren (pat, _) -> walkPat pat | SynPat.ArrayOrList (_, pats, _) -> List.tryPick walkPat pats | SynPat.IsInst (t, _) -> walkType t @@ -681,6 +710,7 @@ module ParsedInput = | SynType.SignatureParameter (usedType = t) -> walkType t | SynType.StaticConstantExpr (e, _) -> walkExpr e | SynType.StaticConstantNamed (ident, value, _) -> List.tryPick walkType [ ident; value ] + | SynType.Intersection (types = types) -> List.tryPick walkType types | SynType.Anon _ | SynType.AnonRecd _ | SynType.LongIdent _ @@ -697,10 +727,10 @@ module ParsedInput = and walkExprWithKind parentKind expr = match expr with - | SynExpr.LongIdent (_, SynLongIdent ([ ident ], _, [ Some _ ]), _, _) -> + | SynExpr.LongIdent(longDotId = SynLongIdent (id = [ ident ]; trivia = [ Some _ ])) -> ifPosInRange ident.idRange (fun _ -> Some(EntityKind.FunctionOrValue false)) - | SynExpr.LongIdent (_, SynLongIdent (_, dotRanges, _), _, r) -> + | SynExpr.LongIdent (longDotId = SynLongIdent (dotRanges = dotRanges); range = r) -> match dotRanges with | [] when isPosInRange r -> parentKind @@ -716,23 +746,65 @@ module ParsedInput = None | _ -> None - | SynExpr.Paren (e, _, _, _) -> walkExprWithKind parentKind e + | SynExpr.LongIdentSet (expr = e) + | SynExpr.DotGet (expr = e) + | SynExpr.DotSet (targetExpr = e) + | SynExpr.Set (targetExpr = e) + | SynExpr.Lazy (expr = e) + | SynExpr.DoBang (expr = e) + | SynExpr.Do (expr = e) + | SynExpr.Assert (expr = e) + | SynExpr.ArrayOrListComputed (expr = e) + | SynExpr.ComputationExpr (expr = e) + | SynExpr.Lambda (body = e) + | SynExpr.DotLambda (expr = e) + | SynExpr.InferredUpcast (expr = e) + | SynExpr.InferredDowncast (expr = e) + | SynExpr.AddressOf (expr = e) + | SynExpr.YieldOrReturn (expr = e) + | SynExpr.YieldOrReturnFrom (expr = e) + | SynExpr.Paren (expr = e) + | SynExpr.Quote (quotedExpr = e) + | SynExpr.Typed (expr = e) -> walkExprWithKind parentKind e + + | SynExpr.NamedIndexedPropertySet (expr1 = e1; expr2 = e2) + | SynExpr.TryFinally (tryExpr = e1; finallyExpr = e2) + | SynExpr.App (funcExpr = e1; argExpr = e2) + | SynExpr.WhileBang (whileExpr = e1; doExpr = e2) + | SynExpr.While (whileExpr = e1; doExpr = e2) + | SynExpr.ForEach (enumExpr = e1; bodyExpr = e2) + | SynExpr.DotIndexedGet (objectExpr = e1; indexArgs = e2) + | SynExpr.DotIndexedSet (objectExpr = e1; indexArgs = e2) + | SynExpr.JoinIn (lhsExpr = e1; rhsExpr = e2) -> + walkExprWithKind parentKind e1 + |> Option.orElseWith (fun () -> walkExprWithKind parentKind e2) + + | SynExpr.New (expr = e; targetType = t) + | SynExpr.TypeTest (expr = e; targetType = t) + | SynExpr.Upcast (expr = e; targetType = t) + | SynExpr.Downcast (expr = e; targetType = t) -> walkExprWithKind parentKind e |> Option.orElseWith (fun () -> walkType t) - | SynExpr.Quote (_, _, e, _, _) -> walkExprWithKind parentKind e + | Sequentials es + | SynExpr.Tuple (exprs = es) + | SynExpr.ArrayOrList (exprs = es) -> List.tryPick (walkExprWithKind parentKind) es - | SynExpr.Typed (e, _, _) -> walkExprWithKind parentKind e + | SynExpr.For (identBody = e1; toBody = e2; doBody = e3) + | SynExpr.DotNamedIndexedPropertySet (targetExpr = e1; argExpr = e2; rhsExpr = e3) -> + List.tryPick (walkExprWithKind parentKind) [ e1; e2; e3 ] - | SynExpr.Tuple (_, es, _, _) -> List.tryPick (walkExprWithKind parentKind) es + | SynExpr.TryWith (tryExpr = e; withCases = clauses) + | SynExpr.MatchBang (expr = e; clauses = clauses) + | SynExpr.Match (expr = e; clauses = clauses) -> + walkExprWithKind parentKind e + |> Option.orElseWith (fun () -> List.tryPick walkClause clauses) - | SynExpr.ArrayOrList (_, es, _) -> List.tryPick (walkExprWithKind parentKind) es + | SynExpr.MatchLambda (matchClauses = clauses) -> List.tryPick walkClause clauses | SynExpr.Record (_, _, fields, r) -> ifPosInRange r (fun _ -> fields |> List.tryPick (fun (SynExprRecordField (expr = e)) -> e |> Option.bind (walkExprWithKind parentKind))) - | SynExpr.New (_, t, e, _) -> walkExprWithKind parentKind e |> Option.orElseWith (fun () -> walkType t) - | SynExpr.ObjExpr (objType = ty; bindings = bindings; members = ms; extraImpls = ifaces) -> let bindings = unionBindingAndMembers bindings ms @@ -740,31 +812,7 @@ module ParsedInput = |> Option.orElseWith (fun () -> List.tryPick walkBinding bindings) |> Option.orElseWith (fun () -> List.tryPick walkInterfaceImpl ifaces) - | SynExpr.While (_, e1, e2, _) -> List.tryPick (walkExprWithKind parentKind) [ e1; e2 ] - - | SynExpr.For (identBody = e1; toBody = e2; doBody = e3) -> List.tryPick (walkExprWithKind parentKind) [ e1; e2; e3 ] - - | SynExpr.ForEach (_, _, _, _, _, e1, e2, _) -> List.tryPick (walkExprWithKind parentKind) [ e1; e2 ] - - | SynExpr.ArrayOrListComputed (_, e, _) -> walkExprWithKind parentKind e - - | SynExpr.ComputationExpr (_, e, _) -> walkExprWithKind parentKind e - - | SynExpr.Lambda (body = e) -> walkExprWithKind parentKind e - - | SynExpr.MatchLambda (_, _, synMatchClauseList, _, _) -> List.tryPick walkClause synMatchClauseList - - | SynExpr.Match (expr = e; clauses = synMatchClauseList) -> - walkExprWithKind parentKind e - |> Option.orElseWith (fun () -> List.tryPick walkClause synMatchClauseList) - - | SynExpr.Do (e, _) -> walkExprWithKind parentKind e - - | SynExpr.Assert (e, _) -> walkExprWithKind parentKind e - - | SynExpr.App (_, _, e1, e2, _) -> List.tryPick (walkExprWithKind parentKind) [ e1; e2 ] - - | SynExpr.TypeApp (e, _, tys, _, _, _, _) -> + | SynExpr.TypeApp (expr = e; typeArgs = tys) -> walkExprWithKind (Some EntityKind.Type) e |> Option.orElseWith (fun () -> List.tryPick walkType tys) @@ -772,18 +820,9 @@ module ParsedInput = List.tryPick walkBinding bindings |> Option.orElseWith (fun () -> walkExprWithKind parentKind e) - | SynExpr.TryWith (tryExpr = e; withCases = clauses) -> - walkExprWithKind parentKind e - |> Option.orElseWith (fun () -> List.tryPick walkClause clauses) - - | SynExpr.TryFinally (tryExpr = e1; finallyExpr = e2) -> List.tryPick (walkExprWithKind parentKind) [ e1; e2 ] - - | SynExpr.Lazy (e, _) -> walkExprWithKind parentKind e - - | Sequentials es -> List.tryPick (walkExprWithKind parentKind) es - | SynExpr.IfThenElse (ifExpr = e1; thenExpr = e2; elseExpr = e3) -> - List.tryPick (walkExprWithKind parentKind) [ e1; e2 ] + walkExprWithKind parentKind e1 + |> Option.orElseWith (fun () -> walkExprWithKind parentKind e2) |> Option.orElseWith (fun () -> match e3 with | None -> None @@ -791,50 +830,6 @@ module ParsedInput = | SynExpr.Ident ident -> ifPosInRange ident.idRange (fun _ -> Some(EntityKind.FunctionOrValue false)) - | SynExpr.LongIdentSet (_, e, _) -> walkExprWithKind parentKind e - - | SynExpr.DotGet (e, _, _, _) -> walkExprWithKind parentKind e - - | SynExpr.DotSet (e, _, _, _) -> walkExprWithKind parentKind e - - | SynExpr.Set (e, _, _) -> walkExprWithKind parentKind e - - | SynExpr.DotIndexedGet (e, args, _, _) -> - walkExprWithKind parentKind e - |> Option.orElseWith (fun () -> walkExprWithKind parentKind args) - - | SynExpr.DotIndexedSet (e, args, _, _, _, _) -> - walkExprWithKind parentKind e - |> Option.orElseWith (fun () -> walkExprWithKind parentKind args) - - | SynExpr.NamedIndexedPropertySet (_, e1, e2, _) -> List.tryPick (walkExprWithKind parentKind) [ e1; e2 ] - - | SynExpr.DotNamedIndexedPropertySet (e1, _, e2, e3, _) -> List.tryPick (walkExprWithKind parentKind) [ e1; e2; e3 ] - - | SynExpr.TypeTest (e, t, _) -> walkExprWithKind parentKind e |> Option.orElseWith (fun () -> walkType t) - - | SynExpr.Upcast (e, t, _) -> walkExprWithKind parentKind e |> Option.orElseWith (fun () -> walkType t) - - | SynExpr.Downcast (e, t, _) -> walkExprWithKind parentKind e |> Option.orElseWith (fun () -> walkType t) - - | SynExpr.InferredUpcast (e, _) -> walkExprWithKind parentKind e - - | SynExpr.InferredDowncast (e, _) -> walkExprWithKind parentKind e - - | SynExpr.AddressOf (_, e, _, _) -> walkExprWithKind parentKind e - - | SynExpr.JoinIn (e1, _, e2, _) -> List.tryPick (walkExprWithKind parentKind) [ e1; e2 ] - - | SynExpr.YieldOrReturn (_, e, _) -> walkExprWithKind parentKind e - - | SynExpr.YieldOrReturnFrom (_, e, _) -> walkExprWithKind parentKind e - - | SynExpr.Match (expr = e; clauses = synMatchClauseList) - - | SynExpr.MatchBang (expr = e; clauses = synMatchClauseList) -> - walkExprWithKind parentKind e - |> Option.orElseWith (fun () -> List.tryPick walkClause synMatchClauseList) - | SynExpr.LetOrUseBang (rhs = e1; andBangs = es; body = e2) -> [ yield e1 @@ -844,8 +839,6 @@ module ParsedInput = ] |> List.tryPick (walkExprWithKind parentKind) - | SynExpr.DoBang (e, _) -> walkExprWithKind parentKind e - | SynExpr.TraitCall (TypesForTypar ts, sign, e, _) -> List.tryPick walkType ts |> Option.orElseWith (fun () -> walkMemberSig sign) @@ -899,7 +892,7 @@ module ParsedInput = | None, Some binding -> walkBinding binding | Some getBinding, Some setBinding -> walkBinding getBinding |> Option.orElseWith (fun () -> walkBinding setBinding) - | SynMemberDefn.ImplicitCtor (attributes = Attributes attrs; ctorArgs = SynSimplePats.SimplePats (simplePats, _)) -> + | SynMemberDefn.ImplicitCtor (attributes = Attributes attrs; ctorArgs = SynSimplePats.SimplePats (pats = simplePats)) -> List.tryPick walkAttribute attrs |> Option.orElseWith (fun () -> List.tryPick walkSimplePat simplePats) @@ -1193,11 +1186,6 @@ module ParsedInput = None | _ -> None - let (|SkipFromParseErrorPat|) pat = - match pat with - | SynPat.FromParseError (pat, _) -> pat - | _ -> pat - let rec parseLidAux pos plid (parts: Ident list) (dots: range list) = match parts, dots with | [], _ -> Some(plid, None) @@ -1305,6 +1293,147 @@ module ParsedInput = None | _ -> None + // In member, function and lambda definitions (but not in match clauses) we suppress completions on outer identifiers + // + // fun x| -> + // member _.X (a| ) = + // let f x| = + // + // As soon as union case deconstruction is used, we *do* want to see completions on identifiers, in particular to suggest identifier names + // + // fun (SingleCase (v1, v| )) -> + // member _.X (SingleCase (v1, v| )) = + // let f (SingleCase (v1, v| )) = + // + let rec TryGetCompletionContextInPattern suppressIdentifierCompletions (pat: SynPat) previousContext pos = + match pat with + | SynPat.LongIdent (longDotId = id) when rangeContainsPos id.Range pos -> Some(CompletionContext.Pattern PatternContext.Other) + | SynPat.LongIdent (argPats = SynArgPats.NamePatPairs (pats = pats; range = mPairs); longDotId = caseId; range = m) when + rangeContainsPos m pos + -> + pats + |> List.tryPick (fun (fieldId, _, pat) -> + if rangeContainsPos fieldId.idRange pos then + let referencedFields = pats |> List.map (fun (id, _, _) -> id.idText) + Some(CompletionContext.Pattern(PatternContext.UnionCaseFieldIdentifier(referencedFields, caseId.Range))) + else + let context = Some(PatternContext.NamedUnionCaseField(fieldId.idText, caseId.Range)) + TryGetCompletionContextInPattern suppressIdentifierCompletions pat context pos) + |> Option.orElseWith (fun () -> + // Last resort - check for fun (Case (item1 = a; | )) -> + // That is, pos is after the last pair and still within parentheses + if rangeBeforePos mPairs pos then + let referencedFields = pats |> List.map (fun (id, _, _) -> id.idText) + Some(CompletionContext.Pattern(PatternContext.UnionCaseFieldIdentifier(referencedFields, caseId.Range))) + else + None) + | SynPat.LongIdent (argPats = SynArgPats.Pats pats; longDotId = id; range = m) when rangeContainsPos m pos -> + match pats with + + // fun (Some v| ) -> + | [ SynPat.Named _ ] -> Some(CompletionContext.Pattern(PatternContext.PositionalUnionCaseField(None, true, id.Range))) + + // fun (Case (| )) -> + | [ SynPat.Paren (SynPat.Const (SynConst.Unit, _), m) ] when rangeContainsPos m pos -> + Some(CompletionContext.Pattern(PatternContext.PositionalUnionCaseField(Some 0, true, id.Range))) + + // fun (Case (a| )) -> + // This could either be the first positional field pattern or the user might want to use named pairs + | [ SynPat.Paren (SynPat.Named _, _) ] -> + Some(CompletionContext.Pattern(PatternContext.PositionalUnionCaseField(Some 0, true, id.Range))) + + // fun (Case (a| , b)) -> + | [ SynPat.Paren (SynPat.Tuple (elementPats = pats) as pat, _) ] -> + let context = + Some(PatternContext.PositionalUnionCaseField(Some 0, pats.Length = 1, id.Range)) + + TryGetCompletionContextInPattern false pat context pos + + | _ -> + pats + |> List.tryPick (fun pat -> TryGetCompletionContextInPattern false pat None pos) + | SynPat.Record (fieldPats = pats; range = m) when rangeContainsPos m pos -> + pats + |> List.tryPick (fun ((_, fieldId), _, pat) -> + if rangeContainsPos fieldId.idRange pos then + let referencedFields = pats |> List.map (fun ((_, x), _, _) -> x.idText, x.idRange) + Some(CompletionContext.Pattern(PatternContext.RecordFieldIdentifier referencedFields)) + elif rangeContainsPos pat.Range pos then + TryGetCompletionContextInPattern false pat None pos + else + None) + |> Option.orElseWith (fun () -> + // Last resort - check for fun { Field1 = a; F| } -> + // That is, pos is after the last field and still within braces + if + pats + |> List.forall (fun (_, mEquals, pat) -> + match mEquals, pat with + | Some mEquals, SynPat.Wild mPat -> rangeBeforePos mEquals pos && mPat.StartColumn <> mPat.EndColumn + | Some mEquals, _ -> rangeBeforePos mEquals pos + | _ -> false) + then + let referencedFields = pats |> List.map (fun ((_, x), _, _) -> x.idText, x.idRange) + Some(CompletionContext.Pattern(PatternContext.RecordFieldIdentifier referencedFields)) + else + Some(CompletionContext.Pattern PatternContext.Other)) + | SynPat.Ands (pats = pats) + | SynPat.ArrayOrList (elementPats = pats) -> + pats + |> List.tryPick (fun pat -> TryGetCompletionContextInPattern false pat None pos) + | SynPat.Tuple (elementPats = pats; commaRanges = commas; range = m) -> + pats + |> List.indexed + |> List.tryPick (fun (i, pat) -> + let context = + match previousContext with + | Some (PatternContext.PositionalUnionCaseField (_, isTheOnlyField, caseIdRange)) -> + Some(PatternContext.PositionalUnionCaseField(Some i, isTheOnlyField, caseIdRange)) + | _ -> + // No preceding LongIdent => this is a tuple deconstruction + None + + TryGetCompletionContextInPattern suppressIdentifierCompletions pat context pos) + |> Option.orElseWith (fun () -> + // Last resort - check for fun (Case (item1 = a, | )) -> + // That is, pos is after the last comma and before the end of the tuple + match previousContext, List.tryLast commas with + | Some (PatternContext.PositionalUnionCaseField (_, isTheOnlyField, caseIdRange)), Some mComma when + rangeBeforePos mComma pos && rangeContainsPos m pos + -> + Some( + CompletionContext.Pattern( + PatternContext.PositionalUnionCaseField(Some(pats.Length - 1), isTheOnlyField, caseIdRange) + ) + ) + | _ -> None) + | SynPat.Named (range = m) when rangeContainsPos m pos -> + if suppressIdentifierCompletions then + Some CompletionContext.Invalid + else + previousContext + |> Option.defaultValue PatternContext.Other + |> CompletionContext.Pattern + |> Some + | SynPat.FromParseError (pat = pat) + | SynPat.Attrib (pat = pat) -> TryGetCompletionContextInPattern suppressIdentifierCompletions pat previousContext pos + | SynPat.Paren (pat, _) -> TryGetCompletionContextInPattern suppressIdentifierCompletions pat None pos + | SynPat.ListCons (lhsPat = pat1; rhsPat = pat2) + | SynPat.As (lhsPat = pat1; rhsPat = pat2) + | SynPat.Or (lhsPat = pat1; rhsPat = pat2) -> + TryGetCompletionContextInPattern suppressIdentifierCompletions pat1 None pos + |> Option.orElseWith (fun () -> TryGetCompletionContextInPattern suppressIdentifierCompletions pat2 None pos) + | SynPat.IsInst (_, m) when rangeContainsPos m pos -> Some CompletionContext.Type + | SynPat.Wild m when rangeContainsPos m pos && m.StartColumn <> m.EndColumn -> Some CompletionContext.Invalid + | SynPat.Typed (pat = pat; targetType = synType) -> + if rangeContainsPos pat.Range pos then + TryGetCompletionContextInPattern suppressIdentifierCompletions pat previousContext pos + elif rangeContainsPos synType.Range pos then + Some CompletionContext.Type + else + None + | _ -> None + /// Try to determine completion context for the given pair (row, columns) let TryGetCompletionContext (pos, parsedInput: ParsedInput, lineStr: string) : CompletionContext option = @@ -1343,7 +1472,14 @@ module ParsedInput = | SynExpr.Record (None, None, [], _) -> Some(CompletionContext.RecordField RecordContext.Empty) // Unchecked.defaultof - | SynExpr.TypeApp (typeArgsRange = range) when rangeContainsPos range pos -> Some CompletionContext.PatternType + | SynExpr.TypeApp (typeArgsRange = range) when rangeContainsPos range pos -> Some CompletionContext.Type + + // fun (Some v$ ) -> + | SynExpr.Lambda(parsedData = Some (pats, _)) -> + pats + |> List.tryPick (fun pat -> TryGetCompletionContextInPattern true pat None pos) + |> Option.orElseWith (fun () -> defaultTraverse expr) + | _ -> defaultTraverse expr member _.VisitRecordField(path, copyOpt, field) = @@ -1394,44 +1530,59 @@ module ParsedInput = | _ -> None - member _.VisitBinding(_, defaultTraverse, (SynBinding (headPat = headPat) as synBinding)) = + member _.VisitBinding + ( + path, + defaultTraverse, + (SynBinding (headPat = headPat; trivia = trivia; returnInfo = returnInfo) as synBinding) + ) = + + let isOverride leadingKeyword = + match leadingKeyword with + | SynLeadingKeyword.Override _ -> true + | _ -> false + + let overrideContext path = + match path with + | _ :: SyntaxNode.SynTypeDefn (SynTypeDefn(typeInfo = SynComponentInfo(longId = [ enclosingType ]))) :: _ -> + Some(CompletionContext.MethodOverride enclosingType.idRange) + | _ -> Some CompletionContext.Invalid + + match returnInfo with + | Some (SynBindingReturnInfo (range = m)) when rangeContainsPos m pos -> Some CompletionContext.Type + | _ -> + match headPat with + + // override _.| + | SynPat.FromParseError _ when isOverride trivia.LeadingKeyword -> overrideContext path + + // override this.| + | SynPat.Named(ident = SynIdent (ident = selfId)) when + isOverride trivia.LeadingKeyword && selfId.idRange.End.IsAdjacentTo pos + -> + overrideContext path + + // override this.ToStr| + | SynPat.LongIdent(longDotId = SynLongIdent(id = [ _; methodId ])) when + isOverride trivia.LeadingKeyword && rangeContainsPos methodId.idRange pos + -> + overrideContext path + + | SynPat.LongIdent (longDotId = lidwd; argPats = SynArgPats.Pats pats; range = m) when rangeContainsPos m pos -> + if rangeContainsPos lidwd.Range pos then + // let fo|o x = () + Some CompletionContext.Invalid + else + pats + |> List.tryPick (fun pat -> TryGetCompletionContextInPattern true pat None pos) + |> Option.orElseWith (fun () -> defaultTraverse synBinding) - let visitParam (SkipFromParseErrorPat pat) = - match pat with | SynPat.Named (range = range) | SynPat.As (_, SynPat.Named (range = range), _) when rangeContainsPos range pos -> - // parameter without type hint, no completion - Some CompletionContext.Invalid - | SynPat.Typed (SynPat.Named (_, _, _, range), _, _) when rangeContainsPos range pos -> - // parameter with type hint, but we are on its name, no completion + // let fo|o = 1 Some CompletionContext.Invalid - | _ -> defaultTraverse synBinding - match headPat with - | SynPat.LongIdent (longDotId = lidwd) when rangeContainsPos lidwd.Range pos -> - // let fo|o x = () - Some CompletionContext.Invalid - | SynPat.LongIdent (argPats = ctorArgs; range = range) when rangeContainsPos range pos -> - match ctorArgs with - | SynArgPats.Pats pats -> - pats - |> List.tryPick (fun (SkipFromParseErrorPat pat) -> - match pat with - | SynPat.Paren (pat, _) -> - match pat with - | SynPat.Tuple (_, pats, _) -> pats |> List.tryPick visitParam - | _ -> visitParam pat - | SynPat.Wild range - | SynPat.FromParseError (SynPat.Named _, range) when rangeContainsPos range pos -> - // let foo (x| - Some CompletionContext.Invalid - | _ -> visitParam pat) | _ -> defaultTraverse synBinding - | SynPat.Named (range = range) - | SynPat.As (_, SynPat.Named (range = range), _) when rangeContainsPos range pos -> - // let fo|o = 1 - Some CompletionContext.Invalid - | _ -> defaultTraverse synBinding member _.VisitHashDirective(_, _directive, range) = // No completions in a directive @@ -1472,27 +1623,28 @@ module ParsedInput = | _ -> None member _.VisitSimplePats(_, pats) = + // Lambdas and their patterns are processed above in VisitExpr, + // so VisitSimplePats is only called for primary constructors + pats |> List.tryPick (fun pat -> - // No completions in an identifier in a pattern match pat with - // fun x| -> + // type C (x| ) | SynSimplePat.Id (range = range) when rangeContainsPos range pos -> Some CompletionContext.Invalid - | SynSimplePat.Typed (SynSimplePat.Id (range = idRange), synType, _) -> - // fun (x|: int) -> + | SynSimplePat.Typed (pat = SynSimplePat.Id (range = idRange); targetType = synType) -> + // type C (x|: int) -> if rangeContainsPos idRange pos then Some CompletionContext.Invalid - // fun (x: int|) -> + // type C (x: int|) -> elif rangeContainsPos synType.Range pos then - Some CompletionContext.PatternType + Some CompletionContext.Type else None | _ -> None) member _.VisitPat(_, defaultTraverse, pat) = - match pat with - | SynPat.IsInst (_, range) when rangeContainsPos range pos -> Some CompletionContext.PatternType - | _ -> defaultTraverse pat + TryGetCompletionContextInPattern false pat None pos + |> Option.orElseWith (fun () -> defaultTraverse pat) member _.VisitModuleDecl(_, defaultTraverse, decl) = match decl with @@ -1524,7 +1676,7 @@ module ParsedInput = member _.VisitType(_, defaultTraverse, ty) = match ty with - | SynType.LongIdent _ when rangeContainsPos ty.Range pos -> Some CompletionContext.PatternType + | SynType.LongIdent _ when rangeContainsPos ty.Range pos -> Some CompletionContext.Type | _ -> defaultTraverse ty member _.VisitRecordDefn(_, fields, _) = @@ -1559,9 +1711,15 @@ module ParsedInput = None) | _ -> None) - member _.VisitEnumDefn(_, _, _) = - // No completions anywhere in an enum, except in attributes, which is established earlier in VisitAttributeApplication - Some CompletionContext.Invalid + member _.VisitEnumDefn(_, cases, _) = + cases + |> List.tryPick (fun (SynEnumCase(ident = SynIdent (ident = id))) -> + if rangeContainsPos id.idRange pos then + // No completions in an enum case identifier + Some CompletionContext.Invalid + else + // The value expression should still get completions + None) member _.VisitTypeAbbrev(_, _, range) = if rangeContainsPos range pos then @@ -1648,9 +1806,10 @@ module ParsedInput = addLongIdentWithDots attr.TypeName walkExpr attr.ArgExpr - and walkTyparDecl (SynTyparDecl.SynTyparDecl (Attributes attrs, typar)) = + and walkTyparDecl (SynTyparDecl.SynTyparDecl (Attributes attrs, typar, intersectionConstraints, _)) = List.iter walkAttribute attrs walkTypar typar + List.iter walkType intersectionConstraints and walkTypeConstraint cx = match cx with @@ -1675,7 +1834,7 @@ module ParsedInput = and walkPat pat = match pat with - | SynPat.Tuple (_, pats, _) + | SynPat.Tuple (elementPats = pats) | SynPat.ArrayOrList (_, pats, _) | SynPat.Ands (pats, _) -> List.iter walkPat pats | SynPat.Named (SynIdent (ident, _), _, _, _) -> addIdent ident @@ -1738,6 +1897,7 @@ module ParsedInput = | SynType.StaticConstantNamed (ident, value, _) -> walkType ident walkType value + | SynType.Intersection (types = types) -> List.iter walkType types | SynType.Anon _ | SynType.AnonRecd _ | SynType.Var _ @@ -1751,48 +1911,60 @@ module ParsedInput = and walkSimplePats spats = match spats with - | SynSimplePats.SimplePats (pats, _) -> List.iter walkSimplePat pats - | SynSimplePats.Typed (pats, ty, _) -> - walkSimplePats pats - walkType ty + | SynSimplePats.SimplePats (pats = pats) -> List.iter walkSimplePat pats and walkExpr expr = match expr with - | SynExpr.Paren (e, _, _, _) - | SynExpr.Quote (_, _, e, _, _) - | SynExpr.Typed (e, _, _) - | SynExpr.InferredUpcast (e, _) - | SynExpr.InferredDowncast (e, _) - | SynExpr.AddressOf (_, e, _, _) - | SynExpr.DoBang (e, _) - | SynExpr.YieldOrReturn (_, e, _) - | SynExpr.ArrayOrListComputed (_, e, _) - | SynExpr.ComputationExpr (_, e, _) - | SynExpr.Do (e, _) - | SynExpr.Assert (e, _) - | SynExpr.Lazy (e, _) - | SynExpr.YieldOrReturnFrom (_, e, _) -> walkExpr e + | SynExpr.Paren (expr = e) + | SynExpr.Quote (quotedExpr = e) + | SynExpr.Typed (expr = e) + | SynExpr.InferredUpcast (expr = e) + | SynExpr.InferredDowncast (expr = e) + | SynExpr.AddressOf (expr = e) + | SynExpr.DoBang (expr = e) + | SynExpr.YieldOrReturn (expr = e) + | SynExpr.ArrayOrListComputed (expr = e) + | SynExpr.ComputationExpr (expr = e) + | SynExpr.Do (expr = e) + | SynExpr.Assert (expr = e) + | SynExpr.Lazy (expr = e) + | SynExpr.DotLambda (expr = e) + | SynExpr.IndexFromEnd (expr = e) + | SynExpr.YieldOrReturnFrom (expr = e) -> walkExpr e + | SynExpr.Lambda (args = pats; body = e) -> walkSimplePats pats walkExpr e - | SynExpr.New (_, t, e, _) - | SynExpr.TypeTest (e, t, _) - | SynExpr.Upcast (e, t, _) - | SynExpr.Downcast (e, t, _) -> + + | SynExpr.New (expr = e; targetType = t) + | SynExpr.TypeTest (expr = e; targetType = t) + | SynExpr.Upcast (expr = e; targetType = t) + | SynExpr.Downcast (expr = e; targetType = t) -> walkExpr e walkType t - | SynExpr.Tuple (_, es, _, _) + + | SynExpr.Tuple (exprs = es) | Sequentials es - | SynExpr.ArrayOrList (_, es, _) -> List.iter walkExpr es - | SynExpr.App (_, _, e1, e2, _) + | SynExpr.ArrayOrList (exprs = es) -> List.iter walkExpr es + + | SynExpr.JoinIn (lhsExpr = e1; rhsExpr = e2) + | SynExpr.DotIndexedGet (objectExpr = e1; indexArgs = e2) + | SynExpr.Set (targetExpr = e1; rhsExpr = e2) + | SynExpr.App (funcExpr = e1; argExpr = e2) | SynExpr.TryFinally (tryExpr = e1; finallyExpr = e2) - | SynExpr.While (_, e1, e2, _) -> List.iter walkExpr [ e1; e2 ] - | SynExpr.Record (_, _, fields, _) -> + | SynExpr.WhileBang (whileExpr = e1; doExpr = e2) + | SynExpr.While (whileExpr = e1; doExpr = e2) -> + walkExpr e1 + walkExpr e2 + + | SynExpr.Record (recordFields = fields) -> fields |> List.iter (fun (SynExprRecordField (fieldName = (ident, _); expr = e)) -> addLongIdentWithDots ident e |> Option.iter walkExpr) + | SynExpr.Ident ident -> addIdent ident + | SynExpr.ObjExpr (objType = ty; argOptions = argOpt; bindings = bindings; members = ms; extraImpls = ifaces) -> let bindings = unionBindingAndMembers bindings ms @@ -1804,41 +1976,56 @@ module ParsedInput = walkType ty List.iter walkBinding bindings List.iter walkInterfaceImpl ifaces - | SynExpr.LongIdent (_, ident, _, _) -> addLongIdentWithDots ident + + | SynExpr.LongIdent (longDotId = ident) -> addLongIdentWithDots ident + | SynExpr.For (ident = ident; identBody = e1; toBody = e2; doBody = e3) -> addIdent ident - List.iter walkExpr [ e1; e2; e3 ] - | SynExpr.ForEach (_, _, _, _, pat, e1, e2, _) -> + walkExpr e1 + walkExpr e2 + walkExpr e3 + + | SynExpr.ForEach (pat = pat; enumExpr = e1; bodyExpr = e2) -> walkPat pat - List.iter walkExpr [ e1; e2 ] - | SynExpr.MatchLambda (_, _, synMatchClauseList, _, _) -> List.iter walkClause synMatchClauseList - | SynExpr.Match (expr = e; clauses = synMatchClauseList) -> + walkExpr e1 + walkExpr e2 + + | SynExpr.MatchLambda (matchClauses = clauses) -> List.iter walkClause clauses + + | SynExpr.MatchBang (expr = e; clauses = clauses) + | SynExpr.Match (expr = e; clauses = clauses) -> walkExpr e - List.iter walkClause synMatchClauseList - | SynExpr.TypeApp (e, _, tys, _, _, _, _) -> + List.iter walkClause clauses + + | SynExpr.TypeApp (expr = e; typeArgs = tys) -> List.iter walkType tys walkExpr e + | SynExpr.LetOrUse (bindings = bindings; body = e) -> List.iter walkBinding bindings walkExpr e + | SynExpr.TryWith (tryExpr = e; withCases = clauses) -> List.iter walkClause clauses walkExpr e + | SynExpr.IfThenElse (ifExpr = e1; thenExpr = e2; elseExpr = e3) -> - List.iter walkExpr [ e1; e2 ] + walkExpr e1 + walkExpr e2 e3 |> Option.iter walkExpr - | SynExpr.LongIdentSet (ident, e, _) - | SynExpr.DotGet (e, _, ident, _) -> + + | SynExpr.LongIdentSet (longDotId = ident; expr = e) + | SynExpr.DotGet (longDotId = ident; expr = e) -> addLongIdentWithDots ident walkExpr e - | SynExpr.DotSet (e1, idents, e2, _) -> - walkExpr e1 - addLongIdentWithDots idents - walkExpr e2 - | SynExpr.Set (e1, e2, _) -> + + | SynExpr.NamedIndexedPropertySet (longDotId = ident; expr1 = e1; expr2 = e2) + | SynExpr.DotSet (targetExpr = e1; longDotId = ident; rhsExpr = e2) -> + addLongIdentWithDots ident walkExpr e1 walkExpr e2 - | SynExpr.IndexRange (expr1, _, expr2, _, _, _) -> + + | SynExpr.IndexRange (expr1 = expr1; expr2 = expr2) -> match expr1 with | Some e -> walkExpr e | None -> () @@ -1846,21 +2033,18 @@ module ParsedInput = match expr2 with | Some e -> walkExpr e | None -> () - | SynExpr.IndexFromEnd (e, _) -> walkExpr e - | SynExpr.DotIndexedGet (e, args, _, _) -> - walkExpr e - walkExpr args - | SynExpr.DotIndexedSet (e1, args, e2, _, _, _) -> + + | SynExpr.DotIndexedSet (objectExpr = e1; indexArgs = args; valueExpr = e2) -> walkExpr e1 walkExpr args walkExpr e2 - | SynExpr.NamedIndexedPropertySet (ident, e1, e2, _) -> - addLongIdentWithDots ident - List.iter walkExpr [ e1; e2 ] - | SynExpr.DotNamedIndexedPropertySet (e1, ident, e2, e3, _) -> + + | SynExpr.DotNamedIndexedPropertySet (targetExpr = e1; longDotId = ident; argExpr = e2; rhsExpr = e3) -> addLongIdentWithDots ident - List.iter walkExpr [ e1; e2; e3 ] - | SynExpr.JoinIn (e1, _, e2, _) -> List.iter walkExpr [ e1; e2 ] + walkExpr e1 + walkExpr e2 + walkExpr e3 + | SynExpr.LetOrUseBang (pat = pat; rhs = e1; andBangs = es; body = e2) -> walkPat pat walkExpr e1 @@ -1870,25 +2054,30 @@ module ParsedInput = walkExpr eAndBang walkExpr e2 + | SynExpr.TraitCall (TypesForTypar ts, sign, e, _) -> List.iter walkType ts walkMemberSig sign walkExpr e - | SynExpr.Const (SynConst.Measure (_, _, m), _) -> walkMeasure m + + | SynExpr.Const(constant = SynConst.Measure (synMeasure = m)) -> walkMeasure m + | _ -> () and walkMeasure measure = match measure with - | SynMeasure.Product (m1, m2, _) - | SynMeasure.Divide (m1, m2, _) -> + | SynMeasure.Product (measure1 = m1; measure2 = m2) -> walkMeasure m1 walkMeasure m2 + | SynMeasure.Divide (measure1 = m1; measure2 = m2) -> + m1 |> Option.iter walkMeasure + walkMeasure m2 | SynMeasure.Named (longIdent, _) -> addLongIdent longIdent | SynMeasure.Seq (ms, _) -> List.iter walkMeasure ms | SynMeasure.Paren (m, _) - | SynMeasure.Power (m, _, _) -> walkMeasure m + | SynMeasure.Power (measure = m) -> walkMeasure m | SynMeasure.Var (ty, _) -> walkTypar ty - | SynMeasure.One + | SynMeasure.One _ | SynMeasure.Anon _ -> () and walkSimplePat spat = @@ -1941,7 +2130,7 @@ module ParsedInput = | SynMemberDefn.GetSetMember (getBinding, setBinding, _, _) -> Option.iter walkBinding getBinding Option.iter walkBinding setBinding - | SynMemberDefn.ImplicitCtor (attributes = Attributes attrs; ctorArgs = SynSimplePats.SimplePats (simplePats, _)) -> + | SynMemberDefn.ImplicitCtor (attributes = Attributes attrs; ctorArgs = SynSimplePats.SimplePats (pats = simplePats)) -> List.iter walkAttribute attrs List.iter walkSimplePat simplePats | SynMemberDefn.ImplicitInherit (t, e, _, _) -> @@ -2054,7 +2243,7 @@ module ParsedInput = // We ignore all diagnostics during this operation // // Based on an initial review, no diagnostics should be generated. However the code should be checked more closely. - use _ignoreAllDiagnostics = new DiagnosticsScope() + use _ignoreAllDiagnostics = new DiagnosticsScope(false) let mutable result = None let mutable ns = None @@ -2217,7 +2406,7 @@ module ParsedInput = // We ignore all diagnostics during this operation // // Based on an initial review, no diagnostics should be generated. However the code should be checked more closely. - use _ignoreAllDiagnostics = new DiagnosticsScope() + use _ignoreAllDiagnostics = new DiagnosticsScope(false) match res with | None -> [||] diff --git a/src/fcs-fable/src/Compiler/Service/ServiceParsedInputOps.fsi b/src/fcs-fable/src/Compiler/Service/ServiceParsedInputOps.fsi index 5fb5e85d8c..5b8d877a80 100644 --- a/src/fcs-fable/src/Compiler/Service/ServiceParsedInputOps.fsi +++ b/src/fcs-fable/src/Compiler/Service/ServiceParsedInputOps.fsi @@ -22,6 +22,26 @@ type public RecordContext = | New of path: CompletionPath * isFirstField: bool | Declaration of isInIdentifier: bool +[] +type public PatternContext = + /// Completing union case field pattern (e.g. fun (Some v| ) -> ) or fun (Some (v| )) -> ). In theory, this could also be parameterized active pattern usage. + /// Position in the tuple. None if there is no tuple, with only one field outside of parentheses - `Some v|` + /// True when completing the first field in the tuple and no other field is bound - `Case (a|)` but not `Case (a|, b)` + /// Range of the case identifier + | PositionalUnionCaseField of fieldIndex: int option * isTheOnlyField: bool * caseIdRange: range + + /// Completing union case field pattern (e.g. fun (Some (Value = v| )) -> ) + | NamedUnionCaseField of fieldName: string * caseIdRange: range + + /// Completing union case field identifier in a pattern (e.g. fun (Case (field1 = a; fie| )) -> ) + | UnionCaseFieldIdentifier of referencedFields: string list * caseIdRange: range + + /// Completing a record field identifier in a pattern (e.g. fun { Field1 = a; Fie| } -> ) + | RecordFieldIdentifier of referencedFields: (string * range) list + + /// Any other position in a pattern that does not need special handling + | Other + [] type public CompletionContext = /// Completion context cannot be determined due to errors @@ -44,8 +64,9 @@ type public CompletionContext = | OpenDeclaration of isOpenType: bool - /// Completing pattern type (e.g. foo (x: |)) - | PatternType + /// Completing a type annotation (e.g. foo (x: |)) + /// Completing a type application (e.g. typeof) + | Type /// Completing union case fields declaration (e.g. 'A of stri|' but not 'B of tex|: string') | UnionCaseFieldsDeclaration @@ -54,6 +75,12 @@ type public CompletionContext = /// or a single case union without a bar (type SomeUnion = Abc|) | TypeAbbreviationOrSingleCaseUnion + /// Completing a pattern in a match clause, member/let binding or lambda + | Pattern of context: PatternContext + + /// Completing a method override (e.g. override this.ToStr|) + | MethodOverride of enclosingTypeNameRange: range + type public ModuleKind = { IsAutoOpen: bool HasModuleSuffix: bool } diff --git a/src/fcs-fable/src/Compiler/Service/ServiceStructure.fs b/src/fcs-fable/src/Compiler/Service/ServiceStructure.fs index 42d73babd2..ba89dac914 100644 --- a/src/fcs-fable/src/Compiler/Service/ServiceStructure.fs +++ b/src/fcs-fable/src/Compiler/Service/ServiceStructure.fs @@ -62,7 +62,7 @@ module Structure = | [] -> other | ls -> ls - |> List.map (fun (SynTyparDecl (_, typarg)) -> typarg.Range) + |> List.map (fun (SynTyparDecl (typar = typarg)) -> typarg.Range) |> List.reduce unionRanges /// Collapse indicates the way a range/snapshot should be collapsed. `Same` is for a scope inside @@ -431,14 +431,13 @@ module Structure = parseExpr elseExpr | None -> () - | SynExpr.While (_, _, e, r) -> + | SynExpr.While (_, _, e, r) + | SynExpr.WhileBang (_, _, e, r) -> rcheck Scope.While Collapse.Below r r parseExpr e | SynExpr.Lambda (args = pats; body = e; range = r) -> - match pats with - | SynSimplePats.SimplePats (_, pr) - | SynSimplePats.Typed (_, _, pr) -> rcheck Scope.Lambda Collapse.Below r (Range.endToEnd pr r) + rcheck Scope.Lambda Collapse.Below r (Range.endToEnd pats.Range r) parseExpr e @@ -564,20 +563,16 @@ module Structure = binding match valData with - | SynValData (Some { - MemberKind = SynMemberKind.Constructor - }, - _, - _) -> + | SynValData(memberFlags = Some { + MemberKind = SynMemberKind.Constructor + }) -> let collapse = Range.endToEnd synPat.Range d.Range rcheck Scope.New Collapse.Below d.Range collapse - | SynValData (Some { - MemberKind = SynMemberKind.PropertyGet | SynMemberKind.PropertySet - }, - _, - _) -> - let range = mkRange d.Range.FileName (mkPos d.Range.StartLine objectModelRange.StartColumn) d.Range.End + | SynValData(memberFlags = Some { + MemberKind = SynMemberKind.PropertyGet | SynMemberKind.PropertySet + }) -> + let range = withStart (mkPos d.Range.StartLine objectModelRange.StartColumn) d.Range let collapse = match synPat with diff --git a/src/fcs-fable/src/Compiler/Service/ServiceXmlDocParser.fs b/src/fcs-fable/src/Compiler/Service/ServiceXmlDocParser.fs index fb8aa0f6cc..f9f160c5a0 100644 --- a/src/fcs-fable/src/Compiler/Service/ServiceXmlDocParser.fs +++ b/src/fcs-fable/src/Compiler/Service/ServiceXmlDocParser.fs @@ -26,7 +26,7 @@ module XmlDocParsing = | SynPat.Attrib (pat, _attrs, _range) -> digNamesFrom pat | SynPat.LongIdent(argPats = ConstructorPats pats) -> pats |> List.collect digNamesFrom | SynPat.ListCons (p1, p2, _, _) -> List.collect digNamesFrom [ p1; p2 ] - | SynPat.Tuple (_, pats, _range) -> pats |> List.collect digNamesFrom + | SynPat.Tuple (elementPats = pats) -> pats |> List.collect digNamesFrom | SynPat.Paren (pat, _range) -> digNamesFrom pat | SynPat.OptionalVal (id, _) -> [ id.idText ] | SynPat.As _ // no one uses as in fun decls @@ -39,7 +39,6 @@ module XmlDocParsing = | SynPat.Wild _ | SynPat.IsInst _ | SynPat.QuoteExpr _ - | SynPat.DeprecatedCharRange _ | SynPat.InstanceMember _ | SynPat.FromParseError _ -> [] @@ -47,11 +46,11 @@ module XmlDocParsing = let (SynBinding (valData = synValData; headPat = synPat)) = binding match synValData with - | SynValData (_, SynValInfo (curriedArgs, _), _) when not curriedArgs.IsEmpty -> + | SynValData(valInfo = SynValInfo (curriedArgInfos = curriedArgs)) when not curriedArgs.IsEmpty -> let parameters = [ for args in curriedArgs do - for (SynArgInfo (_, _, ident)) in args do + for (SynArgInfo (ident = ident)) in args do match ident with | Some ident -> ident.idText | None -> () diff --git a/src/fcs-fable/src/Compiler/Service/service.fs b/src/fcs-fable/src/Compiler/Service/service.fs index 283e179159..8b9bda8e9f 100644 --- a/src/fcs-fable/src/Compiler/Service/service.fs +++ b/src/fcs-fable/src/Compiler/Service/service.fs @@ -60,7 +60,7 @@ module EnvMisc = [] type DocumentSource = | FileSystem - | Custom of (string -> ISourceText option) + | Custom of (string -> Async) /// Callback that indicates whether a requested result has become obsolete. [] @@ -107,14 +107,14 @@ module Helpers = | _ -> false module CompileHelpers = - let mkCompilationDiagnosticsHandlers () = + let mkCompilationDiagnosticsHandlers (flatErrors) = let diagnostics = ResizeArray<_>() let diagnosticsLogger = { new DiagnosticsLogger("CompileAPI") with member _.DiagnosticSink(diag, isError) = - diagnostics.Add(FSharpDiagnostic.CreateFromException(diag, isError, range0, true)) // Suggest names for errors + diagnostics.Add(FSharpDiagnostic.CreateFromException(diag, isError, range0, true, flatErrors, None)) // Suggest names for errors member _.ErrorCount = diagnostics @@ -145,7 +145,8 @@ module CompileHelpers = /// Compile using the given flags. Source files names are resolved via the FileSystem API. The output file must be given by a -o flag. let compileFromArgs (ctok, argv: string[], legacyReferenceResolver, tcImportsCapture, dynamicAssemblyCreator) = - let diagnostics, diagnosticsLogger, loggerProvider = mkCompilationDiagnosticsHandlers () + let diagnostics, diagnosticsLogger, loggerProvider = + mkCompilationDiagnosticsHandlers (argv |> Array.contains "--flaterrors") let result = tryCompile diagnosticsLogger (fun exiter -> @@ -202,7 +203,7 @@ type BackgroundCompiler enablePartialTypeChecking, parallelReferenceResolution, captureIdentifiersWhenParsing, - getSource: (string -> ISourceText option) option, + getSource: (string -> Async) option, useChangeNotifications, useSyntaxTreeCache ) as self = @@ -262,7 +263,7 @@ type BackgroundCompiler member x.FileName = nm } - | FSharpReferencedProject.PEReference (nm, getStamp, delayedReader) -> + | FSharpReferencedProject.PEReference (getStamp, delayedReader) -> { new IProjectReference with member x.EvaluateRawContents() = node { @@ -280,7 +281,7 @@ type BackgroundCompiler } member x.TryGetLogicalTimeStamp _ = getStamp () |> Some - member x.FileName = nm + member x.FileName = delayedReader.OutputFile } | FSharpReferencedProject.ILModuleReference (nm, getStamp, getReader) -> @@ -495,7 +496,7 @@ type BackgroundCompiler checkFileInProjectCache.Set(ltok, key, res) res) - member _.ParseFile(fileName: string, sourceText: ISourceText, options: FSharpParsingOptions, cache: bool, userOpName: string) = + member _.ParseFile(fileName: string, sourceText: ISourceText, options: FSharpParsingOptions, cache: bool, flatErrors: bool, userOpName: string) = async { use _ = Activity.start @@ -513,16 +514,28 @@ type BackgroundCompiler | Some res -> return res | None -> Interlocked.Increment(&actualParseFileCount) |> ignore + let! ct = Async.CancellationToken let parseDiagnostics, parseTree, anyErrors = - ParseAndCheckFile.parseFile (sourceText, fileName, options, userOpName, suggestNamesForErrors, captureIdentifiersWhenParsing) + ParseAndCheckFile.parseFile ( + sourceText, + fileName, + options, + userOpName, + suggestNamesForErrors, + flatErrors, + captureIdentifiersWhenParsing, + ct + ) let res = FSharpParseFileResults(parseDiagnostics, parseTree, anyErrors, options.SourceFiles) parseCacheLock.AcquireLock(fun ltok -> parseFileCache.Set(ltok, (fileName, hash, options), res)) return res else + let! ct = Async.CancellationToken + let parseDiagnostics, parseTree, anyErrors = - ParseAndCheckFile.parseFile (sourceText, fileName, options, userOpName, false, captureIdentifiersWhenParsing) + ParseAndCheckFile.parseFile (sourceText, fileName, options, userOpName, false, flatErrors, captureIdentifiersWhenParsing, ct) return FSharpParseFileResults(parseDiagnostics, parseTree, anyErrors, options.SourceFiles) } @@ -545,7 +558,15 @@ type BackgroundCompiler let parseTree, _, _, parseDiagnostics = builder.GetParseResultsForFile fileName let parseDiagnostics = - DiagnosticHelpers.CreateDiagnostics(builder.TcConfig.diagnosticsOptions, false, fileName, parseDiagnostics, suggestNamesForErrors) + DiagnosticHelpers.CreateDiagnostics( + builder.TcConfig.diagnosticsOptions, + false, + fileName, + parseDiagnostics, + suggestNamesForErrors, + builder.TcConfig.flatErrors, + None + ) let diagnostics = [| yield! creationDiags; yield! parseDiagnostics |] @@ -767,6 +788,7 @@ type BackgroundCompiler FSharpParsingOptions.FromTcConfig(builder.TcConfig, Array.ofList builder.SourceFiles, options.UseScriptResolutionRules) GraphNode.SetPreferredUILang tcPrior.TcConfig.preferredUiLang + let! ct = NodeCode.CancellationToken let parseDiagnostics, parseTree, anyErrors = ParseAndCheckFile.parseFile ( @@ -775,7 +797,9 @@ type BackgroundCompiler parsingOptions, userOpName, suggestNamesForErrors, - captureIdentifiersWhenParsing + builder.TcConfig.flatErrors, + captureIdentifiersWhenParsing, + ct ) let parseResults = @@ -842,13 +866,33 @@ type BackgroundCompiler let tcDiagnostics = tcInfo.TcDiagnostics let diagnosticsOptions = builder.TcConfig.diagnosticsOptions + let symbolEnv = + SymbolEnv(tcProj.TcGlobals, tcInfo.tcState.Ccu, Some tcInfo.tcState.CcuSig, tcProj.TcImports) + |> Some + let parseDiagnostics = - DiagnosticHelpers.CreateDiagnostics(diagnosticsOptions, false, fileName, parseDiagnostics, suggestNamesForErrors) + DiagnosticHelpers.CreateDiagnostics( + diagnosticsOptions, + false, + fileName, + parseDiagnostics, + suggestNamesForErrors, + builder.TcConfig.flatErrors, + None + ) let parseDiagnostics = [| yield! creationDiags; yield! parseDiagnostics |] let tcDiagnostics = - DiagnosticHelpers.CreateDiagnostics(diagnosticsOptions, false, fileName, tcDiagnostics, suggestNamesForErrors) + DiagnosticHelpers.CreateDiagnostics( + diagnosticsOptions, + false, + fileName, + tcDiagnostics, + suggestNamesForErrors, + builder.TcConfig.flatErrors, + symbolEnv + ) let tcDiagnostics = [| yield! creationDiags; yield! tcDiagnostics |] @@ -1001,8 +1045,20 @@ type BackgroundCompiler let tcDiagnostics = tcInfo.TcDiagnostics let tcDependencyFiles = tcInfo.tcDependencyFiles + let symbolEnv = + SymbolEnv(tcProj.TcGlobals, tcInfo.tcState.Ccu, Some tcInfo.tcState.CcuSig, tcProj.TcImports) + |> Some + let tcDiagnostics = - DiagnosticHelpers.CreateDiagnostics(diagnosticsOptions, true, fileName, tcDiagnostics, suggestNamesForErrors) + DiagnosticHelpers.CreateDiagnostics( + diagnosticsOptions, + true, + fileName, + tcDiagnostics, + suggestNamesForErrors, + builder.TcConfig.flatErrors, + symbolEnv + ) let diagnostics = [| yield! creationDiags; yield! tcDiagnostics |] @@ -1091,8 +1147,6 @@ type BackgroundCompiler [| Activity.Tags.fileName, fileName; Activity.Tags.userOpName, _userOpName |] cancellable { - use diagnostics = new DiagnosticsScope() - // Do we add a reference to FSharp.Compiler.Interactive.Settings by default? let useFsiAuxLib = defaultArg useFsiAuxLib true let useSdkRefs = defaultArg useSdkRefs true @@ -1110,6 +1164,8 @@ type BackgroundCompiler let otherFlags = defaultArg otherFlags extraFlags + use diagnostics = new DiagnosticsScope(otherFlags |> Array.contains "--flaterrors") + let useSimpleResolution = otherFlags |> Array.exists (fun x -> x = "--simpleresolution") let loadedTimeStamp = defaultArg loadedTimeStamp DateTime.MaxValue // Not 'now', we don't want to force reloading @@ -1167,7 +1223,8 @@ type BackgroundCompiler let diags = loadClosure.LoadClosureRootFileDiagnostics - |> List.map (fun (exn, isError) -> FSharpDiagnostic.CreateFromException(exn, isError, range.Zero, false)) + |> List.map (fun (exn, isError) -> + FSharpDiagnostic.CreateFromException(exn, isError, range.Zero, false, options.OtherOptions |> Array.contains "--flaterrors", None)) return options, (diags @ diagnostics.Diagnostics) } @@ -1402,8 +1459,10 @@ type FSharpChecker match braceMatchCache.TryGet(AnyCallerThread, (fileName, hash, options)) with | Some res -> return res | None -> + let! ct = Async.CancellationToken + let res = - ParseAndCheckFile.matchBraces (sourceText, fileName, options, userOpName, suggestNamesForErrors) + ParseAndCheckFile.matchBraces (sourceText, fileName, options, userOpName, suggestNamesForErrors, ct) braceMatchCache.Set(AnyCallerThread, (fileName, hash, options), res) return res @@ -1422,7 +1481,7 @@ type FSharpChecker member _.ParseFile(fileName, sourceText, options, ?cache, ?userOpName: string) = let cache = defaultArg cache true let userOpName = defaultArg userOpName "Unknown" - backgroundCompiler.ParseFile(fileName, sourceText, options, cache, userOpName) + backgroundCompiler.ParseFile(fileName, sourceText, options, cache, false, userOpName) member ic.ParseFileInProject(fileName, source: string, options, ?cache: bool, ?userOpName: string) = let parsingOptions, _ = ic.GetParsingOptionsFromProjectOptions(options) @@ -1658,7 +1717,7 @@ type FSharpChecker member _.GetParsingOptionsFromCommandLineArgs(sourceFiles, argv, ?isInteractive, ?isEditing) = let isEditing = defaultArg isEditing false let isInteractive = defaultArg isInteractive false - use errorScope = new DiagnosticsScope() + use errorScope = new DiagnosticsScope(argv |> List.contains "--flaterrors") let tcConfigB = TcConfigBuilder.CreateNew( @@ -1707,7 +1766,7 @@ type FSharpChecker /// Tokenize a single line, returning token information and a tokenization state represented by an integer member _.TokenizeLine(line: string, state: FSharpTokenizerLexState) = - let tokenizer = FSharpSourceTokenizer([], None) + let tokenizer = FSharpSourceTokenizer([], None, None, None) let lineTokenizer = tokenizer.CreateLineTokenizer line let mutable state = (None, state) diff --git a/src/fcs-fable/src/Compiler/Service/service.fsi b/src/fcs-fable/src/Compiler/Service/service.fsi index 06880ced31..1c0d0b118e 100644 --- a/src/fcs-fable/src/Compiler/Service/service.fsi +++ b/src/fcs-fable/src/Compiler/Service/service.fsi @@ -22,7 +22,7 @@ open FSharp.Compiler.Tokenization [] type DocumentSource = | FileSystem - | Custom of (string -> ISourceText option) + | Custom of (string -> Async) /// Used to parse and check F# source code. [] diff --git a/src/fcs-fable/src/Compiler/Symbols/Exprs.fsi b/src/fcs-fable/src/Compiler/Symbols/Exprs.fsi index a698366617..5c92be7002 100644 --- a/src/fcs-fable/src/Compiler/Symbols/Exprs.fsi +++ b/src/fcs-fable/src/Compiler/Symbols/Exprs.fsi @@ -254,6 +254,3 @@ module public FSharpExprPatterns = /// Indicates a witness argument index from the witness arguments supplied to the enclosing method val (|WitnessArg|_|): FSharpExpr -> int option - - /// Matches an expression with a debug point - val (|DebugPoint|_|): FSharpExpr -> (DebugPointAtLeafExpr * FSharpExpr) option diff --git a/src/fcs-fable/src/Compiler/Symbols/FSharpDiagnostic.fs b/src/fcs-fable/src/Compiler/Symbols/FSharpDiagnostic.fs index c4b57e84c9..0320e8001a 100644 --- a/src/fcs-fable/src/Compiler/Symbols/FSharpDiagnostic.fs +++ b/src/fcs-fable/src/Compiler/Symbols/FSharpDiagnostic.fs @@ -9,11 +9,19 @@ namespace FSharp.Compiler.Diagnostics open System -open Internal.Utilities.Library +open FSharp.Compiler.CheckExpressions +open FSharp.Compiler.ConstraintSolver +open FSharp.Compiler.SignatureConformance +open FSharp.Compiler.Symbols +open FSharp.Compiler.Syntax +open FSharp.Compiler.TypedTree +open FSharp.Compiler.TypedTreeBasics +open FSharp.Compiler.TypedTreeOps +open Internal.Utilities.Library open Internal.Utilities.Library.Extras open FSharp.Core.Printf -open FSharp.Compiler +open FSharp.Compiler open FSharp.Compiler.CompilerDiagnostics open FSharp.Compiler.Diagnostics open FSharp.Compiler.DiagnosticsLogger @@ -21,7 +29,87 @@ open FSharp.Compiler.Text open FSharp.Compiler.Text.Position open FSharp.Compiler.Text.Range -type FSharpDiagnostic(m: range, severity: FSharpDiagnosticSeverity, message: string, subcategory: string, errorNum: int, numberPrefix: string) = +module ExtendedData = + [] + type DiagnosticContextInfo = + | NoContext + | IfExpression + | OmittedElseBranch + | ElseBranchResult + | RecordFields + | TupleInRecordFields + | CollectionElement + | ReturnInComputationExpression + | YieldInComputationExpression + | RuntimeTypeTest + | DowncastUsedInsteadOfUpcast + | FollowingPatternMatchClause + | PatternMatchGuard + | SequenceExpression + with + static member From(contextInfo: ContextInfo) = + match contextInfo with + | ContextInfo.NoContext -> NoContext + | ContextInfo.IfExpression _ -> IfExpression + | ContextInfo.OmittedElseBranch _ -> OmittedElseBranch + | ContextInfo.ElseBranchResult _ -> ElseBranchResult + | ContextInfo.RecordFields -> RecordFields + | ContextInfo.TupleInRecordFields -> TupleInRecordFields + | ContextInfo.CollectionElement _ -> CollectionElement + | ContextInfo.ReturnInComputationExpression -> ReturnInComputationExpression + | ContextInfo.YieldInComputationExpression -> YieldInComputationExpression + | ContextInfo.RuntimeTypeTest _ -> RuntimeTypeTest + | ContextInfo.DowncastUsedInsteadOfUpcast _ -> DowncastUsedInsteadOfUpcast + | ContextInfo.FollowingPatternMatchClause _ -> FollowingPatternMatchClause + | ContextInfo.PatternMatchGuard _ -> PatternMatchGuard + | ContextInfo.SequenceExpression _ -> SequenceExpression + + [] + type IFSharpDiagnosticExtendedData = interface end + + [] + type TypeMismatchDiagnosticExtendedData + internal (symbolEnv: SymbolEnv, dispEnv: DisplayEnv, expectedType: TType, actualType: TType, context: DiagnosticContextInfo) = + interface IFSharpDiagnosticExtendedData + + member x.ExpectedType = FSharpType(symbolEnv, expectedType) + member x.ActualType = FSharpType(symbolEnv, actualType) + member x.ContextInfo = context + member x.DisplayContext = FSharpDisplayContext(fun _ -> dispEnv) + + [] + type ExpressionIsAFunctionExtendedData + internal (symbolEnv: SymbolEnv, actualType: TType) = + interface IFSharpDiagnosticExtendedData + + member x.ActualType = FSharpType(symbolEnv, actualType) + + [] + type FieldNotContainedDiagnosticExtendedData + internal (symbolEnv: SymbolEnv, implTycon: Tycon, sigTycon: Tycon, signatureField: RecdField, implementationField: RecdField) = + interface IFSharpDiagnosticExtendedData + member x.SignatureField = FSharpField(symbolEnv, RecdFieldRef.RecdFieldRef(mkLocalTyconRef sigTycon, signatureField.Id.idText)) + member x.ImplementationField = FSharpField(symbolEnv, RecdFieldRef.RecdFieldRef(mkLocalTyconRef implTycon, implementationField.Id.idText)) + + [] + type ValueNotContainedDiagnosticExtendedData + internal (symbolEnv: SymbolEnv, signatureValue: Val, implValue: Val) = + interface IFSharpDiagnosticExtendedData + member x.SignatureValue = FSharpMemberOrFunctionOrValue(symbolEnv, mkLocalValRef signatureValue) + member x.ImplementationValue = FSharpMemberOrFunctionOrValue(symbolEnv, mkLocalValRef implValue) + + [] + type ArgumentsInSigAndImplMismatchExtendedData + internal(sigArg: Ident, implArg: Ident) = + interface IFSharpDiagnosticExtendedData + member x.SignatureName = sigArg.idText + member x.ImplementationName = implArg.idText + member x.SignatureRange = sigArg.idRange + member x.ImplementationRange = implArg.idRange + +open ExtendedData + +type FSharpDiagnostic(m: range, severity: FSharpDiagnosticSeverity, message: string, subcategory: string, errorNum: int, numberPrefix: string, extendedData: IFSharpDiagnosticExtendedData option) = member _.Range = m member _.Severity = severity @@ -50,13 +138,16 @@ type FSharpDiagnostic(m: range, severity: FSharpDiagnosticSeverity, message: str member _.FileName = m.FileName + [] + member _.ExtendedData = extendedData + member _.WithStart newStart = let m = mkFileIndexRange m.FileIndex newStart m.End - FSharpDiagnostic(m, severity, message, subcategory, errorNum, numberPrefix) + FSharpDiagnostic(m, severity, message, subcategory, errorNum, numberPrefix, extendedData) member _.WithEnd newEnd = let m = mkFileIndexRange m.FileIndex m.Start newEnd - FSharpDiagnostic(m, severity, message, subcategory, errorNum, numberPrefix) + FSharpDiagnostic(m, severity, message, subcategory, errorNum, numberPrefix, extendedData) override _.ToString() = let fileName = m.FileName @@ -71,15 +162,52 @@ type FSharpDiagnostic(m: range, severity: FSharpDiagnosticSeverity, message: str sprintf "%s (%d,%d)-(%d,%d) %s %s %s" fileName s.Line (s.Column + 1) e.Line (e.Column + 1) subcategory severity message /// Decompose a warning or error into parts: position, severity, message, error number - static member CreateFromException(diagnostic: PhasedDiagnostic, severity, fallbackRange: range, suggestNames: bool) = - let m = match diagnostic.Range with Some m -> m | None -> fallbackRange - let msg = diagnostic.FormatCore(false, suggestNames) + static member CreateFromException(diagnostic: PhasedDiagnostic, severity, fallbackRange: range, suggestNames: bool, flatErrors: bool, symbolEnv: SymbolEnv option) = + let m = match diagnostic.Range with Some m -> m | None -> fallbackRange + let extendedData: IFSharpDiagnosticExtendedData option = + match symbolEnv with + | None -> None + | Some symbolEnv -> + + match diagnostic.Exception with + | ErrorFromAddingTypeEquation(_, displayEnv, expectedType, actualType, ConstraintSolverTupleDiffLengths(contextInfo = contextInfo), _) + | ErrorFromAddingTypeEquation(_, displayEnv, expectedType, actualType, ConstraintSolverTypesNotInEqualityRelation(_, _, _, _, _, contextInfo), _) + | ErrorsFromAddingSubsumptionConstraint(_, displayEnv, expectedType, actualType, _, contextInfo, _) -> + let context = DiagnosticContextInfo.From(contextInfo) + Some(TypeMismatchDiagnosticExtendedData(symbolEnv, displayEnv, expectedType, actualType, context)) + + | ErrorFromAddingTypeEquation(_, displayEnv, expectedType, actualType, _, _)-> + Some(TypeMismatchDiagnosticExtendedData(symbolEnv, displayEnv, expectedType, actualType, DiagnosticContextInfo.NoContext)) + + | FunctionValueUnexpected(_, actualType, _) -> + Some(ExpressionIsAFunctionExtendedData(symbolEnv, actualType)) + + | FieldNotContained(_, _, implEntity, sigEntity, impl, sign, _) -> + Some(FieldNotContainedDiagnosticExtendedData(symbolEnv, implEntity, sigEntity, sign, impl)) + + | ValueNotContained(_, _, _, implValue, sigValue, _) -> + Some(ValueNotContainedDiagnosticExtendedData(symbolEnv, sigValue, implValue)) + + | ArgumentsInSigAndImplMismatch(sigArg, implArg) -> + Some(ArgumentsInSigAndImplMismatchExtendedData(sigArg, implArg)) + + | _ -> None + + let msg = +#if FABLE_COMPILER + diagnostic.FormatCore(flatErrors, suggestNames) +#else + match diagnostic.Exception.Data["CachedFormatCore"] with + | :? string as message -> message + | _ -> diagnostic.FormatCore(flatErrors, suggestNames) +#endif + let errorNum = diagnostic.Number - FSharpDiagnostic(m, severity, msg, diagnostic.Subcategory(), errorNum, "FS") + FSharpDiagnostic(m, severity, msg, diagnostic.Subcategory(), errorNum, "FS", extendedData) /// Decompose a warning or error into parts: position, severity, message, error number - static member CreateFromExceptionAndAdjustEof(diagnostic, severity, fallbackRange: range, (linesCount: int, lastLength: int), suggestNames: bool) = - let diagnostic = FSharpDiagnostic.CreateFromException(diagnostic, severity, fallbackRange, suggestNames) + static member CreateFromExceptionAndAdjustEof(diagnostic, severity, fallbackRange: range, (linesCount: int, lastLength: int), suggestNames: bool, flatErrors: bool, symbolEnv: SymbolEnv option) = + let diagnostic = FSharpDiagnostic.CreateFromException(diagnostic, severity, fallbackRange, suggestNames, flatErrors, symbolEnv) // Adjust to make sure that diagnostics reported at Eof are shown at the linesCount let startLine, startChanged = min (Line.toZ diagnostic.Range.StartLine, false) (linesCount, true) @@ -98,11 +226,11 @@ type FSharpDiagnostic(m: range, severity: FSharpDiagnosticSeverity, message: str static member Create(severity, message, number, range, ?numberPrefix, ?subcategory) = let subcategory = defaultArg subcategory BuildPhaseSubcategory.TypeCheck let numberPrefix = defaultArg numberPrefix "FS" - FSharpDiagnostic(range, severity, message, subcategory, number, numberPrefix) + FSharpDiagnostic(range, severity, message, subcategory, number, numberPrefix, None) /// Use to reset error and warning handlers [] -type DiagnosticsScope() = +type DiagnosticsScope(flatErrors: bool) = let mutable diags = [] let unwindBP = UseBuildPhase BuildPhase.TypeCheck let unwindEL = @@ -110,7 +238,7 @@ type DiagnosticsScope() = { new DiagnosticsLogger("DiagnosticsScope") with member _.DiagnosticSink(diagnostic, severity) = - let diagnostic = FSharpDiagnostic.CreateFromException(diagnostic, severity, range.Zero, false) + let diagnostic = FSharpDiagnostic.CreateFromException(diagnostic, severity, range.Zero, false, flatErrors, None) diags <- diagnostic :: diags member _.ErrorCount = diags.Length } @@ -139,7 +267,7 @@ type DiagnosticsScope() = /// autocomplete, then the error message is shown in replacement of the text (rather than crashing Visual /// Studio, or swallowing the exception completely) static member Protect<'a> (m: range) (f: unit->'a) (err: string->'a): 'a = - use diagnosticsScope = new DiagnosticsScope() + use diagnosticsScope = new DiagnosticsScope(false) let res = try Some (f()) @@ -184,7 +312,7 @@ type internal CompilationDiagnosticLogger (debugName: string, options: FSharpDia module DiagnosticHelpers = - let ReportDiagnostic (options: FSharpDiagnosticOptions, allErrors, mainInputFileName, fileInfo, diagnostic: PhasedDiagnostic, severity, suggestNames) = + let ReportDiagnostic (options: FSharpDiagnosticOptions, allErrors, mainInputFileName, fileInfo, diagnostic: PhasedDiagnostic, severity, suggestNames, flatErrors, symbolEnv) = [ let severity = if diagnostic.ReportAsError (options, severity) then FSharpDiagnosticSeverity.Error @@ -198,12 +326,12 @@ module DiagnosticHelpers = // We use the first line of the file as a fallbackRange for reporting unexpected errors. // Not ideal, but it's hard to see what else to do. let fallbackRange = rangeN mainInputFileName 1 - let diagnostic = FSharpDiagnostic.CreateFromExceptionAndAdjustEof (diagnostic, severity, fallbackRange, fileInfo, suggestNames) + let diagnostic = FSharpDiagnostic.CreateFromExceptionAndAdjustEof (diagnostic, severity, fallbackRange, fileInfo, suggestNames, flatErrors, symbolEnv) let fileName = diagnostic.Range.FileName if allErrors || fileName = mainInputFileName || fileName = TcGlobals.DummyFileNameForRangesWithoutASpecificLocation then yield diagnostic ] - let CreateDiagnostics (options, allErrors, mainInputFileName, diagnostics, suggestNames) = + let CreateDiagnostics (options, allErrors, mainInputFileName, diagnostics, suggestNames, flatErrors, symbolEnv) = let fileInfo = (Int32.MaxValue, Int32.MaxValue) [| for diagnostic, severity in diagnostics do - yield! ReportDiagnostic (options, allErrors, mainInputFileName, fileInfo, diagnostic, severity, suggestNames) |] + yield! ReportDiagnostic (options, allErrors, mainInputFileName, fileInfo, diagnostic, severity, suggestNames, flatErrors, symbolEnv) |] diff --git a/src/fcs-fable/src/Compiler/Symbols/FSharpDiagnostic.fsi b/src/fcs-fable/src/Compiler/Symbols/FSharpDiagnostic.fsi index 313c14240e..252a15a33c 100644 --- a/src/fcs-fable/src/Compiler/Symbols/FSharpDiagnostic.fsi +++ b/src/fcs-fable/src/Compiler/Symbols/FSharpDiagnostic.fsi @@ -7,9 +7,102 @@ namespace FSharp.Compiler.Diagnostics open System +open FSharp.Compiler.Symbols open FSharp.Compiler.Text open FSharp.Compiler.DiagnosticsLogger +module public ExtendedData = + /// Information about the context of a type equation in type-mismatch-like diagnostic + [] + type public DiagnosticContextInfo = + /// No context was given + | NoContext + /// The type equation comes from an IF expression + | IfExpression + /// The type equation comes from an omitted else branch + | OmittedElseBranch + /// The type equation comes from a type check of the result of an else branch + | ElseBranchResult + /// The type equation comes from the verification of record fields + | RecordFields + /// The type equation comes from the verification of a tuple in record fields + | TupleInRecordFields + /// The type equation comes from a list or array constructor + | CollectionElement + /// The type equation comes from a return in a computation expression + | ReturnInComputationExpression + /// The type equation comes from a yield in a computation expression + | YieldInComputationExpression + /// The type equation comes from a runtime type test + | RuntimeTypeTest + /// The type equation comes from an downcast where a upcast could be used + | DowncastUsedInsteadOfUpcast + /// The type equation comes from a return type of a pattern match clause (not the first clause) + | FollowingPatternMatchClause + /// The type equation comes from a pattern match guard + | PatternMatchGuard + /// The type equation comes from a sequence expression + | SequenceExpression + + /// Contextually-relevant data to each particular diagnostic + [] + type public IFSharpDiagnosticExtendedData = + interface + end + + /// Additional data for type-mismatch-like (usually with ErrorNumber = 1) diagnostics + [] + type public TypeMismatchDiagnosticExtendedData = + interface IFSharpDiagnosticExtendedData + /// Represents F# type expected in the current context + member ExpectedType: FSharpType + /// Represents F# type type actual in the current context + member ActualType: FSharpType + /// The context in which the type mismatch was found + member ContextInfo: DiagnosticContextInfo + /// Represents the information needed to format types + member DisplayContext: FSharpDisplayContext + + /// Additional data for 'This expression is a function value, i.e. is missing arguments' diagnostic + [] + type public ExpressionIsAFunctionExtendedData = + interface IFSharpDiagnosticExtendedData + /// Represents F# type of the expression + member ActualType: FSharpType + + /// Additional data for diagnostics about a field whose declarations differ in signature and implementation + [] + type public FieldNotContainedDiagnosticExtendedData = + interface IFSharpDiagnosticExtendedData + /// Represents F# field in signature file + member SignatureField: FSharpField + /// Represents F# field in implementation file + member ImplementationField: FSharpField + + /// Additional data for diagnostics about a value whose declarations differ in signature and implementation + [] + type public ValueNotContainedDiagnosticExtendedData = + interface IFSharpDiagnosticExtendedData + /// Represents F# value in signature file + member SignatureValue: FSharpMemberOrFunctionOrValue + /// Represents F# value in implementation file + member ImplementationValue: FSharpMemberOrFunctionOrValue + + /// Additional data for 'argument names in the signature and implementation do not match' diagnostic + [] + type ArgumentsInSigAndImplMismatchExtendedData = + interface IFSharpDiagnosticExtendedData + /// Argument name in signature file + member SignatureName: string + /// Argument name in implementation file + member ImplementationName: string + /// Argument identifier range within signature file + member SignatureRange: range + /// Argument identifier range within implementation file + member ImplementationRange: range + +open ExtendedData + /// Represents a diagnostic produced by the F# compiler [] type public FSharpDiagnostic = @@ -56,6 +149,10 @@ type public FSharpDiagnostic = /// Gets the full error number text e.g "FS0031" member ErrorNumberText: string + /// Gets the contextually-relevant data to each particular diagnostic for things like code fixes + [] + member ExtendedData: IFSharpDiagnosticExtendedData option + /// Creates a diagnostic, e.g. for reporting from an analyzer static member Create: severity: FSharpDiagnosticSeverity * @@ -71,11 +168,18 @@ type public FSharpDiagnostic = severity: FSharpDiagnosticSeverity * range * lastPosInFile: (int * int) * - suggestNames: bool -> + suggestNames: bool * + flatErrors: bool * + symbolEnv: SymbolEnv option -> FSharpDiagnostic static member internal CreateFromException: - diagnostic: PhasedDiagnostic * severity: FSharpDiagnosticSeverity * range * suggestNames: bool -> + diagnostic: PhasedDiagnostic * + severity: FSharpDiagnosticSeverity * + range * + suggestNames: bool * + flatErrors: bool * + symbolEnv: SymbolEnv option -> FSharpDiagnostic /// Newlines are recognized and replaced with (ASCII 29, the 'group separator'), @@ -95,7 +199,7 @@ type internal DiagnosticsScope = interface IDisposable - new: unit -> DiagnosticsScope + new: bool -> DiagnosticsScope member Diagnostics: FSharpDiagnostic list @@ -122,7 +226,9 @@ module internal DiagnosticHelpers = fileInfo: (int * int) * diagnostic: PhasedDiagnostic * severity: FSharpDiagnosticSeverity * - suggestNames: bool -> + suggestNames: bool * + flatErrors: bool * + symbolEnv: SymbolEnv option -> FSharpDiagnostic list val CreateDiagnostics: @@ -130,5 +236,7 @@ module internal DiagnosticHelpers = allErrors: bool * mainInputFileName: string * seq * - suggestNames: bool -> + suggestNames: bool * + flatErrors: bool * + symbolEnv: SymbolEnv option -> FSharpDiagnostic[] diff --git a/src/fcs-fable/src/Compiler/Symbols/SymbolHelpers.fs b/src/fcs-fable/src/Compiler/Symbols/SymbolHelpers.fs index f64b536999..e76f9e2542 100644 --- a/src/fcs-fable/src/Compiler/Symbols/SymbolHelpers.fs +++ b/src/fcs-fable/src/Compiler/Symbols/SymbolHelpers.fs @@ -99,7 +99,10 @@ module internal SymbolHelpers = | Item.UnionCaseField (UnionCaseInfo (_, ucref), fieldIndex) -> Some (rangeOfRecdField preferFlag (ucref.FieldByIndex(fieldIndex))) | Item.Event einfo -> rangeOfEventInfo preferFlag einfo | Item.ILField _ -> None - | Item.Property(_, pinfos) -> rangeOfPropInfo preferFlag pinfos.Head + | Item.Property(info = pinfos; sourceIdentifierRange = mNameOpt) -> + match mNameOpt with + | Some m -> Some m + | None -> rangeOfPropInfo preferFlag pinfos.Head | Item.Types(_, tys) -> tys |> List.tryPick (tryNiceEntityRefOfTyOption >> Option.map (rangeOfEntityRef preferFlag)) | Item.CustomOperation (_, _, Some minfo) -> rangeOfMethInfo g preferFlag minfo | Item.Trait _ -> None @@ -162,7 +165,7 @@ module internal SymbolHelpers = | Item.ILField finfo -> finfo.DeclaringTyconRef |> computeCcuOfTyconRef - | Item.Property(_, pinfos) -> + | Item.Property(info = pinfos) -> pinfos |> List.tryPick (fun pinfo -> pinfo.ArbitraryValRef |> Option.bind ccuOfValRef @@ -304,7 +307,7 @@ module internal SymbolHelpers = | Item.ModuleOrNamespaces(modref :: _) -> mkXmlComment (GetXmlDocSigOfEntityRef infoReader m modref) - | Item.Property(_, pinfo :: _) -> + | Item.Property(info = pinfo :: _) -> mkXmlComment (GetXmlDocSigOfProp infoReader m pinfo) | Item.Event einfo -> @@ -337,7 +340,7 @@ module internal SymbolHelpers = // These empty lists are not expected to occur | Item.CtorGroup (_, []) | Item.MethodGroup (_, [], _) - | Item.Property (_, []) + | Item.Property (info = []) | Item.ModuleOrNamespaces [] | Item.UnqualifiedType [] | Item.Types(_, []) -> @@ -456,7 +459,7 @@ module internal SymbolHelpers = g.unionCaseRefEq ur1 ur2 | Item.RecdField(RecdFieldInfo(_, RecdFieldRef(tcref1, n1))), Item.RecdField(RecdFieldInfo(_, RecdFieldRef(tcref2, n2))) -> (tyconRefEq g tcref1 tcref2) && (n1 = n2) // there is no direct function as in the previous case - | Item.Property(_, pi1s), Item.Property(_, pi2s) -> + | Item.Property(info = pi1s), Item.Property(info = pi2s) -> (pi1s, pi2s) ||> List.forall2 (fun pi1 pi2 -> PropInfo.PropInfosUseIdenticalDefinitions pi1 pi2) | Item.Event evt1, Item.Event evt2 -> EventInfo.EventInfosUseIdenticalDefinitions evt1 evt2 @@ -500,7 +503,7 @@ module internal SymbolHelpers = | Item.AnonRecdField(anon, _, i, _) -> hash anon.SortedNames[i] | Item.Trait traitInfo -> hash traitInfo.MemberLogicalName | Item.Event evt -> evt.ComputeHashCode() - | Item.Property(_name, pis) -> hash (pis |> List.map (fun pi -> pi.ComputeHashCode())) + | Item.Property(info = pis) -> hash (pis |> List.map (fun pi -> pi.ComputeHashCode())) | Item.UnqualifiedType(tcref :: _) -> hash tcref.LogicalName // These are not expected to occur, see InEqualityRelation and ItemWhereTypIsPreferred @@ -568,7 +571,7 @@ module internal SymbolHelpers = | Item.NewDef id -> id.idText | Item.ILField finfo -> buildString (fun os -> NicePrint.outputType denv os finfo.ApparentEnclosingType; bprintf os ".%s" finfo.FieldName) | Item.Event einfo -> buildString (fun os -> NicePrint.outputTyconRef denv os einfo.DeclaringTyconRef; bprintf os ".%s" einfo.EventName) - | Item.Property(_, pinfo :: _) -> buildString (fun os -> NicePrint.outputTyconRef denv os pinfo.DeclaringTyconRef; bprintf os ".%s" pinfo.PropertyName) + | Item.Property(info = pinfo :: _) -> buildString (fun os -> NicePrint.outputTyconRef denv os pinfo.DeclaringTyconRef; bprintf os ".%s" pinfo.PropertyName) | Item.CustomOperation (customOpName, _, _) -> customOpName | Item.CtorGroup(_, minfo :: _) -> buildString (fun os -> NicePrint.outputTyconRef denv os minfo.DeclaringTyconRef) | Item.MethodGroup(_, _, Some minfo) -> buildString (fun os -> NicePrint.outputTyconRef denv os minfo.DeclaringTyconRef; bprintf os ".%s" minfo.DisplayName) @@ -595,7 +598,7 @@ module internal SymbolHelpers = | Item.CtorGroup(_, []) | Item.MethodGroup(_, [], _) | Item.ModuleOrNamespaces [] - | Item.Property(_, []) -> "" + | Item.Property(info = []) -> "" /// Output the description of a language item let rec GetXmlCommentForItem (infoReader: InfoReader) m item = @@ -645,7 +648,7 @@ module internal SymbolHelpers = let doc = if einfo.HasDirectXmlComment || einfo.XmlDoc.NonEmpty then Some einfo.XmlDoc else None GetXmlCommentForItemAux doc infoReader m item - | Item.Property(_, pinfos) -> + | Item.Property(info = pinfos) -> let pinfo = pinfos.Head let doc = if pinfo.HasDirectXmlComment || pinfo.XmlDoc.NonEmpty then Some pinfo.XmlDoc else None GetXmlCommentForItemAux doc infoReader m item @@ -886,7 +889,7 @@ module internal SymbolHelpers = | _ -> modref.Deref.CompiledRepresentationForNamedType.FullName |> Some | [] -> None // Pathological case of the above - | Item.Property(_, pinfo :: _) -> + | Item.Property(info = pinfo :: _) -> match pinfo with | FSProp(_, _, Some vref, _) | FSProp(_, _, _, Some vref) -> @@ -903,7 +906,7 @@ module internal SymbolHelpers = #if !NO_TYPEPROVIDERS | ProvidedProp _ -> None #endif - | Item.Property(_, []) -> None // Pathological case of the above + | Item.Property(info = []) -> None // Pathological case of the above | Item.Event einfo -> match einfo with @@ -970,7 +973,7 @@ module internal SymbolHelpers = | Item.Value v -> if isForallFunctionTy g v.Type then [item] else [] | Item.UnionCase(ucr, _) -> if not ucr.UnionCase.IsNullary then [item] else [] | Item.ExnCase ecr -> if isNil (recdFieldsOfExnDefRef ecr) then [] else [item] - | Item.Property(_, pinfos) -> + | Item.Property(info = pinfos) -> let pinfo = List.head pinfos if pinfo.IsIndexer then [item] else [] #if !NO_TYPEPROVIDERS diff --git a/src/fcs-fable/src/Compiler/Symbols/Symbols.fs b/src/fcs-fable/src/Compiler/Symbols/Symbols.fs index c4f6de5de4..dc2772708b 100644 --- a/src/fcs-fable/src/Compiler/Symbols/Symbols.fs +++ b/src/fcs-fable/src/Compiler/Symbols/Symbols.fs @@ -287,7 +287,7 @@ type FSharpSymbol(cenv: SymbolEnv, item: unit -> Item, access: FSharpSymbol -> C | Item.Event einfo -> FSharpMemberOrFunctionOrValue(cenv, E einfo, item) :> _ - | Item.Property(_, pinfo :: _) -> + | Item.Property(info = pinfo :: _) -> FSharpMemberOrFunctionOrValue(cenv, P pinfo, item) :> _ | Item.MethodGroup(_, minfo :: _, _) -> @@ -341,7 +341,7 @@ type FSharpSymbol(cenv: SymbolEnv, item: unit -> Item, access: FSharpSymbol -> C | Item.CustomOperation (_, _, None) | Item.UnqualifiedType [] | Item.ModuleOrNamespaces [] - | Item.Property (_, []) + | Item.Property (info = []) | Item.MethodGroup (_, [], _) | Item.CtorGroup (_, []) // These cases cover misc. corned cases (non-symbol types) @@ -589,7 +589,7 @@ type FSharpEntity(cenv: SymbolEnv, entity: EntityRef) = member _.FSharpDelegateSignature = checkIsResolved() match entity.TypeReprInfo with - | TFSharpObjectRepr r when entity.IsFSharpDelegateTycon -> + | TFSharpTyconRepr r when entity.IsFSharpDelegateTycon -> match r.fsobjmodel_kind with | TFSharpDelegate ss -> FSharpDelegateSignature(cenv, ss) | _ -> invalidOp "not a delegate type" @@ -668,7 +668,7 @@ type FSharpEntity(cenv: SymbolEnv, entity: EntityRef) = let events = cenv.infoReader.GetImmediateIntrinsicEventsOfType (None, AccessibleFromSomeFSharpCode, range0, entityTy) for pinfo in props do - yield FSharpMemberOrFunctionOrValue(cenv, P pinfo, Item.Property (pinfo.PropertyName, [pinfo])) + yield FSharpMemberOrFunctionOrValue(cenv, P pinfo, Item.Property (pinfo.PropertyName, [pinfo], None)) for einfo in events do yield FSharpMemberOrFunctionOrValue(cenv, E einfo, Item.Event einfo) @@ -683,10 +683,10 @@ type FSharpEntity(cenv: SymbolEnv, entity: EntityRef) = match v.MemberInfo.Value.MemberFlags.MemberKind, v.ApparentEnclosingEntity with | SynMemberKind.PropertyGet, Parent tcref -> let pinfo = FSProp(cenv.g, generalizedTyconRef cenv.g tcref, Some vref, None) - yield FSharpMemberOrFunctionOrValue(cenv, P pinfo, Item.Property (pinfo.PropertyName, [pinfo])) + yield FSharpMemberOrFunctionOrValue(cenv, P pinfo, Item.Property (pinfo.PropertyName, [pinfo], None)) | SynMemberKind.PropertySet, Parent p -> let pinfo = FSProp(cenv.g, generalizedTyconRef cenv.g p, None, Some vref) - yield FSharpMemberOrFunctionOrValue(cenv, P pinfo, Item.Property (pinfo.PropertyName, [pinfo])) + yield FSharpMemberOrFunctionOrValue(cenv, P pinfo, Item.Property (pinfo.PropertyName, [pinfo], None)) | _ -> () elif not v.IsMember then @@ -992,6 +992,10 @@ type FSharpUnionCase(cenv, v: UnionCaseRef) = checkIsResolved() v.Range + member _.DeclaringEntity = + checkIsResolved() + FSharpEntity(cenv, v.TyconRef) + member _.HasFields = if isUnresolved() then false else v.UnionCase.RecdFieldsArray.Length <> 0 @@ -2295,6 +2299,11 @@ type FSharpMemberOrFunctionOrValue(cenv, d:FSharpMemberOrValData, item) = | V vref -> not vref.IsCtorThisVal && isRefCellTy cenv.g vref.Type | _ -> false + member x.IsReferencedValue = + match d with + | V vref -> vref.Deref.HasBeenReferenced + | _ -> false + override x.Equals(other: obj) = box x === other || match other with @@ -2350,6 +2359,41 @@ type FSharpMemberOrFunctionOrValue(cenv, d:FSharpMemberOrValData, item) = |> LayoutRender.toArray |> Some + member x.GetValSignatureText (displayContext: FSharpDisplayContext, m: range) = + checkIsResolved() + let displayEnv = { displayContext.Contents cenv.g with includeStaticParametersInTypeNames = true; suppressInlineKeyword = false } + + let stringValOfMethInfo (methInfo: MethInfo) = + match methInfo with + | FSMeth(valRef = vref) -> NicePrint.stringValOrMember displayEnv cenv.infoReader vref + | _ -> NicePrint.stringOfMethInfoFSharpStyle cenv.infoReader m displayEnv methInfo + + let stringValOfPropInfo (p: PropInfo) = + match p with + | DifferentGetterAndSetter(getValRef, setValRef) -> + let g = NicePrint.stringValOrMember displayEnv cenv.infoReader getValRef + let s = NicePrint.stringValOrMember displayEnv cenv.infoReader setValRef + $"{g}\n{s}" + | _ -> + let t = p.GetPropertyType(cenv.amap, m ) |> NicePrint.layoutType displayEnv |> LayoutRender.showL + let withGetSet = + if p.HasGetter && p.HasSetter then "with get, set" + elif p.HasGetter then "with get" + elif p.HasSetter then "with set" + else "" + + $"member %s{p.DisplayName}: %s{t} %s{withGetSet}" + + match d with + | E _ -> None + | V v -> + NicePrint.stringValOrMember displayEnv cenv.infoReader v + |> Some + | C methInfo + | M methInfo -> stringValOfMethInfo methInfo |> Some + | P p -> stringValOfPropInfo p |> Some + + member x.GetWitnessPassingInfo() = let witnessInfos = match d with diff --git a/src/fcs-fable/src/Compiler/Symbols/Symbols.fsi b/src/fcs-fable/src/Compiler/Symbols/Symbols.fsi index 68344ade4e..f465fd671d 100644 --- a/src/fcs-fable/src/Compiler/Symbols/Symbols.fsi +++ b/src/fcs-fable/src/Compiler/Symbols/Symbols.fsi @@ -454,6 +454,9 @@ type FSharpUnionCase = /// Get the range of the name of the case member DeclarationLocation: range + /// Get the declaring entity of the case + member DeclaringEntity: FSharpEntity + /// Indicates if the union case has field definitions member HasFields: bool @@ -945,6 +948,9 @@ type FSharpMemberOrFunctionOrValue = /// Indicates if this is a ref cell member IsRefCell: bool + /// Indicates if this is a value that has been referenced + member IsReferencedValue: bool + /// Indicated if this is a value member IsValue: bool @@ -960,6 +966,9 @@ type FSharpMemberOrFunctionOrValue = /// Format the type using the rules of the given display context member GetReturnTypeLayout: displayContext: FSharpDisplayContext -> TaggedText[] option + /// Get the signature text to include this Symbol into an existing signature file. + member GetValSignatureText: displayContext: FSharpDisplayContext * m: range -> string option + /// Check if this method has an entrpoint that accepts witness arguments and if so return /// the name of that entrypoint and information about the additional witness arguments member GetWitnessPassingInfo: unit -> (string * IList) option diff --git a/src/fcs-fable/src/Compiler/SyntaxTree/LexFilter.fs b/src/fcs-fable/src/Compiler/SyntaxTree/LexFilter.fs index f0fc084b78..e592960c6b 100644 --- a/src/fcs-fable/src/Compiler/SyntaxTree/LexFilter.fs +++ b/src/fcs-fable/src/Compiler/SyntaxTree/LexFilter.fs @@ -6,7 +6,7 @@ module internal FSharp.Compiler.LexFilter open System.Collections.Generic open Internal.Utilities.Text.Lexing -open FSharp.Compiler +open FSharp.Compiler open Internal.Utilities.Library open FSharp.Compiler.AbstractIL.Diagnostics open FSharp.Compiler.DiagnosticsLogger @@ -16,60 +16,60 @@ open FSharp.Compiler.ParseHelpers open FSharp.Compiler.Parser open FSharp.Compiler.UnicodeLexing -let debug = false +let forceDebug = false let stringOfPos (pos: Position) = sprintf "(%d:%d)" pos.OriginalLine pos.Column let outputPos os (pos: Position) = Printf.fprintf os "(%d:%d)" pos.OriginalLine pos.Column -/// Used for warning strings, which should display columns as 1-based and display +/// Used for warning strings, which should display columns as 1-based and display /// the lines after taking '# line' directives into account (i.e. do not use /// p.OriginalLine) let warningStringOfPosition (pos: Position) = warningStringOfCoords pos.Line pos.Column -type Context = +type Context = // Position is position of keyword. - // bool indicates 'LET' is an offside let that's part of a CtxtSeqBlock where the 'in' is optional - | CtxtLetDecl of bool * Position - | CtxtIf of Position - | CtxtTry of Position - | CtxtFun of Position - | CtxtFunction of Position - | CtxtWithAsLet of Position // 'with' when used in an object expression - | CtxtWithAsAugment of Position // 'with' as used in a type augmentation - | CtxtMatch of Position - | CtxtFor of Position - | CtxtWhile of Position - | CtxtWhen of Position + // bool indicates 'LET' is an offside let that's part of a CtxtSeqBlock where the 'in' is optional + | CtxtLetDecl of bool * Position + | CtxtIf of Position + | CtxtTry of Position + | CtxtFun of Position + | CtxtFunction of Position + | CtxtWithAsLet of Position // 'with' when used in an object expression + | CtxtWithAsAugment of Position // 'with' as used in a type augmentation + | CtxtMatch of Position + | CtxtFor of Position + | CtxtWhile of Position + | CtxtWhen of Position | CtxtVanilla of Position * bool // boolean indicates if vanilla started with 'x = ...' or 'x.y = ...' - | CtxtThen of Position - | CtxtElse of Position - | CtxtDo of Position - | CtxtInterfaceHead of Position - | CtxtTypeDefns of Position // 'type =', not removed when we find the "=" - + | CtxtThen of Position + | CtxtElse of Position + | CtxtDo of Position + | CtxtInterfaceHead of Position + | CtxtTypeDefns of Position * equalsEndPos: Position option // 'type =', not removed when we find the "=" + | CtxtNamespaceHead of Position * token - | CtxtModuleHead of Position * token * LexingModuleAttributes - | CtxtMemberHead of Position - | CtxtMemberBody of Position - // If bool is true then this is "whole file" + | CtxtModuleHead of Position * token * LexingModuleAttributes * isNested: bool + | CtxtMemberHead of Position + | CtxtMemberBody of Position + // If bool is true then this is "whole file" // module A.B - // If bool is false, this is a "module declaration" + // If bool is false, this is a "module declaration" // module A = ... - | CtxtModuleBody of Position * bool - | CtxtNamespaceBody of Position - | CtxtException of Position - | CtxtParen of token * Position - // Position is position of following token - | CtxtSeqBlock of FirstInSequence * Position * AddBlockEnd + | CtxtModuleBody of Position * bool + | CtxtNamespaceBody of Position + | CtxtException of Position + | CtxtParen of token * Position + // Position is position of following token + | CtxtSeqBlock of FirstInSequence * Position * AddBlockEnd // Indicates we're processing the second part of a match, after the 'with' // First bool indicates "was this 'with' followed immediately by a '|'"? | CtxtMatchClauses of bool * Position - member c.StartPos = - match c with - | CtxtNamespaceHead (p, _) | CtxtModuleHead (p, _, _) | CtxtException p | CtxtModuleBody (p, _) | CtxtNamespaceBody p - | CtxtLetDecl (_, p) | CtxtDo p | CtxtInterfaceHead p | CtxtTypeDefns p | CtxtParen (_, p) | CtxtMemberHead p | CtxtMemberBody p + member c.StartPos = + match c with + | CtxtNamespaceHead (p, _) | CtxtModuleHead (p, _, _, _) | CtxtException p | CtxtModuleBody (p, _) | CtxtNamespaceBody p + | CtxtLetDecl (_, p) | CtxtDo p | CtxtInterfaceHead p | CtxtTypeDefns(p, _) | CtxtParen (_, p) | CtxtMemberHead p | CtxtMemberBody p | CtxtWithAsLet p | CtxtWithAsAugment p | CtxtMatchClauses (_, p) | CtxtIf p | CtxtMatch p | CtxtFor p | CtxtWhile p | CtxtWhen p | CtxtFunction p | CtxtFun p | CtxtTry p | CtxtThen p | CtxtElse p | CtxtVanilla (p, _) @@ -77,8 +77,8 @@ type Context = member c.StartCol = c.StartPos.Column - override c.ToString() = - match c with + override c.ToString() = + match c with | CtxtNamespaceHead _ -> "nshead" | CtxtModuleHead _ -> "modhead" | CtxtException _ -> "exception" @@ -100,7 +100,7 @@ type Context = | CtxtMatch _ -> "match" | CtxtFor _ -> "for" | CtxtWhile p -> sprintf "while(%s)" (stringOfPos p) - | CtxtWhen _ -> "when" + | CtxtWhen _ -> "when" | CtxtTry _ -> "try" | CtxtFun _ -> "fun" | CtxtFunction _ -> "function" @@ -108,54 +108,54 @@ type Context = | CtxtThen _ -> "then" | CtxtElse p -> sprintf "else(%s)" (stringOfPos p) | CtxtVanilla (p, _) -> sprintf "vanilla(%s)" (stringOfPos p) - + and AddBlockEnd = AddBlockEnd | NoAddBlockEnd | AddOneSidedBlockEnd and FirstInSequence = FirstInSeqBlock | NotFirstInSeqBlock and LexingModuleAttributes = LexingModuleAttributes | NotLexingModuleAttributes -let isInfix token = - match token with - | COMMA - | BAR_BAR - | AMP_AMP - | AMP +let isInfix token = + match token with + | COMMA + | BAR_BAR + | AMP_AMP + | AMP | OR - | INFIX_BAR_OP _ - | INFIX_AMP_OP _ - | INFIX_COMPARE_OP _ - | DOLLAR + | INFIX_BAR_OP _ + | INFIX_AMP_OP _ + | INFIX_COMPARE_OP _ + | DOLLAR // For the purposes of #light processing, <, > and = are not considered to be infix operators. // This is because treating them as infix conflicts with their role in other parts of the grammar, - // e.g. to delimit "f", or for "let f x = ...." + // e.g. to delimit "f", or for "let f x = ...." // // This has the impact that a SeqBlock does not automatically start on the right of a "<", ">" or "=", // e.g. - // let f x = (x = + // let f x = (x = // let a = 1 // no #light block started here, parentheses or 'in' needed // a + x) // LESS | GREATER | EQUALS - + | INFIX_AT_HAT_OP _ - | PLUS_MINUS_OP _ + | PLUS_MINUS_OP _ | COLON_COLON | COLON_GREATER | COLON_QMARK_GREATER - | COLON_EQUALS - | MINUS - | STAR + | COLON_EQUALS + | MINUS + | STAR | INFIX_STAR_DIV_MOD_OP _ - | INFIX_STAR_STAR_OP _ + | INFIX_STAR_STAR_OP _ | QMARK_QMARK -> true | _ -> false -let infixTokenLength token = - match token with +let infixTokenLength token = + match token with | COMMA -> 1 | AMP -> 1 | OR -> 1 | DOLLAR -> 1 - | MINUS -> 1 + | MINUS -> 1 | STAR -> 1 | BAR -> 1 | LESS false -> 1 @@ -167,16 +167,16 @@ let infixTokenLength token = | COLON_EQUALS -> 2 | BAR_BAR -> 2 | AMP_AMP -> 2 - | INFIX_BAR_OP d - | INFIX_AMP_OP d - | INFIX_COMPARE_OP d + | INFIX_BAR_OP d + | INFIX_AMP_OP d + | INFIX_COMPARE_OP d | INFIX_AT_HAT_OP d - | PLUS_MINUS_OP d + | PLUS_MINUS_OP d | INFIX_STAR_DIV_MOD_OP d | INFIX_STAR_STAR_OP d -> d.Length | COLON_QMARK_GREATER -> 3 | _ -> assert false; 1 - + /// Matches against a left-parenthesis-like token that is valid in expressions. // // LBRACK_LESS and GREATER_RBRACK are not here because adding them in these active patterns @@ -197,20 +197,20 @@ let (|TokenRExprParen|_|) token = /// Determine the tokens that may align with the 'if' of an 'if/then/elif/else' without closing /// the construct let rec isIfBlockContinuator token = - match token with + match token with // The following tokens may align with the "if" without closing the "if", e.g. // if ... // then ... // elif ... - // else ... - | THEN | ELSE | ELIF -> true - // Likewise + // else ... + | THEN | ELSE | ELIF -> true + // Likewise // if ... then ( - // ) elif begin - // end else ... - | END | RPAREN -> true - // The following arise during reprocessing of the inserted tokens, e.g. when we hit a DONE - | ORIGHT_BLOCK_END | OBLOCKEND | ODECLEND -> true + // ) elif begin + // end else ... + | END | RPAREN -> true + // The following arise during reprocessing of the inserted tokens, e.g. when we hit a DONE + | ORIGHT_BLOCK_END _ | OBLOCKEND _ | ODECLEND _ -> true | ODUMMY token -> isIfBlockContinuator token | _ -> false @@ -218,234 +218,243 @@ let rec isIfBlockContinuator token = /// Determine the token that may align with the 'match' of a 'match/with' without closing /// the construct let rec isMatchBlockContinuator token = - match token with + match token with // These tokens may align with the "match" without closing the construct, e.g. // match ... - // with ... + // with ... | WITH -> true // The following arise during reprocessing of the inserted tokens when we hit a DONE - | ORIGHT_BLOCK_END | OBLOCKEND | ODECLEND -> true + | ORIGHT_BLOCK_END _ | OBLOCKEND _ | ODECLEND _ -> true | ODUMMY token -> isMatchBlockContinuator token | _ -> false /// Determine the token that may align with the 'try' of a 'try/with' or 'try/finally' without closing /// the construct let rec isTryBlockContinuator token = - match token with + match token with // These tokens may align with the "try" without closing the construct, e.g. // try ... - // with ... - | FINALLY | WITH -> true + // with ... + | FINALLY | WITH -> true // The following arise during reprocessing of the inserted tokens when we hit a DONE - | ORIGHT_BLOCK_END | OBLOCKEND | ODECLEND -> true + | ORIGHT_BLOCK_END _ | OBLOCKEND _ | ODECLEND _ -> true | ODUMMY token -> isTryBlockContinuator token | _ -> false let rec isThenBlockContinuator token = - match token with + match token with // The following arise during reprocessing of the inserted tokens when we hit a DONE - | ORIGHT_BLOCK_END | OBLOCKEND | ODECLEND -> true + | ORIGHT_BLOCK_END _ | OBLOCKEND _ | ODECLEND _ -> true | ODUMMY token -> isThenBlockContinuator token | _ -> false let rec isDoContinuator token = - match token with + match token with // These tokens may align with the "for" without closing the construct, e.g. - // for ... - // do - // ... - // done *) - | DONE -> true - | ORIGHT_BLOCK_END | OBLOCKEND | ODECLEND -> true // The following arise during reprocessing of the inserted tokens when we hit a DONE + // for ... + // do + // ... + // done *) + | DONE -> true + | ORIGHT_BLOCK_END _ | OBLOCKEND _ | ODECLEND _ -> true // The following arise during reprocessing of the inserted tokens when we hit a DONE | ODUMMY token -> isDoContinuator token | _ -> false let rec isInterfaceContinuator token = - match token with + match token with // These tokens may align with the token "interface" without closing the construct, e.g. - // interface ... with + // interface ... with // ... - // end - | END -> true - | ORIGHT_BLOCK_END | OBLOCKEND | ODECLEND -> true // The following arise during reprocessing of the inserted tokens when we hit a DONE + // end + | END -> true + | ORIGHT_BLOCK_END _ | OBLOCKEND _ | ODECLEND _ -> true // The following arise during reprocessing of the inserted tokens when we hit a DONE | ODUMMY token -> isInterfaceContinuator token | _ -> false let rec isNamespaceContinuator token = - match token with - // These tokens end the construct, e.g. - // namespace A.B.C + match token with + // These tokens end the construct, e.g. + // namespace A.B.C // ... // namespace <-- here - // .... - | EOF _ | NAMESPACE -> false + // .... + | EOF _ | NAMESPACE -> false | ODUMMY token -> isNamespaceContinuator token - | _ -> true // anything else is a namespace continuator + | _ -> true // anything else is a namespace continuator let rec isTypeContinuator token = - match token with + match token with // The following tokens may align with the token "type" without closing the construct, e.g. - // type X = + // type X = // | A // | B // and Y = c <--- 'and' HERE - // + // // type X = { // x: int // y: int // } <--- '}' HERE - // and Y = c + // and Y = c // // type Complex = struct // val im : float // end with <--- 'end' HERE // static member M() = 1 - // end - | RBRACE _ | WITH | BAR | AND | END -> true - - // The following arise during reprocessing of the inserted tokens when we hit a DONE - | ORIGHT_BLOCK_END | OBLOCKEND | ODECLEND -> true + // end + | RBRACE _ | WITH | BAR | AND | END -> true + + // The following arise during reprocessing of the inserted tokens when we hit a DONE + | ORIGHT_BLOCK_END _ | OBLOCKEND _ | ODECLEND _ -> true | ODUMMY token -> isTypeContinuator token | _ -> false let rec isForLoopContinuator token = - match token with + match token with // This token may align with the "for" without closing the construct, e.g. - // for ... do - // ... - // done - | DONE -> true - | ORIGHT_BLOCK_END | OBLOCKEND | ODECLEND -> true// The following arise during reprocessing of the inserted tokens when we hit a DONE + // for ... do + // ... + // done + | DONE -> true + | ORIGHT_BLOCK_END _ | OBLOCKEND _ | ODECLEND _ -> true// The following arise during reprocessing of the inserted tokens when we hit a DONE | ODUMMY token -> isForLoopContinuator token | _ -> false let rec isWhileBlockContinuator token = - match token with + match token with // This token may align with the "while" without closing the construct, e.g. - // while ... do - // ... - // done - | DONE -> true - | ORIGHT_BLOCK_END | OBLOCKEND | ODECLEND -> true // The following arise during reprocessing of the inserted tokens when we hit a DONE + // while ... do + // ... + // done + | DONE -> true + | ORIGHT_BLOCK_END _ | OBLOCKEND _ | ODECLEND _ -> true // The following arise during reprocessing of the inserted tokens when we hit a DONE | ODUMMY token -> isWhileBlockContinuator token | _ -> false let rec isLetContinuator token = - match token with + match token with // This token may align with the "let" without closing the construct, e.g. // let ... - // and ... - | AND -> true - | ORIGHT_BLOCK_END | OBLOCKEND | ODECLEND -> true // The following arise during reprocessing of the inserted tokens when we hit a DONE + // and ... + | AND -> true + | ORIGHT_BLOCK_END _ | OBLOCKEND _ | ODECLEND _ -> true // The following arise during reprocessing of the inserted tokens when we hit a DONE | ODUMMY token -> isLetContinuator token | _ -> false -let rec isTypeSeqBlockElementContinuator token = - match token with +let rec isTypeSeqBlockElementContinuator token = + match token with // A sequence of items separated by '|' counts as one sequence block element, e.g. - // type x = + // type x = // | A <-- These together count as one element // | B <-- These together count as one element // member x.M1 - // member x.M2 + // member x.M2 | BAR -> true - | OBLOCKBEGIN | ORIGHT_BLOCK_END | OBLOCKEND | ODECLEND -> true // The following arise during reprocessing of the inserted tokens when we hit a DONE - | ODUMMY token -> isTypeSeqBlockElementContinuator token + | OBLOCKBEGIN | ORIGHT_BLOCK_END _ | OBLOCKEND _ | ODECLEND _ -> true // The following arise during reprocessing of the inserted tokens when we hit a DONE + | ODUMMY token -> isTypeSeqBlockElementContinuator token | _ -> false -// Work out when a token doesn't terminate a single item in a sequence definition +// Work out when a token doesn't terminate a single item in a sequence definition let rec isSeqBlockElementContinuator token = - isInfix token || - // Infix tokens may align with the first column of a sequence block without closing a sequence element and starting a new one - // e.g. + isInfix token || + // Infix tokens may align with the first column of a sequence block without closing a sequence element and starting a new one + // e.g. // let f x - // h x + // h x // |> y <------- NOTE: Not a new element in the sequence - match token with + match token with // The following tokens may align with the first column of a sequence block without closing a sequence element and starting a new one *) - // e.g. + // e.g. // new MenuItem("&Open...", - // new EventHandler(fun _ _ -> + // new EventHandler(fun _ _ -> // ... // ), <------- NOTE RPAREN HERE // Shortcut.CtrlO) - | END | AND | WITH | THEN | RPAREN | RBRACE _ | BAR_RBRACE | RBRACK | BAR_RBRACK | RQUOTE _ -> true + | END | AND | WITH | THEN | RPAREN | RBRACE _ | BAR_RBRACE | RBRACK | BAR_RBRACK | RQUOTE _ -> true // The following arise during reprocessing of the inserted tokens when we hit a DONE - | ORIGHT_BLOCK_END | OBLOCKEND | ODECLEND -> true - | ODUMMY token -> isSeqBlockElementContinuator token + | ORIGHT_BLOCK_END _ | OBLOCKEND _ | ODECLEND _ -> true + | ODUMMY token -> isSeqBlockElementContinuator token | _ -> false -let rec isWithAugmentBlockContinuator token = - match token with +let rec isWithAugmentBlockContinuator token = + match token with // This token may align with "with" of an augmentation block without closing the construct, e.g. // interface Foo - // with + // with // member ... - // end - | END -> true + // end + | END -> true | ODUMMY token -> isWithAugmentBlockContinuator token | _ -> false -let isAtomicExprEndToken token = +let isAtomicExprEndToken token = match token with - | IDENT _ - | INT8 _ | INT16 _ | INT32 _ | INT64 _ | NATIVEINT _ + | IDENT _ + | INT8 _ | INT16 _ | INT32 _ | INT64 _ | NATIVEINT _ | UINT8 _ | UINT16 _ | UINT32 _ | UINT64 _ | UNATIVEINT _ - | DECIMAL _ | BIGNUM _ | STRING _ | BYTEARRAY _ | CHAR _ - | IEEE32 _ | IEEE64 _ - | RPAREN | RBRACK | RBRACE _ | BAR_RBRACE | BAR_RBRACK | END + | DECIMAL _ | BIGNUM _ | STRING _ | BYTEARRAY _ | CHAR _ + | IEEE32 _ | IEEE64 _ + | RPAREN | RBRACK | RBRACE _ | BAR_RBRACE | BAR_RBRACK | END | NULL | FALSE | TRUE | UNDERSCORE -> true | _ -> false - + //---------------------------------------------------------------------------- // give a 'begin' token, does an 'end' token match? //-------------------------------------------------------------------------- -let parenTokensBalance token1 token2 = - match token1, token2 with - | LPAREN, RPAREN - | LBRACE _, RBRACE _ - | LBRACE_BAR, BAR_RBRACE - | LBRACK, RBRACK - | INTERFACE, END - | CLASS, END - | SIG, END - | STRUCT, END +let parenTokensBalance token1 token2 = + match token1, token2 with + | LPAREN, RPAREN + | LBRACE _, RBRACE _ + | LBRACE_BAR, BAR_RBRACE + | LBRACK, RBRACK + | INTERFACE, END + | CLASS, END + | SIG, END + | STRUCT, END | INTERP_STRING_BEGIN_PART _, INTERP_STRING_END _ | INTERP_STRING_BEGIN_PART _, INTERP_STRING_PART _ | INTERP_STRING_PART _, INTERP_STRING_PART _ | INTERP_STRING_PART _, INTERP_STRING_END _ | LBRACK_BAR, BAR_RBRACK - | LESS true, GREATER true - | BEGIN, END -> true - | LQUOTE q1, RQUOTE q2 when q1 = q2 -> true + | LESS true, GREATER true + | BEGIN, END -> true + | LQUOTE q1, RQUOTE q2 when q1 = q2 -> true | _ -> false - + /// Used to save some aspects of the lexbuffer state [] type LexbufState(startPos: Position, endPos : Position, - pastEOF : bool) = + pastEOF : bool) = member _.StartPos = startPos member _.EndPos = endPos member _.PastEOF = pastEOF + override this.ToString() = + $"({this.StartPos}--{this.EndPos})" + /// Used to save the state related to a token /// Treat as though this is read-only. [] -type TokenTup = +type TokenTup = // This is mutable for performance reasons. val mutable Token : token val mutable LexbufState : LexbufState val mutable LastTokenPos: Position - new (token, state, lastTokenPos) = { Token=token; LexbufState=state;LastTokenPos=lastTokenPos } - + + new (token, state, lastTokenPos) = + { Token = token; LexbufState = state;LastTokenPos = lastTokenPos } + /// Returns starting position of the token member x.StartPos = x.LexbufState.StartPos + /// Returns end position of the token member x.EndPos = x.LexbufState.EndPos - + + override this.ToString() = + $"{this.Token} ({this.StartPos}--{this.EndPos})" + type TokenTupPool() = /// Arbitrary. @@ -457,7 +466,7 @@ type TokenTupPool() = let mutable currentPoolSize = 0 let stack = Stack(10) - member pool.Rent() = + member pool.Rent() = if stack.Count = 0 then if currentPoolSize < maxSize then stack.Push(TokenTup(Unchecked.defaultof<_>, Unchecked.defaultof<_>, Unchecked.defaultof<_>)) @@ -479,24 +488,24 @@ type TokenTupPool() = stack.Push x /// Returns a token 'tok' with the same position as this token - member pool.UseLocation(x: TokenTup, tok) = - let tokState = x.LexbufState + member pool.UseLocation(x: TokenTup, tok) = + let tokState = x.LexbufState let tokTup = pool.Rent() tokTup.Token <- tok tokTup.LexbufState <- LexbufState(tokState.StartPos, tokState.EndPos, false) tokTup.LastTokenPos <- x.LastTokenPos tokTup - - /// Returns a token 'tok' with the same position as this token, except that + + /// Returns a token 'tok' with the same position as this token, except that /// it is shifted by specified number of characters from the left and from the right /// Note: positive value means shift to the right in both cases - member pool.UseShiftedLocation(x: TokenTup, tok, shiftLeft, shiftRight) = + member pool.UseShiftedLocation(x: TokenTup, tok, shiftLeft, shiftRight) = let tokState = x.LexbufState let tokTup = pool.Rent() tokTup.Token <- tok tokTup.LexbufState <- LexbufState(tokState.StartPos.ShiftColumnBy shiftLeft, tokState.EndPos.ShiftColumnBy shiftRight, false) tokTup.LastTokenPos <- x.LastTokenPos - tokTup + tokTup //---------------------------------------------------------------------------- // Utilities for the tokenizer that are needed in other places @@ -504,33 +513,33 @@ type TokenTupPool() = // Strip a bunch of leading '>' of a token, at the end of a typar application // Note: this is used in the 'service.fs' to do limited postprocessing -let (|TyparsCloseOp|_|) (txt: string) = +let (|TyparsCloseOp|_|) (txt: string) = let angles = txt |> Seq.takeWhile (fun c -> c = '>') |> Seq.toList let afterAngles = txt |> Seq.skipWhile (fun c -> c = '>') |> Seq.toList if List.isEmpty angles then None else - let afterOp = - match (System.String(Array.ofSeq afterAngles)) with + let afterOp = + match (System.String(Array.ofSeq afterAngles)) with | "." -> Some DOT | "]" -> Some RBRACK | "-" -> Some MINUS - | ".." -> Some DOT_DOT - | "?" -> Some QMARK - | "??" -> Some QMARK_QMARK - | ":=" -> Some COLON_EQUALS + | ".." -> Some DOT_DOT + | "?" -> Some QMARK + | "??" -> Some QMARK_QMARK + | ":=" -> Some COLON_EQUALS | "::" -> Some COLON_COLON - | "*" -> Some STAR + | "*" -> Some STAR | "&" -> Some AMP - | "->" -> Some RARROW - | "<-" -> Some LARROW - | "=" -> Some EQUALS + | "->" -> Some RARROW + | "<-" -> Some LARROW + | "=" -> Some EQUALS | "<" -> Some (LESS false) | "$" -> Some DOLLAR | "%" -> Some (PERCENT_OP("%") ) | "%%" -> Some (PERCENT_OP("%%")) | "" -> None - | s -> - match List.ofSeq afterAngles with + | s -> + match List.ofSeq afterAngles with | '=' :: _ | '!' :: '=' :: _ | '<' :: _ @@ -565,8 +574,9 @@ type LexFilterImpl ( indentationSyntaxStatus: IndentationAwareSyntaxStatus, compilingFSharpCore, lexer: (Lexbuf -> token), - lexbuf: Lexbuf -) = + lexbuf: Lexbuf, + debug: bool +) = //---------------------------------------------------------------------------- // Part I. Building a new lex stream from an old @@ -576,47 +586,47 @@ type LexFilterImpl ( // coming out of an existing lexbuf. Ideally lexbufs would be abstract interfaces // and we could just build a new abstract interface that wraps an existing one. // However that is not how F# lexbufs currently work. - // - // Part of the fakery we perform involves buffering a lookahead token which + // + // Part of the fakery we perform involves buffering a lookahead token which // we eventually pass on to the client. However, this client also looks at // other aspects of the 'state' of lexbuf directly, e.g. F# lexbufs have a triple // (start-pos, end-pos, eof-reached) // // You may ask why the F# parser reads this lexbuf state directly. Well, the - // pars.fsy code itself it doesn't, but the parser engines (prim-parsing.fs) - // certainly do for F#. e.g. when these parsers read a token + // pars.fsy code itself it doesn't, but the parser engines (prim-parsing.fs) + // certainly do for F#. e.g. when these parsers read a token // from the lexstream they also read the position information and keep this - // a related stack. + // a related stack. // // Anyway, this explains the functions getLexbufState(), setLexbufState() etc. //-------------------------------------------------------------------------- - // Make sure we don't report 'eof' when inserting a token, and set the positions to the - // last reported token position + // Make sure we don't report 'eof' when inserting a token, and set the positions to the + // last reported token position let lexbufStateForInsertedDummyTokens (lastTokenStartPos, lastTokenEndPos) = - LexbufState(lastTokenStartPos, lastTokenEndPos, false) + LexbufState(lastTokenStartPos, lastTokenEndPos, false) - let getLexbufState() = - LexbufState(lexbuf.StartPos, lexbuf.EndPos, lexbuf.IsPastEndOfStream) + let getLexbufState() = + LexbufState(lexbuf.StartPos, lexbuf.EndPos, lexbuf.IsPastEndOfStream) let setLexbufState (p: LexbufState) = - lexbuf.StartPos <- p.StartPos + lexbuf.StartPos <- p.StartPos lexbuf.EndPos <- p.EndPos lexbuf.IsPastEndOfStream <- p.PastEOF - let posOfTokenTup (tokenTup: TokenTup) = + let posOfTokenTup (tokenTup: TokenTup) = match tokenTup.Token with - // EOF token is processed as if on column -1 - // This forces the closure of all contexts. - | EOF _ -> tokenTup.LexbufState.StartPos.ColumnMinusOne, tokenTup.LexbufState.EndPos.ColumnMinusOne + // EOF token is processed as if on column -1 + // This forces the closure of all contexts. + | EOF _ -> tokenTup.LexbufState.StartPos.ColumnMinusOne, tokenTup.LexbufState.EndPos.ColumnMinusOne | _ -> tokenTup.LexbufState.StartPos, tokenTup.LexbufState.EndPos - let startPosOfTokenTup (tokenTup: TokenTup) = + let startPosOfTokenTup (tokenTup: TokenTup) = match tokenTup.Token with - // EOF token is processed as if on column -1 - // This forces the closure of all contexts. + // EOF token is processed as if on column -1 + // This forces the closure of all contexts. | EOF _ -> tokenTup.LexbufState.StartPos.ColumnMinusOne - | _ -> tokenTup.LexbufState.StartPos + | _ -> tokenTup.LexbufState.StartPos //---------------------------------------------------------------------------- // TokenTup pool @@ -628,8 +638,8 @@ type LexFilterImpl ( // Part II. The state of the new lex stream object. //-------------------------------------------------------------------------- - // Ok, we're going to the wrapped lexbuf. Set the lexstate back so that the lexbuf - // appears consistent and correct for the wrapped lexer function. + // Ok, we're going to the wrapped lexbuf. Set the lexstate back so that the lexbuf + // appears consistent and correct for the wrapped lexer function. let mutable savedLexbufState = Unchecked.defaultof let mutable haveLexbufState = false let runWrappedLexerInConsistentLexbufState() = @@ -659,18 +669,18 @@ type LexFilterImpl ( let delayedStack = Stack() let mutable tokensThatNeedNoProcessingCount = 0 - let delayToken tokenTup = delayedStack.Push tokenTup + let delayToken tokenTup = delayedStack.Push tokenTup let delayTokenNoProcessing tokenTup = delayToken tokenTup; tokensThatNeedNoProcessingCount <- tokensThatNeedNoProcessingCount + 1 - let popNextTokenTup() = - if delayedStack.Count > 0 then + let popNextTokenTup() = + if delayedStack.Count > 0 then let tokenTup = delayedStack.Pop() if debug then dprintf "popNextTokenTup: delayed token, tokenStartPos = %a\n" outputPos (startPosOfTokenTup tokenTup) tokenTup else if debug then dprintf "popNextTokenTup: no delayed tokens, running lexer...\n" - runWrappedLexerInConsistentLexbufState() - + runWrappedLexerInConsistentLexbufState() + //---------------------------------------------------------------------------- // Part III. Initial configuration of state. @@ -682,64 +692,79 @@ type LexFilterImpl ( let mutable initialized = false let mutable offsideStack = [] let mutable prevWasAtomicEnd = false - + let peekInitial() = // Forget the lexbuf state we might have saved from previous input haveLexbufState <- false let initialLookaheadTokenTup = popNextTokenTup() if debug then dprintf "first token: initialLookaheadTokenLexbufState = %a\n" outputPos (startPosOfTokenTup initialLookaheadTokenTup) - + delayToken initialLookaheadTokenTup initialized <- true offsideStack <- (CtxtSeqBlock(FirstInSeqBlock, startPosOfTokenTup initialLookaheadTokenTup, NoAddBlockEnd)) :: offsideStack - initialLookaheadTokenTup + initialLookaheadTokenTup + + let reportDiagnostic reportF (s: TokenTup) msg = + reportF (IndentationProblem(msg, mkSynRange (startPosOfTokenTup s) s.LexbufState.EndPos)) - let warn (s: TokenTup) msg = - warning(IndentationProblem(msg, mkSynRange (startPosOfTokenTup s) s.LexbufState.EndPos)) + let warn (s: TokenTup) msg = + reportDiagnostic warning s msg + + let error (s: TokenTup) msg = + reportDiagnostic errorR s msg // 'query { join x in ys ... }' - // 'query { ... + // 'query { ... // join x in ys ... }' // 'query { for ... do // join x in ys ... }' let detectJoinInCtxt stack = - let rec check s = - match s with + let rec check s = + match s with | CtxtParen(LBRACE _, _) :: _ -> true | (CtxtSeqBlock _ | CtxtDo _ | CtxtFor _) :: rest -> check rest | _ -> false - match stack with + match stack with | CtxtVanilla _ :: rest -> check rest | _ -> false //---------------------------------------------------------------------------- // Part IV. Helper functions for pushing contexts and giving good warnings - // if a context is undented. + // if a context is undented. // // Undentation rules //-------------------------------------------------------------------------- - + let relaxWhitespace2 = lexbuf.SupportsFeature LanguageFeature.RelaxWhitespace2 + let strictIndentation = + lexbuf.StrictIndentation |> Option.defaultWith (fun _ -> lexbuf.SupportsFeature LanguageFeature.StrictIndentation) + //let indexerNotationWithoutDot = lexbuf.SupportsFeature LanguageFeature.IndexerNotationWithoutDot - let pushCtxt tokenTup (newCtxt: Context) = - let rec undentationLimit strict stack = - match newCtxt, stack with - | _, [] -> PositionWithColumn(newCtxt.StartPos, -1) + let tryPushCtxt strict ignoreIndent tokenTup (newCtxt: Context) = + let rec undentationLimit strict stack = + match newCtxt, stack with + | _, [] -> PositionWithColumn(newCtxt.StartPos, -1) - // ignore Vanilla because a SeqBlock is always coming + // ignore Vanilla because a SeqBlock is always coming | _, CtxtVanilla _ :: rest -> undentationLimit strict rest + | CtxtSeqBlock(FirstInSeqBlock, _, _), (CtxtDo _ as limitCtxt) :: CtxtSeqBlock _ :: (CtxtTypeDefns _ | CtxtModuleBody _) :: _ -> + PositionWithColumn(limitCtxt.StartPos, limitCtxt.StartCol + 1) + + | CtxtSeqBlock(FirstInSeqBlock, _, _), CtxtWithAsAugment _ :: (CtxtTypeDefns _ as limitCtxt) :: _ -> + PositionWithColumn(limitCtxt.StartPos, limitCtxt.StartCol + 1) + | _, CtxtSeqBlock _ :: rest when not strict -> undentationLimit strict rest | _, CtxtParen _ :: rest when not strict -> undentationLimit strict rest - // 'begin match' limited by minimum of two - // '(match' limited by minimum of two + // 'begin match' limited by minimum of two + // '(match' limited by minimum of two | _, (CtxtMatch _ as ctxt1) :: CtxtSeqBlock _ :: (CtxtParen ((BEGIN | LPAREN), _) as ctxt2) :: _ - -> if ctxt1.StartCol <= ctxt2.StartCol - then PositionWithColumn(ctxt1.StartPos, ctxt1.StartCol) - else PositionWithColumn(ctxt2.StartPos, ctxt2.StartCol) + -> if ctxt1.StartCol <= ctxt2.StartCol + then PositionWithColumn(ctxt1.StartPos, ctxt1.StartCol) + else PositionWithColumn(ctxt2.StartPos, ctxt2.StartCol) // Insert this rule to allow // begin match 1 with // | 1 -> () @@ -751,24 +776,24 @@ type LexFilterImpl ( // will consider the CtxtMatch as the limiting context instead of allowing undentation until the parenthesis // Test here: Tests/FSharp.Compiler.ComponentTests/Conformance/LexicalFiltering/Basic/OffsideExceptions.fs, RelaxWhitespace2_AllowedBefore11 | _, (CtxtMatchClauses _ as ctxt1) :: (CtxtMatch _) :: CtxtSeqBlock _ :: (CtxtParen ((BEGIN | LPAREN), _) as ctxt2) :: _ when relaxWhitespace2 - -> if ctxt1.StartCol <= ctxt2.StartCol - then PositionWithColumn(ctxt1.StartPos, ctxt1.StartCol) - else PositionWithColumn(ctxt2.StartPos, ctxt2.StartCol) - - // 'let ... = function' limited by 'let', precisely - // This covers the common form - // - // let f x = function - // | Case1 -> ... - // | Case2 -> ... + -> if ctxt1.StartCol <= ctxt2.StartCol + then PositionWithColumn(ctxt1.StartPos, ctxt1.StartCol) + else PositionWithColumn(ctxt2.StartPos, ctxt2.StartCol) + + // 'let ... = function' limited by 'let', precisely + // This covers the common form + // + // let f x = function + // | Case1 -> ... + // | Case2 -> ... | CtxtMatchClauses _, CtxtFunction _ :: CtxtSeqBlock _ :: (CtxtLetDecl _ as limitCtxt) :: _rest -> PositionWithColumn(limitCtxt.StartPos, limitCtxt.StartCol) - // Otherwise 'function ...' places no limit until we hit a CtxtLetDecl etc... (Recursive) + // Otherwise 'function ...' places no limit until we hit a CtxtLetDecl etc... (Recursive) | CtxtMatchClauses _, CtxtFunction _ :: rest -> undentationLimit false rest - // 'try ... with' limited by 'try' + // 'try ... with' limited by 'try' | _, (CtxtMatchClauses _ :: (CtxtTry _ as limitCtxt) :: _rest) -> PositionWithColumn(limitCtxt.StartPos, limitCtxt.StartCol) @@ -776,10 +801,10 @@ type LexFilterImpl ( | _, (CtxtMatchClauses _ :: (CtxtMatch _ as limitCtxt) :: _rest) when relaxWhitespace2 -> PositionWithColumn(limitCtxt.StartPos, limitCtxt.StartCol) - // 'fun ->' places no limit until we hit a CtxtLetDecl etc... (Recursive) + // 'fun ->' places no limit until we hit a CtxtLetDecl etc... (Recursive) | _, CtxtFun _ :: rest -> undentationLimit false rest - + // 'let ... = f ... begin' limited by 'let' (given RelaxWhitespace2) // 'let (' (pattern match) limited by 'let' (given RelaxWhitespace2) // 'let [' (pattern match) limited by 'let' (given RelaxWhitespace2) @@ -798,9 +823,9 @@ type LexFilterImpl ( | _, CtxtSeqBlock _ :: CtxtParen (TokenLExprParen, _) :: rest when relaxWhitespace2 -> undentationLimit false rest - // 'f ...{' places no limit until we hit a CtxtLetDecl etc... - // 'f ...[' places no limit until we hit a CtxtLetDecl etc... - // 'f ...[|' places no limit until we hit a CtxtLetDecl etc... + // 'f ...{' places no limit until we hit a CtxtLetDecl etc... + // 'f ...[' places no limit until we hit a CtxtLetDecl etc... + // 'f ...[|' places no limit until we hit a CtxtLetDecl etc... | _, CtxtParen ((LBRACE _ | LBRACK | LBRACK_BAR), _) :: CtxtSeqBlock _ :: rest | _, CtxtParen ((LBRACE _ | LBRACK | LBRACK_BAR), _) :: CtxtVanilla _ :: CtxtSeqBlock _ :: rest | _, CtxtSeqBlock _ :: CtxtParen((LBRACE _ | LBRACK | LBRACK_BAR), _) :: CtxtVanilla _ :: CtxtSeqBlock _ :: rest @@ -809,25 +834,25 @@ type LexFilterImpl ( // MAJOR PERMITTED UNDENTATION This is allowing: // if x then y else // let x = 3 + 4 - // x + x + // x + x // This is a serious thing to allow, but is required since there is no "return" in this language. // Without it there is no way of escaping special cases in large bits of code without indenting the main case. - | CtxtSeqBlock _, CtxtElse _ :: (CtxtIf _ as limitCtxt) :: _rest + | CtxtSeqBlock _, CtxtElse _ :: (CtxtIf _ as limitCtxt) :: _rest -> PositionWithColumn(limitCtxt.StartPos, limitCtxt.StartCol) - // Permitted inner-construct precise block alignment: + // Permitted inner-construct precise block alignment: // interface ... - // with ... - // end - // + // with ... + // end + // // type ... - // with ... - // end + // with ... + // end | CtxtWithAsAugment _, (CtxtInterfaceHead _ | CtxtMemberHead _ | CtxtException _ | CtxtTypeDefns _ as limitCtxt :: _rest) - -> PositionWithColumn(limitCtxt.StartPos, limitCtxt.StartCol) + -> PositionWithColumn(limitCtxt.StartPos, limitCtxt.StartCol) // Permit undentation via parentheses (or begin/end) following a 'then', 'else' or 'do': - // if nr > 0 then ( + // if nr > 0 then ( // nr <- nr - 1 // acc <- d // i <- i - 1 @@ -840,8 +865,8 @@ type LexFilterImpl ( // expr // else // expr - // rather than forcing - // if ... + // rather than forcing + // if ... // then expr // else expr // Also ...... with @@ -857,7 +882,7 @@ type LexFilterImpl ( // e.g. // let fffffff() = function // | [] -> 0 - // | _ -> 1 + // | _ -> 1 // // Note this does not allow // let fffffff() = function _ -> @@ -869,33 +894,33 @@ type LexFilterImpl ( | _, CtxtFunction _ :: rest -> undentationLimit false rest - // 'module ... : sig' limited by 'module' - // 'module ... : struct' limited by 'module' - // 'module ... : begin' limited by 'module' - // 'if ... then (' limited by 'if' - // 'if ... then {' limited by 'if' - // 'if ... then [' limited by 'if' - // 'if ... then [|' limited by 'if' - // 'if ... else (' limited by 'if' - // 'if ... else {' limited by 'if' - // 'if ... else [' limited by 'if' - // 'if ... else [|' limited by 'if' + // 'module ... : sig' limited by 'module' + // 'module ... : struct' limited by 'module' + // 'module ... : begin' limited by 'module' + // 'if ... then (' limited by 'if' + // 'if ... then {' limited by 'if' + // 'if ... then [' limited by 'if' + // 'if ... then [|' limited by 'if' + // 'if ... else (' limited by 'if' + // 'if ... else {' limited by 'if' + // 'if ... else [' limited by 'if' + // 'if ... else [|' limited by 'if' | _, CtxtParen ((SIG | STRUCT | BEGIN), _) :: CtxtSeqBlock _ :: (CtxtModuleBody (_, false) as limitCtxt) :: _ | _, CtxtParen ((BEGIN | LPAREN | LBRACK | LBRACE _ | LBRACE_BAR | LBRACK_BAR), _) :: CtxtSeqBlock _ :: CtxtThen _ :: (CtxtIf _ as limitCtxt) :: _ | _, CtxtParen ((BEGIN | LPAREN | LBRACK | LBRACE _ | LBRACE_BAR | LBRACK_BAR | LBRACK_LESS), _) :: CtxtSeqBlock _ :: CtxtElse _ :: (CtxtIf _ as limitCtxt) :: _ - // 'f ... (' in seqblock limited by 'f' - // 'f ... {' in seqblock limited by 'f' NOTE: this is covered by the more generous case above - // 'f ... [' in seqblock limited by 'f' - // 'f ... [|' in seqblock limited by 'f' - // 'f ... Foo<' in seqblock limited by 'f' + // 'f ... (' in seqblock limited by 'f' + // 'f ... {' in seqblock limited by 'f' NOTE: this is covered by the more generous case above + // 'f ... [' in seqblock limited by 'f' + // 'f ... [|' in seqblock limited by 'f' + // 'f ... Foo<' in seqblock limited by 'f' | _, CtxtParen ((BEGIN | LPAREN | LESS true | LBRACK | LBRACK_BAR), _) :: CtxtVanilla _ :: (CtxtSeqBlock _ as limitCtxt) :: _ - // 'type C = class ... ' limited by 'type' - // 'type C = interface ... ' limited by 'type' - // 'type C = struct ... ' limited by 'type' + // 'type C = class ... ' limited by 'type' + // 'type C = interface ... ' limited by 'type' + // 'type C = struct ... ' limited by 'type' | _, CtxtParen ((CLASS | STRUCT | INTERFACE), _) :: CtxtSeqBlock _ :: (CtxtTypeDefns _ as limitCtxt) :: _ - -> PositionWithColumn(limitCtxt.StartPos, limitCtxt.StartCol + 1) + -> PositionWithColumn(limitCtxt.StartPos, limitCtxt.StartCol + 1) // 'type C(' limited by 'type' | _, CtxtSeqBlock _ :: CtxtParen(LPAREN, _) :: (CtxtTypeDefns _ as limitCtxt) :: _ @@ -904,57 +929,72 @@ type LexFilterImpl ( // 'static member P with get() = ' limited by 'static', likewise others | _, CtxtWithAsLet _ :: (CtxtMemberHead _ as limitCtxt) :: _ when lexbuf.SupportsFeature LanguageFeature.RelaxWhitespace - -> PositionWithColumn(limitCtxt.StartPos, limitCtxt.StartCol + 1) + -> PositionWithColumn(limitCtxt.StartPos, limitCtxt.StartCol + 1) - // REVIEW: document these + // REVIEW: document these | _, CtxtSeqBlock _ :: CtxtParen((BEGIN | LPAREN | LBRACK | LBRACK_BAR), _) :: CtxtVanilla _ :: (CtxtSeqBlock _ as limitCtxt) :: _ | CtxtSeqBlock _, CtxtParen ((BEGIN | LPAREN | LBRACE _ | LBRACE_BAR | LBRACK | LBRACK_BAR), _) :: CtxtSeqBlock _ :: (CtxtTypeDefns _ | CtxtLetDecl _ | CtxtMemberBody _ | CtxtWithAsLet _ as limitCtxt) :: _ - -> PositionWithColumn(limitCtxt.StartPos, limitCtxt.StartCol + 1) + -> PositionWithColumn(limitCtxt.StartPos, limitCtxt.StartCol + 1) - // Permitted inner-construct (e.g. "then" block and "else" block in overall - // "if-then-else" block ) block alignment: - // if ... + // Permitted inner-construct (e.g. "then" block and "else" block in overall + // "if-then-else" block ) block alignment: + // if ... // then expr - // elif expr - // else expr - | (CtxtIf _ | CtxtElse _ | CtxtThen _), (CtxtIf _ as limitCtxt) :: _rest + // elif expr + // else expr + | (CtxtIf _ | CtxtElse _ | CtxtThen _), (CtxtIf _ as limitCtxt) :: _rest -> PositionWithColumn(limitCtxt.StartPos, limitCtxt.StartCol) - // Permitted inner-construct precise block alignment: - // while ... + // Permitted inner-construct precise block alignment: + // while ... // do expr - // done - | CtxtDo _, (CtxtFor _ | CtxtWhile _ as limitCtxt) :: _rest + // done + | CtxtDo _, (CtxtFor _ | CtxtWhile _ as limitCtxt) :: _rest -> PositionWithColumn(limitCtxt.StartPos, limitCtxt.StartCol) - // These contexts all require indentation by at least one space - | _, (CtxtInterfaceHead _ | CtxtNamespaceHead _ | CtxtModuleHead _ | CtxtException _ | CtxtModuleBody (_, false) | CtxtIf _ | CtxtWithAsLet _ | CtxtLetDecl _ | CtxtMemberHead _ | CtxtMemberBody _ as limitCtxt :: _) - -> PositionWithColumn(limitCtxt.StartPos, limitCtxt.StartCol + 1) + // These contexts all require indentation by at least one space + | _, (CtxtInterfaceHead _ | CtxtNamespaceHead _ | CtxtModuleHead _ | CtxtException _ | CtxtModuleBody (_, false) | CtxtIf _ | CtxtWithAsLet _ | CtxtLetDecl _ | CtxtMemberHead _ | CtxtMemberBody _ as limitCtxt :: _) + -> PositionWithColumn(limitCtxt.StartPos, limitCtxt.StartCol + 1) - // These contexts can have their contents exactly aligning + // These contexts can have their contents exactly aligning | _, (CtxtParen _ | CtxtFor _ | CtxtWhen _ | CtxtWhile _ | CtxtTypeDefns _ | CtxtMatch _ | CtxtModuleBody (_, true) | CtxtNamespaceBody _ | CtxtTry _ | CtxtMatchClauses _ | CtxtSeqBlock _ as limitCtxt :: _) - -> PositionWithColumn(limitCtxt.StartPos, limitCtxt.StartCol) - - match newCtxt with - // Don't bother to check pushes of Vanilla blocks since we've - // always already pushed a SeqBlock at this position. - | CtxtVanilla _ - // String interpolation inner expressions are not limited (e.g. multiline strings) - | CtxtParen((INTERP_STRING_BEGIN_PART _ | INTERP_STRING_PART _),_) -> () - | _ -> - let p1 = undentationLimit true offsideStack - let c2 = newCtxt.StartCol - if c2 < p1.Column then - warn tokenTup - (if debug then - sprintf "possible incorrect indentation: this token is offside of context at position %s, newCtxt = %A, stack = %A, newCtxtPos = %s, c1 = %d, c2 = %d" - (warningStringOfPosition p1.Position) newCtxt offsideStack (stringOfPos newCtxt.StartPos) p1.Column c2 - else - FSComp.SR.lexfltTokenIsOffsideOfContextStartedEarlier(warningStringOfPosition p1.Position)) + -> PositionWithColumn(limitCtxt.StartPos, limitCtxt.StartCol) + + let isCorrectIndent = + if ignoreIndent then true else + + match newCtxt with + // Don't bother to check pushes of Vanilla blocks since we've + // always already pushed a SeqBlock at this position. + | CtxtVanilla _ + // String interpolation inner expressions are not limited (e.g. multiline strings) + | CtxtParen((INTERP_STRING_BEGIN_PART _ | INTERP_STRING_PART _),_) -> true + | _ -> + let p1 = undentationLimit true offsideStack + let c2 = newCtxt.StartCol + let isCorrectIndent = c2 >= p1.Column + + if not isCorrectIndent then + let warnF = if strictIndentation then error else warn + warnF tokenTup + (if debug then + sprintf "possible incorrect indentation: this token is offside of context at position %s, newCtxt = %A, stack = %A, newCtxtPos = %s, c1 = %d, c2 = %d" + (warningStringOfPosition p1.Position) newCtxt offsideStack (stringOfPos newCtxt.StartPos) p1.Column c2 + else + FSComp.SR.lexfltTokenIsOffsideOfContextStartedEarlier(warningStringOfPosition p1.Position)) + + isCorrectIndent + + if strict && not isCorrectIndent then false else + let newOffsideStack = newCtxt :: offsideStack if debug then dprintf "--> pushing, stack = %A\n" newOffsideStack offsideStack <- newOffsideStack + true + + let pushCtxt tokenTup newCtxt = + tryPushCtxt false false tokenTup newCtxt |> ignore let rec popCtxt() = match offsideStack with @@ -970,18 +1010,22 @@ type LexFilterImpl ( let replaceCtxt p ctxt = popCtxt(); pushCtxt p ctxt + let replaceCtxtIgnoreIndent p ctxt = + popCtxt() + tryPushCtxt false true p ctxt |> ignore + //---------------------------------------------------------------------------- // Peek ahead at a token, either from the old lexer or from our delayedStack //-------------------------------------------------------------------------- - let peekNextTokenTup() = + let peekNextTokenTup() = let tokenTup = popNextTokenTup() delayToken tokenTup tokenTup - - let peekNextToken() = + + let peekNextToken() = peekNextTokenTup().Token - + //---------------------------------------------------------------------------- // Adjacency precedence rule //-------------------------------------------------------------------------- @@ -990,16 +1034,16 @@ type LexFilterImpl ( let lparenStartPos = startPosOfTokenTup rightTokenTup let tokenEndPos = leftTokenTup.LexbufState.EndPos (tokenEndPos = lparenStartPos) - + let nextTokenIsAdjacentLBrack (tokenTup: TokenTup) = let lookaheadTokenTup = peekNextTokenTup() - match lookaheadTokenTup.Token with + match lookaheadTokenTup.Token with | LBRACK -> isAdjacent tokenTup lookaheadTokenTup | _ -> false let nextTokenIsAdjacentLParen (tokenTup: TokenTup) = let lookaheadTokenTup = peekNextTokenTup() - match lookaheadTokenTup.Token with + match lookaheadTokenTup.Token with | LPAREN -> isAdjacent tokenTup lookaheadTokenTup | _ -> false @@ -1009,52 +1053,52 @@ type LexFilterImpl ( let peekAdjacentTypars indentation (tokenTup: TokenTup) = let lookaheadTokenTup = peekNextTokenTup() - match lookaheadTokenTup.Token with + match lookaheadTokenTup.Token with | INFIX_COMPARE_OP "", false) - | LESS _ -> - let tokenEndPos = tokenTup.LexbufState.EndPos - if isAdjacent tokenTup lookaheadTokenTup then + | LESS _ -> + let tokenEndPos = tokenTup.LexbufState.EndPos + if isAdjacent tokenTup lookaheadTokenTup then let mutable stack = [] - let rec scanAhead nParen = + let rec scanAhead nParen = let lookaheadTokenTup = popNextTokenTup() let lookaheadToken = lookaheadTokenTup.Token stack <- (lookaheadTokenTup, true) :: stack let lookaheadTokenStartPos = startPosOfTokenTup lookaheadTokenTup - match lookaheadToken with - | EOF _ | SEMICOLON_SEMICOLON -> false + match lookaheadToken with + | EOF _ | SEMICOLON_SEMICOLON -> false | _ when indentation && lookaheadTokenStartPos < tokenEndPos -> false | RPAREN | RBRACK -> let nParen = nParen - 1 - if nParen > 0 then - scanAhead nParen - else + if nParen > 0 then + scanAhead nParen + else false - | GREATER _ | GREATER_RBRACK | GREATER_BAR_RBRACK -> + | GREATER _ | GREATER_RBRACK | GREATER_BAR_RBRACK -> let nParen = nParen - 1 let hasAfterOp = (match lookaheadToken with GREATER _ -> false | _ -> true) - if nParen > 0 then + if nParen > 0 then // Don't smash the token if there is an after op and we're in a nested paren stack <- (lookaheadTokenTup, not hasAfterOp) :: stack.Tail - scanAhead nParen - else - // On successful parse of a set of type parameters, look for an adjacent (, e.g. + scanAhead nParen + else + // On successful parse of a set of type parameters, look for an adjacent (, e.g. // M(args) // and insert a HIGH_PRECEDENCE_PAREN_APP if not hasAfterOp && nextTokenIsAdjacentLParen lookaheadTokenTup then let dotTokenTup = peekNextTokenTup() stack <- (pool.UseLocation(dotTokenTup, HIGH_PRECEDENCE_PAREN_APP), false) :: stack true - | INFIX_COMPARE_OP (TyparsCloseOp(greaters, afterOp)) -> + | INFIX_COMPARE_OP (TyparsCloseOp(greaters, afterOp)) -> let nParen = nParen - greaters.Length - if nParen > 0 then + if nParen > 0 then // Don't smash the token if there is an after op and we're in a nested paren stack <- (lookaheadTokenTup, not afterOp.IsSome) :: stack.Tail - scanAhead nParen - else - // On successful parse of a set of type parameters, look for an adjacent (, e.g. + scanAhead nParen + else + // On successful parse of a set of type parameters, look for an adjacent (, e.g. // M>(args) // and insert a HIGH_PRECEDENCE_PAREN_APP if afterOp.IsNone && nextTokenIsAdjacentLParen lookaheadTokenTup then @@ -1066,12 +1110,12 @@ type LexFilterImpl ( | LBRACK | LBRACK_LESS | INFIX_COMPARE_OP "", false) -> + | LQUOTE ("<@ @>", false) -> scanAhead (nParen+1) - - // These tokens CAN occur in non-parenthesized positions in the grammar of types or type parameter definitions + + // These tokens CAN occur in non-parenthesized positions in the grammar of types or type parameter definitions // Thus we explicitly DO consider these to be type applications: // fx // fx @@ -1084,42 +1128,42 @@ type LexFilterImpl ( // f<{| C : int |}>x // fx // fx - | DEFAULT | COLON | COLON_GREATER | STRUCT | NULL | DELEGATE | AND | WHEN + | DEFAULT | COLON | COLON_GREATER | STRUCT | NULL | DELEGATE | AND | WHEN | AMP | DOT_DOT | NEW | LBRACE_BAR | SEMICOLON | BAR_RBRACE - | INFIX_AT_HAT_OP "^" - | INFIX_AT_HAT_OP "^-" - | INFIX_STAR_DIV_MOD_OP "/" - | MINUS - | GLOBAL + | INFIX_AT_HAT_OP "^" + | INFIX_AT_HAT_OP "^-" + | INFIX_STAR_DIV_MOD_OP "/" + | MINUS + | GLOBAL | CONST | KEYWORD_STRING _ | NULL - | INT8 _ | INT16 _ | INT32 _ | INT64 _ | NATIVEINT _ + | INT8 _ | INT16 _ | INT32 _ | INT64 _ | NATIVEINT _ | UINT8 _ | UINT16 _ | UINT32 _ | UINT64 _ | UNATIVEINT _ - | DECIMAL _ | BIGNUM _ | STRING _ | BYTEARRAY _ | CHAR _ | TRUE | FALSE - | IEEE32 _ | IEEE64 _ + | DECIMAL _ | BIGNUM _ | STRING _ | BYTEARRAY _ | CHAR _ | TRUE | FALSE + | IEEE32 _ | IEEE64 _ | DOT | UNDERSCORE | EQUALS - | IDENT _ | COMMA | RARROW | HASH - | STAR | QUOTE -> + | IDENT _ | COMMA | RARROW | HASH + | STAR | QUOTE -> scanAhead nParen - - - // All other tokens ARE assumed to be part of the grammar of types or type parameter definitions - | _ -> - if nParen > 1 then - scanAhead nParen - else + + + // All other tokens ARE assumed to be part of the grammar of types or type parameter definitions + | _ -> + if nParen > 1 then + scanAhead nParen + else false - + let res = scanAhead 0 // Put the tokens back on and smash them up if needed for (tokenTup, smash) in stack do - if smash then - match tokenTup.Token with + if smash then + match tokenTup.Token with | INFIX_COMPARE_OP " delayToken (pool.UseShiftedLocation(tokenTup, INFIX_STAR_DIV_MOD_OP "/", 1, 0)) delayToken (pool.UseShiftedLocation(tokenTup, LESS res, 0, -1)) @@ -1128,12 +1172,17 @@ type LexFilterImpl ( delayToken (pool.UseShiftedLocation(tokenTup, INFIX_AT_HAT_OP "^", 1, 0)) delayToken (pool.UseShiftedLocation(tokenTup, LESS res, 0, -1)) pool.Return tokenTup + + | INFIX_COMPARE_OP ">:" -> + delayToken (pool.UseShiftedLocation(tokenTup, COLON, 1, 0)) + delayToken (pool.UseShiftedLocation(tokenTup, GREATER res, 0, -1)) + pool.Return tokenTup // NOTE: this is "<@" | LQUOTE ("<@ @>", false) -> delayToken (pool.UseShiftedLocation(tokenTup, INFIX_AT_HAT_OP "@", 1, 0)) delayToken (pool.UseShiftedLocation(tokenTup, LESS res, 0, -1)) pool.Return tokenTup - | GREATER_BAR_RBRACK -> + | GREATER_BAR_RBRACK -> delayToken (pool.UseShiftedLocation(tokenTup, BAR_RBRACK, 1, 0)) delayToken (pool.UseShiftedLocation(tokenTup, GREATER res, 0, -2)) pool.Return tokenTup @@ -1144,7 +1193,7 @@ type LexFilterImpl ( | GREATER _ -> delayToken (pool.UseLocation(tokenTup, GREATER res)) pool.Return tokenTup - | INFIX_COMPARE_OP (TyparsCloseOp(greaters, afterOp) as opstr) -> + | INFIX_COMPARE_OP (TyparsCloseOp(greaters, afterOp) as opstr) -> match afterOp with | None -> () | Some tok -> delayToken (pool.UseShiftedLocation(tokenTup, tok, greaters.Length, 0)) @@ -1155,7 +1204,7 @@ type LexFilterImpl ( else delayToken tokenTup res - else + else false | _ -> false @@ -1163,125 +1212,129 @@ type LexFilterImpl ( // End actions //-------------------------------------------------------------------------- - let returnToken (tokenLexbufState: LexbufState) tok = + let returnToken (tokenLexbufState: LexbufState) tok = setLexbufState tokenLexbufState prevWasAtomicEnd <- isAtomicExprEndToken tok tok - + let rec suffixExists p l = match l with [] -> false | _ :: t -> p t || suffixExists p t - let tokenBalancesHeadContext token stack = - match token, stack with + let tokenBalancesHeadContext token stack = + match token, stack with | END, CtxtWithAsAugment _ :: _ | (ELSE | ELIF), CtxtIf _ :: _ | DONE, CtxtDo _ :: _ - // WITH balances except in the following contexts.... Phew - an overused keyword! + // WITH balances except in the following contexts.... Phew - an overused keyword! | WITH, ( (CtxtMatch _ | CtxtException _ | CtxtMemberHead _ | CtxtInterfaceHead _ | CtxtTry _ | CtxtTypeDefns _ | CtxtMemberBody _) :: _ - // This is the nasty record/object-expression case + // This is the nasty record/object-expression case | CtxtSeqBlock _ :: CtxtParen((LBRACE _ | LBRACE_BAR), _) :: _ ) - | FINALLY, CtxtTry _ :: _ -> + | FINALLY, CtxtTry _ :: _ -> true - // for x in ienum ... + // for x in ienum ... // let x = ... in | IN, (CtxtFor _ | CtxtLetDecl _) :: _ -> true // 'query { join x in ys ... }' - // 'query { ... + // 'query { ... // join x in ys ... }' // 'query { for ... do // join x in ys ... }' | IN, stack when detectJoinInCtxt stack -> true - // NOTE: ;; does not terminate a 'namespace' body. - | SEMICOLON_SEMICOLON, CtxtSeqBlock _ :: CtxtNamespaceBody _ :: _ -> + // NOTE: ;; does not terminate a 'namespace' body. + | SEMICOLON_SEMICOLON, CtxtSeqBlock _ :: CtxtNamespaceBody _ :: _ -> true - | SEMICOLON_SEMICOLON, CtxtSeqBlock _ :: CtxtModuleBody (_, true) :: _ -> + | SEMICOLON_SEMICOLON, CtxtSeqBlock _ :: CtxtModuleBody (_, true) :: _ -> true - | t2, CtxtParen(t1, _) :: _ -> + | t2, CtxtParen(t1, _) :: _ -> parenTokensBalance t1 t2 - | _ -> + | _ -> false - + //---------------------------------------------------------------------------- // Parse and transform the stream of tokens coming from popNextTokenTup, pushing // contexts where needed, popping them where things are offside, balancing // parentheses and other constructs. //-------------------------------------------------------------------------- - + let rec hwTokenFetch useBlockRule = let tokenTup = popNextTokenTup() let tokenReplaced = rulesForBothSoftWhiteAndHardWhite tokenTup - if tokenReplaced then hwTokenFetch useBlockRule else + if tokenReplaced then hwTokenFetch useBlockRule else let tokenStartPos = (startPosOfTokenTup tokenTup) let token = tokenTup.Token let tokenLexbufState = tokenTup.LexbufState let tokenStartCol = tokenStartPos.Column - let isSameLine() = - match token with + let isSameLine() = + match token with | EOF _ -> false | _ -> (startPosOfTokenTup (peekNextTokenTup())).OriginalLine = tokenStartPos.OriginalLine - let isControlFlowOrNotSameLine() = - match token with + let isControlFlowOrNotSameLine() = + match token with | EOF _ -> false - | _ -> - not (isSameLine()) || - (match peekNextToken() with TRY | MATCH | MATCH_BANG | IF | LET _ | FOR | WHILE -> true | _ -> false) + | _ -> + not (isSameLine()) || + (match peekNextToken() with TRY | MATCH | MATCH_BANG | IF | LET _ | FOR | WHILE | WHILE_BANG -> true | _ -> false) // Look for '=' or '.Id.id.id = ' after an identifier - let rec isLongIdentEquals token = - match token with + let rec isLongIdentEquals token = + match token with | GLOBAL - | IDENT _ -> - let rec loop() = + | IDENT _ -> + let rec loop() = let tokenTup = popNextTokenTup() - let res = - match tokenTup.Token with + let res = + match tokenTup.Token with | EOF _ -> false - | DOT -> + | DOT -> let tokenTup = popNextTokenTup() - let res = - match tokenTup.Token with + let res = + match tokenTup.Token with | EOF _ -> false | IDENT _ -> loop() | _ -> false delayToken tokenTup res - | EQUALS -> - true + | EQUALS -> + true | _ -> false delayToken tokenTup res loop() | _ -> false - let reprocess() = + let reprocess() = delayToken tokenTup hwTokenFetch useBlockRule - let reprocessWithoutBlockRule() = + let reprocessWithoutBlockRule() = delayToken tokenTup hwTokenFetch false - - let insertTokenFromPrevPosToCurrentPos tok = + + let getLastTokenEndRange () = + let lastTokenPos = tokenTup.LastTokenPos + mkSynRange lastTokenPos lastTokenPos + + let insertTokenFromPrevPosToCurrentPos tok = delayToken tokenTup if debug then dprintf "inserting %+A\n" tok - // span of inserted token lasts from the col + 1 of the prev token + // span of inserted token lasts from the col + 1 of the prev token // to the beginning of current token - let lastTokenPos = + let lastTokenPos = let pos = tokenTup.LastTokenPos pos.ShiftColumnBy 1 returnToken (lexbufStateForInsertedDummyTokens (lastTokenPos, tokenTup.LexbufState.StartPos)) tok - let insertToken tok = + let insertToken tok = delayToken tokenTup if debug then dprintf "inserting %+A\n" tok returnToken (lexbufStateForInsertedDummyTokens (startPosOfTokenTup tokenTup, tokenTup.LexbufState.EndPos)) tok @@ -1317,14 +1370,14 @@ type LexFilterImpl ( | _ -> false // If you see a 'member' keyword while you are inside the body of another member, then it usually means there is a syntax error inside this method - // and the upcoming 'member' is the start of the next member in the class. For better parser recovery and diagnostics, it is best to pop out of the + // and the upcoming 'member' is the start of the next member in the class. For better parser recovery and diagnostics, it is best to pop out of the // existing member context so the parser can recover. // // However there are two places where 'member' keywords can appear inside expressions inside the body of a member. The first is object expressions, and // the second is static inline constraints. We must not pop the context stack in those cases, or else legal code will not parse. // // It is impossible to decide for sure if we're in one of those two cases, so we must err conservatively if we might be. - let thereIsACtxtMemberBodyOnTheStackAndWeShouldPopStackForUpcomingMember ctxtStack = + let thereIsACtxtMemberBodyOnTheStackAndWeShouldPopStackForUpcomingMember ctxtStack = // a 'member' starter keyword is coming; should we pop? if not(List.exists (function CtxtMemberBody _ -> true | _ -> false) ctxtStack) then false // no member currently on the stack, nothing to pop @@ -1338,47 +1391,49 @@ type LexFilterImpl ( true let endTokenForACtxt ctxt = - match ctxt with + match ctxt with | CtxtFun _ - | CtxtMatchClauses _ - | CtxtWithAsLet _ -> + | CtxtMatchClauses _ + | CtxtWithAsLet _ -> Some OEND - | CtxtWithAsAugment _ -> - Some ODECLEND - - | CtxtDo _ - | CtxtLetDecl (true, _) -> - Some ODECLEND - - | CtxtSeqBlock(_, _, AddBlockEnd) -> - Some OBLOCKEND + | CtxtWithAsAugment _ + + | CtxtDo _ + | CtxtLetDecl (true, _) -> + Some (ODECLEND(getLastTokenEndRange ())) + + | CtxtSeqBlock(_, _, AddBlockEnd) -> + Some (OBLOCKEND(getLastTokenEndRange ())) + + | CtxtSeqBlock(_, _, AddOneSidedBlockEnd) -> + Some (ORIGHT_BLOCK_END(getLastTokenEndRange ())) - | CtxtSeqBlock(_, _, AddOneSidedBlockEnd) -> - Some ORIGHT_BLOCK_END + | CtxtModuleHead(isNested = true) -> + Some OBLOCKSEP - | _ -> + | _ -> None - // Balancing rule. Every 'in' terminates all surrounding blocks up to a CtxtLetDecl, and will be swallowed by - // terminating the corresponding CtxtLetDecl in the rule below. - // Balancing rule. Every 'done' terminates all surrounding blocks up to a CtxtDo, and will be swallowed by - // terminating the corresponding CtxtDo in the rule below. - let tokenForcesHeadContextClosure token stack = + // Balancing rule. Every 'in' terminates all surrounding blocks up to a CtxtLetDecl, and will be swallowed by + // terminating the corresponding CtxtLetDecl in the rule below. + // Balancing rule. Every 'done' terminates all surrounding blocks up to a CtxtDo, and will be swallowed by + // terminating the corresponding CtxtDo in the rule below. + let tokenForcesHeadContextClosure token stack = not (isNil stack) && - match token with + match token with | EOF _ -> true - | SEMICOLON_SEMICOLON -> not (tokenBalancesHeadContext token stack) + | SEMICOLON_SEMICOLON -> not (tokenBalancesHeadContext token stack) | TokenRExprParen - | ELSE - | ELIF - | DONE - | IN - | WITH - | FINALLY + | ELSE + | ELIF + | DONE + | IN + | WITH + | FINALLY | INTERP_STRING_PART _ | INTERP_STRING_END _ -> - not (tokenBalancesHeadContext token stack) && + not (tokenBalancesHeadContext token stack) && // Only close the context if some context is going to match at some point in the stack. // If none match, the token will go through, and error recovery will kick in in the parser and report the extra token, // and then parsing will continue. Closing all the contexts will not achieve much except aid in a catastrophic failure. @@ -1403,39 +1458,39 @@ type LexFilterImpl ( | _ :: (CtxtNamespaceBody _ | CtxtModuleBody _) :: _ -> true // The context pair below is created a namespace/module scope when user explicitly uses 'begin'...'end', // and these can legally contain type definitions, so ignore this combo as uninteresting and recurse deeper - | _ :: CtxtParen((BEGIN|STRUCT), _) :: CtxtSeqBlock _ :: _ -> nextOuterMostInterestingContextIsNamespaceOrModule(offsideStack.Tail.Tail) + | _ :: CtxtParen((BEGIN|STRUCT), _) :: CtxtSeqBlock _ :: _ -> nextOuterMostInterestingContextIsNamespaceOrModule(offsideStack.Tail.Tail) // at the top of the stack there is an implicit module - | _ :: [] -> true + | _ :: [] -> true // anything else is a non-namespace/module | _ -> false while not offsideStack.IsEmpty && (not(nextOuterMostInterestingContextIsNamespaceOrModule offsideStack)) && - (match offsideStack.Head with + (match offsideStack.Head with // open-parens of sorts | CtxtParen(TokenLExprParen, _) -> true // seq blocks - | CtxtSeqBlock _ -> true + | CtxtSeqBlock _ -> true // vanillas - | CtxtVanilla _ -> true + | CtxtVanilla _ -> true // preserve all other contexts | _ -> false) do match offsideStack.Head with | CtxtParen _ -> if debug then dprintf "%s at %a terminates CtxtParen()\n" keywordName outputPos tokenStartPos popCtxt() - | CtxtSeqBlock(_, _, AddBlockEnd) -> + | CtxtSeqBlock(_, _, AddBlockEnd) -> popCtxt() - effectsToDo <- (fun() -> + effectsToDo <- (fun() -> if debug then dprintf "--> because %s is coming, inserting OBLOCKEND\n" keywordName - delayTokenNoProcessing (pool.UseLocation(tokenTup, OBLOCKEND))) :: effectsToDo - | CtxtSeqBlock(_, _, NoAddBlockEnd) -> + delayTokenNoProcessing (pool.UseLocation(tokenTup, OBLOCKEND(getLastTokenEndRange ())))) :: effectsToDo + | CtxtSeqBlock(_, _, NoAddBlockEnd) -> if debug then dprintf "--> because %s is coming, popping CtxtSeqBlock\n" keywordName popCtxt() - | CtxtSeqBlock(_, _, AddOneSidedBlockEnd) -> + | CtxtSeqBlock(_, _, AddOneSidedBlockEnd) -> popCtxt() - effectsToDo <- (fun() -> + effectsToDo <- (fun() -> if debug then dprintf "--> because %s is coming, inserting ORIGHT_BLOCK_END\n" keywordName - delayTokenNoProcessing (pool.UseLocation(tokenTup, ORIGHT_BLOCK_END))) :: effectsToDo - | CtxtVanilla _ -> + delayTokenNoProcessing (pool.UseLocation(tokenTup, ORIGHT_BLOCK_END(getLastTokenEndRange ())))) :: effectsToDo + | CtxtVanilla _ -> if debug then dprintf "--> because %s is coming, popping CtxtVanilla\n" keywordName popCtxt() | _ -> failwith "impossible, the while loop guard just above prevents this" @@ -1454,138 +1509,140 @@ type LexFilterImpl ( pool.Return tokenTup returnToken tokenLexbufState token - match token, offsideStack with + match token, offsideStack with // inserted faux tokens need no other processing - | _ when tokensThatNeedNoProcessingCount > 0 -> + | _ when tokensThatNeedNoProcessingCount > 0 -> tokensThatNeedNoProcessingCount <- tokensThatNeedNoProcessingCount - 1 returnToken tokenLexbufState token - | _ when tokenForcesHeadContextClosure token offsideStack -> + | _ when tokenForcesHeadContextClosure token offsideStack -> let ctxt = offsideStack.Head if debug then dprintf "IN/ELSE/ELIF/DONE/RPAREN/RBRACE/END/INTERP at %a terminates context at position %a\n" outputPos tokenStartPos outputPos ctxt.StartPos popCtxt() - match endTokenForACtxt ctxt with + match endTokenForACtxt ctxt with | Some tok -> if debug then dprintf "--> inserting %+A\n" tok insertToken tok - | _ -> + | _ -> reprocess() - // reset on ';;' rule. A ';;' terminates ALL entries - | SEMICOLON_SEMICOLON, [] -> + // reset on ';;' rule. A ';;' terminates ALL entries + | SEMICOLON_SEMICOLON, [] -> if debug then dprintf ";; scheduling a reset\n" delayToken(pool.UseLocation(tokenTup, ORESET)) returnToken tokenLexbufState SEMICOLON_SEMICOLON - | ORESET, [] -> + | ORESET, [] -> if debug then dprintf "performing a reset after a ;; has been swallowed\n" - // NOTE: The parser thread of F# Interactive will often be blocked on this call, e.g. after an entry has been - // processed and we're waiting for the first token of the next entry. + // NOTE: The parser thread of F# Interactive will often be blocked on this call, e.g. after an entry has been + // processed and we're waiting for the first token of the next entry. peekInitial() |> ignore pool.Return tokenTup - hwTokenFetch true + hwTokenFetch true | IN, stack when detectJoinInCtxt stack -> returnToken tokenLexbufState JOIN_IN - // Balancing rule. Encountering an 'in' balances with a 'let'. i.e. even a non-offside 'in' closes a 'let' - // The 'IN' token is thrown away and becomes an ODECLEND - | IN, CtxtLetDecl (blockLet, offsidePos) :: _ -> + // Balancing rule. Encountering an 'in' balances with a 'let'. i.e. even a non-offside 'in' closes a 'let' + // The 'IN' token is thrown away and becomes an ODECLEND + | IN, CtxtLetDecl (blockLet, offsidePos) :: _ -> if debug then dprintf "IN at %a (becomes %s)\n" outputPos tokenStartPos (if blockLet then "ODECLEND" else "IN") if tokenStartCol < offsidePos.Column then warn tokenTup (FSComp.SR.lexfltIncorrentIndentationOfIn()) popCtxt() // Make sure we queue a dummy token at this position to check if any other pop rules apply delayToken(pool.UseLocation(tokenTup, ODUMMY token)) - returnToken tokenLexbufState (if blockLet then ODECLEND else token) + returnToken tokenLexbufState (if blockLet then ODECLEND(getLastTokenEndRange ()) else token) - // Balancing rule. Encountering a 'done' balances with a 'do'. i.e. even a non-offside 'done' closes a 'do' - // The 'DONE' token is thrown away and becomes an ODECLEND - | DONE, CtxtDo offsidePos :: _ -> + // Balancing rule. Encountering a 'done' balances with a 'do'. i.e. even a non-offside 'done' closes a 'do' + // The 'DONE' token is thrown away and becomes an ODECLEND + | DONE, CtxtDo offsidePos :: _ -> if debug then dprintf "DONE at %a terminates CtxtDo(offsidePos=%a)\n" outputPos tokenStartPos outputPos offsidePos popCtxt() - // reprocess as the DONE may close a DO context - delayToken(pool.UseLocation(tokenTup, ODECLEND)) + // reprocess as the DONE may close a DO context + delayToken(pool.UseLocation(tokenTup, ODECLEND(mkSynRange tokenTup.StartPos tokenTup.EndPos))) pool.Return tokenTup hwTokenFetch useBlockRule - // Balancing rule. Encountering a ')' or '}' balances with a '(' or '{', even if not offside - | ((TokenRExprParen | INTERP_STRING_END _ | INTERP_STRING_PART _) as t2), (CtxtParen (t1, _) :: _) + // Balancing rule. Encountering a ')' or '}' balances with a '(' or '{', even if not offside + | ((TokenRExprParen | INTERP_STRING_END _ | INTERP_STRING_PART _) as t2), (CtxtParen (t1, _) :: _) when parenTokensBalance t1 t2 -> if debug then dprintf "RPAREN/RBRACE/BAR_RBRACE/RBRACK/BAR_RBRACK/RQUOTE/END at %a terminates CtxtParen()\n" outputPos tokenStartPos popCtxt() - match t2 with + match t2 with // $".... { ... } ... { ....} " pushes a block context at second { // ~~~~~~~~ // ^---------INTERP_STRING_PART - | INTERP_STRING_PART _ -> + | INTERP_STRING_PART _ -> pushCtxt tokenTup (CtxtParen (token, tokenTup.LexbufState.EndPos)) - pushCtxtSeqBlock(false, NoAddBlockEnd) - | _ -> + pushCtxtSeqBlock tokenTup NoAddBlockEnd + | INTERP_STRING_END _ -> () + | _ -> // Queue a dummy token at this position to check if any closing rules apply delayToken(pool.UseLocation(tokenTup, ODUMMY token)) + returnToken tokenLexbufState token - // Balancing rule. Encountering a 'end' can balance with a 'with' but only when not offside - | END, CtxtWithAsAugment offsidePos :: _ - when not (tokenStartCol + 1 <= offsidePos.Column) -> + // Balancing rule. Encountering a 'end' can balance with a 'with' but only when not offside + | END, CtxtWithAsAugment offsidePos :: _ + when not (tokenStartCol + 1 <= offsidePos.Column) -> if debug then dprintf "END at %a terminates CtxtWithAsAugment()\n" outputPos tokenStartPos popCtxt() delayToken(pool.UseLocation(tokenTup, ODUMMY token)) // make sure we queue a dummy token at this position to check if any closing rules apply returnToken tokenLexbufState OEND - // Transition rule. CtxtNamespaceHead ~~~> CtxtSeqBlock - // Applied when a token other then a long identifier is seen - | _, CtxtNamespaceHead (namespaceTokenPos, prevToken) :: _ -> - match prevToken, token with - | (NAMESPACE | DOT | REC | GLOBAL), (REC | IDENT _ | GLOBAL) when namespaceTokenPos.Column < tokenStartPos.Column -> + // Transition rule. CtxtNamespaceHead ~~~> CtxtSeqBlock + // Applied when a token other then a long identifier is seen + | _, CtxtNamespaceHead (namespaceTokenPos, prevToken) :: _ -> + match prevToken, token with + | (NAMESPACE | DOT | REC | GLOBAL), (REC | IDENT _ | GLOBAL) when namespaceTokenPos.Column < tokenStartPos.Column -> replaceCtxt tokenTup (CtxtNamespaceHead (namespaceTokenPos, token)) returnToken tokenLexbufState token - | IDENT _, DOT when namespaceTokenPos.Column < tokenStartPos.Column -> + | IDENT _, DOT when namespaceTokenPos.Column < tokenStartPos.Column -> replaceCtxt tokenTup (CtxtNamespaceHead (namespaceTokenPos, token)) returnToken tokenLexbufState token - | _ -> + | _ -> if debug then dprintf "CtxtNamespaceHead: pushing CtxtSeqBlock\n" popCtxt() // Don't push a new context if next token is EOF, since that raises an offside warning - match tokenTup.Token with - | EOF _ -> + match tokenTup.Token with + | EOF _ -> returnToken tokenLexbufState token - | _ -> + | _ -> delayToken tokenTup pushCtxt tokenTup (CtxtNamespaceBody namespaceTokenPos) - pushCtxtSeqBlockAt (tokenTup, true, AddBlockEnd) + pushCtxtSeqBlockAt false false tokenTup tokenTup AddBlockEnd hwTokenFetch false - - // Transition rule. CtxtModuleHead ~~~> push CtxtModuleBody; push CtxtSeqBlock - // Applied when a ':' or '=' token is seen + + // Transition rule. CtxtModuleHead ~~~> push CtxtModuleBody; push CtxtSeqBlock + // Applied when a ':' or '=' token is seen // Otherwise it's a 'head' module declaration, so ignore it // Here prevToken is either 'module', 'rec', 'global' (invalid), '.', or ident, because we skip attribute tokens and access modifier tokens - | _, CtxtModuleHead (moduleTokenPos, prevToken, lexingModuleAttributes) :: rest -> + | _, CtxtModuleHead (moduleTokenPos, prevToken, lexingModuleAttributes, isNested) :: rest -> match prevToken, token with | _, GREATER_RBRACK when lexingModuleAttributes = LexingModuleAttributes && moduleTokenPos.Column < tokenStartPos.Column -> - replaceCtxt tokenTup (CtxtModuleHead (moduleTokenPos, prevToken, NotLexingModuleAttributes)) + replaceCtxt tokenTup (CtxtModuleHead (moduleTokenPos, prevToken, NotLexingModuleAttributes, isNested)) returnToken tokenLexbufState token | _ when lexingModuleAttributes = LexingModuleAttributes && moduleTokenPos.Column < tokenStartPos.Column -> returnToken tokenLexbufState token - | MODULE, (PUBLIC | PRIVATE | INTERNAL) when moduleTokenPos.Column < tokenStartPos.Column -> + | MODULE, (PUBLIC | PRIVATE | INTERNAL) when moduleTokenPos.Column < tokenStartPos.Column -> returnToken tokenLexbufState token | MODULE, GLOBAL | (MODULE | REC | DOT), (REC | IDENT _) - | IDENT _, DOT when moduleTokenPos.Column < tokenStartPos.Column -> - replaceCtxt tokenTup (CtxtModuleHead (moduleTokenPos, token, NotLexingModuleAttributes)) + | IDENT _, DOT when moduleTokenPos.Column < tokenStartPos.Column -> + replaceCtxt tokenTup (CtxtModuleHead (moduleTokenPos, token, NotLexingModuleAttributes, isNested)) returnToken tokenLexbufState token | MODULE, LBRACK_LESS when moduleTokenPos.Column < tokenStartPos.Column -> - replaceCtxt tokenTup (CtxtModuleHead (moduleTokenPos, prevToken, LexingModuleAttributes)) + replaceCtxt tokenTup (CtxtModuleHead (moduleTokenPos, prevToken, LexingModuleAttributes, isNested)) returnToken tokenLexbufState token - | _, (EQUALS | COLON) -> + | _, (EQUALS | COLON) -> if debug then dprintf "CtxtModuleHead: COLON/EQUALS, pushing CtxtModuleBody and CtxtSeqBlock\n" popCtxt() pushCtxt tokenTup (CtxtModuleBody (moduleTokenPos, false)) - pushCtxtSeqBlock(true, AddBlockEnd) + pushCtxtSeqBlock tokenTup AddBlockEnd returnToken tokenLexbufState token | _ -> match rest with @@ -1593,92 +1650,92 @@ type LexFilterImpl ( if debug then dprintf "CtxtModuleHead: start of file, CtxtSeqBlock\n" popCtxt() // Don't push a new context if next token is EOF, since that raises an offside warning - match tokenTup.Token with - | EOF _ -> + match tokenTup.Token with + | EOF _ -> returnToken tokenLexbufState token | _ -> // We have reached other tokens without encountering '=' or ':', so this is a module declaration spanning the whole file - delayToken tokenTup + delayToken tokenTup pushCtxt tokenTup (CtxtModuleBody (moduleTokenPos, true)) - pushCtxtSeqBlockAt (tokenTup, true, AddBlockEnd) + pushCtxtSeqBlock tokenTup AddBlockEnd hwTokenFetch false | _ -> // Adding a new nested module, EQUALS hasn't been typed yet // and we've encountered declarations below if debug then dprintf "CtxtModuleHead: not start of file, popping CtxtModuleHead\n" popCtxt() - reprocessWithoutBlockRule() + insertTokenFromPrevPosToCurrentPos OBLOCKSEP - // Offside rule for SeqBlock. + // Offside rule for SeqBlock. // f x // g x // ... - | _, CtxtSeqBlock(_, offsidePos, addBlockEnd) :: rest when - - // NOTE: ;; does not terminate a 'namespace' body. - ((isSemiSemi && not (match rest with (CtxtNamespaceBody _ | CtxtModuleBody (_, true)) :: _ -> true | _ -> false)) || - let grace = - match token, rest with - // When in a type context allow a grace of 2 column positions for '|' tokens, permits - // type x = + | _, CtxtSeqBlock(_, offsidePos, addBlockEnd) :: rest when + + // NOTE: ;; does not terminate a 'namespace' body. + ((isSemiSemi && not (match rest with (CtxtNamespaceBody _ | CtxtModuleBody (_, true)) :: _ -> true | _ -> false)) || + let grace = + match token, rest with + // When in a type context allow a grace of 2 column positions for '|' tokens, permits + // type x = // A of string <-- note missing '|' here - bad style, and perhaps should be disallowed - // | B of int + // | B of int | BAR, CtxtTypeDefns _ :: _ -> 2 // This ensures we close a type context seq block when the '|' marks - // of a type definition are aligned with the 'type' token. - // - // type x = - // | A - // | B - // + // of a type definition are aligned with the 'type' token. + // + // type x = + // | A + // | B + // // <-- close the type context sequence block here *) - | _, CtxtTypeDefns posType :: _ when offsidePos.Column = posType.Column && not (isTypeSeqBlockElementContinuator token) -> -1 + | _, CtxtTypeDefns(posType, _) :: _ when offsidePos.Column = posType.Column && not (isTypeSeqBlockElementContinuator token) -> -1 - // This ensures we close a namespace body when we see the next namespace definition - // - // namespace A.B.C + // This ensures we close a namespace body when we see the next namespace definition + // + // namespace A.B.C // ... // // namespace <-- close the namespace body context here | _, CtxtNamespaceBody posNamespace :: _ when offsidePos.Column = posNamespace.Column && (match token with NAMESPACE -> true | _ -> false) -> -1 - | _ -> - // Allow a grace of >2 column positions for infix tokens, permits - // let x = - // expr + expr - // + expr + expr - // And - // let x = - // expr - // |> f expr - // |> f expr + | _ -> + // Allow a grace of >2 column positions for infix tokens, permits + // let x = + // expr + expr + // + expr + expr + // And + // let x = + // expr + // |> f expr + // |> f expr // Note you need a semicolon in the following situation: // - // let x = + // let x = // stmt // -expr <-- not allowed, as prefix token is here considered infix // // i.e. // - // let x = + // let x = // stmt - // -expr + // -expr (if isInfix token then infixTokenLength token + 1 else 0) - (tokenStartCol + grace < offsidePos.Column)) -> + (tokenStartCol + grace < offsidePos.Column)) -> if debug then dprintf "offside token at column %d indicates end of CtxtSeqBlock started at %a!\n" tokenStartCol outputPos offsidePos popCtxt() if debug then (match addBlockEnd with AddBlockEnd -> dprintf "end of CtxtSeqBlock, insert OBLOCKEND \n" | _ -> ()) - match addBlockEnd with - | AddBlockEnd -> insertToken OBLOCKEND - | AddOneSidedBlockEnd -> insertToken ORIGHT_BLOCK_END + match addBlockEnd with + | AddBlockEnd -> insertToken (OBLOCKEND(getLastTokenEndRange ())) + | AddOneSidedBlockEnd -> insertToken (ORIGHT_BLOCK_END(getLastTokenEndRange ())) | NoAddBlockEnd -> reprocess() // Offside rule for SeqBlock. // fff // eeeee // - | _, CtxtVanilla(offsidePos, _) :: _ when isSemiSemi || tokenStartCol <= offsidePos.Column -> + | _, CtxtVanilla(offsidePos, _) :: _ when isSemiSemi || tokenStartCol <= offsidePos.Column -> if debug then dprintf "offside token at column %d indicates end of CtxtVanilla started at %a!\n" tokenStartCol outputPos offsidePos popCtxt() reprocess() @@ -1694,76 +1751,76 @@ type LexFilterImpl ( reprocessWithoutBlockRule() // Offside rule for SeqBlock - avoiding inserting OBLOCKSEP on first item in block - | _, CtxtSeqBlock (FirstInSeqBlock, offsidePos, addBlockEnd) :: _ when useBlockRule -> - // This is the first token in a block, or a token immediately - // following an infix operator (see above). - // Return the token, but only after processing any additional rules - // applicable for this token. Don't apply the CtxtSeqBlock rule for - // this token, but do apply it on subsequent tokens. + | _, CtxtSeqBlock (FirstInSeqBlock, offsidePos, addBlockEnd) :: _ when useBlockRule -> + // This is the first token in a block, or a token immediately + // following an infix operator (see above). + // Return the token, but only after processing any additional rules + // applicable for this token. Don't apply the CtxtSeqBlock rule for + // this token, but do apply it on subsequent tokens. if debug then dprintf "repull for CtxtSeqBlockStart\n" replaceCtxt tokenTup (CtxtSeqBlock (NotFirstInSeqBlock, offsidePos, addBlockEnd)) reprocessWithoutBlockRule() // Offside rule for SeqBlock - inserting OBLOCKSEP on subsequent items in a block when they are precisely aligned // - // let f1 () = + // let f1 () = // expr // ... // ~~> insert OBLOCKSEP // - // let f1 () = + // let f1 () = // let x = expr // ... // ~~> insert OBLOCKSEP // - // let f1 () = + // let f1 () = // let x1 = expr // let x2 = expr // let x3 = expr // ... // ~~> insert OBLOCKSEP - | _, CtxtSeqBlock (NotFirstInSeqBlock, offsidePos, addBlockEnd) :: rest - when useBlockRule + | _, CtxtSeqBlock (NotFirstInSeqBlock, offsidePos, addBlockEnd) :: rest + when useBlockRule && not (let isTypeCtxt = (match rest with | CtxtTypeDefns _ :: _ -> true | _ -> false) // Don't insert 'OBLOCKSEP' between namespace declarations let isNamespaceCtxt = (match rest with | CtxtNamespaceBody _ :: _ -> true | _ -> false) if isNamespaceCtxt then (match token with NAMESPACE -> true | _ -> false) elif isTypeCtxt then isTypeSeqBlockElementContinuator token else isSeqBlockElementContinuator token) - && (tokenStartCol = offsidePos.Column) - && (tokenStartPos.OriginalLine <> offsidePos.OriginalLine) -> + && (tokenStartCol = offsidePos.Column) + && (tokenStartPos.OriginalLine <> offsidePos.OriginalLine) -> if debug then dprintf "offside at column %d matches start of block(%a)! delaying token, returning OBLOCKSEP\n" tokenStartCol outputPos offsidePos replaceCtxt tokenTup (CtxtSeqBlock (FirstInSeqBlock, offsidePos, addBlockEnd)) // No change to offside stack: another statement block starts... insertTokenFromPrevPosToCurrentPos OBLOCKSEP - // Offside rule for CtxtLetDecl - // let .... = + // Offside rule for CtxtLetDecl + // let .... = // ... // // - // let .... = + // let .... = // ... // // // let .... = // ... // <*> - | _, CtxtLetDecl (true, offsidePos) :: _ when - isSemiSemi || (if relaxWhitespace2OffsideRule || isLetContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> + | _, CtxtLetDecl (true, offsidePos) :: _ when + isSemiSemi || (if relaxWhitespace2OffsideRule || isLetContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> if debug then dprintf "token at column %d is offside from LET(offsidePos=%a)! delaying token, returning ODECLEND\n" tokenStartCol outputPos offsidePos popCtxt() - insertToken ODECLEND - + insertToken (ODECLEND(getLastTokenEndRange ())) + // do ignore ( // 1 // ), 2 // This is a 'unit * int', so for backwards compatibility, do not treat ')' as a continuator, don't apply relaxWhitespace2OffsideRule // Test here: Tests/FSharp.Compiler.ComponentTests/Conformance/LexicalFiltering/Basic/OffsideExceptions.fs, RelaxWhitespace2_AllowedBefore9 | _, CtxtDo offsidePos :: _ - when isSemiSemi || (if isDoContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> + when isSemiSemi || (if isDoContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> if debug then dprintf "token at column %d is offside from DO(offsidePos=%a)! delaying token, returning ODECLEND\n" tokenStartCol outputPos offsidePos popCtxt() - insertToken ODECLEND + insertToken (ODECLEND(getLastTokenEndRange ())) // class // interface AAA @@ -1771,36 +1828,36 @@ type LexFilterImpl ( // ... | _, CtxtInterfaceHead offsidePos :: _ - when isSemiSemi || (if relaxWhitespace2OffsideRule || isInterfaceContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> + when isSemiSemi || (if relaxWhitespace2OffsideRule || isInterfaceContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> if debug then dprintf "token at column %d is offside from INTERFACE(offsidePos=%a)! pop and reprocess\n" tokenStartCol outputPos offsidePos popCtxt() reprocess() - | _, CtxtTypeDefns offsidePos :: _ - when isSemiSemi || (if relaxWhitespace2OffsideRule || isTypeContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> + | _, CtxtTypeDefns(offsidePos, _) :: _ + when isSemiSemi || (if relaxWhitespace2OffsideRule || isTypeContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> if debug then dprintf "token at column %d is offside from TYPE(offsidePos=%a)! pop and reprocess\n" tokenStartCol outputPos offsidePos popCtxt() reprocess() - // module A.B.M + // module A.B.M // ... // module M = ... // end // module M = ... // ... - // NOTE: ;; does not terminate a whole file module body. - | _, CtxtModuleBody (offsidePos, wholeFile) :: _ when (isSemiSemi && not wholeFile) || (if relaxWhitespace2OffsideRule then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> + // NOTE: ;; does not terminate a whole file module body. + | _, CtxtModuleBody (offsidePos, wholeFile) :: _ when (isSemiSemi && not wholeFile) || (if relaxWhitespace2OffsideRule then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> if debug then dprintf "token at column %d is offside from MODULE with offsidePos %a! delaying token\n" tokenStartCol outputPos offsidePos popCtxt() reprocess() - // NOTE: ;; does not terminate a 'namespace' body. - | _, CtxtNamespaceBody offsidePos :: _ when (* isSemiSemi || *) (if relaxWhitespace2OffsideRule || isNamespaceContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> + // NOTE: ;; does not terminate a 'namespace' body. + | _, CtxtNamespaceBody offsidePos :: _ when (* isSemiSemi || *) (if relaxWhitespace2OffsideRule || isNamespaceContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> if debug then dprintf "token at column %d is offside from NAMESPACE with offsidePos %a! delaying token\n" tokenStartCol outputPos offsidePos popCtxt() reprocess() - | _, CtxtException offsidePos :: _ when isSemiSemi || (if relaxWhitespace2OffsideRule then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> + | _, CtxtException offsidePos :: _ when isSemiSemi || (if relaxWhitespace2OffsideRule then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> if debug then dprintf "token at column %d is offside from EXCEPTION with offsidePos %a! delaying token\n" tokenStartCol outputPos offsidePos popCtxt() reprocess() @@ -1812,65 +1869,65 @@ type LexFilterImpl ( // 1 // This is not offside for backcompat, don't apply relaxWhitespace2OffsideRule // ] // Test here: Tests/FSharp.Compiler.ComponentTests/Conformance/LexicalFiltering/Basic/OffsideExceptions.fs, RelaxWhitespace2_AllowedBefore9 - | _, CtxtMemberBody offsidePos :: _ when isSemiSemi || (if false then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> + | _, CtxtMemberBody offsidePos :: _ when isSemiSemi || (if false then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> if debug then dprintf "token at column %d is offside from MEMBER/OVERRIDE head with offsidePos %a!\n" tokenStartCol outputPos offsidePos popCtxt() - insertToken ODECLEND + insertToken (ODECLEND(getLastTokenEndRange ())) - // Pop CtxtMemberHead when offside - | _, CtxtMemberHead offsidePos :: _ when isSemiSemi || (if relaxWhitespace2OffsideRule then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> + // Pop CtxtMemberHead when offside + | _, CtxtMemberHead offsidePos :: _ when isSemiSemi || (if relaxWhitespace2OffsideRule then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> if debug then dprintf "token at column %d is offside from MEMBER/OVERRIDE head with offsidePos %a!\n" tokenStartCol outputPos offsidePos popCtxt() reprocess() | _, CtxtIf offsidePos :: _ - when isSemiSemi || (if relaxWhitespace2OffsideRule || isIfBlockContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> + when isSemiSemi || (if relaxWhitespace2OffsideRule || isIfBlockContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> if debug then dprintf "offside from CtxtIf\n" popCtxt() reprocess() - + | _, CtxtWithAsLet offsidePos :: _ - when isSemiSemi || (if relaxWhitespace2OffsideRule || isLetContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> + when isSemiSemi || (if relaxWhitespace2OffsideRule || isLetContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> if debug then dprintf "offside from CtxtWithAsLet\n" popCtxt() insertToken OEND - + | _, CtxtWithAsAugment offsidePos :: _ - when isSemiSemi || (if relaxWhitespace2OffsideRule || isWithAugmentBlockContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> + when isSemiSemi || (if relaxWhitespace2OffsideRule || isWithAugmentBlockContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> if debug then dprintf "offside from CtxtWithAsAugment, isWithAugmentBlockContinuator = %b\n" (isWithAugmentBlockContinuator token) popCtxt() - insertToken ODECLEND - + insertToken (ODECLEND(getLastTokenEndRange ())) + | _, CtxtMatch offsidePos :: _ - when isSemiSemi || (if relaxWhitespace2OffsideRule || relaxWhitespace2 && isMatchBlockContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> + when isSemiSemi || (if relaxWhitespace2OffsideRule || relaxWhitespace2 && isMatchBlockContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> if debug then dprintf "offside from CtxtMatch\n" popCtxt() reprocess() - - | _, CtxtFor offsidePos :: _ - when isSemiSemi || (if relaxWhitespace2OffsideRule || isForLoopContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> + + | _, CtxtFor offsidePos :: _ + when isSemiSemi || (if relaxWhitespace2OffsideRule || isForLoopContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> if debug then dprintf "offside from CtxtFor\n" popCtxt() reprocess() - - | _, CtxtWhile offsidePos :: _ - when isSemiSemi || (if relaxWhitespace2OffsideRule || isWhileBlockContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> + + | _, CtxtWhile offsidePos :: _ + when isSemiSemi || (if relaxWhitespace2OffsideRule || isWhileBlockContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> if debug then dprintf "offside from CtxtWhile\n" popCtxt() reprocess() - - | _, CtxtWhen offsidePos :: _ - when isSemiSemi || (if relaxWhitespace2OffsideRule then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> + + | _, CtxtWhen offsidePos :: _ + when isSemiSemi || (if relaxWhitespace2OffsideRule then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> if debug then dprintf "offside from CtxtWhen\n" popCtxt() reprocess() - + | _, CtxtFun offsidePos :: _ // fun () -> async { // 1 // }, 2 // This is a '(unit -> seq) * int', so for backwards compatibility, do not treat '}' as a continuator, don't apply relaxWhitespace2OffsideRule // Test here: Tests/FSharp.Compiler.ComponentTests/Conformance/LexicalFiltering/Basic/OffsideExceptions.fs, RelaxWhitespace2_AllowedBefore9 - when isSemiSemi || (if (*relaxWhitespace2OffsideRule*)false then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> + when isSemiSemi || (if (*relaxWhitespace2OffsideRule*)false then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> if debug then dprintf "offside from CtxtFun\n" popCtxt() insertToken OEND @@ -1879,110 +1936,111 @@ type LexFilterImpl ( // }, 2 // This is a '(unit -> seq) * int', so for backwards compatibility, do not treat '}' as a continuator, don't apply relaxWhitespace2OffsideRule // Test here: Tests/FSharp.Compiler.ComponentTests/Conformance/LexicalFiltering/Basic/OffsideExceptions.fs, RelaxWhitespace2_AllowedBefore9 | _, CtxtFunction offsidePos :: _ - when isSemiSemi || (if (*relaxWhitespace2OffsideRule*)false then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> + when isSemiSemi || (if (*relaxWhitespace2OffsideRule*)false then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> popCtxt() reprocess() - + | _, CtxtTry offsidePos :: _ - when isSemiSemi || (if relaxWhitespace2OffsideRule || isTryBlockContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> + when isSemiSemi || (if relaxWhitespace2OffsideRule || isTryBlockContinuator token then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> if debug then dprintf "offside from CtxtTry\n" popCtxt() reprocess() - - // then + + // then // ... - // else + // else // - // then + // then // ... - | _, CtxtThen offsidePos :: _ when isSemiSemi || (if relaxWhitespace2OffsideRule || isThenBlockContinuator token then tokenStartCol + 1 else tokenStartCol)<= offsidePos.Column -> + | _, CtxtThen offsidePos :: _ when isSemiSemi || (if relaxWhitespace2OffsideRule || isThenBlockContinuator token then tokenStartCol + 1 else tokenStartCol)<= offsidePos.Column -> if debug then dprintf "offside from CtxtThen, popping\n" popCtxt() reprocess() - + // else ... // .... // - | _, CtxtElse (offsidePos) :: _ when isSemiSemi || (if relaxWhitespace2OffsideRule then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> + | _, CtxtElse (offsidePos) :: _ when isSemiSemi || (if relaxWhitespace2OffsideRule then tokenStartCol + 1 else tokenStartCol) <= offsidePos.Column -> if debug then dprintf "offside from CtxtElse, popping\n" popCtxt() reprocess() - // leadingBar=false permits match patterns without an initial '|' - | _, CtxtMatchClauses (leadingBar, offsidePos) :: _ - when (isSemiSemi || - (match token with - // BAR occurs in pattern matching 'with' blocks - | BAR -> + // leadingBar=false permits match patterns without an initial '|' + | _, CtxtMatchClauses (leadingBar, offsidePos) :: _ + when (isSemiSemi || + (match token with + // BAR occurs in pattern matching 'with' blocks + | BAR -> let cond1 = tokenStartCol + (if leadingBar then 0 else 2) < offsidePos.Column let cond2 = tokenStartCol + (if leadingBar then 1 else 2) < offsidePos.Column - if (cond1 <> cond2) then + if (cond1 <> cond2) then errorR(IndentationProblem(FSComp.SR.lexfltSeparatorTokensOfPatternMatchMisaligned(), mkSynRange (startPosOfTokenTup tokenTup) tokenTup.LexbufState.EndPos)) cond1 | END -> tokenStartCol + (if leadingBar then -1 else 1) < offsidePos.Column - | _ -> tokenStartCol + (if leadingBar then -1 else 1) < offsidePos.Column)) -> + | _ -> tokenStartCol + (if leadingBar then -1 else 1) < offsidePos.Column)) -> if debug then dprintf "offside from WITH, tokenStartCol = %d, offsidePos = %a, delaying token, returning OEND\n" tokenStartCol outputPos offsidePos popCtxt() insertToken OEND - - // namespace ... ~~~> CtxtNamespaceHead - | NAMESPACE, _ :: _ -> - if debug then dprintf "NAMESPACE: entering CtxtNamespaceHead, awaiting end of long identifier to push CtxtSeqBlock\n" + + // namespace ... ~~~> CtxtNamespaceHead + | NAMESPACE, _ :: _ -> + if debug then dprintf "NAMESPACE: entering CtxtNamespaceHead, awaiting end of long identifier to push CtxtSeqBlock\n" pushCtxt tokenTup (CtxtNamespaceHead (tokenStartPos, token)) returnToken tokenLexbufState token - - // module ... ~~~> CtxtModuleHead - | MODULE, _ :: _ -> + + // module ... ~~~> CtxtModuleHead + | MODULE, _ :: _ -> insertComingSoonTokens("MODULE", MODULE_COMING_SOON, MODULE_IS_HERE) if debug then dprintf "MODULE: entering CtxtModuleHead, awaiting EQUALS to go to CtxtSeqBlock (%a)\n" outputPos tokenStartPos - pushCtxt tokenTup (CtxtModuleHead (tokenStartPos, token, NotLexingModuleAttributes)) + let isNested = match offsideStack with | [ CtxtSeqBlock _ ] -> false | _ -> true + pushCtxt tokenTup (CtxtModuleHead (tokenStartPos, token, NotLexingModuleAttributes, isNested)) pool.Return tokenTup hwTokenFetch useBlockRule - - // exception ... ~~~> CtxtException - | EXCEPTION, _ :: _ -> + + // exception ... ~~~> CtxtException + | EXCEPTION, _ :: _ -> if debug then dprintf "EXCEPTION: entering CtxtException(%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtException tokenStartPos) returnToken tokenLexbufState token - - // let ... ~~~> CtxtLetDecl - // -- this rule only applies to - // - 'static let' - | LET isUse, ctxt :: _ when (match ctxt with CtxtMemberHead _ -> true | _ -> false) -> + + // let ... ~~~> CtxtLetDecl + // -- this rule only applies to + // - 'static let' + | LET isUse, ctxt :: _ when (match ctxt with CtxtMemberHead _ -> true | _ -> false) -> if debug then dprintf "LET: entering CtxtLetDecl(), awaiting EQUALS to go to CtxtSeqBlock (%a)\n" outputPos tokenStartPos let startPos = match ctxt with CtxtMemberHead startPos -> startPos | _ -> tokenStartPos popCtxt() // get rid of the CtxtMemberHead pushCtxt tokenTup (CtxtLetDecl(true, startPos)) returnToken tokenLexbufState (OLET isUse) - // let ... ~~~> CtxtLetDecl - // -- this rule only applies to - // - 'let' 'right-on' a SeqBlock line + // let ... ~~~> CtxtLetDecl + // -- this rule only applies to + // - 'let' 'right-on' a SeqBlock line // - 'let' in a CtxtMatchClauses, which is a parse error, but we need to treat as OLET to get various O...END tokens to enable parser to recover - | LET isUse, ctxt :: _ -> - let blockLet = match ctxt with | CtxtSeqBlock _ -> true - | CtxtMatchClauses _ -> true + | LET isUse, ctxt :: _ -> + let blockLet = match ctxt with | CtxtSeqBlock _ -> true + | CtxtMatchClauses _ -> true | _ -> false if debug then dprintf "LET: entering CtxtLetDecl(blockLet=%b), awaiting EQUALS to go to CtxtSeqBlock (%a)\n" blockLet outputPos tokenStartPos pushCtxt tokenTup (CtxtLetDecl(blockLet, tokenStartPos)) returnToken tokenLexbufState (if blockLet then OLET isUse else token) - - // let! ... ~~~> CtxtLetDecl - | BINDER b, ctxt :: _ -> + + // let! ... ~~~> CtxtLetDecl + | BINDER b, ctxt :: _ -> let blockLet = match ctxt with CtxtSeqBlock _ -> true | _ -> false if debug then dprintf "LET: entering CtxtLetDecl(blockLet=%b), awaiting EQUALS to go to CtxtSeqBlock (%a)\n" blockLet outputPos tokenStartPos pushCtxt tokenTup (CtxtLetDecl(blockLet, tokenStartPos)) returnToken tokenLexbufState (if blockLet then OBINDER b else token) - // and! ... ~~~> CtxtLetDecl - | AND_BANG isUse, ctxt :: _ -> + // and! ... ~~~> CtxtLetDecl + | AND_BANG isUse, ctxt :: _ -> let blockLet = match ctxt with CtxtSeqBlock _ -> true | _ -> false if debug then dprintf "AND!: entering CtxtLetDecl(blockLet=%b), awaiting EQUALS to go to CtxtSeqBlock (%a)\n" blockLet outputPos tokenStartPos pushCtxt tokenTup (CtxtLetDecl(blockLet,tokenStartPos)) returnToken tokenLexbufState (if blockLet then OAND_BANG isUse else token) - | (VAL | STATIC | ABSTRACT | MEMBER | OVERRIDE | DEFAULT), ctxtStack when thereIsACtxtMemberBodyOnTheStackAndWeShouldPopStackForUpcomingMember ctxtStack -> + | (VAL | STATIC | ABSTRACT | MEMBER | OVERRIDE | DEFAULT), ctxtStack when thereIsACtxtMemberBodyOnTheStackAndWeShouldPopStackForUpcomingMember ctxtStack -> if debug then dprintf "STATIC/MEMBER/OVERRIDE/DEFAULT: already inside CtxtMemberBody, popping all that context before starting next member...\n" // save this token, we'll consume it again later... delayTokenNoProcessing tokenTup @@ -1990,7 +2048,7 @@ type LexFilterImpl ( while (match offsideStack.Head with CtxtMemberBody _ -> false | _ -> true) do match endTokenForACtxt offsideStack.Head with // some contexts require us to insert various END tokens - | Some tok -> + | Some tok -> popCtxt() if debug then dprintf "--> inserting %+A\n" tok delayTokenNoProcessing (pool.UseLocation(tokenTup, tok)) @@ -1999,87 +2057,88 @@ type LexFilterImpl ( popCtxt() // pop CtxtMemberBody if debug then dprintf "...STATIC/MEMBER/OVERRIDE/DEFAULT: finished popping all that context\n" hwTokenFetch useBlockRule - - // static member ... ~~~> CtxtMemberHead - // static ... ~~~> CtxtMemberHead - // member ... ~~~> CtxtMemberHead - // override ... ~~~> CtxtMemberHead - // default ... ~~~> CtxtMemberHead - // val ... ~~~> CtxtMemberHead - | (VAL | STATIC | ABSTRACT | MEMBER | OVERRIDE | DEFAULT), ctxt :: _ when (match ctxt with CtxtMemberHead _ -> false | _ -> true) -> + + // static member ... ~~~> CtxtMemberHead + // static ... ~~~> CtxtMemberHead + // member ... ~~~> CtxtMemberHead + // override ... ~~~> CtxtMemberHead + // default ... ~~~> CtxtMemberHead + // val ... ~~~> CtxtMemberHead + | (VAL | STATIC | ABSTRACT | MEMBER | OVERRIDE | DEFAULT), ctxt :: _ when (match ctxt with CtxtMemberHead _ -> false | _ -> true) -> if debug then dprintf "STATIC/MEMBER/OVERRIDE/DEFAULT: entering CtxtMemberHead, awaiting EQUALS to go to CtxtSeqBlock (%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtMemberHead tokenStartPos) returnToken tokenLexbufState token - // public new... ~~~> CtxtMemberHead - | (PUBLIC | PRIVATE | INTERNAL), _ctxt :: _ when (match peekNextToken() with NEW -> true | _ -> false) -> + // public new... ~~~> CtxtMemberHead + | (PUBLIC | PRIVATE | INTERNAL), _ctxt :: _ when (match peekNextToken() with NEW -> true | _ -> false) -> if debug then dprintf "PUBLIC/PRIVATE/INTERNAL NEW: entering CtxtMemberHead, awaiting EQUALS to go to CtxtSeqBlock (%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtMemberHead tokenStartPos) returnToken tokenLexbufState token - // new( ~~~> CtxtMemberHead, if not already there because of 'public' - | NEW, ctxt :: _ when (match peekNextToken() with LPAREN -> true | _ -> false) && (match ctxt with CtxtMemberHead _ -> false | _ -> true) -> + // new( ~~~> CtxtMemberHead, if not already there because of 'public' + | NEW, ctxt :: _ when (match peekNextToken() with LPAREN -> true | _ -> false) && (match ctxt with CtxtMemberHead _ -> false | _ -> true) -> if debug then dprintf "NEW: entering CtxtMemberHead, awaiting EQUALS to go to CtxtSeqBlock (%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtMemberHead tokenStartPos) returnToken tokenLexbufState token - - // 'let ... = ' ~~~> CtxtSeqBlock - | EQUALS, CtxtLetDecl _ :: _ -> + + // 'let ... = ' ~~~> CtxtSeqBlock + | EQUALS, CtxtLetDecl _ :: _ -> if debug then dprintf "CtxtLetDecl: EQUALS, pushing CtxtSeqBlock\n" - pushCtxtSeqBlock(true, AddBlockEnd) + pushCtxtSeqBlock tokenTup AddBlockEnd returnToken tokenLexbufState token - | EQUALS, CtxtTypeDefns _ :: _ -> + | EQUALS, CtxtTypeDefns(p, _) :: _ -> if debug then dprintf "CtxType: EQUALS, pushing CtxtSeqBlock\n" - pushCtxtSeqBlock(true, AddBlockEnd) + replaceCtxtIgnoreIndent tokenTup (CtxtTypeDefns(p, Some tokenTup.EndPos)) + pushCtxtSeqBlock tokenTup AddBlockEnd returnToken tokenLexbufState token - | (LAZY | ASSERT), _ -> - if isControlFlowOrNotSameLine() then + | (LAZY | ASSERT), _ -> + if isControlFlowOrNotSameLine() then if debug then dprintf "LAZY/ASSERT, pushing CtxtSeqBlock\n" - pushCtxtSeqBlock(true, AddBlockEnd) + pushCtxtSeqBlock tokenTup AddBlockEnd returnToken tokenLexbufState (match token with LAZY -> OLAZY | _ -> OASSERT) else returnToken tokenLexbufState token - // 'with id = ' ~~~> CtxtSeqBlock - // 'with M.id = ' ~~~> CtxtSeqBlock + // 'with id = ' ~~~> CtxtSeqBlock + // 'with M.id = ' ~~~> CtxtSeqBlock // 'with id1 = 1 - // id2 = ... ~~~> CtxtSeqBlock + // id2 = ... ~~~> CtxtSeqBlock // 'with id1 = 1 - // M.id2 = ... ~~~> CtxtSeqBlock - // '{ id = ... ' ~~~> CtxtSeqBlock - // '{ M.id = ... ' ~~~> CtxtSeqBlock + // M.id2 = ... ~~~> CtxtSeqBlock + // '{ id = ... ' ~~~> CtxtSeqBlock + // '{ M.id = ... ' ~~~> CtxtSeqBlock // '{ id1 = 1 - // id2 = ... ' ~~~> CtxtSeqBlock + // id2 = ... ' ~~~> CtxtSeqBlock // '{ id1 = 1 - // M.id2 = ... ' ~~~> CtxtSeqBlock - | EQUALS, CtxtWithAsLet _ :: _ // This detects 'with = '. - | EQUALS, CtxtVanilla (_, true) :: CtxtSeqBlock _ :: (CtxtWithAsLet _ | CtxtParen((LBRACE _ | LBRACE_BAR), _)) :: _ -> + // M.id2 = ... ' ~~~> CtxtSeqBlock + | EQUALS, CtxtWithAsLet _ :: _ // This detects 'with = '. + | EQUALS, CtxtVanilla (_, true) :: CtxtSeqBlock _ :: (CtxtWithAsLet _ | CtxtParen((LBRACE _ | LBRACE_BAR), _)) :: _ -> if debug then dprintf "CtxtLetDecl/CtxtWithAsLet: EQUALS, pushing CtxtSeqBlock\n" // We don't insert begin/end block tokens for single-line bindings since we can't properly distinguish single-line *) // record update expressions such as "{ t with gbuckets=Array.copy t.gbuckets; gcount=t.gcount }" *) // These have a syntactically odd status because of the use of ";" to terminate expressions, so each *) // "=" binding is not properly balanced by "in" or "and" tokens in the single line syntax (unlike other bindings) *) - if isControlFlowOrNotSameLine() then - pushCtxtSeqBlock(true, AddBlockEnd) + if isControlFlowOrNotSameLine() then + pushCtxtSeqBlock tokenTup AddBlockEnd else - pushCtxtSeqBlock(false, NoAddBlockEnd) + pushCtxtSeqBlock tokenTup NoAddBlockEnd returnToken tokenLexbufState token - // 'new(... =' ~~~> CtxtMemberBody, CtxtSeqBlock - // 'member ... =' ~~~> CtxtMemberBody, CtxtSeqBlock - // 'static member ... =' ~~~> CtxtMemberBody, CtxtSeqBlock - // 'default ... =' ~~~> CtxtMemberBody, CtxtSeqBlock - // 'override ... =' ~~~> CtxtMemberBody, CtxtSeqBlock - | EQUALS, CtxtMemberHead offsidePos :: _ -> + // 'new(... =' ~~~> CtxtMemberBody, CtxtSeqBlock + // 'member ... =' ~~~> CtxtMemberBody, CtxtSeqBlock + // 'static member ... =' ~~~> CtxtMemberBody, CtxtSeqBlock + // 'default ... =' ~~~> CtxtMemberBody, CtxtSeqBlock + // 'override ... =' ~~~> CtxtMemberBody, CtxtSeqBlock + | EQUALS, CtxtMemberHead offsidePos :: _ -> if debug then dprintf "CtxtMemberHead: EQUALS, pushing CtxtSeqBlock\n" replaceCtxt tokenTup (CtxtMemberBody offsidePos) - pushCtxtSeqBlock(true, AddBlockEnd) + pushCtxtSeqBlock tokenTup AddBlockEnd returnToken tokenLexbufState token - // '(' tokens are balanced with ')' tokens and also introduce a CtxtSeqBlock + // '(' tokens are balanced with ')' tokens and also introduce a CtxtSeqBlock // $".... { ... } ... { ....} " pushes a block context at first { // ~~~~~~~~ // ^---------INTERP_STRING_BEGIN_PART @@ -2089,107 +2148,109 @@ type LexFilterImpl ( | INTERP_STRING_BEGIN_PART _ -> tokenTup.LexbufState.EndPos | _ -> tokenStartPos pushCtxt tokenTup (CtxtParen (token, pos)) - pushCtxtSeqBlock(false, NoAddBlockEnd) + pushCtxtSeqBlock tokenTup NoAddBlockEnd returnToken tokenLexbufState token - // '(' tokens are balanced with ')' tokens and also introduce a CtxtSeqBlock - | STRUCT, ctxts - when (match ctxts with - | CtxtSeqBlock _ :: (CtxtModuleBody _ | CtxtTypeDefns _) :: _ -> - // type ... = struct ... end - // module ... = struct ... end - true - + // '(' tokens are balanced with ')' tokens and also introduce a CtxtSeqBlock + | STRUCT, ctxts + when (match ctxts with + | CtxtSeqBlock _ :: (CtxtModuleBody _ | CtxtTypeDefns _) :: _ -> + // type ... = struct ... end + // module ... = struct ... end + true + | _ -> false) (* type X<'a when 'a : struct> *) -> if debug then dprintf "LPAREN etc., pushes CtxtParen, pushing CtxtSeqBlock, tokenStartPos = %a\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtParen (token, tokenStartPos)) - pushCtxtSeqBlock(false, NoAddBlockEnd) + pushCtxtSeqBlock tokenTup NoAddBlockEnd returnToken tokenLexbufState token - | RARROW, ctxts - // Only treat '->' as a starting a sequence block in certain circumstances - when (match ctxts with - // comprehension/match - | (CtxtWhile _ | CtxtFor _ | CtxtWhen _ | CtxtMatchClauses _ | CtxtFun _) :: _ -> true - // comprehension - | CtxtSeqBlock _ :: CtxtParen ((LBRACK | LBRACE _ | LBRACE_BAR | LBRACK_BAR), _) :: _ -> true - // comprehension - | CtxtSeqBlock _ :: (CtxtDo _ | CtxtWhile _ | CtxtFor _ | CtxtWhen _ | CtxtMatchClauses _ | CtxtTry _ | CtxtThen _ | CtxtElse _) :: _ -> true + | RARROW, ctxts + // Only treat '->' as a starting a sequence block in certain circumstances + when (match ctxts with + // comprehension/match + | (CtxtWhile _ | CtxtFor _ | CtxtWhen _ | CtxtMatchClauses _ | CtxtFun _) :: _ -> true + // comprehension + | CtxtSeqBlock _ :: CtxtParen ((LBRACK | LBRACE _ | LBRACE_BAR | LBRACK_BAR), _) :: _ -> true + // comprehension + | CtxtSeqBlock _ :: (CtxtDo _ | CtxtWhile _ | CtxtFor _ | CtxtWhen _ | CtxtMatchClauses _ | CtxtTry _ | CtxtThen _ | CtxtElse _) :: _ -> true | _ -> false) -> if debug then dprintf "RARROW, pushing CtxtSeqBlock, tokenStartPos = %a\n" outputPos tokenStartPos - pushCtxtSeqBlock(false, AddOneSidedBlockEnd) + pushCtxtSeqBlock tokenTup AddOneSidedBlockEnd returnToken tokenLexbufState token | LARROW, _ when isControlFlowOrNotSameLine() -> if debug then dprintf "LARROW, pushing CtxtSeqBlock, tokenStartPos = %a\n" outputPos tokenStartPos - pushCtxtSeqBlock(true, AddBlockEnd) + pushCtxtSeqBlock tokenTup AddBlockEnd returnToken tokenLexbufState token - // do ~~> CtxtDo;CtxtSeqBlock (unconditionally) - | (DO | DO_BANG), _ -> + // do ~~> CtxtDo;CtxtSeqBlock (unconditionally) + | (DO | DO_BANG), _ -> if debug then dprintf "DO: pushing CtxtSeqBlock, tokenStartPos = %a\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtDo tokenStartPos) - pushCtxtSeqBlock(true, AddBlockEnd) + tryPushCtxtSeqBlock tokenTup AddBlockEnd returnToken tokenLexbufState (match token with DO -> ODO | DO_BANG -> ODO_BANG | _ -> failwith "unreachable") - // The r.h.s. of an infix token begins a new block. - | _, ctxts when (isInfix token && - not (isSameLine()) && + // The r.h.s. of an infix token begins a new block. + | _, ctxts when (isInfix token && + not (isSameLine()) && // This doesn't apply to the use of any infix tokens in a pattern match or 'when' block // For example // // match x with // | _ when true && // false -> // the 'false' token shouldn't start a new block - // let x = 1 + // let x = 1 // x - (match ctxts with CtxtMatchClauses _ :: _ -> false | _ -> true)) -> + (match ctxts with CtxtMatchClauses _ :: _ -> false | _ -> true)) -> if debug then dprintf "(Infix etc.), pushing CtxtSeqBlock, tokenStartPos = %a\n" outputPos tokenStartPos - pushCtxtSeqBlock(false, NoAddBlockEnd) + pushCtxtSeqBlock tokenTup NoAddBlockEnd returnToken tokenLexbufState token - | WITH, (CtxtTry _ | CtxtMatch _) :: _ -> + | WITH, (CtxtTry _ | CtxtMatch _) :: _ -> let lookaheadTokenTup = peekNextTokenTup() let lookaheadTokenStartPos = startPosOfTokenTup lookaheadTokenTup let leadingBar = match (peekNextToken()) with BAR -> true | _ -> false + if debug then dprintf "WITH, pushing CtxtMatchClauses, lookaheadTokenStartPos = %a, tokenStartPos = %a\n" outputPos lookaheadTokenStartPos outputPos tokenStartPos - pushCtxt lookaheadTokenTup (CtxtMatchClauses(leadingBar, lookaheadTokenStartPos)) - returnToken tokenLexbufState OWITH + tryPushCtxt strictIndentation false lookaheadTokenTup (CtxtMatchClauses(leadingBar, lookaheadTokenStartPos)) |> ignore + + returnToken tokenLexbufState OWITH - | FINALLY, CtxtTry _ :: _ -> + | FINALLY, CtxtTry _ :: _ -> if debug then dprintf "FINALLY, pushing pushCtxtSeqBlock, tokenStartPos = %a\n" outputPos tokenStartPos - pushCtxtSeqBlock(true, AddBlockEnd) + pushCtxtSeqBlock tokenTup AddBlockEnd returnToken tokenLexbufState token - | WITH, (CtxtException _ | CtxtTypeDefns _ | CtxtMemberHead _ | CtxtInterfaceHead _ | CtxtMemberBody _ as limCtxt) :: _ - | WITH, (CtxtSeqBlock _ as limCtxt :: CtxtParen((LBRACE _ | LBRACE_BAR), _) :: _) -> + | WITH, (CtxtException _ | CtxtTypeDefns _ | CtxtMemberHead _ | CtxtInterfaceHead _ | CtxtMemberBody _ as limCtxt) :: _ + | WITH, (CtxtSeqBlock _ as limCtxt :: CtxtParen((LBRACE _ | LBRACE_BAR), _) :: _) -> let lookaheadTokenTup = peekNextTokenTup() let lookaheadTokenStartPos = startPosOfTokenTup lookaheadTokenTup - match lookaheadTokenTup.Token with + match lookaheadTokenTup.Token with | RBRACE _ - | IDENT _ + | IDENT _ // The next clause detects the access annotations after the 'with' in: - // member x.PublicGetSetProperty + // member x.PublicGetSetProperty // with public get i = "Ralf" - // and private set i v = () - // - // as well as: - // member x.PublicGetSetProperty + // and private set i v = () + // + // as well as: + // member x.PublicGetSetProperty // with inline get() = "Ralf" - // and [] set v = () - // - | PUBLIC | PRIVATE | INTERNAL | INLINE -> + // and [] set v = () + // + | PUBLIC | PRIVATE | INTERNAL | INLINE -> - let offsidePos = + let offsidePos = if lookaheadTokenStartPos.Column > tokenTup.LexbufState.EndPos.Column then // This detects: - // { new Foo + // { new Foo // with M() = 1 - // and N() = 2 } - // and treats the inner bindings as if they were member bindings. + // and N() = 2 } + // and treats the inner bindings as if they were member bindings. // (HOWEVER: note the above language construct is now deprecated/removed) - // + // // It also happens to detect // { foo with m = 1 // n = 2 } @@ -2197,43 +2258,43 @@ type LexFilterImpl ( tokenStartPos else // This detects: - // { foo with + // { foo with // m = 1 // n = 2 } // So we're careful to set the offside column to be the minimum required *) limCtxt.StartPos if debug then dprintf "WITH, pushing CtxtWithAsLet, tokenStartPos = %a, lookaheadTokenStartPos = %a\n" outputPos tokenStartPos outputPos lookaheadTokenStartPos pushCtxt tokenTup (CtxtWithAsLet offsidePos) - - // Detect 'with' bindings of the form + + // Detect 'with' bindings of the form // // with x = ... // - // Which can only be part of + // Which can only be part of // // { r with x = ... } // // and in this case push a CtxtSeqBlock to cover the sequence - let isFollowedByLongIdentEquals = + let isFollowedByLongIdentEquals = let tokenTup = popNextTokenTup() let res = isLongIdentEquals tokenTup.Token delayToken tokenTup res if isFollowedByLongIdentEquals then - pushCtxtSeqBlock(false, NoAddBlockEnd) - - returnToken tokenLexbufState OWITH - | _ -> + pushCtxtSeqBlock tokenTup NoAddBlockEnd + + returnToken tokenLexbufState OWITH + | _ -> if debug then dprintf "WITH, pushing CtxtWithAsAugment and CtxtSeqBlock, tokenStartPos = %a, limCtxt = %A\n" outputPos tokenStartPos limCtxt // // For attributes on properties: - // member x.PublicGetSetProperty + // member x.PublicGetSetProperty // with [] get() = "Ralf" if (match lookaheadTokenTup.Token with LBRACK_LESS -> true | _ -> false) && (lookaheadTokenStartPos.OriginalLine = tokenTup.StartPos.OriginalLine) then let offsidePos = tokenStartPos pushCtxt tokenTup (CtxtWithAsLet offsidePos) - returnToken tokenLexbufState OWITH + returnToken tokenLexbufState OWITH // Recovery for `interface ... with` member without further indented member implementations elif lookaheadTokenStartPos.Column <= limCtxt.StartCol && (match limCtxt with CtxtInterfaceHead _ -> true | _ -> false) then @@ -2241,35 +2302,35 @@ type LexFilterImpl ( else // In these situations - // interface I with + // interface I with // ... // end - // exception ... with + // exception ... with // ... // end - // type ... with + // type ... with // ... // end - // member x.P + // member x.P // with get() = ... // and set() = ... - // member x.P with + // member x.P with // get() = ... - // The limit is "interface"/"exception"/"type" + // The limit is "interface"/"exception"/"type" let offsidePos = limCtxt.StartPos - + pushCtxt tokenTup (CtxtWithAsAugment offsidePos) - pushCtxtSeqBlock(true, AddBlockEnd) - returnToken tokenLexbufState token + pushCtxtSeqBlock tokenTup AddBlockEnd + returnToken tokenLexbufState token - | WITH, stack -> + | WITH, stack -> if debug then dprintf "WITH\n" if debug then dprintf "WITH --> NO MATCH, pushing CtxtWithAsAugment (type augmentation), stack = %A" stack pushCtxt tokenTup (CtxtWithAsAugment tokenStartPos) - pushCtxtSeqBlock(true, AddBlockEnd) - returnToken tokenLexbufState token + tryPushCtxtSeqBlock tokenTup AddBlockEnd + returnToken tokenLexbufState token - | FUNCTION, _ -> + | FUNCTION, _ -> let lookaheadTokenTup = peekNextTokenTup() let lookaheadTokenStartPos = startPosOfTokenTup lookaheadTokenTup let leadingBar = match (peekNextToken()) with BAR -> true | _ -> false @@ -2277,22 +2338,22 @@ type LexFilterImpl ( pushCtxt lookaheadTokenTup (CtxtMatchClauses(leadingBar, lookaheadTokenStartPos)) returnToken tokenLexbufState OFUNCTION - | THEN, _ -> + | THEN, _ -> if debug then dprintf "THEN, replacing THEN with OTHEN, pushing CtxtSeqBlock;CtxtThen(%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtThen tokenStartPos) - pushCtxtSeqBlock(true, AddBlockEnd) - returnToken tokenLexbufState OTHEN + pushCtxtSeqBlock tokenTup AddBlockEnd + returnToken tokenLexbufState OTHEN - | ELSE, _ -> + | ELSE, _ -> let lookaheadTokenTup = peekNextTokenTup() let lookaheadTokenStartPos, lookaheadTokenEndPos = posOfTokenTup lookaheadTokenTup - match peekNextToken() with + match peekNextToken() with | IF when isSameLine() -> // We convert ELSE IF to ELIF since it then opens the block at the right point, // In particular the case // if e1 then e2 // else if e3 then e4 - // else if e5 then e6 + // else if e5 then e6 popNextTokenTup() |> pool.Return if debug then dprintf "ELSE IF: replacing ELSE IF with ELIF, pushing CtxtIf, CtxtVanilla(%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtIf tokenStartPos) @@ -2300,104 +2361,124 @@ type LexFilterImpl ( let correctedTokenLexbufState = LexbufState(tokenStartPos, lookaheadTokenEndPos, false) returnToken correctedTokenLexbufState ELIF - | _ -> + | _ -> if debug then dprintf "ELSE: replacing ELSE with OELSE, pushing CtxtSeqBlock, CtxtElse(%a)\n" outputPos lookaheadTokenStartPos pushCtxt tokenTup (CtxtElse tokenStartPos) - pushCtxtSeqBlock(true, AddBlockEnd) + pushCtxtSeqBlock tokenTup AddBlockEnd returnToken tokenLexbufState OELSE - | (ELIF | IF), _ -> + | (ELIF | IF), _ -> if debug then dprintf "IF, pushing CtxtIf(%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtIf tokenStartPos) returnToken tokenLexbufState token - | (MATCH | MATCH_BANG), _ -> + | (MATCH | MATCH_BANG), _ -> if debug then dprintf "MATCH, pushing CtxtMatch(%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtMatch tokenStartPos) returnToken tokenLexbufState token - | FOR, _ -> + | FOR, _ -> if debug then dprintf "FOR, pushing CtxtFor(%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtFor tokenStartPos) returnToken tokenLexbufState token - | WHILE, _ -> + | (WHILE | WHILE_BANG), _ -> if debug then dprintf "WHILE, pushing CtxtWhile(%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtWhile tokenStartPos) returnToken tokenLexbufState token - | WHEN, CtxtSeqBlock _ :: _ -> + | WHEN, CtxtSeqBlock _ :: _ -> if debug then dprintf "WHEN, pushing CtxtWhen(%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtWhen tokenStartPos) returnToken tokenLexbufState token - | FUN, _ -> + | FUN, _ -> if debug then dprintf "FUN, pushing CtxtFun(%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtFun tokenStartPos) returnToken tokenLexbufState OFUN - | INTERFACE, _ -> - let lookaheadTokenTup = peekNextTokenTup() - let lookaheadTokenStartPos = startPosOfTokenTup lookaheadTokenTup - match lookaheadTokenTup.Token with - // type I = interface .... end - | DEFAULT | OVERRIDE | INTERFACE | NEW | TYPE | STATIC | END | MEMBER | ABSTRACT | INHERIT | LBRACK_LESS -> - if debug then dprintf "INTERFACE, pushing CtxtParen, tokenStartPos = %a, lookaheadTokenStartPos = %a\n" outputPos tokenStartPos outputPos lookaheadTokenStartPos - pushCtxt tokenTup (CtxtParen (token, tokenStartPos)) - pushCtxtSeqBlock(true, AddBlockEnd) - returnToken tokenLexbufState token - // type C with interface .... with - // type C = interface .... with - | _ -> - if debug then dprintf "INTERFACE, pushing CtxtInterfaceHead, tokenStartPos = %a, lookaheadTokenStartPos = %a\n" outputPos tokenStartPos outputPos lookaheadTokenStartPos - pushCtxt tokenTup (CtxtInterfaceHead tokenStartPos) - returnToken tokenLexbufState OINTERFACE_MEMBER - - | CLASS, _ -> + // type I = interface .... end + | INTERFACE, CtxtSeqBlock _ :: CtxtTypeDefns(typePos, Some equalsEndPos) :: _ when + (tokenTup.LastTokenPos = equalsEndPos && + + // Allow deindenting interface representation when started after `=`: + // + // type I = interface + // abstract P: int + // end + + let allowDeindent = tokenTup.EndPos.Line = equalsEndPos.Line + + let lookaheadTokenTup = peekNextTokenTup () + let lookaheadTokenStartPos = startPosOfTokenTup lookaheadTokenTup + match lookaheadTokenTup.Token with + | END -> + lookaheadTokenStartPos.Column >= typePos.Column + + | DEFAULT | OVERRIDE | INTERFACE | NEW | TYPE | STATIC | MEMBER | ABSTRACT | INHERIT | LBRACK_LESS -> + let limitPos = if allowDeindent then typePos else tokenTup.StartPos + lookaheadTokenStartPos.Column >= limitPos.Column + 1 + + | _ -> + false) -> + + if debug then dprintf "INTERFACE, pushing CtxtParen, tokenStartPos = %a\n" outputPos tokenStartPos + pushCtxt tokenTup (CtxtParen (token, tokenStartPos)) + pushCtxtSeqBlock tokenTup AddBlockEnd + returnToken tokenLexbufState token + + // type C with interface .... with + // type C = interface .... with + | INTERFACE, _ -> + if debug then dprintf "INTERFACE, pushing CtxtInterfaceHead, tokenStartPos = %a, lookaheadTokenStartPos \n" outputPos tokenStartPos + pushCtxt tokenTup (CtxtInterfaceHead tokenStartPos) + returnToken tokenLexbufState OINTERFACE_MEMBER + + | CLASS, _ -> if debug then dprintf "CLASS, pushing CtxtParen(%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtParen (token, tokenStartPos)) - pushCtxtSeqBlock(true, AddBlockEnd) + pushCtxtSeqBlock tokenTup AddBlockEnd returnToken tokenLexbufState token - | TYPE, _ -> + | TYPE, _ -> insertComingSoonTokens("TYPE", TYPE_COMING_SOON, TYPE_IS_HERE) if debug then dprintf "TYPE, pushing CtxtTypeDefns(%a)\n" outputPos tokenStartPos - pushCtxt tokenTup (CtxtTypeDefns tokenStartPos) + pushCtxt tokenTup (CtxtTypeDefns(tokenStartPos, None)) pool.Return tokenTup hwTokenFetch useBlockRule - | TRY, _ -> + | TRY, _ -> if debug then dprintf "Try, pushing CtxtTry(%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtTry tokenStartPos) - // The ideal spec would be to push a begin/end block pair here, but we can only do that - // if we are able to balance the WITH with the TRY. We can't do that because of the numerous ways - // WITH is used in the grammar (see what happens when we hit a WITH below. - // This hits in the single line case: "try make ef1 t with _ -> make ef2 t". - - pushCtxtSeqBlock(false, AddOneSidedBlockEnd) + // The ideal spec would be to push a begin/end block pair here, but we can only do that + // if we are able to balance the WITH with the TRY. We can't do that because of the numerous ways + // WITH is used in the grammar (see what happens when we hit a WITH below. + // This hits in the single line case: "try make ef1 t with _ -> make ef2 t". + + pushCtxtSeqBlock tokenTup AddOneSidedBlockEnd + returnToken tokenLexbufState token + + | OBLOCKBEGIN, _ -> returnToken tokenLexbufState token - | OBLOCKBEGIN, _ -> - returnToken tokenLexbufState token - - | ODUMMY _, _ -> + | ODUMMY _, _ -> if debug then dprintf "skipping dummy token as no offside rules apply\n" pool.Return tokenTup - hwTokenFetch useBlockRule - - // Ordinary tokens start a vanilla block - | _, CtxtSeqBlock _ :: _ -> + hwTokenFetch useBlockRule + + // Ordinary tokens start a vanilla block + | _, CtxtSeqBlock _ :: _ -> pushCtxt tokenTup (CtxtVanilla(tokenStartPos, isLongIdentEquals token)) if debug then dprintf "pushing CtxtVanilla at tokenStartPos = %a\n" outputPos tokenStartPos - returnToken tokenLexbufState token - - | _ -> - returnToken tokenLexbufState token + returnToken tokenLexbufState token + + | _ -> + returnToken tokenLexbufState token - and insertHighPrecedenceApp (tokenTup: TokenTup) = + and insertHighPrecedenceApp (tokenTup: TokenTup) = let dotTokenTup = peekNextTokenTup() if debug then dprintf "inserting HIGH_PRECEDENCE_PAREN_APP at dotTokenPos = %a\n" outputPos (startPosOfTokenTup dotTokenTup) - let hpa = + let hpa = if nextTokenIsAdjacentLParen tokenTup then HIGH_PRECEDENCE_PAREN_APP elif nextTokenIsAdjacentLBrack tokenTup then @@ -2408,8 +2489,8 @@ type LexFilterImpl ( delayToken tokenTup true - and rulesForBothSoftWhiteAndHardWhite(tokenTup: TokenTup) = - match tokenTup.Token with + and rulesForBothSoftWhiteAndHardWhite(tokenTup: TokenTup) = + match tokenTup.Token with | HASH_IDENT ident -> let hashPos = LexbufState(tokenTup.StartPos, tokenTup.StartPos.ShiftColumnBy(1), false) let identPos = LexbufState(tokenTup.StartPos.ShiftColumnBy(1), tokenTup.EndPos, false) @@ -2417,20 +2498,20 @@ type LexFilterImpl ( delayToken(TokenTup(HASH, hashPos, tokenTup.LastTokenPos)) true - // Insert HIGH_PRECEDENCE_BRACK_APP if needed + // Insert HIGH_PRECEDENCE_BRACK_APP if needed // ident[3] | IDENT _ when nextTokenIsAdjacentLBrack tokenTup -> insertHighPrecedenceApp tokenTup - // Insert HIGH_PRECEDENCE_PAREN_APP if needed + // Insert HIGH_PRECEDENCE_PAREN_APP if needed // ident(3) | IDENT _ when nextTokenIsAdjacentLParen tokenTup -> insertHighPrecedenceApp tokenTup - // Insert HIGH_PRECEDENCE_TYAPP if needed + // Insert HIGH_PRECEDENCE_TYAPP if needed | DELEGATE | IDENT _ | IEEE64 _ | IEEE32 _ | DECIMAL _ | INT8 _ | INT16 _ | INT32 _ | INT64 _ | NATIVEINT _ | UINT8 _ | UINT16 _ | UINT32 _ | UINT64 _ | UNATIVEINT _ | BIGNUM _ when peekAdjacentTypars false tokenTup -> let lessTokenTup = popNextTokenTup() - delayToken (pool.UseLocation(lessTokenTup, match lessTokenTup.Token with LESS _ -> LESS true | _ -> failwith "unreachable")) + delayToken (pool.UseLocation(lessTokenTup, match lessTokenTup.Token with LESS _ -> LESS true | _ -> failwith "unreachable")) if debug then dprintf "softwhite inserting HIGH_PRECEDENCE_TYAPP at dotTokenPos = %a\n" outputPos (startPosOfTokenTup lessTokenTup) @@ -2441,21 +2522,21 @@ type LexFilterImpl ( // ..^1 will get parsed as DOT_DOT_HAT 1 while 1..^2 will get parsed as 1 DOT_DOT HAT 2 // because of processing rule underneath this. - | DOT_DOT_HAT -> + | DOT_DOT_HAT -> let hatPos = LexbufState(tokenTup.EndPos.ShiftColumnBy(-1), tokenTup.EndPos, false) delayToken(let rented = pool.Rent() in rented.Token <- INFIX_AT_HAT_OP("^"); rented.LexbufState <- hatPos; rented.LastTokenPos <- tokenTup.LastTokenPos; rented) delayToken(pool.UseShiftedLocation(tokenTup, DOT_DOT, 0, -1)) pool.Return tokenTup true - // Split this token to allow "1..2" for range specification + // Split this token to allow "1..2" for range specification | INT32_DOT_DOT (i, v) -> let dotDotPos = LexbufState(tokenTup.EndPos.ShiftColumnBy(-2), tokenTup.EndPos, false) delayToken(let rented = pool.Rent() in rented.Token <- DOT_DOT; rented.LexbufState <- dotDotPos; rented.LastTokenPos <- tokenTup.LastTokenPos; rented) delayToken(pool.UseShiftedLocation(tokenTup, INT32(i, v), 0, -2)) pool.Return tokenTup true - // Split @>. and @@>. into two + // Split @>. and @@>. into two | RQUOTE_DOT (s, raw) -> let dotPos = LexbufState(tokenTup.EndPos.ShiftColumnBy(-1), tokenTup.EndPos, false) delayToken(let rented = pool.Rent() in rented.Token <- DOT; rented.LexbufState <- dotPos; rented.LastTokenPos <- tokenTup.LastTokenPos; rented) @@ -2464,26 +2545,26 @@ type LexFilterImpl ( true | MINUS | PLUS_MINUS_OP _ | PERCENT_OP _ | AMP | AMP_AMP - when ((match tokenTup.Token with - | PLUS_MINUS_OP s -> (s = "+") || (s = "+.") || (s = "-.") - | PERCENT_OP s -> (s = "%") || (s = "%%") + when ((match tokenTup.Token with + | PLUS_MINUS_OP s -> (s = "+") || (s = "+.") || (s = "-.") + | PERCENT_OP s -> (s = "%") || (s = "%%") | _ -> true) && - nextTokenIsAdjacent tokenTup && + nextTokenIsAdjacent tokenTup && not (prevWasAtomicEnd && (tokenTup.LastTokenPos = startPosOfTokenTup tokenTup))) -> - let plus = - match tokenTup.Token with - | PLUS_MINUS_OP s -> (s = "+") + let plus = + match tokenTup.Token with + | PLUS_MINUS_OP s -> (s = "+") | _ -> false - let plusOrMinus = - match tokenTup.Token with - | PLUS_MINUS_OP s -> (s = "+") - | MINUS -> true + let plusOrMinus = + match tokenTup.Token with + | PLUS_MINUS_OP s -> (s = "+") + | MINUS -> true | _ -> false let nextTokenTup = popNextTokenTup() /// Merge the location of the prefix token and the literal - let delayMergedToken tok = + let delayMergedToken tok = let rented = pool.Rent() rented.Token <- tok rented.LexbufState <- LexbufState(tokenTup.LexbufState.StartPos, nextTokenTup.LexbufState.EndPos, nextTokenTup.LexbufState.PastEOF) @@ -2492,22 +2573,22 @@ type LexFilterImpl ( pool.Return nextTokenTup pool.Return tokenTup - let noMerge() = - let tokenName = - match tokenTup.Token with + let noMerge() = + let tokenName = + match tokenTup.Token with | PLUS_MINUS_OP s | PERCENT_OP s -> s | AMP -> "&" | AMP_AMP -> "&&" - | MINUS -> "-" - | _ -> failwith "unreachable" + | MINUS -> "-" + | _ -> failwith "unreachable" let token = ADJACENT_PREFIX_OP tokenName - delayToken nextTokenTup + delayToken nextTokenTup delayToken (pool.UseLocation(tokenTup, token)) pool.Return tokenTup - if plusOrMinus then - match nextTokenTup.Token with + if plusOrMinus then + match nextTokenTup.Token with | INT8(v, bad) -> delayMergedToken(INT8((if plus then v else -v), (plus && bad))) // note: '-' makes a 'bad' max int 'good'. '+' does not | INT16(v, bad) -> delayMergedToken(INT16((if plus then v else -v), (plus && bad))) // note: '-' makes a 'bad' max int 'good'. '+' does not | INT32(v, bad) -> delayMergedToken(INT32((if plus then v else -v), (plus && bad))) // note: '-' makes a 'bad' max int 'good'. '+' does not @@ -2523,20 +2604,37 @@ type LexFilterImpl ( noMerge() true - | _ -> + | _ -> false - - and pushCtxtSeqBlock(addBlockBegin, addBlockEnd) = pushCtxtSeqBlockAt (peekNextTokenTup(), addBlockBegin, addBlockEnd) - and pushCtxtSeqBlockAt(p: TokenTup, addBlockBegin, addBlockEnd) = - if addBlockBegin then - if debug then dprintf "--> insert OBLOCKBEGIN \n" - delayToken(pool.UseLocation(p, OBLOCKBEGIN)) - pushCtxt p (CtxtSeqBlock(FirstInSeqBlock, startPosOfTokenTup p, addBlockEnd)) - - let rec swTokenFetch() = + + and pushCtxtSeqBlock fallbackToken addBlockEnd = + pushCtxtSeqBlockAt strictIndentation true fallbackToken (peekNextTokenTup ()) addBlockEnd + + and tryPushCtxtSeqBlock fallbackToken addBlockEnd = + pushCtxtSeqBlockAt strictIndentation false fallbackToken (peekNextTokenTup ()) addBlockEnd + + and pushCtxtSeqBlockAt strict (useFallback: bool) (fallbackToken: TokenTup) (tokenTup: TokenTup) addBlockEnd = + let pushed = tryPushCtxt strict false tokenTup (CtxtSeqBlock(FirstInSeqBlock, startPosOfTokenTup tokenTup, addBlockEnd)) + if not pushed && useFallback then + // The upcoming token isn't sufficiently indented to start the new context. + // The parser expects proper contexts structure, so we push a new recovery context at the fallback token position. + pushCtxt fallbackToken (CtxtSeqBlock(NotFirstInSeqBlock, startPosOfTokenTup fallbackToken, addBlockEnd)) + + if pushed || useFallback then + let addBlockBegin = + match addBlockEnd with + | AddBlockEnd -> true + | _ -> false + + if addBlockBegin then + if debug then dprintf "--> insert OBLOCKBEGIN \n" + let ctxtToken = if pushed then tokenTup else fallbackToken + delayToken(pool.UseLocation(ctxtToken, OBLOCKBEGIN)) + + let rec swTokenFetch() = let tokenTup = popNextTokenTup() let tokenReplaced = rulesForBothSoftWhiteAndHardWhite tokenTup - if tokenReplaced then swTokenFetch() + if tokenReplaced then swTokenFetch() else let lexbufState = tokenTup.LexbufState let tok = tokenTup.Token @@ -2544,33 +2642,34 @@ type LexFilterImpl ( returnToken lexbufState tok //---------------------------------------------------------------------------- - // Part VI. Publish the new lexer function. + // Part VI. Publish the new lexer function. //-------------------------------------------------------------------------- member _.LexBuffer = lexbuf - member _.GetToken() = - if not initialized then + member _.GetToken() = + if not initialized then let _firstTokenTup = peekInitial() () if indentationSyntaxStatus.Status - then hwTokenFetch true + then hwTokenFetch true else swTokenFetch() - + // LexFilterImpl does the majority of the work for offsides rules and other magic. // LexFilter just wraps it with light post-processing that introduces a few more 'coming soon' symbols, to // make it easier for the parser to 'look ahead' and safely shift tokens in a number of recovery scenarios. -type LexFilter (indentationSyntaxStatus: IndentationAwareSyntaxStatus, compilingFSharpCore, lexer, lexbuf: UnicodeLexing.Lexbuf) = - let inner = LexFilterImpl(indentationSyntaxStatus, compilingFSharpCore, lexer, lexbuf) +type LexFilter (indentationSyntaxStatus: IndentationAwareSyntaxStatus, compilingFSharpCore, lexer, lexbuf: Lexbuf, debug) = + let debug = debug || forceDebug + let inner = LexFilterImpl(indentationSyntaxStatus, compilingFSharpCore, lexer, lexbuf, debug) // We don't interact with lexbuf state at all, any inserted tokens have same state/location as the real one read, so // we don't have to do any of the wrapped lexbuf magic that you see in LexFilterImpl. let delayedStack = Stack() - let delayToken tok = delayedStack.Push tok + let delayToken tok = delayedStack.Push tok - let popNextToken() = - if delayedStack.Count > 0 then + let popNextToken() = + if delayedStack.Count > 0 then let tokenTup = delayedStack.Pop() tokenTup else @@ -2582,18 +2681,18 @@ type LexFilter (indentationSyntaxStatus: IndentationAwareSyntaxStatus, compiling for i in 1..6 do delayToken comingSoon - member _.LexBuffer = inner.LexBuffer + member _.LexBuffer = inner.LexBuffer - member lexer.GetToken () = + member lexer.GetToken () = let token = popNextToken() match token with - | RBRACE _ -> + | RBRACE _ -> insertComingSoonTokens RBRACE_COMING_SOON RBRACE_IS_HERE lexer.GetToken() - | RPAREN -> + | RPAREN -> insertComingSoonTokens RPAREN_COMING_SOON RPAREN_IS_HERE lexer.GetToken() - | OBLOCKEND -> + | OBLOCKEND _ -> insertComingSoonTokens OBLOCKEND_COMING_SOON OBLOCKEND_IS_HERE lexer.GetToken() | _ -> token diff --git a/src/fcs-fable/src/Compiler/SyntaxTree/LexFilter.fsi b/src/fcs-fable/src/Compiler/SyntaxTree/LexFilter.fsi index ff84f6a268..769fe4fcf0 100644 --- a/src/fcs-fable/src/Compiler/SyntaxTree/LexFilter.fsi +++ b/src/fcs-fable/src/Compiler/SyntaxTree/LexFilter.fsi @@ -21,7 +21,8 @@ type LexFilter = indentationSyntaxStatus: IndentationAwareSyntaxStatus * compilingFSharpCore: bool * lexer: (LexBuffer -> token) * - lexbuf: LexBuffer -> + lexbuf: LexBuffer * + debug: bool -> LexFilter /// The LexBuffer associated with the filter diff --git a/src/fcs-fable/src/Compiler/SyntaxTree/LexHelpers.fs b/src/fcs-fable/src/Compiler/SyntaxTree/LexHelpers.fs index 2178544d4a..c756f1e806 100644 --- a/src/fcs-fable/src/Compiler/SyntaxTree/LexHelpers.fs +++ b/src/fcs-fable/src/Compiler/SyntaxTree/LexHelpers.fs @@ -65,6 +65,7 @@ type LexArgs = mutable ifdefStack: LexerIfdefStack mutable indentationSyntaxStatus: IndentationAwareSyntaxStatus mutable stringNest: LexerInterpolatedStringNesting + mutable interpolationDelimiterLength: int } /// possible results of lexing a long Unicode escape sequence in a string literal, e.g. "\U0001F47D", @@ -93,6 +94,7 @@ let mkLexargs applyLineDirectives = applyLineDirectives stringNest = [] pathMap = pathMap + interpolationDelimiterLength = 0 } /// Register the lexbuf and call the given function @@ -103,7 +105,9 @@ let reusingLexbufForParsing lexbuf f = try f () - with e -> + with + | :? OperationCanceledException -> reraise () + | e -> raise ( WrappedError( e, @@ -217,6 +221,10 @@ type LexerStringFinisher = STRING(stringBufferAsString buf, synStringKind, cont)) +type LexerStringArgs = ByteBuffer * LexerStringFinisher * range * LexerStringKind * LexArgs +type SingleLineCommentArgs = (range * StringBuilder) option * int * range * range * LexArgs +type BlockCommentArgs = int * range * LexArgs + let addUnicodeString (buf: ByteBuffer) (x: string) = buf.EmitBytes(Encoding.Unicode.GetBytes x) @@ -406,7 +414,7 @@ module Keywords = (*------- for prototyping and explaining offside rule *) FSHARP, "__token_OBLOCKSEP", OBLOCKSEP FSHARP, "__token_OWITH", OWITH - FSHARP, "__token_ODECLEND", ODECLEND + FSHARP, "__token_ODECLEND", ODECLEND range0 FSHARP, "__token_OTHEN", OTHEN FSHARP, "__token_OELSE", OELSE FSHARP, "__token_OEND", OEND @@ -500,3 +508,7 @@ module Keywords = | "__SOURCE_FILE__" -> KEYWORD_STRING(s, System.IO.Path.GetFileName(FileIndex.fileOfFileIndex lexbuf.StartPos.FileIndex)) | "__LINE__" -> KEYWORD_STRING(s, string lexbuf.StartPos.Line) | _ -> IdentifierToken args lexbuf s + +/// Arbitrary value +[] +let StringCapacity = 100 diff --git a/src/fcs-fable/src/Compiler/SyntaxTree/LexHelpers.fsi b/src/fcs-fable/src/Compiler/SyntaxTree/LexHelpers.fsi index 49f73abbab..616bfa8a6f 100644 --- a/src/fcs-fable/src/Compiler/SyntaxTree/LexHelpers.fsi +++ b/src/fcs-fable/src/Compiler/SyntaxTree/LexHelpers.fsi @@ -2,6 +2,7 @@ module internal FSharp.Compiler.Lexhelp +open System.Text open FSharp.Compiler.IO open Internal.Utilities open Internal.Utilities.Text @@ -37,7 +38,8 @@ type LexArgs = pathMap: PathMap mutable ifdefStack: LexerIfdefStack mutable indentationSyntaxStatus: IndentationAwareSyntaxStatus - mutable stringNest: LexerInterpolatedStringNesting } + mutable stringNest: LexerInterpolatedStringNesting + mutable interpolationDelimiterLength: int } type LongUnicodeLexResult = | SurrogatePair of uint16 * uint16 @@ -77,6 +79,14 @@ type LexerStringFinisher = static member Default: LexerStringFinisher +/// Used in lex.fsl to represent the state of a string literal +type LexerStringArgs = ByteBuffer * LexerStringFinisher * range * LexerStringKind * LexArgs + +/// Used in lex.fsl to represent the state of a single line comment +type SingleLineCommentArgs = (range * StringBuilder) option * int * range * range * LexArgs +/// Used in lex.fsl to represent the state of a block comment +type BlockCommentArgs = int * range * LexArgs + val addUnicodeString: ByteBuffer -> string -> unit val addUnicodeChar: ByteBuffer -> int -> unit @@ -116,3 +126,7 @@ module Keywords = val IdentifierToken: LexArgs -> Lexbuf -> string -> token val keywordNames: string list + +/// Arbitrary value +[] +val StringCapacity: int = 100 diff --git a/src/fcs-fable/src/Compiler/SyntaxTree/ParseHelpers.fs b/src/fcs-fable/src/Compiler/SyntaxTree/ParseHelpers.fs index 3b7db6ac36..ac582666b6 100644 --- a/src/fcs-fable/src/Compiler/SyntaxTree/ParseHelpers.fs +++ b/src/fcs-fable/src/Compiler/SyntaxTree/ParseHelpers.fs @@ -268,6 +268,7 @@ type LexerStringStyle = | Verbatim | TripleQuote | SingleQuote + | ExtendedInterpolated [] type LexerStringKind = @@ -307,7 +308,7 @@ type LexerStringKind = /// Represents the degree of nesting of '{..}' and the style of the string to continue afterwards, in an interpolation fill. /// Nesting counters and styles of outer interpolating strings are pushed on this stack. -type LexerInterpolatedStringNesting = (int * LexerStringStyle * range) list +type LexerInterpolatedStringNesting = (int * LexerStringStyle * int * range) list /// The parser defines a number of tokens for whitespace and /// comments eliminated by the lexer. These carry a specification of @@ -323,6 +324,7 @@ type LexerContinuation = nesting: LexerInterpolatedStringNesting * style: LexerStringStyle * kind: LexerStringKind * + delimLen: int * range: range | Comment of ifdef: LexerIfdefStackEntries * nesting: LexerInterpolatedStringNesting * int * range: range | SingleLineComment of ifdef: LexerIfdefStackEntries * nesting: LexerInterpolatedStringNesting * int * range: range @@ -365,7 +367,7 @@ and LexCont = LexerContinuation // Parse IL assembly code //------------------------------------------------------------------------ -let ParseAssemblyCodeInstructions (s: string) (reportLibraryOnlyFeatures: bool) (langVersion: LanguageVersion) m : IL.ILInstr[] = +let ParseAssemblyCodeInstructions (s: string) (reportLibraryOnlyFeatures: bool) (langVersion: LanguageVersion) (strictIndentation: bool option) m : IL.ILInstr[] = #if NO_INLINE_IL_PARSER ignore s ignore reportLibraryOnlyFeatures @@ -375,13 +377,13 @@ let ParseAssemblyCodeInstructions (s: string) (reportLibraryOnlyFeatures: bool) [||] #else try - AsciiParser.ilInstrs AsciiLexer.token (StringAsLexbuf(reportLibraryOnlyFeatures, langVersion, s)) + AsciiParser.ilInstrs AsciiLexer.token (StringAsLexbuf(reportLibraryOnlyFeatures, langVersion, strictIndentation, s)) with _ -> errorR (Error(FSComp.SR.astParseEmbeddedILError (), m)) [||] #endif -let ParseAssemblyCodeType (s: string) (reportLibraryOnlyFeatures: bool) (langVersion: LanguageVersion) m = +let ParseAssemblyCodeType (s: string) (reportLibraryOnlyFeatures: bool) (langVersion: LanguageVersion) (strictIndentation: bool option) m = ignore s #if NO_INLINE_IL_PARSER @@ -393,7 +395,7 @@ let ParseAssemblyCodeType (s: string) (reportLibraryOnlyFeatures: bool) (langVer IL.PrimaryAssemblyILGlobals.typ_Object #else try - AsciiParser.ilType AsciiLexer.token (StringAsLexbuf(reportLibraryOnlyFeatures, langVersion, s)) + AsciiParser.ilType AsciiLexer.token (StringAsLexbuf(reportLibraryOnlyFeatures, langVersion, strictIndentation, s)) with RecoverableParseError -> errorR (Error(FSComp.SR.astParseEmbeddedILTypeError (), m)) IL.PrimaryAssemblyILGlobals.typ_Object @@ -569,7 +571,7 @@ let mkSynMemberDefnGetSet (mBindLhs, attrs) ||> unionRangeWithListBy (fun (a: SynAttributeList) -> a.Range) - let (SynValData (_, valSynInfo, _)) = valSynData + let (SynValData (valInfo = valSynInfo)) = valSynData // Setters have all arguments tupled in their internal TAST form, though they don't appear to be // tupled from the syntax @@ -619,7 +621,7 @@ let mkSynMemberDefnGetSet // should be unreachable, cover just in case raiseParseErrorAt mWholeBindLhs (FSComp.SR.parsInvalidProperty ()) - let valSynData = SynValData(Some(memFlags), valSynInfo, None) + let valSynData = SynValData(Some(memFlags), valSynInfo, None, None) // Fold together the information from the first lambda pattern and the get/set binding // This uses the 'this' variable from the first and the patterns for the get/set binding, @@ -677,11 +679,13 @@ let mkSynMemberDefnGetSet let args = if id.idText = "set" then match args with - | [ SynPat.Paren (SynPat.Tuple (false, indexPats, _), indexPatRange); valuePat ] when id.idText = "set" -> + | [ SynPat.Paren (SynPat.Tuple (false, indexPats, commas, _), indexPatRange); valuePat ] when + id.idText = "set" + -> [ - SynPat.Tuple(false, indexPats @ [ valuePat ], unionRanges indexPatRange valuePat.Range) + SynPat.Tuple(false, indexPats @ [ valuePat ], commas, unionRanges indexPatRange valuePat.Range) ] - | [ indexPat; valuePat ] -> [ SynPat.Tuple(false, args, unionRanges indexPat.Range valuePat.Range) ] + | [ indexPat; valuePat ] -> [ SynPat.Tuple(false, args, [], unionRanges indexPat.Range valuePat.Range) ] | [ valuePat ] -> [ valuePat ] | _ -> raiseParseErrorAt m (FSComp.SR.parsSetSyntax ()) else @@ -921,7 +925,7 @@ let mkSynExprDecl (e: SynExpr) = SynModuleDecl.Expr(e, e.Range) let addAttribs attrs p = SynPat.Attrib(p, attrs, p.Range) let unionRangeWithPos (r: range) p = - let r2 = mkRange r.FileName p p + let r2 = withStartEnd p p r unionRanges r r2 /// Report a good error at the end of file, e.g. for non-terminated strings @@ -929,19 +933,20 @@ let checkEndOfFileError t = match t with | LexCont.IfDefSkip (_, _, _, m) -> reportParseErrorAt m (FSComp.SR.parsEofInHashIf ()) - | LexCont.String (_, _, LexerStringStyle.SingleQuote, kind, m) -> + | LexCont.String (_, _, LexerStringStyle.SingleQuote, kind, _, m) -> if kind.IsInterpolated then reportParseErrorAt m (FSComp.SR.parsEofInInterpolatedString ()) else reportParseErrorAt m (FSComp.SR.parsEofInString ()) - | LexCont.String (_, _, LexerStringStyle.TripleQuote, kind, m) -> + | LexCont.String (_, _, LexerStringStyle.ExtendedInterpolated, kind, _, m) + | LexCont.String (_, _, LexerStringStyle.TripleQuote, kind, _, m) -> if kind.IsInterpolated then reportParseErrorAt m (FSComp.SR.parsEofInInterpolatedTripleQuoteString ()) else reportParseErrorAt m (FSComp.SR.parsEofInTripleQuoteString ()) - | LexCont.String (_, _, LexerStringStyle.Verbatim, kind, m) -> + | LexCont.String (_, _, LexerStringStyle.Verbatim, kind, _, m) -> if kind.IsInterpolated then reportParseErrorAt m (FSComp.SR.parsEofInInterpolatedVerbatimString ()) else @@ -956,6 +961,7 @@ let checkEndOfFileError t = | LexCont.StringInComment (_, _, LexerStringStyle.Verbatim, _, m) -> reportParseErrorAt m (FSComp.SR.parsEofInVerbatimStringInComment ()) + | LexCont.StringInComment (_, _, LexerStringStyle.ExtendedInterpolated, _, m) | LexCont.StringInComment (_, _, LexerStringStyle.TripleQuote, _, m) -> reportParseErrorAt m (FSComp.SR.parsEofInTripleQuoteStringInComment ()) @@ -971,7 +977,7 @@ let checkEndOfFileError t = match nesting with | [] -> () - | (_, _, m) :: _ -> reportParseErrorAt m (FSComp.SR.parsEofInInterpolatedStringFill ()) + | (_, _, _, m) :: _ -> reportParseErrorAt m (FSComp.SR.parsEofInInterpolatedStringFill ()) type BindingSet = BindingSetPreAttrs of range * bool * bool * (SynAttributes -> SynAccess option -> SynAttributes * SynBinding list) * range @@ -1089,3 +1095,70 @@ let appendValToLeadingKeyword mVal leadingKeyword = | SynLeadingKeyword.Override mOverride -> SynLeadingKeyword.OverrideVal(mOverride, mVal) | SynLeadingKeyword.Default (mDefault) -> SynLeadingKeyword.DefaultVal(mDefault, mVal) | _ -> leadingKeyword + +let mkSynUnionCase attributes (access: SynAccess option) id kind mDecl (xmlDoc, mBar) = + match access with + | Some access -> errorR (Error(FSComp.SR.parsUnionCasesCannotHaveVisibilityDeclarations (), access.Range)) + | _ -> () + + let trivia: SynUnionCaseTrivia = { BarRange = Some mBar } + let mDecl = unionRangeWithXmlDoc xmlDoc mDecl + SynUnionCase(attributes, id, kind, xmlDoc, None, mDecl, trivia) + +let mkAutoPropDefn mVal access ident typ mEquals (expr: SynExpr) accessors xmlDoc attribs flags rangeStart = + let mWith, (getSet, getSetOpt) = accessors + + let memberRange = + match getSetOpt with + | None -> unionRanges rangeStart expr.Range |> unionRangeWithXmlDoc xmlDoc + | Some (getSet: GetSetKeywords) -> + unionRanges rangeStart expr.Range + |> unionRangeWithXmlDoc xmlDoc + |> unionRanges getSet.Range + + let flags, leadingKeyword = flags + let leadingKeyword = appendValToLeadingKeyword mVal leadingKeyword + let memberFlags: SynMemberFlags = flags SynMemberKind.Member + let memberFlagsForSet = flags SynMemberKind.PropertySet + let isStatic = not memberFlags.IsInstance + + let trivia = + { + LeadingKeyword = leadingKeyword + WithKeyword = mWith + EqualsRange = mEquals + GetSetKeywords = getSetOpt + } + + SynMemberDefn.AutoProperty( + attribs, + isStatic, + ident, + typ, + getSet, + memberFlags, + memberFlagsForSet, + xmlDoc, + access, + expr, + memberRange, + trivia + ) + +let mkValField mVal mRhs mut access ident (typ: SynType) xmlDoc rangeStart attribs mStaticOpt = + let isStatic = Option.isSome mStaticOpt + let mValDecl = unionRanges rangeStart typ.Range |> unionRangeWithXmlDoc xmlDoc + + let leadingKeyword = + match mStaticOpt with + | None -> SynLeadingKeyword.Val mVal + | Some mStatic -> SynLeadingKeyword.StaticVal(mStatic, mVal) + + let fld = + SynField(attribs, isStatic, Some ident, typ, mut, xmlDoc, access, mRhs, { LeadingKeyword = Some leadingKeyword }) + + SynMemberDefn.ValField(fld, mValDecl) + +let mkSynField parseState idOpt t isMutable vis attributes isStatic mWhole leadingKeyword = + let xmlDoc = grabXmlDocAtRangeStart (parseState, attributes, mWhole) + SynField(attributes, isStatic, idOpt, t, isMutable, xmlDoc, vis, mWhole, { LeadingKeyword = leadingKeyword }) diff --git a/src/fcs-fable/src/Compiler/SyntaxTree/ParseHelpers.fsi b/src/fcs-fable/src/Compiler/SyntaxTree/ParseHelpers.fsi index 46ae73f1ab..ebde1ae5e8 100644 --- a/src/fcs-fable/src/Compiler/SyntaxTree/ParseHelpers.fsi +++ b/src/fcs-fable/src/Compiler/SyntaxTree/ParseHelpers.fsi @@ -102,6 +102,7 @@ type LexerStringStyle = | Verbatim | TripleQuote | SingleQuote + | ExtendedInterpolated [] type LexerStringKind = @@ -117,7 +118,7 @@ type LexerStringKind = static member String: LexerStringKind -type LexerInterpolatedStringNesting = (int * LexerStringStyle * range) list +type LexerInterpolatedStringNesting = (int * LexerStringStyle * int * range) list [] type LexerContinuation = @@ -128,6 +129,7 @@ type LexerContinuation = nesting: LexerInterpolatedStringNesting * style: LexerStringStyle * kind: LexerStringKind * + delimLen: int * range: range | Comment of ifdef: LexerIfdefStackEntries * nesting: LexerInterpolatedStringNesting * int * range: range | SingleLineComment of ifdef: LexerIfdefStackEntries * nesting: LexerInterpolatedStringNesting * int * range: range @@ -149,14 +151,24 @@ type LexerContinuation = and LexCont = LexerContinuation val ParseAssemblyCodeInstructions: - s: string -> reportLibraryOnlyFeatures: bool -> langVersion: LanguageVersion -> m: range -> ILInstr[] + s: string -> + reportLibraryOnlyFeatures: bool -> + langVersion: LanguageVersion -> + strictIndentation: bool option -> + m: range -> + ILInstr[] val grabXmlDocAtRangeStart: parseState: IParseState * optAttributes: SynAttributeList list * range: range -> PreXmlDoc val grabXmlDoc: parseState: IParseState * optAttributes: SynAttributeList list * elemIdx: int -> PreXmlDoc val ParseAssemblyCodeType: - s: string -> reportLibraryOnlyFeatures: bool -> langVersion: LanguageVersion -> m: range -> ILType + s: string -> + reportLibraryOnlyFeatures: bool -> + langVersion: LanguageVersion -> + strictIndentation: bool option -> + m: range -> + ILType val reportParseErrorAt: range -> (int * string) -> unit @@ -236,3 +248,51 @@ val checkForMultipleAugmentations: m: range -> a1: 'a list -> a2: 'a list -> 'a val rangeOfLongIdent: lid: LongIdent -> range val appendValToLeadingKeyword: mVal: range -> leadingKeyword: SynLeadingKeyword -> SynLeadingKeyword + +val mkSynUnionCase: + attributes: SynAttributes -> + access: SynAccess option -> + id: SynIdent -> + kind: SynUnionCaseKind -> + mDecl: range -> + (PreXmlDoc * range) -> + SynUnionCase + +val mkAutoPropDefn: + mVal: range -> + access: SynAccess option -> + ident: Ident -> + typ: SynType option -> + mEquals: range option -> + expr: SynExpr -> + accessors: range option * (SynMemberKind * GetSetKeywords option) -> + xmlDoc: PreXmlDoc -> + attribs: SynAttributes -> + flags: (SynMemberKind -> SynMemberFlags) * SynLeadingKeyword -> + rangeStart: range -> + SynMemberDefn + +val mkValField: + mVal: range -> + mRhs: range -> + mut: bool -> + access: SynAccess option -> + ident: Ident -> + typ: SynType -> + xmlDoc: PreXmlDoc -> + range -> + SynAttributes -> + range option -> + SynMemberDefn + +val mkSynField: + parseState: IParseState -> + idOpt: Ident option -> + t: SynType -> + isMutable: bool -> + vis: SynAccess option -> + attributes: SynAttributeList list -> + isStatic: bool -> + mWhole: range -> + leadingKeyword: SynLeadingKeyword option -> + SynField diff --git a/src/fcs-fable/src/Compiler/SyntaxTree/PrettyNaming.fs b/src/fcs-fable/src/Compiler/SyntaxTree/PrettyNaming.fs index 7309f58cae..021af10afb 100755 --- a/src/fcs-fable/src/Compiler/SyntaxTree/PrettyNaming.fs +++ b/src/fcs-fable/src/Compiler/SyntaxTree/PrettyNaming.fs @@ -10,7 +10,6 @@ open System.Collections.Concurrent open System.Globalization open System.Text -open FSharp.Compiler.AbstractIL open Internal.Utilities.Library open FSharp.Compiler.Text open FSharp.Compiler.Text.Layout @@ -239,6 +238,7 @@ let keywordsWithDescription: (string * string) list = "void", FSComp.SR.keywordDescriptionVoid () "when", FSComp.SR.keywordDescriptionWhen () "while", FSComp.SR.keywordDescriptionWhile () + "while!", FSComp.SR.keywordDescriptionWhileBang () "with", FSComp.SR.keywordDescriptionWith () "yield", FSComp.SR.keywordDescriptionYield () "yield!", FSComp.SR.keywordDescriptionYieldBang () @@ -969,16 +969,13 @@ let ActivePatternInfoOfValName nm (m: range) = let n = nm.IndexOf '|' if n > 0 then - let m1 = - Range.mkRange mp.FileName mp.Start (Position.mkPos mp.StartLine (mp.StartColumn + n)) + let m1 = Range.withEnd (Position.mkPos mp.StartLine (mp.StartColumn + n)) mp - let m2 = - Range.mkRange mp.FileName (Position.mkPos mp.StartLine (mp.StartColumn + n + 1)) mp.End + let m2 = Range.withStart (Position.mkPos mp.StartLine (mp.StartColumn + n + 1)) mp (nm[0 .. n - 1], m1) :: loop nm[n + 1 ..] m2 else - let m1 = - Range.mkRange mp.FileName mp.Start (Position.mkPos mp.StartLine (mp.StartColumn + nm.Length)) + let m1 = Range.withEnd (Position.mkPos mp.StartLine (mp.StartColumn + nm.Length)) mp [ (nm, m1) ] @@ -987,7 +984,7 @@ let ActivePatternInfoOfValName nm (m: range) = if IsActivePatternName nm then // Skip the '|' at each end when recovering ranges let m0 = - Range.mkRange m.FileName (Position.mkPos m.StartLine (m.StartColumn + 1)) (Position.mkPos m.EndLine (m.EndColumn - 1)) + Range.withStartEnd (Position.mkPos m.StartLine (m.StartColumn + 1)) (Position.mkPos m.EndLine (m.EndColumn - 1)) m let names = loop nm[1 .. nm.Length - 2] m0 let resH, resT = List.frontAndBack names @@ -1097,6 +1094,7 @@ let GetLongNameFromString x = SplitNamesForILPath x // Uncompressed OptimizationData/SignatureData name for embedded resource let FSharpOptimizationDataResourceName = "FSharpOptimizationData." + let FSharpSignatureDataResourceName = "FSharpSignatureData." // Compressed OptimizationData/SignatureData name for embedded resource diff --git a/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTree.fs b/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTree.fs index c3dec3074f..bfe0ef550d 100644 --- a/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTree.fs +++ b/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTree.fs @@ -4,7 +4,6 @@ namespace rec FSharp.Compiler.Syntax open System open System.Diagnostics -open Internal.Utilities.Library open FSharp.Compiler.Syntax open FSharp.Compiler.Text open FSharp.Compiler.Text.Range @@ -159,7 +158,7 @@ type SynConst = | UInt16s of uint16[] - | Measure of constant: SynConst * constantRange: range * SynMeasure + | Measure of constant: SynConst * constantRange: range * synMeasure: SynMeasure * trivia: SynMeasureConstantTrivia | SourceIdentifier of constant: string * value: string * range: range @@ -175,15 +174,15 @@ type SynMeasure = | Named of longId: LongIdent * range: range - | Product of measure1: SynMeasure * measure2: SynMeasure * range: range + | Product of measure1: SynMeasure * mAsterisk: range * measure2: SynMeasure * range: range | Seq of measures: SynMeasure list * range: range - | Divide of measure1: SynMeasure * measure2: SynMeasure * range: range + | Divide of measure1: SynMeasure option * mSlash: range * measure2: SynMeasure * range: range - | Power of measure: SynMeasure * power: SynRationalConst * range: range + | Power of measure: SynMeasure * caretRange: range * power: SynRationalConst * range: range - | One + | One of range: range | Anon of range: range @@ -194,11 +193,13 @@ type SynMeasure = [] type SynRationalConst = - | Integer of value: int32 + | Integer of value: int32 * range: range - | Rational of numerator: int32 * denominator: int32 * range: range + | Rational of numerator: int32 * numeratorRange: range * divRange: range * denominator: int32 * denominatorRange: range * range: range - | Negate of SynRationalConst + | Negate of rationalConst: SynRationalConst * range: range + + | Paren of rationalConst: SynRationalConst * range: range [] type SynAccess = @@ -309,7 +310,8 @@ type SynBindingKind = | Do [] -type SynTyparDecl = SynTyparDecl of attributes: SynAttributes * SynTypar +type SynTyparDecl = + | SynTyparDecl of attributes: SynAttributes * typar: SynTypar * intersectionConstraints: SynType list * trivia: SynTyparDeclTrivia [] type SynTypeConstraint = @@ -367,13 +369,28 @@ type SynTyparDecls = member x.Constraints = match x with - | PostfixList (constraints = constraints) -> constraints + | PostfixList (decls = decls; constraints = constraints) -> + // Synthesize SynTypeConstraints implied with any intersection constraints in SynTyparDecl + // The parser makes sure we're only dealing with hash constraints here + let intersectionConstraints = + decls + |> List.collect (fun (SynTyparDecl (typar = tp; intersectionConstraints = tys)) -> + tys + |> List.map (fun ty -> + let ty = + match ty with + | SynType.HashConstraint (ty, _) -> ty + | _ -> ty + + SynTypeConstraint.WhereTyparSubtypeOfType(tp, ty, ty.Range))) + + List.append intersectionConstraints constraints | _ -> [] member x.Range = match x with | PostfixList (range = range) - | PrefixList (range = range) -> range + | PrefixList (range = range) | SinglePrefix (range = range) -> range [] @@ -443,6 +460,8 @@ type SynType = | FromParseError of range: range + | Intersection of typar: SynTypar option * types: SynType list * range: range * trivia: SynTyparDeclTrivia + member x.Range = match x with | SynType.App (range = m) @@ -462,6 +481,7 @@ type SynType = | SynType.Paren (range = m) | SynType.SignatureParameter (range = m) | SynType.Or (range = m) + | SynType.Intersection (range = m) | SynType.FromParseError (range = m) -> m | SynType.LongIdent lidwd -> lidwd.Range @@ -619,6 +639,8 @@ type SynExpr = | DotGet of expr: SynExpr * rangeOfDot: range * longDotId: SynLongIdent * range: range + | DotLambda of expr: SynExpr * range: range * trivia: SynExprDotLambdaTrivia + | DotSet of targetExpr: SynExpr * longDotId: SynLongIdent * rhsExpr: SynExpr * range: range | Set of targetExpr: SynExpr * rhsExpr: SynExpr * range: range @@ -683,6 +705,8 @@ type SynExpr = | DoBang of expr: SynExpr * range: range + | WhileBang of whileDebugPoint: DebugPointAtWhile * whileExpr: SynExpr * doExpr: SynExpr * range: range + | LibraryOnlyILAssembly of ilCode: obj * // this type is ILInstr[] but is hidden to avoid the representation of AbstractIL being public typeArgs: SynType list * @@ -756,6 +780,7 @@ type SynExpr = | SynExpr.DotIndexedGet (range = m) | SynExpr.DotIndexedSet (range = m) | SynExpr.DotGet (range = m) + | SynExpr.DotLambda (range = m) | SynExpr.DotSet (range = m) | SynExpr.Set (range = m) | SynExpr.DotNamedIndexedPropertySet (range = m) @@ -781,6 +806,7 @@ type SynExpr = | SynExpr.LetOrUseBang (range = m) | SynExpr.MatchBang (range = m) | SynExpr.DoBang (range = m) + | SynExpr.WhileBang (range = m) | SynExpr.Fixed (range = m) | SynExpr.InterpolatedString (range = m) | SynExpr.Dynamic (range = m) -> m @@ -801,9 +827,8 @@ type SynExpr = | SynExpr.SequentialOrImplicitYield (_, e1, _, _, _) | SynExpr.App (_, _, e1, _, _) -> e1.RangeOfFirstPortion | SynExpr.ForEach (pat = pat; range = r) -> - let start = r.Start let e = (pat.Range: range).Start - mkRange r.FileName start e + withEnd e r | _ -> e.Range member this.IsArbExprAndThusAlreadyReportedError = @@ -871,14 +896,11 @@ type SynStaticOptimizationConstraint = [] type SynSimplePats = - | SimplePats of pats: SynSimplePat list * range: range - - | Typed of pats: SynSimplePats * targetType: SynType * range: range + | SimplePats of pats: SynSimplePat list * commaRanges: range list * range: range member x.Range = match x with - | SynSimplePats.SimplePats (range = range) - | SynSimplePats.Typed (range = range) -> range + | SynSimplePats.SimplePats (range = range) -> range [] type SynArgPats = @@ -920,13 +942,13 @@ type SynPat = accessibility: SynAccess option * range: range - | Tuple of isStruct: bool * elementPats: SynPat list * range: range + | Tuple of isStruct: bool * elementPats: SynPat list * commaRanges: range list * range: range | Paren of pat: SynPat * range: range | ArrayOrList of isArray: bool * elementPats: SynPat list * range: range - | Record of fieldPats: ((LongIdent * Ident) * range * SynPat) list * range: range + | Record of fieldPats: ((LongIdent * Ident) * range option * SynPat) list * range: range | Null of range: range @@ -936,8 +958,6 @@ type SynPat = | QuoteExpr of expr: SynExpr * range: range - | DeprecatedCharRange of startChar: char * endChar: char * range: range - | InstanceMember of thisId: Ident * memberId: Ident * @@ -962,7 +982,6 @@ type SynPat = | SynPat.Typed (range = m) | SynPat.Attrib (range = m) | SynPat.Record (range = m) - | SynPat.DeprecatedCharRange (range = m) | SynPat.Null (range = m) | SynPat.IsInst (range = m) | SynPat.QuoteExpr (range = m) @@ -1027,9 +1046,13 @@ type SynAttributes = SynAttributeList list [] type SynValData = - | SynValData of memberFlags: SynMemberFlags option * valInfo: SynValInfo * thisIdOpt: Ident option + | SynValData of + memberFlags: SynMemberFlags option * + valInfo: SynValInfo * + thisIdOpt: Ident option * + transformedFromProperty: Ident option - member x.SynValInfo = (let (SynValData (_flags, synValInfo, _)) = x in synValInfo) + member x.SynValInfo = (let (SynValData (valInfo = synValInfo)) = x in synValInfo) [] type SynBinding = @@ -1334,7 +1357,12 @@ type SynArgInfo = type SynValTyparDecls = SynValTyparDecls of typars: SynTyparDecls option * canInfer: bool [] -type SynReturnInfo = SynReturnInfo of returnType: (SynType * SynArgInfo) * range: range +type SynReturnInfo = + | SynReturnInfo of returnType: (SynType * SynArgInfo) * range: range + + member this.Range = + match this with + | SynReturnInfo (range = m) -> m [] type SynExceptionDefnRepr = diff --git a/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTree.fsi b/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTree.fsi index 575e13b8df..d2eed167c4 100644 --- a/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTree.fsi +++ b/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTree.fsi @@ -170,7 +170,7 @@ type SynConst = | UInt16s of uint16[] /// Old comment: "we never iterate, so the const here is not another SynConst.Measure" - | Measure of constant: SynConst * constantRange: range * SynMeasure + | Measure of constant: SynConst * constantRange: range * synMeasure: SynMeasure * trivia: SynMeasureConstantTrivia /// Source Line, File, and Path Identifiers /// Containing both the original value as the evaluated value. @@ -187,19 +187,19 @@ type SynMeasure = | Named of longId: LongIdent * range: range /// A product of two units of measure, e.g. 'kg * m' - | Product of measure1: SynMeasure * measure2: SynMeasure * range: range + | Product of measure1: SynMeasure * mAsterisk: range * measure2: SynMeasure * range: range /// A sequence of several units of measure, e.g. 'kg m m' | Seq of measures: SynMeasure list * range: range /// A division of two units of measure, e.g. 'kg / m' - | Divide of measure1: SynMeasure * measure2: SynMeasure * range: range + | Divide of measure1: SynMeasure option * mSlash: range * measure2: SynMeasure * range: range /// A power of a unit of measure, e.g. 'kg ^ 2' - | Power of measure: SynMeasure * power: SynRationalConst * range: range + | Power of measure: SynMeasure * caretRange: range * power: SynRationalConst * range: range /// The '1' unit of measure - | One + | One of range: range /// An anonymous (inferred) unit of measure | Anon of range: range @@ -214,11 +214,19 @@ type SynMeasure = [] type SynRationalConst = - | Integer of value: int32 + | Integer of value: int32 * range: range - | Rational of numerator: int32 * denominator: int32 * range: range + | Rational of + numerator: int32 * + numeratorRange: range * + divRange: range * + denominator: int32 * + denominatorRange: range * + range: range + + | Negate of rationalConst: SynRationalConst * range: range - | Negate of SynRationalConst + | Paren of rationalConst: SynRationalConst * range: range /// Represents an accessibility modifier in F# syntax [] @@ -374,7 +382,12 @@ type SynBindingKind = /// Represents the explicit declaration of a type parameter [] -type SynTyparDecl = SynTyparDecl of attributes: SynAttributes * SynTypar +type SynTyparDecl = + | SynTyparDecl of + attributes: SynAttributes * + typar: SynTypar * + intersectionConstraints: SynType list * + trivia: SynTyparDeclTrivia /// The unchecked abstract syntax tree of F# type constraints [] @@ -521,6 +534,11 @@ type SynType = /// A type arising from a parse error | FromParseError of range: range + /// F# syntax: x: #I1 & #I2 + /// F# syntax: x: 't & #I1 & #I2 + /// Shorthand for x: 't when 't :> I1 and 't :> I2 + | Intersection of typar: SynTypar option * types: SynType list * range: range * trivia: SynTyparDeclTrivia + /// Gets the syntax range of this construct member Range: range @@ -770,6 +788,9 @@ type SynExpr = /// F# syntax: expr.ident.ident | DotGet of expr: SynExpr * rangeOfDot: range * longDotId: SynLongIdent * range: range + /// F# syntax: _.ident.ident + | DotLambda of expr: SynExpr * range: range * trivia: SynExprDotLambdaTrivia + /// F# syntax: expr.ident...ident <- expr | DotSet of targetExpr: SynExpr * longDotId: SynLongIdent * rhsExpr: SynExpr * range: range @@ -875,6 +896,9 @@ type SynExpr = /// Computation expressions only | DoBang of expr: SynExpr * range: range + /// F# syntax: 'while! ... do ...' + | WhileBang of whileDebugPoint: DebugPointAtWhile * whileExpr: SynExpr * doExpr: SynExpr * range: range + /// Only used in FSharp.Core | LibraryOnlyILAssembly of ilCode: obj * // this type is ILInstr[] but is hidden to avoid the representation of AbstractIL being public @@ -1017,9 +1041,7 @@ type SynStaticOptimizationConstraint = /// "fun v -> match v with ..." [] type SynSimplePats = - | SimplePats of pats: SynSimplePat list * range: range - - | Typed of pats: SynSimplePats * targetType: SynType * range: range + | SimplePats of pats: SynSimplePat list * commaRanges: range list * range: range member Range: range @@ -1073,7 +1095,7 @@ type SynPat = range: range /// A tuple pattern - | Tuple of isStruct: bool * elementPats: SynPat list * range: range + | Tuple of isStruct: bool * elementPats: SynPat list * commaRanges: range list * range: range /// A parenthesized pattern | Paren of pat: SynPat * range: range @@ -1082,7 +1104,7 @@ type SynPat = | ArrayOrList of isArray: bool * elementPats: SynPat list * range: range /// A record pattern - | Record of fieldPats: ((LongIdent * Ident) * range * SynPat) list * range: range + | Record of fieldPats: ((LongIdent * Ident) * range option * SynPat) list * range: range /// The 'null' pattern | Null of range: range @@ -1096,9 +1118,6 @@ type SynPat = /// <@ expr @>, used for active pattern arguments | QuoteExpr of expr: SynExpr * range: range - /// Deprecated character range: ranges - | DeprecatedCharRange of startChar: char * endChar: char * range: range - /// Used internally in the type checker | InstanceMember of thisId: Ident * @@ -1176,7 +1195,13 @@ type SynAttributes = SynAttributeList list /// Represents extra information about the declaration of a value [] type SynValData = - | SynValData of memberFlags: SynMemberFlags option * valInfo: SynValInfo * thisIdOpt: Ident option + | SynValData of + memberFlags: SynMemberFlags option * + valInfo: SynValInfo * + thisIdOpt: Ident option * + /// Is only populated during type-checking when an property has both a getter and setter. + /// It is used to track the fact that the getter and setter are part of the same property when they are desugared. + transformedFromProperty: Ident option member SynValInfo: SynValInfo @@ -1505,7 +1530,10 @@ type SynValTyparDecls = SynValTyparDecls of typars: SynTyparDecls option * canIn /// Represents the syntactic elements associated with the "return" of a function or method. [] -type SynReturnInfo = SynReturnInfo of returnType: (SynType * SynArgInfo) * range: range +type SynReturnInfo = + | SynReturnInfo of returnType: (SynType * SynArgInfo) * range: range + + member Range: range /// Represents the right hand side of an exception declaration 'exception E = ... ' [] diff --git a/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTreeOps.fs b/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTreeOps.fs index 5572e11515..bb53d5fd73 100644 --- a/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTreeOps.fs +++ b/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTreeOps.fs @@ -63,6 +63,42 @@ let mkSynSimplePatVar isOpt id = let mkSynCompGenSimplePatVar id = SynSimplePat.Id(id, None, true, false, false, id.idRange) +let rec pushUnaryArg expr arg = + match expr with + | SynExpr.App (ExprAtomicFlag.Atomic, infix, SynExpr.Ident ident, x1, m1) -> + SynExpr.App( + ExprAtomicFlag.Atomic, + infix, + SynExpr.LongIdent(false, SynLongIdent(arg :: ident :: [], [ ident.idRange ], [ None ]), None, ident.idRange), + x1, + m1 + ) + | SynExpr.App (ExprAtomicFlag.Atomic, + infix, + SynExpr.LongIdent (isOptional, SynLongIdent (id, dotRanges, trivia), altNameRefCell, range), + x1, + m1) -> + SynExpr.App( + ExprAtomicFlag.Atomic, + infix, + SynExpr.LongIdent(isOptional, SynLongIdent(arg :: id, dotRanges, trivia), altNameRefCell, range), + x1, + m1 + ) + | SynExpr.App (ExprAtomicFlag.Atomic, infix, (SynExpr.App (_) as innerApp), x1, m1) -> + SynExpr.App(ExprAtomicFlag.Atomic, infix, (pushUnaryArg innerApp arg), x1, m1) + | SynExpr.App (ExprAtomicFlag.Atomic, infix, SynExpr.DotGet (synExpr, rangeOfDot, synLongIdent, range), x1, m1) -> + SynExpr.App(ExprAtomicFlag.Atomic, infix, SynExpr.DotGet((pushUnaryArg synExpr arg), rangeOfDot, synLongIdent, range), x1, m1) + | SynExpr.App (ExprAtomicFlag.Atomic, infix, innerExpr, x1, m1) -> + SynExpr.App(ExprAtomicFlag.Atomic, infix, pushUnaryArg innerExpr arg, x1, m1) + | SynExpr.Ident ident -> SynExpr.LongIdent(false, SynLongIdent(arg :: ident :: [], [ ident.idRange ], [ None ]), None, ident.idRange) + | SynExpr.LongIdent (isOptional, SynLongIdent (id, dotRanges, trivia), altNameRefCell, range) -> + SynExpr.LongIdent(isOptional, SynLongIdent(arg :: id, dotRanges, trivia), altNameRefCell, range) + | SynExpr.DotGet (synExpr, rangeOfDot, synLongIdent, range) -> SynExpr.DotGet(pushUnaryArg synExpr arg, rangeOfDot, synLongIdent, range) + | SynExpr.DotIndexedGet (objectExpr, indexArgs, dotRange, range) -> + SynExpr.DotIndexedGet(pushUnaryArg objectExpr arg, indexArgs, dotRange, range) + | _ -> expr + let (|SynSingleIdent|_|) x = match x with | SynLongIdent ([ id ], _, _) -> Some id @@ -301,28 +337,24 @@ let rec SimplePatsOfPat synArgNameGenerator p = match p with | SynPat.FromParseError (p, _) -> SimplePatsOfPat synArgNameGenerator p - | SynPat.Typed (p', ty, m) -> - let p2, laterF = SimplePatsOfPat synArgNameGenerator p' - SynSimplePats.Typed(p2, ty, m), laterF + | SynPat.Tuple (false, ps, commas, m) - | SynPat.Tuple (false, ps, m) - - | SynPat.Paren (SynPat.Tuple (false, ps, _), m) -> + | SynPat.Paren (SynPat.Tuple (false, ps, commas, _), m) -> let sps = List.map (SimplePatOfPat synArgNameGenerator) ps let ps2, laterF = List.foldBack (fun (p', rhsf) (ps', rhsf') -> p' :: ps', (composeFunOpt rhsf rhsf')) sps ([], None) - SynSimplePats.SimplePats(ps2, m), laterF + SynSimplePats.SimplePats(ps2, commas, m), laterF | SynPat.Paren (SynPat.Const (SynConst.Unit, m), _) - | SynPat.Const (SynConst.Unit, m) -> SynSimplePats.SimplePats([], m), None + | SynPat.Const (SynConst.Unit, m) -> SynSimplePats.SimplePats([], [], m), None | _ -> let m = p.Range let sp, laterF = SimplePatOfPat synArgNameGenerator p - SynSimplePats.SimplePats([ sp ], m), laterF + SynSimplePats.SimplePats([ sp ], [], m), laterF let PushPatternToExpr synArgNameGenerator isMember pat (rhs: SynExpr) = let nowPats, laterF = SimplePatsOfPat synArgNameGenerator pat @@ -443,7 +475,7 @@ let mkSynUnitPat m = SynPat.Const(SynConst.Unit, m) let mkSynDelay m e = let svar = mkSynCompGenSimplePatVar (mkSynId m "unitVar") - SynExpr.Lambda(false, false, SynSimplePats.SimplePats([ svar ], m), e, None, m, SynExprLambdaTrivia.Zero) + SynExpr.Lambda(false, false, SynSimplePats.SimplePats([ svar ], [], m), e, None, m, SynExprLambdaTrivia.Zero) let mkSynAssign (l: SynExpr) (r: SynExpr) = let m = unionRanges l.Range r.Range @@ -582,8 +614,7 @@ module SynInfo = /// Infer the syntactic argument info for one or more arguments one or more simple patterns. let rec InferSynArgInfoFromSimplePats x = match x with - | SynSimplePats.SimplePats (ps, _) -> List.map (InferSynArgInfoFromSimplePat []) ps - | SynSimplePats.Typed (ps, _, _) -> InferSynArgInfoFromSimplePats ps + | SynSimplePats.SimplePats (pats = ps) -> List.map (InferSynArgInfoFromSimplePat []) ps /// Infer the syntactic argument info for one or more arguments a pattern. let InferSynArgInfoFromPat p = @@ -630,7 +661,9 @@ module SynInfo = let private emptySynValInfo = SynValInfo([], unnamedRetVal) - let emptySynValData = SynValData(None, emptySynValInfo, None) + let emptySynValData = SynValData(None, emptySynValInfo, None, None) + + let emptySynArgInfo = SynArgInfo([], false, None) /// Infer the syntactic information for a 'let' or 'member' definition, based on the argument pattern, /// any declared return information (e.g. .NET attributes on the return element), and the r.h.s. expression @@ -658,7 +691,7 @@ module SynInfo = @ (if explicitArgsAreSimple then infosForLambdaArgs else []) let infosForArgs = AdjustArgsForUnitElimination infosForArgs - SynValData(None, SynValInfo(infosForArgs, retInfo), None) + SynValData(None, SynValInfo(infosForArgs, retInfo), None, None) | Some memFlags -> let infosForObjArgs = if memFlags.IsInstance then [ selfMetadata ] else [] @@ -667,7 +700,7 @@ module SynInfo = let infosForArgs = AdjustArgsForUnitElimination infosForArgs let argInfos = infosForObjArgs @ infosForArgs - SynValData(Some memFlags, SynValInfo(argInfos, retInfo), None) + SynValData(Some memFlags, SynValInfo(argInfos, retInfo), None, None) let mkSynBindingRhs staticOptimizations rhsExpr mRhs retInfo = let rhsExpr = @@ -692,6 +725,13 @@ let mkSynBinding let mBind = unionRangeWithXmlDoc xmlDoc mBind SynBinding(vis, SynBindingKind.Normal, isInline, isMutable, attrs, xmlDoc, info, headPat, retTyOpt, rhsExpr, mBind, spBind, trivia) +let updatePropertyIdentInSynBinding + propertyIdent + (SynBinding (vis, kind, ii, im, attr, xmlDoc, SynValData (memberFlags, valInfo, thisIdOpt, _), p, ri, e, m, dp, t)) + = + let valData = SynValData(memberFlags, valInfo, thisIdOpt, Some propertyIdent) + SynBinding(vis, kind, ii, im, attr, xmlDoc, valData, p, ri, e, m, dp, t) + let NonVirtualMemberFlags k : SynMemberFlags = { MemberKind = k @@ -797,6 +837,7 @@ let rec synExprContainsError inpExpr = | SynExpr.ArbitraryAfterError _ -> true | SynExpr.LongIdent _ + | SynExpr.DotLambda _ | SynExpr.Quote _ | SynExpr.LibraryOnlyILAssembly _ | SynExpr.LibraryOnlyStaticOptimization _ @@ -867,7 +908,8 @@ let rec synExprContainsError inpExpr = walkBinds bs || walkBinds binds | SynExpr.ForEach (_, _, _, _, _, e1, e2, _) - | SynExpr.While (_, e1, e2, _) -> walkExpr e1 || walkExpr e2 + | SynExpr.While (_, e1, e2, _) + | SynExpr.WhileBang (_, e1, e2, _) -> walkExpr e1 || walkExpr e2 | SynExpr.For (identBody = e1; toBody = e2; doBody = e3) -> walkExpr e1 || walkExpr e2 || walkExpr e3 @@ -875,7 +917,8 @@ let rec synExprContainsError inpExpr = | SynExpr.Lambda (body = e) -> walkExpr e - | SynExpr.Match (expr = e; clauses = cl) -> walkExpr e || walkMatchClauses cl + | SynExpr.Match (expr = e; clauses = cl) + | SynExpr.MatchBang (expr = e; clauses = cl) -> walkExpr e || walkMatchClauses cl | SynExpr.LetOrUse (bindings = bs; body = e) -> walkBinds bs || walkExpr e @@ -905,8 +948,6 @@ let rec synExprContainsError inpExpr = | SynExpr.DotNamedIndexedPropertySet (e1, _, e2, e3, _) -> walkExpr e1 || walkExpr e2 || walkExpr e3 - | SynExpr.MatchBang (expr = e; clauses = cl) -> walkExpr e || walkMatchClauses cl - | SynExpr.LetOrUseBang (rhs = e1; body = e2; andBangs = es) -> walkExpr e1 || walkExprs @@ -944,38 +985,39 @@ let mkDynamicArgExpr expr = | SynExpr.Paren (expr = e) -> e | e -> e -let rec normalizeTupleExpr exprs commas : SynExpr list * range list = - match exprs with - | SynExpr.Tuple (false, innerExprs, innerCommas, _) :: rest -> - let innerExprs, innerCommas = - normalizeTupleExpr (List.rev innerExprs) (List.rev innerCommas) - - innerExprs @ rest, innerCommas @ commas - | _ -> exprs, commas - -let rec normalizeTuplePat pats : SynPat list = +let rec normalizeTuplePat pats commas : SynPat list * range List = match pats with - | SynPat.Tuple (false, innerPats, _) :: rest -> - let innerExprs = normalizeTuplePat (List.rev innerPats) - innerExprs @ rest - | _ -> pats + | SynPat.Tuple (false, innerPats, innerCommas, _) :: rest -> + let innerPats, innerCommas = + normalizeTuplePat (List.rev innerPats) (List.rev innerCommas) + + innerPats @ rest, innerCommas @ commas + | _ -> pats, commas /// Remove all members that were captures as SynMemberDefn.GetSetMember let rec desugarGetSetMembers (memberDefns: SynMemberDefns) = memberDefns |> List.collect (fun md -> match md with - | SynMemberDefn.GetSetMember (Some (SynBinding _ as getBinding), + | SynMemberDefn.GetSetMember (Some (SynBinding(headPat = SynPat.LongIdent (longDotId = lid)) as getBinding), Some (SynBinding _ as setBinding), m, { GetKeyword = Some mGet SetKeyword = Some mSet }) -> + let lastIdent = List.last lid.LongIdent + if Position.posLt mGet.Start mSet.Start then - [ SynMemberDefn.Member(getBinding, m); SynMemberDefn.Member(setBinding, m) ] + [ + SynMemberDefn.Member(updatePropertyIdentInSynBinding lastIdent getBinding, m) + SynMemberDefn.Member(updatePropertyIdentInSynBinding lastIdent setBinding, m) + ] else - [ SynMemberDefn.Member(setBinding, m); SynMemberDefn.Member(getBinding, m) ] + [ + SynMemberDefn.Member(updatePropertyIdentInSynBinding lastIdent setBinding, m) + SynMemberDefn.Member(updatePropertyIdentInSynBinding lastIdent getBinding, m) + ] | SynMemberDefn.GetSetMember (Some binding, None, m, _) | SynMemberDefn.GetSetMember (None, Some binding, m, _) -> [ SynMemberDefn.Member(binding, m) ] | SynMemberDefn.Interface (interfaceType, withKeyword, members, m) -> diff --git a/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTreeOps.fsi b/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTreeOps.fsi index d7878897ac..337e9d135c 100644 --- a/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTreeOps.fsi +++ b/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTreeOps.fsi @@ -41,6 +41,8 @@ val mkSynSimplePatVar: isOpt: bool -> id: Ident -> SynSimplePat val mkSynCompGenSimplePatVar: id: Ident -> SynSimplePat +val pushUnaryArg: expr: SynExpr -> arg: Ident -> SynExpr + /// Match a long identifier, including the case for single identifiers which gets a more optimized node in the syntax tree. val (|LongOrSingleIdent|_|): inp: SynExpr -> (bool * SynLongIdent * SynSimplePatAlternativeIdInfo ref option * range) option @@ -255,6 +257,8 @@ module SynInfo = val emptySynValData: SynValData + val emptySynArgInfo: SynArgInfo + /// Infer the syntactic information for a 'let' or 'member' definition, based on the argument pattern, /// any declared return information (e.g. .NET attributes on the return element), and the r.h.s. expression /// in the case of 'let' definitions. @@ -288,6 +292,8 @@ val mkSynBinding: trivia: SynBindingTrivia -> SynBinding +val updatePropertyIdentInSynBinding: propertyIdent: Ident -> SynBinding -> SynBinding + val NonVirtualMemberFlags: k: SynMemberKind -> SynMemberFlags val CtorMemberFlags: SynMemberFlags @@ -331,9 +337,7 @@ val prependIdentInLongIdentWithTrivia: ident: SynIdent -> mDot: range -> lid: Sy val mkDynamicArgExpr: expr: SynExpr -> SynExpr -val normalizeTupleExpr: exprs: SynExpr list -> commas: range list -> SynExpr list * range List - -val normalizeTuplePat: pats: SynPat list -> SynPat list +val normalizeTuplePat: pats: SynPat list -> commas: range list -> SynPat list * range List val desugarGetSetMembers: memberDefns: SynMemberDefns -> SynMemberDefns diff --git a/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTrivia.fs b/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTrivia.fs index 84b431093a..999f93d29a 100644 --- a/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTrivia.fs +++ b/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTrivia.fs @@ -76,7 +76,19 @@ type SynExprLambdaTrivia = static member Zero: SynExprLambdaTrivia = { ArrowRange = None } [] -type SynExprLetOrUseTrivia = { InKeyword: range option } +type SynExprDotLambdaTrivia = + { + UnderscoreRange: range + DotRange: range + } + +[] +type SynExprLetOrUseTrivia = + { + InKeyword: range option + } + + static member Zero: SynExprLetOrUseTrivia = { InKeyword = None } [] type SynExprLetOrUseBangTrivia = @@ -135,6 +147,13 @@ type SynTypeDefnLeadingKeyword = | StaticType of staticRange: range * typeRange: range | Synthetic + member this.Range = + match this with + | SynTypeDefnLeadingKeyword.Type range + | SynTypeDefnLeadingKeyword.And range -> range + | SynTypeDefnLeadingKeyword.StaticType (staticRange, typeRange) -> Range.unionRanges staticRange typeRange + | SynTypeDefnLeadingKeyword.Synthetic -> failwith "Getting range from synthetic keyword" + [] type SynTypeDefnTrivia = { @@ -179,6 +198,7 @@ type SynLeadingKeyword = | OverrideVal of overrideRange: range * valRange: range | Abstract of abstractRange: range | AbstractMember of abstractRange: range * memberRange: range + | Static of staticRange: range | StaticMember of staticRange: range * memberRange: range | StaticMemberVal of staticRange: range * memberRange: range * valRange: range | StaticAbstract of staticRange: range * abstractRange: range @@ -206,7 +226,8 @@ type SynLeadingKeyword = | Default m | Val m | New m - | Do m -> m + | Do m + | Static m -> m | LetRec (m1, m2) | UseRec (m1, m2) | AbstractMember (m1, m2) @@ -379,3 +400,18 @@ type SynMemberSigMemberTrivia = } static member Zero: SynMemberSigMemberTrivia = { GetSetKeywords = None } + +[] +type SynTyparDeclTrivia = + { + AmpersandRanges: range list + } + + static member Zero: SynTyparDeclTrivia = { AmpersandRanges = [] } + +[] +type SynMeasureConstantTrivia = + { + LessRange: range + GreaterRange: range + } diff --git a/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTrivia.fsi b/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTrivia.fsi index 4119d06fca..d30816e697 100644 --- a/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTrivia.fsi +++ b/src/fcs-fable/src/Compiler/SyntaxTree/SyntaxTrivia.fsi @@ -119,6 +119,12 @@ type SynExprLambdaTrivia = static member Zero: SynExprLambdaTrivia +/// Represents additional information for SynExpr.DotLambda +[] +type SynExprDotLambdaTrivia = + { UnderscoreRange: range + DotRange: range } + /// Represents additional information for SynExpr.LetOrUse [] type SynExprLetOrUseTrivia = @@ -127,6 +133,8 @@ type SynExprLetOrUseTrivia = InKeyword: range option } + static member Zero: SynExprLetOrUseTrivia + /// Represents additional information for SynExpr.LetOrUseBang [] type SynExprLetOrUseBangTrivia = @@ -219,11 +227,17 @@ type SynPatListConsTrivia = [] type SynTypeDefnLeadingKeyword = | Type of range + | And of range - // Can happen in SynMemberDefn.NestedType or SynMemberSig.NestedType + + /// Can happen in SynMemberDefn.NestedType or SynMemberSig.NestedType | StaticType of staticRange: range * typeRange: range + + /// Produced during type checking, should not be used in actual parsed trees. | Synthetic + member Range: range + /// Represents additional information for SynTypeDefn [] type SynTypeDefnTrivia = @@ -271,6 +285,7 @@ type SynLeadingKeyword = | OverrideVal of overrideRange: range * valRange: range | Abstract of abstractRange: range | AbstractMember of abstractRange: range * memberRange: range + | Static of staticRange: range | StaticMember of staticRange: range * memberRange: range | StaticMemberVal of staticRange: range * memberRange: range * valRange: range | StaticAbstract of staticRange: range * abstractRange: range @@ -500,3 +515,19 @@ type SynMemberSigMemberTrivia = } static member Zero: SynMemberSigMemberTrivia + +/// Represents additional information for SynTyparDecl +[] +type SynTyparDeclTrivia = + { + /// The syntax ranges of the `&` tokens + AmpersandRanges: range list + } + + static member Zero: SynTyparDeclTrivia + +/// Represents additional information for SynConst.Measure +[] +type SynMeasureConstantTrivia = + { LessRange: range + GreaterRange: range } diff --git a/src/fcs-fable/src/Compiler/SyntaxTree/UnicodeLexing.fs b/src/fcs-fable/src/Compiler/SyntaxTree/UnicodeLexing.fs index 212b3355e2..06593e32f0 100644 --- a/src/fcs-fable/src/Compiler/SyntaxTree/UnicodeLexing.fs +++ b/src/fcs-fable/src/Compiler/SyntaxTree/UnicodeLexing.fs @@ -8,27 +8,28 @@ open Internal.Utilities.Text.Lexing type Lexbuf = LexBuffer -let StringAsLexbuf (reportLibraryOnlyFeatures, langVersion, s: string) = +let StringAsLexbuf (reportLibraryOnlyFeatures, langVersion, strictIndentation, s: string) = #if FABLE_COMPILER - LexBuffer.FromString (reportLibraryOnlyFeatures, langVersion, s) + LexBuffer.FromString (reportLibraryOnlyFeatures, langVersion, strictIndentation, s) #else - LexBuffer.FromChars (reportLibraryOnlyFeatures, langVersion, s.ToCharArray()) + LexBuffer.FromChars (reportLibraryOnlyFeatures, langVersion, strictIndentation, s.ToCharArray()) #endif -let FunctionAsLexbuf (reportLibraryOnlyFeatures, langVersion, bufferFiller) = - LexBuffer.FromFunction (reportLibraryOnlyFeatures, langVersion, bufferFiller) +let FunctionAsLexbuf (reportLibraryOnlyFeatures, langVersion, strictIndentation, bufferFiller) = + LexBuffer.FromFunction (reportLibraryOnlyFeatures, langVersion, strictIndentation, bufferFiller) -let SourceTextAsLexbuf (reportLibraryOnlyFeatures, langVersion, sourceText) = - LexBuffer.FromSourceText (reportLibraryOnlyFeatures, langVersion, sourceText) +let SourceTextAsLexbuf (reportLibraryOnlyFeatures, langVersion, strictIndentation, sourceText) = + LexBuffer.FromSourceText (reportLibraryOnlyFeatures, langVersion, strictIndentation, sourceText) #if !FABLE_COMPILER -let StreamReaderAsLexbuf (reportLibraryOnlyFeatures, langVersion, reader: StreamReader) = +let StreamReaderAsLexbuf (reportLibraryOnlyFeatures, langVersion, strictIndentation, reader: StreamReader) = let mutable isFinished = false FunctionAsLexbuf( reportLibraryOnlyFeatures, langVersion, + strictIndentation, fun (chars, start, length) -> if isFinished then 0 diff --git a/src/fcs-fable/src/Compiler/SyntaxTree/UnicodeLexing.fsi b/src/fcs-fable/src/Compiler/SyntaxTree/UnicodeLexing.fsi index 2fb3f7ba74..46c9980ade 100644 --- a/src/fcs-fable/src/Compiler/SyntaxTree/UnicodeLexing.fsi +++ b/src/fcs-fable/src/Compiler/SyntaxTree/UnicodeLexing.fsi @@ -9,18 +9,31 @@ open Internal.Utilities.Text.Lexing type Lexbuf = LexBuffer -val StringAsLexbuf: reportLibraryOnlyFeatures: bool * langVersion: LanguageVersion * string -> Lexbuf +val StringAsLexbuf: + reportLibraryOnlyFeatures: bool * langVersion: LanguageVersion * strictIndentation: bool option * string -> Lexbuf val FunctionAsLexbuf: - reportLibraryOnlyFeatures: bool * langVersion: LanguageVersion * bufferFiller: (LexBufferChar[] * int * int -> int) -> Lexbuf + reportLibraryOnlyFeatures: bool * + langVersion: LanguageVersion * + strictIndentation: bool option * + bufferFiller: (LexBufferChar[] * int * int -> int) -> + Lexbuf val SourceTextAsLexbuf: - reportLibraryOnlyFeatures: bool * langVersion: LanguageVersion * sourceText: ISourceText -> Lexbuf + reportLibraryOnlyFeatures: bool * + langVersion: LanguageVersion * + strictIndentation: bool option * + sourceText: ISourceText -> + Lexbuf #if !FABLE_COMPILER /// Will not dispose of the stream reader. val StreamReaderAsLexbuf: - reportLibraryOnlyFeatures: bool * langVersion: LanguageVersion * reader: StreamReader -> Lexbuf + reportLibraryOnlyFeatures: bool * + langVersion: LanguageVersion * + strictIndentation: bool option * + reader: StreamReader -> + Lexbuf #endif //!FABLE_COMPILER diff --git a/src/fcs-fable/src/Compiler/SyntaxTree/XmlDoc.fs b/src/fcs-fable/src/Compiler/SyntaxTree/XmlDoc.fs index 2879d2cacf..cd0e9d40db 100644 --- a/src/fcs-fable/src/Compiler/SyntaxTree/XmlDoc.fs +++ b/src/fcs-fable/src/Compiler/SyntaxTree/XmlDoc.fs @@ -15,7 +15,6 @@ open FSharp.Compiler.DiagnosticsLogger open FSharp.Compiler.IO open FSharp.Compiler.Text open FSharp.Compiler.Text.Range -open FSharp.Compiler.AbstractIL.IL /// Represents collected XmlDoc lines [] @@ -274,7 +273,7 @@ type PreXmlDoc = doc - member internal x.Range = + member x.Range = match x with | PreXmlDirect (_, m) -> m | PreXmlMerge (part1, part2) -> diff --git a/src/fcs-fable/src/Compiler/SyntaxTree/XmlDoc.fsi b/src/fcs-fable/src/Compiler/SyntaxTree/XmlDoc.fsi index 1c6a9d7ef5..3f06817b5d 100644 --- a/src/fcs-fable/src/Compiler/SyntaxTree/XmlDoc.fsi +++ b/src/fcs-fable/src/Compiler/SyntaxTree/XmlDoc.fsi @@ -3,7 +3,6 @@ namespace FSharp.Compiler.Xml open FSharp.Compiler.Text -open FSharp.Compiler.AbstractIL.IL /// Represents collected XmlDoc lines [] @@ -80,7 +79,7 @@ type public PreXmlDoc = member ToXmlDoc: check: bool * paramNamesOpt: string list option -> XmlDoc /// Get the overall range of the PreXmlDoc - member internal Range: Range + member Range: Range /// Indicates if the PreXmlDoc is non-empty member IsEmpty: bool diff --git a/src/fcs-fable/src/Compiler/TypedTree/TcGlobals.fs b/src/fcs-fable/src/Compiler/TypedTree/TcGlobals.fs index 373fbd6f43..5e84b5ebfa 100755 --- a/src/fcs-fable/src/Compiler/TypedTree/TcGlobals.fs +++ b/src/fcs-fable/src/Compiler/TypedTree/TcGlobals.fs @@ -92,21 +92,6 @@ module FSharpLib = // Access the initial environment: helpers to build references //------------------------------------------------------------------------- -// empty flags -let v_knownWithoutNull = 0uy - -let private mkNonGenericTy tcref = TType_app(tcref, [], v_knownWithoutNull) - -let mkNonLocalTyconRef2 ccu path n = mkNonLocalTyconRef (mkNonLocalEntityRef ccu path) n - -let mk_MFCore_tcref ccu n = mkNonLocalTyconRef2 ccu CorePathArray n -let mk_MFQuotations_tcref ccu n = mkNonLocalTyconRef2 ccu QuotationsPath n -let mk_MFLinq_tcref ccu n = mkNonLocalTyconRef2 ccu LinqPathArray n -let mk_MFCollections_tcref ccu n = mkNonLocalTyconRef2 ccu CollectionsPathArray n -let mk_MFCompilerServices_tcref ccu n = mkNonLocalTyconRef2 ccu CompilerServicesPath n -let mk_MFRuntimeHelpers_tcref ccu n = mkNonLocalTyconRef2 ccu RuntimeHelpersPath n -let mk_MFControl_tcref ccu n = mkNonLocalTyconRef2 ccu ControlPathArray n - type [] BuiltinAttribInfo = @@ -182,6 +167,8 @@ let tname_CompilerGeneratedAttribute = "System.Runtime.CompilerServices.Compiler [] let tname_ReferenceAssemblyAttribute = "System.Runtime.CompilerServices.ReferenceAssemblyAttribute" [] +let tname_UnmanagedType = "System.Runtime.InteropServices.UnmanagedType" +[] let tname_DebuggableAttribute = "System.Diagnostics.DebuggableAttribute" [] let tname_AsyncCallback = "System.AsyncCallback" @@ -210,6 +197,21 @@ type TcGlobals( pathMap: PathMap, langVersion: LanguageVersion) = + // empty flags + let v_knownWithoutNull = 0uy + + let mkNonGenericTy tcref = TType_app(tcref, [], v_knownWithoutNull) + + let mkNonLocalTyconRef2 ccu path n = mkNonLocalTyconRef (mkNonLocalEntityRef ccu path) n + + let mk_MFCore_tcref ccu n = mkNonLocalTyconRef2 ccu CorePathArray n + let mk_MFQuotations_tcref ccu n = mkNonLocalTyconRef2 ccu QuotationsPath n + let mk_MFLinq_tcref ccu n = mkNonLocalTyconRef2 ccu LinqPathArray n + let mk_MFCollections_tcref ccu n = mkNonLocalTyconRef2 ccu CollectionsPathArray n + let mk_MFCompilerServices_tcref ccu n = mkNonLocalTyconRef2 ccu CompilerServicesPath n + let mk_MFRuntimeHelpers_tcref ccu n = mkNonLocalTyconRef2 ccu RuntimeHelpersPath n + let mk_MFControl_tcref ccu n = mkNonLocalTyconRef2 ccu ControlPathArray n + let tryFindSysTypeCcu path nm = tryFindSysTypeCcuHelper path nm false @@ -334,28 +336,40 @@ type TcGlobals( let tcref = mkNonLocalTyconRef2 ccu (Array.ofList path) typeName AttribInfo(tref, tcref) - let findOrEmbedSysPublicAttribute nm = - let sysAttrib = findPublicSysAttrib nm - if sysAttrib.TyconRef.CanDeref then - sysAttrib - else - let attrRef = ILTypeRef.Create(ILScopeRef.Local, [], nm) - let attrTycon = - Construct.NewTycon( - Some (CompPath(ILScopeRef.Local, [])), - attrRef.Name, - range0, - taccessInternal, - taccessInternal, - TyparKind.Type, - LazyWithContext.NotLazy [], - FSharp.Compiler.Xml.XmlDoc.Empty, - false, - false, - false, - MaybeLazy.Strict(Construct.NewEmptyModuleOrNamespaceType ModuleOrType) - ) - AttribInfo(attrRef, mkLocalTyconRef attrTycon) + // Well known set of generated embeddable attribute names + static let isInEmbeddableKnownSet name = + match name with + | "System.Runtime.CompilerServices.IsReadOnlyAttribute" + | "System.Runtime.CompilerServices.IsUnmanagedAttribute" + | "System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute" + | "System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes" -> true + | _ -> false + + let findOrEmbedSysPublicType nm = + + assert (isInEmbeddableKnownSet nm) //Ensure that the named type is in known set of embedded types + + let sysAttrib = findPublicSysAttrib nm + if sysAttrib.TyconRef.CanDeref then + sysAttrib + else + let attrRef = ILTypeRef.Create(ILScopeRef.Local, [], nm) + let attrTycon = + Construct.NewTycon( + Some (CompPath(ILScopeRef.Local, [])), + attrRef.Name, + range0, + taccessInternal, + taccessInternal, + TyparKind.Type, + LazyWithContext.NotLazy [], + FSharp.Compiler.Xml.XmlDoc.Empty, + false, + false, + false, + MaybeLazy.Strict(Construct.NewEmptyModuleOrNamespaceType ModuleOrType) + ) + AttribInfo(attrRef, mkLocalTyconRef attrTycon) let mkSysNonGenericTy path n = mkNonGenericTy(findSysTyconRef path n) let tryMkSysNonGenericTy path n = tryFindSysTyconRef path n |> Option.map mkNonGenericTy @@ -728,6 +742,7 @@ type TcGlobals( let v_bitwise_unary_not_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "op_LogicalNot" , None , None , [vara], mk_unop_ty varaTy) let v_bitwise_shift_left_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "op_LeftShift" , None , None , [vara], mk_shiftop_ty varaTy) let v_bitwise_shift_right_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "op_RightShift" , None , None , [vara], mk_shiftop_ty varaTy) + let v_exponentiation_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "op_Exponentiation" , None , None , [vara;varb], ([[varaTy];[varbTy]], varaTy)) let v_unchecked_addition_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "op_Addition" , None , None , [vara;varb;varc], mk_binop_ty3 varaTy varbTy varcTy) let v_unchecked_subtraction_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "op_Subtraction" , None , None , [vara;varb;varc], mk_binop_ty3 varaTy varbTy varcTy) let v_unchecked_multiply_info = makeIntrinsicValRef(fslib_MFOperators_nleref, "op_Multiply" , None , None , [vara;varb;varc], mk_binop_ty3 varaTy varbTy varcTy) @@ -869,27 +884,21 @@ type TcGlobals( let tref_CompilerGeneratedAttribute = findSysILTypeRef tname_CompilerGeneratedAttribute let tref_InternalsVisibleToAttribute = findSysILTypeRef tname_InternalsVisibleToAttribute - let mutable generatedAttribsCache = [] - let mutable debuggerBrowsableNeverAttributeCache = None - let mkDebuggerNonUserCodeAttribute() = mkILCustomAttribute (findSysILTypeRef tname_DebuggerNonUserCodeAttribute, [], [], []) - let mkCompilerGeneratedAttribute () = mkILCustomAttribute (tref_CompilerGeneratedAttribute, [], [], []) + let debuggerNonUserCodeAttribute = mkILCustomAttribute (findSysILTypeRef tname_DebuggerNonUserCodeAttribute, [], [], []) + let compilerGeneratedAttribute = mkILCustomAttribute (tref_CompilerGeneratedAttribute, [], [], []) + let generatedAttributes = if noDebugAttributes then [||] else [| compilerGeneratedAttribute; debuggerNonUserCodeAttribute |] let compilerGlobalState = CompilerGlobalState() // Requests attributes to be added to compiler generated methods. let addGeneratedAttrs (attrs: ILAttributes) = - let attribs = - match generatedAttribsCache with - | [] -> - let res = - [ if not noDebugAttributes then - mkCompilerGeneratedAttribute() - mkDebuggerNonUserCodeAttribute()] - generatedAttribsCache <- res - res - | res -> res - mkILCustomAttrs (attrs.AsList() @ attribs) - - let addMethodGeneratedAttrs (mdef:ILMethodDef) = mdef.With(customAttrs = addGeneratedAttrs mdef.CustomAttrs) + if Array.isEmpty generatedAttributes then + attrs + else + match attrs.AsArray() with + | [||] -> mkILCustomAttrsFromArray generatedAttributes + | attrs -> mkILCustomAttrsFromArray (Array.append attrs generatedAttributes) + + let addMethodGeneratedAttrs (mdef:ILMethodDef) = mdef.With(customAttrs = addGeneratedAttrs mdef.CustomAttrs) let addPropertyGeneratedAttrs (pdef:ILPropertyDef) = pdef.With(customAttrs = addGeneratedAttrs pdef.CustomAttrs) @@ -901,15 +910,9 @@ type TcGlobals( ILType.Value (mkILNonGenericTySpec tref) mkILCustomAttribute (findSysILTypeRef tname_DebuggerBrowsableAttribute, [typ_DebuggerBrowsableState], [ILAttribElem.Int32 n], []) - let mkDebuggerBrowsableNeverAttribute() = - match debuggerBrowsableNeverAttributeCache with - | None -> - let res = tref_DebuggerBrowsableAttribute 0 - debuggerBrowsableNeverAttributeCache <- Some res - res - | Some res -> res + let debuggerBrowsableNeverAttribute = tref_DebuggerBrowsableAttribute 0 - let addNeverAttrs (attrs: ILAttributes) = mkILCustomAttrs (attrs.AsList() @ [mkDebuggerBrowsableNeverAttribute()]) + let addNeverAttrs (attrs: ILAttributes) = mkILCustomAttrsFromArray (Array.append (attrs.AsArray()) [| debuggerBrowsableNeverAttribute |]) let addPropertyNeverAttrs (pdef:ILPropertyDef) = pdef.With(customAttrs = addNeverAttrs pdef.CustomAttrs) @@ -1052,6 +1055,8 @@ type TcGlobals( member _.ilg = ilg + static member IsInEmbeddableKnownSet name = isInEmbeddableKnownSet name + member _.embeddedTypeDefs = embeddedILTypeDefs.Values |> Seq.toList member _.tryRemoveEmbeddedILTypeDefs () = [ @@ -1419,6 +1424,7 @@ type TcGlobals( member val iltyp_RuntimeMethodHandle = findSysILTypeRef tname_RuntimeMethodHandle |> mkILNonGenericValueTy member val iltyp_RuntimeTypeHandle = findSysILTypeRef tname_RuntimeTypeHandle |> mkILNonGenericValueTy member val iltyp_ReferenceAssemblyAttributeOpt = tryFindSysILTypeRef tname_ReferenceAssemblyAttribute |> Option.map mkILNonGenericBoxedTy + member val iltyp_UnmanagedType = findSysILTypeRef tname_UnmanagedType |> mkILNonGenericValueTy member val attrib_AttributeUsageAttribute = findSysAttrib "System.AttributeUsageAttribute" member val attrib_ParamArrayAttribute = findSysAttrib "System.ParamArrayAttribute" member val attrib_IDispatchConstantAttribute = tryFindSysAttrib "System.Runtime.CompilerServices.IDispatchConstantAttribute" @@ -1426,9 +1432,10 @@ type TcGlobals( // We use 'findSysAttrib' here because lookup on attribute is done by name comparison, and can proceed // even if the type is not found in a system assembly. - member val attrib_IsReadOnlyAttribute = findOrEmbedSysPublicAttribute "System.Runtime.CompilerServices.IsReadOnlyAttribute" - member val attrib_DynamicDependencyAttribute = findOrEmbedSysPublicAttribute "System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute" - member val enum_DynamicallyAccessedMemberTypes = findOrEmbedSysPublicAttribute "System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes" + member val attrib_IsReadOnlyAttribute = findOrEmbedSysPublicType "System.Runtime.CompilerServices.IsReadOnlyAttribute" + member val attrib_IsUnmanagedAttribute = findOrEmbedSysPublicType "System.Runtime.CompilerServices.IsUnmanagedAttribute" + member val attrib_DynamicDependencyAttribute = findOrEmbedSysPublicType "System.Diagnostics.CodeAnalysis.DynamicDependencyAttribute" + member val enum_DynamicallyAccessedMemberTypes = findOrEmbedSysPublicType "System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes" member val attrib_SystemObsolete = findSysAttrib "System.ObsoleteAttribute" member val attrib_DllImportAttribute = tryFindSysAttrib "System.Runtime.InteropServices.DllImportAttribute" @@ -1514,6 +1521,7 @@ type TcGlobals( member val attrib_CompilerFeatureRequiredAttribute = findSysAttrib "System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute" member val attrib_SetsRequiredMembersAttribute = findSysAttrib "System.Diagnostics.CodeAnalysis.SetsRequiredMembersAttribute" member val attrib_RequiredMemberAttribute = findSysAttrib "System.Runtime.CompilerServices.RequiredMemberAttribute" + member val attrib_TailCallAttribute = mk_MFCore_attrib "TailCallAttribute" member g.improveType tcref tinst = improveTy tcref tinst @@ -1554,6 +1562,7 @@ type TcGlobals( member val bitwise_unary_not_vref = ValRefForIntrinsic v_bitwise_unary_not_info member val bitwise_shift_left_vref = ValRefForIntrinsic v_bitwise_shift_left_info member val bitwise_shift_right_vref = ValRefForIntrinsic v_bitwise_shift_right_info + member val exponentiation_vref = ValRefForIntrinsic v_exponentiation_info member val unchecked_addition_vref = ValRefForIntrinsic v_unchecked_addition_info member val unchecked_unary_plus_vref = ValRefForIntrinsic v_unchecked_unary_plus_info member val unchecked_unary_minus_vref = ValRefForIntrinsic v_unchecked_unary_minus_info @@ -1829,13 +1838,7 @@ type TcGlobals( member _.mkDebuggerDisplayAttribute s = mkILCustomAttribute (findSysILTypeRef tname_DebuggerDisplayAttribute, [ilg.typ_String], [ILAttribElem.String (Some s)], []) - member _.DebuggerBrowsableNeverAttribute = mkDebuggerBrowsableNeverAttribute() - - member _.mkDebuggerStepThroughAttribute() = - mkILCustomAttribute (findSysILTypeRef tname_DebuggerStepThroughAttribute, [], [], []) - - member _.mkDebuggableAttribute jitOptimizerDisabled = - mkILCustomAttribute (tref_DebuggableAttribute, [ilg.typ_Bool; ilg.typ_Bool], [ILAttribElem.Bool false; ILAttribElem.Bool jitOptimizerDisabled], []) + member _.DebuggerBrowsableNeverAttribute = debuggerBrowsableNeverAttribute member _.mkDebuggableAttributeV2(jitTracking, jitOptimizerDisabled, enableEnC) = let debuggingMode = @@ -1850,9 +1853,9 @@ type TcGlobals( member internal _.CompilerGlobalState = Some compilerGlobalState - member _.CompilerGeneratedAttribute = mkCompilerGeneratedAttribute () + member _.CompilerGeneratedAttribute = compilerGeneratedAttribute - member _.DebuggerNonUserCodeAttribute = mkDebuggerNonUserCodeAttribute () + member _.DebuggerNonUserCodeAttribute = debuggerNonUserCodeAttribute member _.MakeInternalsVisibleToAttribute(simpleAssemName) = mkILCustomAttribute (tref_InternalsVisibleToAttribute, [ilg.typ_String], [ILAttribElem.String (Some simpleAssemName)], []) @@ -1904,7 +1907,7 @@ type TcGlobals( Some (info, tyargs, argExprs) | "Pow", [aty;bty], _, [_;_] -> // Call Operators.(**) - let info = makeOtherIntrinsicValRef (fslib_MFOperators_nleref, "op_Exponentiation", None, None, [vara; varb], ([[varaTy]; [varbTy]], varaTy)) + let info = v_exponentiation_info let tyargs = [aty;bty] Some (info, tyargs, argExprs) | "Atan2", [aty;_], Some bty, [_;_] -> diff --git a/src/fcs-fable/src/Compiler/TypedTree/TypeProviders.fs b/src/fcs-fable/src/Compiler/TypedTree/TypeProviders.fs index 08d2eda28d..dff177e296 100644 --- a/src/fcs-fable/src/Compiler/TypedTree/TypeProviders.fs +++ b/src/fcs-fable/src/Compiler/TypedTree/TypeProviders.fs @@ -230,9 +230,10 @@ let TryTypeMemberArray (st: Tainted<_>, fullName, memberName, m, f) = let TryTypeMemberNonNull<'T, 'U when 'U : null and 'U : not struct>(st: Tainted<'T>, fullName, memberName, m, recover: 'U, (f: 'T -> 'U)) : Tainted<'U> = match TryTypeMember(st, fullName, memberName, m, recover, f) with | Tainted.Null -> - errorR(Error(FSComp.SR.etUnexpectedNullFromProvidedTypeMember(fullName, memberName), m)); + errorR(Error(FSComp.SR.etUnexpectedNullFromProvidedTypeMember(fullName, memberName), m)) st.PApplyNoFailure(fun _ -> recover) - | Tainted.NonNull r -> r + | Tainted.NonNull r -> + r /// Try to access a property or method on a provided member, catching and reporting errors let TryMemberMember (mi: Tainted<_>, typeName, memberName, memberMemberName, m, recover, f) = @@ -346,7 +347,7 @@ type ProvidedType (x: Type, ctxt: ProvidedTypeContext) = x.CustomAttributes |> Seq.exists (fun a -> a.Constructor.DeclaringType.FullName = typeof.FullName) - let provide () = ProvidedCustomAttributeProvider (fun _provider -> x.CustomAttributes) :> IProvidedCustomAttributeProvider + let provide () = ProvidedCustomAttributeProvider (fun _ -> x.CustomAttributes) :> IProvidedCustomAttributeProvider interface IProvidedCustomAttributeProvider with member _.GetHasTypeProviderEditorHideMethodsAttribute provider = provide().GetHasTypeProviderEditorHideMethodsAttribute provider @@ -366,13 +367,13 @@ type ProvidedType (x: Type, ctxt: ProvidedTypeContext) = member _.IsGenericType = x.IsGenericType - member _.Namespace = x.Namespace + member _.Namespace : string MaybeNull = x.Namespace member _.FullName = x.FullName member _.IsArray = x.IsArray - member _.Assembly: ProvidedAssembly = x.Assembly |> ProvidedAssembly.Create + member _.Assembly: ProvidedAssembly MaybeNull = x.Assembly |> ProvidedAssembly.Create member _.GetInterfaces() = x.GetInterfaces() |> ProvidedType.CreateArray ctxt @@ -546,7 +547,7 @@ type ProvidedCustomAttributeProvider (attributes :ITypeProvider -> seq] type ProvidedMemberInfo (x: MemberInfo, ctxt) = - let provide () = ProvidedCustomAttributeProvider (fun _provider -> x.CustomAttributes) :> IProvidedCustomAttributeProvider + let provide () = ProvidedCustomAttributeProvider (fun _ -> x.CustomAttributes) :> IProvidedCustomAttributeProvider member _.Name = x.Name @@ -568,7 +569,7 @@ type ProvidedMemberInfo (x: MemberInfo, ctxt) = [] type ProvidedParameterInfo (x: ParameterInfo, ctxt) = - let provide () = ProvidedCustomAttributeProvider (fun _provider -> x.CustomAttributes) :> IProvidedCustomAttributeProvider + let provide () = ProvidedCustomAttributeProvider (fun _ -> x.CustomAttributes) :> IProvidedCustomAttributeProvider member _.Name = x.Name diff --git a/src/fcs-fable/src/Compiler/TypedTree/TypedTree.fs b/src/fcs-fable/src/Compiler/TypedTree/TypedTree.fs index 67daeb6fcf..5bb15c26b4 100644 --- a/src/fcs-fable/src/Compiler/TypedTree/TypedTree.fs +++ b/src/fcs-fable/src/Compiler/TypedTree/TypedTree.fs @@ -960,7 +960,7 @@ type Entity = /// static fields, 'val' declarations and hidden fields from the compilation of implicit class constructions. member x.AllFieldTable = match x.TypeReprInfo with - | TFSharpRecdRepr x | TFSharpObjectRepr {fsobjmodel_rfields=x} -> x + | TFSharpTyconRepr {fsobjmodel_rfields=x} -> x | _ -> match x.ExceptionInfo with | TExnFresh x -> x @@ -996,12 +996,15 @@ type Entity = member x.GetFieldByName n = x.AllFieldTable.FieldByName n /// Indicate if this is a type whose r.h.s. is known to be a union type definition. - member x.IsUnionTycon = match x.TypeReprInfo with | TFSharpUnionRepr _ -> true | _ -> false + member x.IsUnionTycon = + match x.TypeReprInfo with + | TFSharpTyconRepr {fsobjmodel_kind=TFSharpUnion} -> true + | _ -> false /// Get the union cases and other union-type information for a type, if any member x.UnionTypeInfo = match x.TypeReprInfo with - | TFSharpUnionRepr x -> ValueSome x + | TFSharpTyconRepr {fsobjmodel_kind=TFSharpUnion; fsobjmodel_cases=x} -> ValueSome x | _ -> ValueNone /// Get the union cases for a type, if any @@ -1073,9 +1076,9 @@ type Entity = member x.IsLinked = match box x.entity_attribs with null -> false | _ -> true /// Get the blob of information associated with an F# object-model type definition, i.e. class, interface, struct etc. - member x.FSharpObjectModelTypeInfo = + member x.FSharpTyconRepresentationData = match x.TypeReprInfo with - | TFSharpObjectRepr x -> x + | TFSharpTyconRepr x -> x | _ -> failwith "not an F# object model type definition" /// Indicate if this is a type definition backed by Abstract IL metadata. @@ -1089,10 +1092,17 @@ type Entity = member x.ILTyconRawMetadata = let (TILObjectReprData(_, _, td)) = x.ILTyconInfo in td /// Indicates if this is an F# type definition whose r.h.s. is known to be a record type definition. - member x.IsRecordTycon = match x.TypeReprInfo with | TFSharpRecdRepr _ -> true | _ -> false + member x.IsRecordTycon = + match x.TypeReprInfo with + | TFSharpTyconRepr {fsobjmodel_kind=TFSharpRecord} -> true + | _ -> false /// Indicates if this is an F# type definition whose r.h.s. is known to be a record type definition that is a value type. - member x.IsStructRecordOrUnionTycon = match x.TypeReprInfo with TFSharpRecdRepr _ | TFSharpUnionRepr _ -> x.entity_flags.IsStructRecordOrUnionType | _ -> false + member x.IsStructRecordOrUnionTycon = + match x.TypeReprInfo with + | TFSharpTyconRepr { fsobjmodel_kind=TFSharpRecord } -> x.entity_flags.IsStructRecordOrUnionType + | TFSharpTyconRepr { fsobjmodel_kind=TFSharpUnion } -> x.entity_flags.IsStructRecordOrUnionType + | _ -> false /// The on-demand analysis about whether the entity has the IsByRefLike attribute member x.TryIsByRefLike = x.entity_flags.TryIsByRefLike @@ -1112,8 +1122,21 @@ type Entity = /// Set the on-demand analysis about whether the entity is assumed to be a readonly struct member x.SetIsAssumedReadOnly b = x.entity_flags <- x.entity_flags.WithIsAssumedReadOnly b - /// Indicates if this is an F# type definition whose r.h.s. is known to be some kind of F# object model definition - member x.IsFSharpObjectModelTycon = match x.TypeReprInfo with | TFSharpObjectRepr _ -> true | _ -> false + /// Indicates if this is an F# type definition known to be an F# class, interface, struct, + /// delegate or enum. This isn't generally a particularly useful thing to know, + /// it is better to use more specific predicates. + member x.IsFSharpObjectModelTycon = + match x.TypeReprInfo with + | TFSharpTyconRepr { fsobjmodel_kind = kind } -> + match kind with + | TFSharpRecord + | TFSharpUnion -> false + | TFSharpClass + | TFSharpInterface + | TFSharpDelegate _ + | TFSharpStruct + | TFSharpEnum -> true + | _ -> false /// Indicates if this is an F# type definition which is one of the special types in FSharp.Core.dll which uses /// an assembly-code representation for the type, e.g. the primitive array type constructor. @@ -1128,16 +1151,16 @@ type Entity = member x.IsHiddenReprTycon = match x.TypeAbbrev, x.TypeReprInfo with | None, TNoRepr -> true | _ -> false /// Indicates if this is an F#-defined interface type definition - member x.IsFSharpInterfaceTycon = x.IsFSharpObjectModelTycon && match x.FSharpObjectModelTypeInfo.fsobjmodel_kind with TFSharpInterface -> true | _ -> false + member x.IsFSharpInterfaceTycon = x.IsFSharpObjectModelTycon && match x.FSharpTyconRepresentationData.fsobjmodel_kind with TFSharpInterface -> true | _ -> false /// Indicates if this is an F#-defined delegate type definition - member x.IsFSharpDelegateTycon = x.IsFSharpObjectModelTycon && match x.FSharpObjectModelTypeInfo.fsobjmodel_kind with TFSharpDelegate _ -> true | _ -> false + member x.IsFSharpDelegateTycon = x.IsFSharpObjectModelTycon && match x.FSharpTyconRepresentationData.fsobjmodel_kind with TFSharpDelegate _ -> true | _ -> false /// Indicates if this is an F#-defined enum type definition - member x.IsFSharpEnumTycon = x.IsFSharpObjectModelTycon && match x.FSharpObjectModelTypeInfo.fsobjmodel_kind with TFSharpEnum -> true | _ -> false + member x.IsFSharpEnumTycon = x.IsFSharpObjectModelTycon && match x.FSharpTyconRepresentationData.fsobjmodel_kind with TFSharpEnum -> true | _ -> false /// Indicates if this is an F#-defined class type definition - member x.IsFSharpClassTycon = x.IsFSharpObjectModelTycon && match x.FSharpObjectModelTypeInfo.fsobjmodel_kind with TFSharpClass -> true | _ -> false + member x.IsFSharpClassTycon = x.IsFSharpObjectModelTycon && match x.FSharpTyconRepresentationData.fsobjmodel_kind with TFSharpClass -> true | _ -> false /// Indicates if this is a .NET-defined enum type definition member x.IsILEnumTycon = x.IsILTycon && x.ILTyconRawMetadata.IsEnum @@ -1152,14 +1175,12 @@ type Entity = #endif x.IsILEnumTycon || x.IsFSharpEnumTycon - - /// Indicates if this is an F#-defined struct or enum type definition, i.e. a value type definition + /// Indicates if this is an F#-defined value type definition, including struct records and unions member x.IsFSharpStructOrEnumTycon = match x.TypeReprInfo with - | TFSharpRecdRepr _ -> x.IsStructRecordOrUnionTycon - | TFSharpUnionRepr _ -> x.IsStructRecordOrUnionTycon - | TFSharpObjectRepr info -> + | TFSharpTyconRepr info -> match info.fsobjmodel_kind with + | TFSharpRecord | TFSharpUnion -> x.IsStructRecordOrUnionTycon | TFSharpClass | TFSharpInterface | TFSharpDelegate _ -> false | TFSharpStruct | TFSharpEnum -> true | _ -> false @@ -1169,7 +1190,7 @@ type Entity = x.IsILTycon && x.ILTyconRawMetadata.IsStructOrEnum - /// Indicates if this is a struct or enum type definition, i.e. a value type definition + /// Indicates if this is a struct or enum type definition, i.e. a value type definition, including struct records and unions member x.IsStructOrEnumTycon = #if !NO_TYPEPROVIDERS match x.TypeReprInfo with @@ -1427,13 +1448,7 @@ type TyconAugmentation = type TyconRepresentation = /// Indicates the type is a class, struct, enum, delegate or interface - | TFSharpObjectRepr of TyconObjModelData - - /// Indicates the type is a record - | TFSharpRecdRepr of TyconRecdFields - - /// Indicates the type is a discriminated union - | TFSharpUnionRepr of TyconUnionData + | TFSharpTyconRepr of FSharpTyconData /// Indicates the type is a type from a .NET assembly without F# metadata. | TILObjectRepr of TILObjectReprData @@ -1547,7 +1562,13 @@ type TProvidedTypeInfo = #endif -type TyconFSharpObjModelKind = +type FSharpTyconKind = + /// Indicates the type is an F#-declared record + | TFSharpRecord + + /// Indicates the type is an F#-declared union + | TFSharpUnion + /// Indicates the type is an F#-declared class (also used for units-of-measure) | TFSharpClass @@ -1563,18 +1584,15 @@ type TyconFSharpObjModelKind = /// Indicates the type is an F#-declared enumeration | TFSharpEnum - /// Indicates if the type definition is a value type - member x.IsValueType = - match x with - | TFSharpClass | TFSharpInterface | TFSharpDelegate _ -> false - | TFSharpStruct | TFSharpEnum -> true - /// Represents member values and class fields relating to the F# object model [] -type TyconObjModelData = +type FSharpTyconData = { + /// Indicates the cases of a union type + fsobjmodel_cases: TyconUnionData + /// Indicates whether the type declaration is an F# class, interface, enum, delegate or struct - fsobjmodel_kind: TyconFSharpObjModelKind + fsobjmodel_kind: FSharpTyconKind /// The declared abstract slots of the class, interface or struct fsobjmodel_vslots: ValRef list @@ -1586,7 +1604,7 @@ type TyconObjModelData = [] member x.DebugText = x.ToString() - override x.ToString() = "TyconObjModelData(...)" + override x.ToString() = "FSharpTyconData(...)" /// Represents record fields in an F# type definition [] @@ -1649,6 +1667,7 @@ type TyconUnionCases = [] type TyconUnionData = { + /// The cases contained in the discriminated union. CasesTable: TyconUnionCases @@ -3439,10 +3458,6 @@ type NonLocalEntityRef = | ValueNone -> errorR (InternalUndefinedItemRef (FSComp.SR.tastUndefinedItemRefModuleNamespace, nleref.DisplayName, nleref.AssemblyName, "")) raise (KeyNotFoundException()) - - /// Get the details of the module or namespace fragment for the entity referred to by this non-local reference. - member nleref.ModuleOrNamespaceType = - nleref.Deref.ModuleOrNamespaceType [] member x.DebugText = x.ToString() @@ -3700,7 +3715,7 @@ type EntityRef = member x.GetUnionCaseByName n = x.Deref.GetUnionCaseByName n /// Get the blob of information associated with an F# object-model type definition, i.e. class, interface, struct etc. - member x.FSharpObjectModelTypeInfo = x.Deref.FSharpObjectModelTypeInfo + member x.FSharpTyconRepresentationData = x.Deref.FSharpTyconRepresentationData /// Gets the immediate interface definitions of an F# type definition. Further interfaces may be supported through class and interface inheritance. member x.ImmediateInterfacesOfFSharpTycon = x.Deref.ImmediateInterfacesOfFSharpTycon @@ -3716,7 +3731,7 @@ type EntityRef = /// Note: result is a indexed table, and for each name the results are in reverse declaration order member x.MembersOfFSharpTyconByName = x.Deref.MembersOfFSharpTyconByName - /// Indicates if this is a struct or enum type definition, i.e. a value type definition + /// Indicates if this is a struct or enum type definition, i.e. a value type definition, including struct records and unions member x.IsStructOrEnumTycon = x.Deref.IsStructOrEnumTycon /// Indicates if this is an F# type definition which is one of the special types in FSharp.Core.dll which uses @@ -3758,7 +3773,9 @@ type EntityRef = /// Indicates if this is an F# type definition whose r.h.s. is known to be a record type definition. member x.IsRecordTycon = x.Deref.IsRecordTycon - /// Indicates if this is an F# type definition whose r.h.s. is known to be some kind of F# object model definition + /// Indicates if this is an F# type definition known to be an F# class, interface, struct, + /// delegate or enum. This isn't generally a particularly useful thing to know, + /// it is better to use more specific predicates. member x.IsFSharpObjectModelTycon = x.Deref.IsFSharpObjectModelTycon /// The on-demand analysis about whether the entity has the IsByRefLike attribute @@ -3798,7 +3815,7 @@ type EntityRef = /// Indicates if this is an enum type definition member x.IsEnumTycon = x.Deref.IsEnumTycon - /// Indicates if this is an F#-defined struct or enum type definition, i.e. a value type definition + /// Indicates if this is an F#-defined value type definition, including struct records and unions member x.IsFSharpStructOrEnumTycon = x.Deref.IsFSharpStructOrEnumTycon /// Indicates if this is a .NET-defined struct or enum type definition, i.e. a value type definition @@ -4136,7 +4153,7 @@ type UnionCaseRef = type RecdFieldRef = | RecdFieldRef of tyconRef: TyconRef * fieldName: string - /// Get a reference to the type containing this union case + /// Get a reference to the type containing this record field member x.TyconRef = let (RecdFieldRef(tcref, _)) = x in tcref /// Get the name of the field @@ -4145,7 +4162,7 @@ type RecdFieldRef = /// Get the name of the field, with backticks added for non-identifier names member x.DisplayName = x.FieldName |> ConvertLogicalNameToDisplayName - /// Get the Entity for the type containing this union case + /// Get the Entity for the type containing this record field member x.Tycon = x.TyconRef.Deref /// Dereference the reference @@ -4279,33 +4296,51 @@ type AnonRecdTypeInfo = mutable Stamp: Stamp mutable SortedNames: string[] + + mutable IlTypeName : int64 } /// Create an AnonRecdTypeInfo from the basic data static member Create(ccu: CcuThunk, tupInfo, ids: Ident[]) = let sortedIds = ids |> Array.sortBy (fun id -> id.idText) - // Hash all the data to form a unique stamp - let stamp = - sha1HashInt64 + + // Hash all the data to form a unique stamp. + // This used to be used as an input for generating IL type name, however the stamp generation + // had to be modified to fix #6411, and the IL type name must remain unchanged for back compat reasons. + let stamp = + sha1HashInt64 [| for c in ccu.AssemblyName do yield byte c; yield byte (int32 c >>> 8) match tupInfo with | TupInfo.Const b -> yield (if b then 0uy else 1uy) for id in sortedIds do + for c in id.idText do yield byte c; yield byte (int32 c >>> 8) + yield 0uy |] + + // Hash data to form a code used in generating IL type name. + // To maintain backward compatibility this should not be changed. + let ilName = + sha1HashInt64 + [| for c in ccu.AssemblyName do yield byte c; yield byte (int32 c >>> 8) + match tupInfo with + | TupInfo.Const b -> yield (if b then 0uy else 1uy) + for id in sortedIds do for c in id.idText do yield byte c; yield byte (int32 c >>> 8) |] + let sortedNames = Array.map textOfId sortedIds - { Assembly = ccu; TupInfo = tupInfo; SortedIds = sortedIds; Stamp = stamp; SortedNames = sortedNames } + { Assembly = ccu; TupInfo = tupInfo; SortedIds = sortedIds; Stamp = stamp; SortedNames = sortedNames; IlTypeName = ilName } /// Get the ILTypeRef for the generated type implied by the anonymous type member x.ILTypeRef = - let ilTypeName = sprintf "<>f__AnonymousType%s%u`%d" (match x.TupInfo with TupInfo.Const b -> if b then "1000" else "") (uint32 x.Stamp) x.SortedIds.Length + let ilTypeName = sprintf "<>f__AnonymousType%s%u`%d" (match x.TupInfo with TupInfo.Const b -> if b then "1000" else "") (uint32 x.IlTypeName) x.SortedIds.Length mkILTyRef(x.Assembly.ILScopeRef, ilTypeName) static member NewUnlinked() : AnonRecdTypeInfo = { Assembly = Unchecked.defaultof<_> TupInfo = Unchecked.defaultof<_> SortedIds = Unchecked.defaultof<_> - Stamp = Unchecked.defaultof<_> - SortedNames = Unchecked.defaultof<_> } + Stamp = Unchecked.defaultof<_> + SortedNames = Unchecked.defaultof<_> + IlTypeName = Unchecked.defaultof<_> } member x.Link d = let sortedNames = Array.map textOfId d.SortedIds @@ -4314,6 +4349,7 @@ type AnonRecdTypeInfo = x.SortedIds <- d.SortedIds x.Stamp <- d.Stamp x.SortedNames <- sortedNames + x.IlTypeName <- d.IlTypeName member x.IsLinked = (match x.SortedIds with null -> true | _ -> false) @@ -5773,6 +5809,12 @@ type Construct() = static member NewEmptyModuleOrNamespaceType mkind = Construct.NewModuleOrNamespaceType mkind [] [] + static member NewEmptyFSharpTyconData kind = + { fsobjmodel_cases = Construct.MakeUnionCases [] + fsobjmodel_kind = kind + fsobjmodel_vslots = [] + fsobjmodel_rfields = Construct.MakeRecdFieldsTable [] } + #if !NO_TYPEPROVIDERS /// Create a new node for the representation information for a provided type definition @@ -5901,7 +5943,15 @@ type Construct() = CompiledRepresentation=newCache() } /// Create a node for a union type - static member MakeUnionRepr ucs = TFSharpUnionRepr (Construct.MakeUnionCases ucs) + static member MakeUnionRepr ucs = + let repr = + { + fsobjmodel_cases = Construct.MakeUnionCases ucs + fsobjmodel_rfields = Construct.MakeRecdFieldsTable [] + fsobjmodel_kind = TFSharpUnion + fsobjmodel_vslots = [] + } + TFSharpTyconRepr repr /// Create a new type parameter node static member NewTypar (kind, rigid, SynTypar(id, staticReq, isCompGen), isFromError, dynamicReq, attribs, eqDep, compDep) = diff --git a/src/fcs-fable/src/Compiler/TypedTree/TypedTree.fsi b/src/fcs-fable/src/Compiler/TypedTree/TypedTree.fsi index a7d9f20138..7f83f68000 100644 --- a/src/fcs-fable/src/Compiler/TypedTree/TypedTree.fsi +++ b/src/fcs-fable/src/Compiler/TypedTree/TypedTree.fsi @@ -561,7 +561,7 @@ type Entity = member ExceptionInfo: ExceptionInfo /// Get the blob of information associated with an F# object-model type definition, i.e. class, interface, struct etc. - member FSharpObjectModelTypeInfo: TyconObjModelData + member FSharpTyconRepresentationData: FSharpTyconData /// Gets any implicit CompareTo methods added to an F# record, union or struct type definition. member GeneratedCompareToValues: (ValRef * ValRef) option @@ -622,10 +622,12 @@ type Entity = /// Indicates if this is an F#-defined interface type definition member IsFSharpInterfaceTycon: bool - /// Indicates if this is an F# type definition whose r.h.s. is known to be some kind of F# object model definition + /// Indicates if this is an F# type definition known to be an F# class, interface, struct, + /// delegate or enum. This isn't generally a particularly useful thing to know, + /// it is better to use more specific predicates. member IsFSharpObjectModelTycon: bool - /// Indicates if this is an F#-defined struct or enum type definition, i.e. a value type definition + /// Indicates if this is an F#-defined value type definition, including struct records and unions member IsFSharpStructOrEnumTycon: bool /// Indicates if this is an F# type definition whose r.h.s. definition is unknown (i.e. a traditional ML 'abstract' type in a signature, @@ -635,7 +637,7 @@ type Entity = /// Indicates if this is a .NET-defined enum type definition member IsILEnumTycon: bool - /// Indicates if this is a .NET-defined struct or enum type definition, i.e. a value type definition + /// Indicates if this is a .NET-defined struct or enum type definition member IsILStructOrEnumTycon: bool /// Indicate if this is a type definition backed by Abstract IL metadata. @@ -684,7 +686,7 @@ type Entity = member IsStaticInstantiationTycon: bool #endif - /// Indicates if this is a struct or enum type definition, i.e. a value type definition + /// Indicates if this is a struct or enum type definition, i.e. a value type definition, including struct records and unions member IsStructOrEnumTycon: bool /// Indicates if this is an F# type definition whose r.h.s. is known to be a record type definition that is a value type. @@ -881,13 +883,7 @@ type TyconAugmentation = type TyconRepresentation = /// Indicates the type is a class, struct, enum, delegate or interface - | TFSharpObjectRepr of TyconObjModelData - - /// Indicates the type is a record - | TFSharpRecdRepr of TyconRecdFields - - /// Indicates the type is a discriminated union - | TFSharpUnionRepr of TyconUnionData + | TFSharpTyconRepr of FSharpTyconData /// Indicates the type is a type from a .NET assembly without F# metadata. | TILObjectRepr of TILObjectReprData @@ -994,7 +990,12 @@ type TProvidedTypeInfo = #endif -type TyconFSharpObjModelKind = +type FSharpTyconKind = + /// Indicates the type is an F#-declared record + | TFSharpRecord + + /// Indicates the type is an F#-declared union + | TFSharpUnion /// Indicates the type is an F#-declared class (also used for units-of-measure) | TFSharpClass @@ -1011,16 +1012,15 @@ type TyconFSharpObjModelKind = /// Indicates the type is an F#-declared enumeration | TFSharpEnum - /// Indicates if the type definition is a value type - member IsValueType: bool - /// Represents member values type class fields relating to the F# object model [] -type TyconObjModelData = +type FSharpTyconData = { + /// Indicates the cases of a union type + fsobjmodel_cases: TyconUnionData /// Indicates whether the type declaration is an F# class, interface, enum, delegate or struct - fsobjmodel_kind: TyconFSharpObjModelKind + fsobjmodel_kind: FSharpTyconKind /// The declared abstract slots of the class, interface or struct fsobjmodel_vslots: ValRef list @@ -2329,9 +2329,6 @@ type NonLocalEntityRef = /// Get the mangled name of the last item in the path of the nonlocal reference. member LastItemMangledName: string - /// Get the details of the module or namespace fragment for the entity referred to by this non-local reference. - member ModuleOrNamespaceType: ModuleOrNamespaceType - /// Get the path into the CCU referenced by the nonlocal reference. member Path: string[] @@ -2461,7 +2458,7 @@ type EntityRef = member ExceptionInfo: ExceptionInfo /// Get the blob of information associated with an F# object-model type definition, i.e. class, interface, struct etc. - member FSharpObjectModelTypeInfo: TyconObjModelData + member FSharpTyconRepresentationData: FSharpTyconData /// Gets any implicit CompareTo methods added to an F# record, union or struct type definition. member GeneratedCompareToValues: (ValRef * ValRef) option @@ -2516,10 +2513,12 @@ type EntityRef = /// Indicates if this is an F#-defined interface type definition member IsFSharpInterfaceTycon: bool - /// Indicates if this is an F# type definition whose r.h.s. is known to be some kind of F# object model definition + /// Indicates if this is an F# type definition known to be an F# class, interface, struct, + /// delegate or enum. This isn't generally a particularly useful thing to know, + /// it is better to use more specific predicates. member IsFSharpObjectModelTycon: bool - /// Indicates if this is an F#-defined struct or enum type definition, i.e. a value type definition + /// Indicates if this is an F#-defined value type definition, including struct records and unions member IsFSharpStructOrEnumTycon: bool /// Indicates if this is an F# type definition whose r.h.s. definition is unknown (i.e. a traditional ML 'abstract' type in a signature, @@ -2579,7 +2578,7 @@ type EntityRef = member IsStaticInstantiationTycon: bool #endif - /// Indicates if this is a struct or enum type definition, i.e. a value type definition + /// Indicates if this is a struct or enum type definition, i.e. a value type definition, including struct records and unions member IsStructOrEnumTycon: bool /// Indicates if this entity is an F# type abbreviation definition @@ -3014,10 +3013,10 @@ type RecdFieldRef = /// Try to dereference the reference member TryRecdField: RecdField voption - /// Get the Entity for the type containing this union case + /// Get the Entity for the type containing this record field member Tycon: Entity - /// Get a reference to the type containing this union case + /// Get a reference to the type containing this record field member TyconRef: TyconRef /// Represents a type in the typed abstract syntax @@ -3076,7 +3075,8 @@ type AnonRecdTypeInfo = mutable TupInfo: TupInfo mutable SortedIds: Syntax.Ident[] mutable Stamp: Stamp - mutable SortedNames: string[] } + mutable SortedNames: string[] + mutable IlTypeName: int64 } /// Create an AnonRecdTypeInfo from the basic data static member Create: ccu: CcuThunk * tupInfo: TupInfo * ids: Syntax.Ident[] -> AnonRecdTypeInfo @@ -4276,10 +4276,9 @@ type FreeVars = member DebugText: string /// A set of static methods for constructing types. +[] type Construct = - new: unit -> Construct - #if !NO_TYPEPROVIDERS /// Compute the definition location of a provided item static member ComputeDefinitionLocationOfProvidedItem<'T when 'T :> IProvidedCustomAttributeProvider> : @@ -4316,6 +4315,9 @@ type Construct = /// Create a new node for an empty module or namespace contents static member NewEmptyModuleOrNamespaceType: mkind: ModuleOrNamespaceKind -> ModuleOrNamespaceType + /// Create a new node for an empty F# tycon data + static member NewEmptyFSharpTyconData: kind: FSharpTyconKind -> FSharpTyconData + /// Create a new TAST Entity node for an F# exception definition static member NewExn: cpath: CompilationPath option -> diff --git a/src/fcs-fable/src/Compiler/TypedTree/TypedTreeOps.fs b/src/fcs-fable/src/Compiler/TypedTree/TypedTreeOps.fs index b896074e51..3e6b4cc845 100644 --- a/src/fcs-fable/src/Compiler/TypedTree/TypedTreeOps.fs +++ b/src/fcs-fable/src/Compiler/TypedTree/TypedTreeOps.fs @@ -809,6 +809,10 @@ let destAnyParTy g ty = ty |> stripTyEqns g |> (function TType_var (v, _) -> v | let destMeasureTy g ty = ty |> stripTyEqns g |> (function TType_measure m -> m | _ -> failwith "destMeasureTy: not a unit-of-measure type") +let destAnonRecdTy g ty = ty |> stripTyEqns g |> (function TType_anon (anonInfo, tys) -> anonInfo, tys | _ -> failwith "destAnonRecdTy: not an anonymous record type") + +let destStructAnonRecdTy g ty = ty |> stripTyEqns g |> (function TType_anon (anonInfo, tys) when evalAnonInfoIsStruct anonInfo -> tys | _ -> failwith "destAnonRecdTy: not a struct anonymous record type") + let isFunTy g ty = ty |> stripTyEqns g |> (function TType_fun _ -> true | _ -> false) let isForallTy g ty = ty |> stripTyEqns g |> (function TType_forall _ -> true | _ -> false) @@ -825,6 +829,8 @@ let isStructAnonRecdTy g ty = ty |> stripTyEqns g |> (function TType_anon (anonI let isUnionTy g ty = ty |> stripTyEqns g |> (function TType_app(tcref, _, _) -> tcref.IsUnionTycon | _ -> false) +let isStructUnionTy g ty = ty |> stripTyEqns g |> (function TType_app(tcref, _, _) -> tcref.IsUnionTycon && tcref.Deref.entity_flags.IsStructRecordOrUnionType | _ -> false) + let isReprHiddenTy g ty = ty |> stripTyEqns g |> (function TType_app(tcref, _, _) -> tcref.IsHiddenReprTycon | _ -> false) let isFSharpObjModelTy g ty = ty |> stripTyEqns g |> (function TType_app(tcref, _, _) -> tcref.IsFSharpObjectModelTycon | _ -> false) @@ -1870,9 +1876,9 @@ let rankOfArrayTy g ty = rankOfArrayTyconRef g (tcrefOfAppTy g ty) let isFSharpObjModelRefTy g ty = isFSharpObjModelTy g ty && let tcref = tcrefOfAppTy g ty - match tcref.FSharpObjectModelTypeInfo.fsobjmodel_kind with + match tcref.FSharpTyconRepresentationData.fsobjmodel_kind with | TFSharpClass | TFSharpInterface | TFSharpDelegate _ -> true - | TFSharpStruct | TFSharpEnum -> false + | TFSharpUnion | TFSharpRecord | TFSharpStruct | TFSharpEnum -> false let isFSharpClassTy g ty = match tryTcrefOfAppTy g ty with @@ -1957,26 +1963,27 @@ let isForallFunctionTy g ty = let _, tau = tryDestForallTy g ty isFunTy g tau -// ECMA C# LANGUAGE SPECIFICATION, 27.2 // An unmanaged-type is any type that isn't a reference-type, a type-parameter, or a generic struct-type and // contains no fields whose type is not an unmanaged-type. In other words, an unmanaged-type is one of the // following: // - sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal, or bool. // - Any enum-type. // - Any pointer-type. -// - Any non-generic user-defined struct-type that contains fields of unmanaged-types only. -// [Note: Constructed types and type-parameters are never unmanaged-types. end note] +// - Any generic user-defined struct-type that can be statically determined to be 'unmanaged' at construction. let rec isUnmanagedTy g ty = + let isUnmanagedRecordField tinst rf = + isUnmanagedTy g (actualTyOfRecdField tinst rf) + let ty = stripTyEqnsAndMeasureEqns g ty match tryTcrefOfAppTy g ty with | ValueSome tcref -> - let isEq tcref2 = tyconRefEq g tcref tcref2 + let isEq tcref2 = tyconRefEq g tcref tcref2 if isEq g.nativeptr_tcr || isEq g.nativeint_tcr || - isEq g.sbyte_tcr || isEq g.byte_tcr || + isEq g.sbyte_tcr || isEq g.byte_tcr || isEq g.int16_tcr || isEq g.uint16_tcr || isEq g.int32_tcr || isEq g.uint32_tcr || isEq g.int64_tcr || isEq g.uint64_tcr || - isEq g.char_tcr || + isEq g.char_tcr || isEq g.voidptr_tcr || isEq g.float32_tcr || isEq g.float_tcr || isEq g.decimal_tcr || @@ -1984,15 +1991,24 @@ let rec isUnmanagedTy g ty = true else let tycon = tcref.Deref - if tycon.IsEnumTycon then + if tycon.IsEnumTycon then true + elif isStructUnionTy g ty then + let tinst = mkInstForAppTy g ty + tcref.UnionCasesAsRefList + |> List.forall (fun c -> c |> actualTysOfUnionCaseFields tinst |> List.forall (isUnmanagedTy g)) elif tycon.IsStructOrEnumTycon then - match tycon.TyparsNoRange with - | [] -> tycon.AllInstanceFieldsAsList |> List.forall (fun r -> isUnmanagedTy g r.rfield_type) - | _ -> false // generic structs are never + let tinst = mkInstForAppTy g ty + tycon.AllInstanceFieldsAsList + |> List.forall (isUnmanagedRecordField tinst) else false | ValueNone -> - false + if isStructTupleTy g ty then + (destStructTupleTy g ty) |> List.forall (isUnmanagedTy g) + else if isStructAnonRecdTy g ty then + (destStructAnonRecdTy g ty) |> List.forall (isUnmanagedTy g) + else + false let isInterfaceTycon x = isILInterfaceTycon x || x.IsFSharpInterfaceTycon @@ -2004,6 +2020,37 @@ let isEnumTy g ty = | ValueNone -> false | ValueSome tcref -> tcref.IsEnumTycon +let isSignedIntegerTy g ty = + typeEquivAux EraseMeasures g g.sbyte_ty ty || + typeEquivAux EraseMeasures g g.int16_ty ty || + typeEquivAux EraseMeasures g g.int32_ty ty || + typeEquivAux EraseMeasures g g.nativeint_ty ty || + typeEquivAux EraseMeasures g g.int64_ty ty + +let isUnsignedIntegerTy g ty = + typeEquivAux EraseMeasures g g.byte_ty ty || + typeEquivAux EraseMeasures g g.uint16_ty ty || + typeEquivAux EraseMeasures g g.uint32_ty ty || + typeEquivAux EraseMeasures g g.unativeint_ty ty || + typeEquivAux EraseMeasures g g.uint64_ty ty + +let isIntegerTy g ty = + isSignedIntegerTy g ty || + isUnsignedIntegerTy g ty + +/// float or float32 or float<_> or float32<_> +let isFpTy g ty = + typeEquivAux EraseMeasures g g.float_ty ty || + typeEquivAux EraseMeasures g g.float32_ty ty + +/// decimal or decimal<_> +let isDecimalTy g ty = + typeEquivAux EraseMeasures g g.decimal_ty ty + +let isNonDecimalNumericType g ty = isIntegerTy g ty || isFpTy g ty + +let isNumericType g ty = isNonDecimalNumericType g ty || isDecimalTy g ty + let actualReturnTyOfSlotSig parentTyInst methTyInst (TSlotSig(_, _, parentFormalTypars, methFormalTypars, _, formalRetTy)) = let methTyInst = mkTyparInst methFormalTypars methTyInst let parentTyInst = mkTyparInst parentFormalTypars parentTyInst @@ -3117,7 +3164,8 @@ type DisplayEnv = suppressInlineKeyword = false showDocumentation = true shrinkOverloads = false - escapeKeywordNames = true } + escapeKeywordNames = true + includeStaticParametersInTypeNames = true } denv.SetOpenPaths [ FSharpLib.RootPath FSharpLib.CorePath @@ -3735,6 +3783,12 @@ let (|IntegerConstExpr|_|) expr = | Expr.Const (Const.UInt64 _, _, _) -> Some () | _ -> None +let (|FloatConstExpr|_|) expr = + match expr with + | Expr.Const (Const.Single _, _, _) + | Expr.Const (Const.Double _, _, _) -> Some () + | _ -> None + let (|SpecificBinopExpr|_|) g vrefReqd expr = match expr with | BinopExpr g (vref, arg1, arg2) when valRefEq g vref vrefReqd -> Some (arg1, arg2) @@ -4176,10 +4230,9 @@ module DebugPrint = let tyconReprL (repr, tycon: Tycon) = match repr with - | TFSharpRecdRepr _ -> - tycon.TrueFieldsAsList |> List.map (fun fld -> layoutRecdField fld ^^ rightL(tagText ";")) |> aboveListL - - | TFSharpObjectRepr r -> + | TFSharpTyconRepr { fsobjmodel_kind = TFSharpUnion } -> + tycon.UnionCasesAsList |> layoutUnionCases |> aboveListL + | TFSharpTyconRepr r -> match r.fsobjmodel_kind with | TFSharpDelegate _ -> wordL(tagText "delegate ...") @@ -4214,7 +4267,6 @@ module DebugPrint = if emptyMeasure then emptyL else (wordL (tagText start) @@-- aboveListL alldecls) @@ wordL(tagText "end") - | TFSharpUnionRepr _ -> tycon.UnionCasesAsList |> layoutUnionCases |> aboveListL | TAsmRepr _ -> wordL(tagText "(# ... #)") | TMeasureableRepr ty -> typeL ty | TILObjectRepr (TILObjectReprData(_, _, td)) -> wordL (tagText td.Name) @@ -4496,7 +4548,7 @@ module DebugPrint = |> List.filter (fun v -> isNil (Option.get v.MemberInfo).ImplementedSlotSigs) let iimpls = match tycon.TypeReprInfo with - | TFSharpObjectRepr r when (match r.fsobjmodel_kind with TFSharpInterface -> true | _ -> false) -> [] + | TFSharpTyconRepr r when (match r.fsobjmodel_kind with TFSharpInterface -> true | _ -> false) -> [] | _ -> tycon.ImmediateInterfacesOfFSharpTycon let iimpls = iimpls |> List.filter (fun (_, compgen, _) -> not compgen) // if TFSharpInterface, the iimpls should be printed as inherited interfaces @@ -4737,7 +4789,7 @@ let ComputeRemappingFromInferredSignatureToExplicitSignature g mty msigty = /// virtual slots to aid with finding this babies. let abstractSlotValRefsOfTycons (tycons: Tycon list) = tycons - |> List.collect (fun tycon -> if tycon.IsFSharpObjectModelTycon then tycon.FSharpObjectModelTypeInfo.fsobjmodel_vslots else []) + |> List.collect (fun tycon -> if tycon.IsFSharpObjectModelTycon then tycon.FSharpTyconRepresentationData.fsobjmodel_vslots else []) let abstractSlotValsOfTycons (tycons: Tycon list) = abstractSlotValRefsOfTycons tycons @@ -5084,10 +5136,11 @@ and accLocalTyconRepr opts b fvs = if Zset.contains b fvs.FreeLocalTyconReprs then fvs else { fvs with FreeLocalTyconReprs = Zset.add b fvs.FreeLocalTyconReprs } -and accUsedRecdOrUnionTyconRepr opts (tc: Tycon) fvs = - if match tc.TypeReprInfo with TFSharpObjectRepr _ | TFSharpRecdRepr _ | TFSharpUnionRepr _ -> true | _ -> false - then accLocalTyconRepr opts tc fvs - else fvs +and accUsedRecdOrUnionTyconRepr opts (tc: Tycon) fvs = + if (match tc.TypeReprInfo with TFSharpTyconRepr _ -> true | _ -> false) then + accLocalTyconRepr opts tc fvs + else + fvs and accFreeUnionCaseRef opts ucref fvs = if not opts.includeUnionCases then fvs else @@ -5992,19 +6045,17 @@ and remapUnionCases ctxt tmenv (x: TyconUnionData) = and remapFsObjData ctxt tmenv x = { + fsobjmodel_cases = remapUnionCases ctxt tmenv x.fsobjmodel_cases fsobjmodel_kind = - match x.fsobjmodel_kind with + (match x.fsobjmodel_kind with | TFSharpDelegate slotsig -> TFSharpDelegate (remapSlotSig (remapAttribs ctxt tmenv) tmenv slotsig) - | TFSharpClass | TFSharpInterface | TFSharpStruct | TFSharpEnum -> x.fsobjmodel_kind + | _ -> x.fsobjmodel_kind) fsobjmodel_vslots = x.fsobjmodel_vslots |> List.map (remapValRef tmenv) - fsobjmodel_rfields = x.fsobjmodel_rfields |> remapRecdFields ctxt tmenv - } + fsobjmodel_rfields = x.fsobjmodel_rfields |> remapRecdFields ctxt tmenv } and remapTyconRepr ctxt tmenv repr = match repr with - | TFSharpObjectRepr x -> TFSharpObjectRepr (remapFsObjData ctxt tmenv x) - | TFSharpRecdRepr x -> TFSharpRecdRepr (remapRecdFields ctxt tmenv x) - | TFSharpUnionRepr x -> TFSharpUnionRepr (remapUnionCases ctxt tmenv x) + | TFSharpTyconRepr x -> TFSharpTyconRepr (remapFsObjData ctxt tmenv x) | TILObjectRepr _ -> failwith "cannot remap IL type definitions" #if !NO_TYPEPROVIDERS | TProvidedNamespaceRepr _ -> repr @@ -9553,7 +9604,7 @@ let IsSimpleSyntacticConstantExpr g inputExpr = valRefEq g vref g.bitwise_unary_not_vref || valRefEq g vref g.enum_vref) -> checkExpr vrefs arg - // compare, =, <>, +, -, <, >, <=, >=, <<<, >>>, &&& + // compare, =, <>, +, -, <, >, <=, >=, <<<, >>>, &&&, |||, ^^^ | BinopExpr g (vref, arg1, arg2) when (valRefEq g vref g.equals_operator_vref || valRefEq g vref g.compare_operator_vref || @@ -9566,12 +9617,13 @@ let IsSimpleSyntacticConstantExpr g inputExpr = valRefEq g vref g.unchecked_addition_vref || valRefEq g vref g.unchecked_multiply_vref || valRefEq g vref g.unchecked_subtraction_vref || - // Note: division and modulus can raise exceptions, so are not included + // Note: division and modulus can raise exceptions, so are not included valRefEq g vref g.bitwise_shift_left_vref || valRefEq g vref g.bitwise_shift_right_vref || valRefEq g vref g.bitwise_xor_vref || valRefEq g vref g.bitwise_and_vref || - valRefEq g vref g.bitwise_or_vref) && + valRefEq g vref g.bitwise_or_vref || + valRefEq g vref g.exponentiation_vref) && (not (typeEquiv g (tyOfExpr g arg1) g.string_ty) && not (typeEquiv g (tyOfExpr g arg1) g.decimal_ty) ) -> checkExpr vrefs arg1 && checkExpr vrefs arg2 | Expr.Val (vref, _, _) -> vref.Deref.IsCompiledAsStaticPropertyWithoutField || vrefs.Contains vref.Stamp @@ -9764,6 +9816,36 @@ let rec EvalAttribArgExpr suppressLangFeatureCheck (g: TcGlobals) (x: Expr) = | _ -> errorR (Error ( FSComp.SR.tastNotAConstantExpression(), x.Range)) x + | SpecificBinopExpr g g.bitwise_xor_vref (arg1, arg2) -> + checkFeature() + let v1 = EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g arg1 + + match v1 with + | IntegerConstExpr -> + EvalArithBinOp ((^^^), (^^^), (^^^), (^^^), (^^^), (^^^), (^^^), (^^^), ignore2, ignore2) v1 (EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g arg2) + | _ -> + errorR (Error (FSComp.SR.tastNotAConstantExpression(), x.Range)) + x + | SpecificBinopExpr g g.exponentiation_vref (arg1, arg2) -> + checkFeature() + let v1 = EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g arg1 + + match v1 with + | FloatConstExpr -> + EvalArithBinOp (ignore2, ignore2, ignore2, ignore2, ignore2, ignore2, ignore2, ignore2, ( ** ), ( ** )) v1 (EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g arg2) + | _ -> + errorR (Error (FSComp.SR.tastNotAConstantExpression(), x.Range)) + x + | SpecificUnopExpr g g.bitwise_unary_not_vref arg1 -> + checkFeature() + let v1 = EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g arg1 + + match v1 with + | IntegerConstExpr -> + EvalArithUnOp ((~~~), (~~~), (~~~), (~~~), (~~~), (~~~), (~~~), (~~~), ignore, ignore) (EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g arg1) + | _ -> + errorR (Error ( FSComp.SR.tastNotAConstantExpression(), x.Range)) + x | SpecificUnopExpr g g.unchecked_unary_minus_vref arg1 -> checkFeature() let v1 = EvalAttribArgExpr SuppressLanguageFeatureCheck.Yes g arg1 @@ -9987,7 +10069,6 @@ let (|CompiledInt32RangeForEachExpr|_|) g expr = match expr with | CompiledForEachExpr g (_, RangeInt32Step g (startExpr, step, finishExpr), elemVar, bodyExpr, ranges) -> Some (startExpr, step, finishExpr, elemVar, bodyExpr, ranges) - | _ -> None | _ -> None @@ -10631,4 +10712,59 @@ let rec serializeEntity path (entity: Entity) = use out = FileSystem.OpenFileForWriteShim(path, fileMode = System.IO.FileMode.Create) out.WriteAllText(json) +let updateSeqTypeIsPrefix (fsharpCoreMSpec: ModuleOrNamespace) = + let findModuleOrNamespace (name: string) (entity: Entity) = + if not entity.IsModuleOrNamespace then + None + else + entity.ModuleOrNamespaceType.ModulesAndNamespacesByDemangledName + |> Map.tryFind name + + findModuleOrNamespace "Microsoft" fsharpCoreMSpec + |> Option.bind (findModuleOrNamespace "FSharp") + |> Option.bind (findModuleOrNamespace "Collections") + |> Option.iter (fun collectionsEntity -> + collectionsEntity.ModuleOrNamespaceType.AllEntitiesByLogicalMangledName + |> Map.tryFind "seq`1" + |> Option.iter (fun seqEntity -> + seqEntity.entity_flags <- + EntityFlags( + false, + seqEntity.entity_flags.IsModuleOrNamespace, + seqEntity.entity_flags.PreEstablishedHasDefaultConstructor, + seqEntity.entity_flags.HasSelfReferentialConstructor, + seqEntity.entity_flags.IsStructRecordOrUnionType + ) + ) + ) + #endif //!FABLE_COMPILER + +let isTyparOrderMismatch (tps: Typars) (argInfos: CurriedArgInfos) = + let rec getTyparName (ty: TType) : string list = + match ty with + | TType_var (typar = tp) -> + if tp.Id.idText <> unassignedTyparName then + [ tp.Id.idText ] + else + match tp.Solution with + | None -> [] + | Some solutionType -> getTyparName solutionType + | TType_fun(domainType, rangeType, _) -> [ yield! getTyparName domainType; yield! getTyparName rangeType ] + | TType_anon(tys = ti) + | TType_app (typeInstantiation = ti) + | TType_tuple (elementTypes = ti) -> List.collect getTyparName ti + | _ -> [] + + let typarNamesInArguments = + argInfos + |> List.collect (fun argInfos -> + argInfos + |> List.collect (fun (ty, _) -> getTyparName ty)) + |> List.distinct + + let typarNamesInDefinition = + tps |> List.map (fun (tp: Typar) -> tp.Id.idText) |> List.distinct + + typarNamesInArguments.Length = typarNamesInDefinition.Length + && typarNamesInArguments <> typarNamesInDefinition diff --git a/src/fcs-fable/src/Compiler/TypedTree/TypedTreeOps.fsi b/src/fcs-fable/src/Compiler/TypedTree/TypedTreeOps.fsi index 535a798277..517733af92 100755 --- a/src/fcs-fable/src/Compiler/TypedTree/TypedTreeOps.fsi +++ b/src/fcs-fable/src/Compiler/TypedTree/TypedTreeOps.fsi @@ -633,6 +633,10 @@ val destAnyParTy: TcGlobals -> TType -> Typar val destMeasureTy: TcGlobals -> TType -> Measure +val destAnonRecdTy: TcGlobals -> TType -> AnonRecdTypeInfo * TTypes + +val destStructAnonRecdTy: TcGlobals -> TType -> TTypes + val tryDestForallTy: TcGlobals -> TType -> Typars * TType val isFunTy: TcGlobals -> TType -> bool @@ -651,6 +655,8 @@ val isAnonRecdTy: TcGlobals -> TType -> bool val isUnionTy: TcGlobals -> TType -> bool +val isStructUnionTy: TcGlobals -> TType -> bool + val isReprHiddenTy: TcGlobals -> TType -> bool val isFSharpObjModelTy: TcGlobals -> TType -> bool @@ -1698,6 +1704,27 @@ val isClassTy: TcGlobals -> TType -> bool /// Determine if a type is an enum type val isEnumTy: TcGlobals -> TType -> bool +/// Determine if a type is a signed integer type +val isSignedIntegerTy: TcGlobals -> TType -> bool + +/// Determine if a type is an unsigned integer type +val isUnsignedIntegerTy: TcGlobals -> TType -> bool + +/// Determine if a type is an integer type +val isIntegerTy: TcGlobals -> TType -> bool + +/// Determine if a type is a floating point type +val isFpTy: TcGlobals -> TType -> bool + +/// Determine if a type is a decimal type +val isDecimalTy: TcGlobals -> TType -> bool + +/// Determine if a type is a non-decimal numeric type type +val isNonDecimalNumericType: TcGlobals -> TType -> bool + +/// Determine if a type is a numeric type type +val isNumericType: TcGlobals -> TType -> bool + /// Determine if a type is a struct, record or union type val isStructRecordOrUnionTyconTy: TcGlobals -> TType -> bool @@ -2708,4 +2735,13 @@ val tryAddExtensionAttributeIfNotAlreadyPresent: /// Serialize an entity to a very basic json structure. val serializeEntity: path: string -> entity: Entity -> unit +/// Updates the IsPrefixDisplay to false for the Microsoft.FSharp.Collections.seq`1 entity +/// Meant to be called with the FSharp.Core module spec right after it was unpickled. +val updateSeqTypeIsPrefix: fsharpCoreMSpec: ModuleOrNamespace -> unit + #endif //!FABLE_COMPILER + +/// Check if the order of defined typars is different from the order of used typars in the curried arguments. +/// If this is the case, a generated signature would require explicit typars. +/// See https://github.com/dotnet/fsharp/issues/15175 +val isTyparOrderMismatch: Typars -> CurriedArgInfos -> bool diff --git a/src/fcs-fable/src/Compiler/TypedTree/TypedTreePickle.fs b/src/fcs-fable/src/Compiler/TypedTree/TypedTreePickle.fs index 526b8efc7e..f1b5d53c5f 100644 --- a/src/fcs-fable/src/Compiler/TypedTree/TypedTreePickle.fs +++ b/src/fcs-fable/src/Compiler/TypedTree/TypedTreePickle.fs @@ -703,7 +703,7 @@ let pickleObjWithDanglingCcus inMem file g scope p x = oentities=NodeOutTable<_, _>.Create((fun (tc: Tycon) -> tc.Stamp), (fun tc -> tc.LogicalName), (fun tc -> tc.Range), id , "otycons") otypars=NodeOutTable<_, _>.Create((fun (tp: Typar) -> tp.Stamp), (fun tp -> tp.DisplayName), (fun tp -> tp.Range), id , "otypars") ovals=NodeOutTable<_, _>.Create((fun (v: Val) -> v.Stamp), (fun v -> v.LogicalName), (fun v -> v.Range), id , "ovals") - oanoninfos=NodeOutTable<_, _>.Create((fun (v: AnonRecdTypeInfo) -> v.Stamp), (fun v -> string v.Stamp), (fun _ -> range0), id, "oanoninfos") + oanoninfos=NodeOutTable<_, _>.Create((fun (v: AnonRecdTypeInfo) -> v.Stamp), (fun v -> string v.IlTypeName), (fun _ -> range0), id, "oanoninfos") ostrings=Table<_>.Create "ostrings" onlerefs=Table<_>.Create "onlerefs" opubpaths=Table<_>.Create "opubpaths" @@ -732,7 +732,7 @@ let pickleObjWithDanglingCcus inMem file g scope p x = oentities=NodeOutTable<_, _>.Create((fun (tc: Tycon) -> tc.Stamp), (fun tc -> tc.LogicalName), (fun tc -> tc.Range), id , "otycons") otypars=NodeOutTable<_, _>.Create((fun (tp: Typar) -> tp.Stamp), (fun tp -> tp.DisplayName), (fun tp -> tp.Range), id , "otypars") ovals=NodeOutTable<_, _>.Create((fun (v: Val) -> v.Stamp), (fun v -> v.LogicalName), (fun v -> v.Range), (fun osgn -> osgn), "ovals") - oanoninfos=NodeOutTable<_, _>.Create((fun (v: AnonRecdTypeInfo) -> v.Stamp), (fun v -> string v.Stamp), (fun _ -> range0), id, "oanoninfos") + oanoninfos=NodeOutTable<_, _>.Create((fun (v: AnonRecdTypeInfo) -> v.Stamp), (fun v -> string v.IlTypeName), (fun _ -> range0), id, "oanoninfos") ostrings=Table<_>.Create "ostrings (fake)" opubpaths=Table<_>.Create "opubpaths (fake)" onlerefs=Table<_>.Create "onlerefs (fake)" @@ -764,11 +764,10 @@ let pickleObjWithDanglingCcus inMem file g scope p x = st2 st2.os - let finalBytes = phase2bytes (st1.os :> System.IDisposable).Dispose() - finalBytes + phase2bytes -let check (ilscope: ILScopeRef) (inMap : NodeInTable<_, _>) = +let check (ilscope: ILScopeRef) (inMap: NodeInTable<_, _>) = for i = 0 to inMap.Count - 1 do let n = inMap.Get i if not (inMap.IsLinked n) then @@ -1671,16 +1670,20 @@ let _ = fill_p_ty2 (fun isStructThisArgPos ty st -> p_ty2 isStructThisArgPos r st | TType_measure unt -> - p_byte 6 st; p_measure_expr unt st + p_byte 6 st + p_measure_expr unt st | TType_ucase (uc, tinst) -> - p_byte 7 st; p_tup2 p_ucref p_tys (uc, tinst) st + p_byte 7 st + p_ucref uc st + p_tys tinst st // p_byte 8 taken by TType_tuple above | TType_anon (anonInfo, l) -> p_byte 9 st p_anonInfo anonInfo st - p_tys l st) + p_tys l st + ) let _ = fill_u_ty (fun st -> let tag = u_byte st @@ -1797,32 +1800,88 @@ let u_istype st = | 2 -> Namespace true | _ -> ufailwith st "u_istype" -let u_cpath st = let a, b = u_tup2 u_ILScopeRef (u_list (u_tup2 u_string u_istype)) st in (CompPath(a, b)) +let u_cpath st = + let a, b = u_tup2 u_ILScopeRef (u_list (u_tup2 u_string u_istype)) st + CompPath(a, b) let rec p_tycon_repr x st = // The leading "p_byte 1" and "p_byte 0" come from the F# 2.0 format, which used an option value at this point. + match x with - | TFSharpRecdRepr fs -> p_byte 1 st; p_byte 0 st; p_rfield_table fs st; false - | TFSharpUnionRepr x -> p_byte 1 st; p_byte 1 st; p_array p_unioncase_spec x.CasesTable.CasesByIndex st; false - | TAsmRepr ilTy -> p_byte 1 st; p_byte 2 st; p_ILType ilTy st; false - | TFSharpObjectRepr r -> p_byte 1 st; p_byte 3 st; p_tycon_objmodel_data r st; false - | TMeasureableRepr ty -> p_byte 1 st; p_byte 4 st; p_ty ty st; false - | TNoRepr -> p_byte 0 st; false + // Records + | TFSharpTyconRepr { fsobjmodel_rfields = fs; fsobjmodel_kind = TFSharpRecord } -> + p_byte 1 st + p_byte 0 st + p_rfield_table fs st + false + + // Unions without static fields + | TFSharpTyconRepr { fsobjmodel_cases = x; fsobjmodel_kind = TFSharpUnion; fsobjmodel_rfields = fs } when fs.FieldsByIndex.Length = 0 -> + p_byte 1 st + p_byte 1 st + p_array p_unioncase_spec x.CasesTable.CasesByIndex st + false + + // Unions with static fields, added to format + | TFSharpTyconRepr ({ fsobjmodel_cases = cases; fsobjmodel_kind = TFSharpUnion } as r) -> + if st.oglobals.compilingFSharpCore then + let fields = r.fsobjmodel_rfields.FieldsByIndex + let firstFieldRange = fields[0].DefinitionRange + let allFieldsText = fields |> Array.map (fun f -> f.LogicalName) |> String.concat System.Environment.NewLine + raise (Error(FSComp.SR.pickleFsharpCoreBackwardsCompatible("fields in union",allFieldsText), firstFieldRange)) + + p_byte 2 st + p_array p_unioncase_spec cases.CasesTable.CasesByIndex st + p_tycon_objmodel_data r st + false + + | TAsmRepr ilTy -> + p_byte 1 st + p_byte 2 st + p_ILType ilTy st + false + + | TFSharpTyconRepr r -> + p_byte 1 st + p_byte 3 st + p_tycon_objmodel_data r st + false + + | TMeasureableRepr ty -> + p_byte 1 st + p_byte 4 st + p_ty ty st + false + + | TNoRepr -> + p_byte 0 st + false + #if !NO_TYPEPROVIDERS | TProvidedTypeRepr info -> if info.IsErased then // Pickle erased type definitions as a NoRepr - p_byte 0 st; false + p_byte 0 st + false else // Pickle generated type definitions as a TAsmRepr - p_byte 1 st; p_byte 2 st; p_ILType (mkILBoxedType(ILTypeSpec.Create(TypeProviders.GetILTypeRefOfProvidedType(info.ProvidedType, range0), []))) st; true - | TProvidedNamespaceRepr _ -> p_byte 0 st; false + p_byte 1 st + p_byte 2 st + p_ILType (mkILBoxedType(ILTypeSpec.Create(TypeProviders.GetILTypeRefOfProvidedType(info.ProvidedType, range0), []))) st + true + + | TProvidedNamespaceRepr _ -> + p_byte 0 st + false #endif - | TILObjectRepr (TILObjectReprData (_, _, td)) -> error (Failure("Unexpected IL type definition"+td.Name)) + + | TILObjectRepr (TILObjectReprData (_, _, td)) -> + error (Failure("Unexpected IL type definition"+td.Name)) and p_tycon_objmodel_data x st = - p_tup3 p_tycon_objmodel_kind (p_vrefs "vslots") p_rfield_table - (x.fsobjmodel_kind, x.fsobjmodel_vslots, x.fsobjmodel_rfields) st + p_tycon_objmodel_kind x.fsobjmodel_kind st + p_vrefs "vslots" x.fsobjmodel_vslots st + p_rfield_table x.fsobjmodel_rfields st and p_attribs_ext f x st = p_list_ext f p_attrib x st @@ -1947,6 +2006,14 @@ and p_tycon_objmodel_kind x st = | TFSharpStruct -> p_byte 2 st | TFSharpDelegate ss -> p_byte 3 st; p_slotsig ss st | TFSharpEnum -> p_byte 4 st + | TFSharpUnion -> + if st.oglobals.compilingFSharpCore then + raise (Error(FSComp.SR.pickleFsharpCoreBackwardsCompatible("union as FSharpTyconKind ",st.ofile), range.Zero)) + p_byte 5 st + | TFSharpRecord -> + if st.oglobals.compilingFSharpCore then + raise (Error(FSComp.SR.pickleFsharpCoreBackwardsCompatible("record as FSharpTyconKind ",st.ofile), range.Zero)) + p_byte 6 st and p_vrefFlags x st = match x with @@ -1996,12 +2063,23 @@ and u_tycon_repr st = | 1 -> let tag2 = u_byte st match tag2 with + // Records historically use a different format to other FSharpTyconRepr | 0 -> let v = u_rfield_table st - (fun _flagBit -> TFSharpRecdRepr v) + (fun _flagBit -> + TFSharpTyconRepr + { + fsobjmodel_cases = Construct.MakeUnionCases [] + fsobjmodel_kind=TFSharpRecord + fsobjmodel_vslots=[] + fsobjmodel_rfields=v + }) + + // Unions without static fields historically use a different format to other FSharpTyconRepr | 1 -> let v = u_list u_unioncase_spec st (fun _flagBit -> Construct.MakeUnionRepr v) + | 2 -> let v = u_ILType st // This is the F# 3.0 extension to the format used for F# provider-generated types, which record an ILTypeRef in the format @@ -2027,18 +2105,32 @@ and u_tycon_repr st = TNoRepr else TAsmRepr v) + | 3 -> let v = u_tycon_objmodel_data st - (fun _flagBit -> TFSharpObjectRepr v) + (fun _flagBit -> TFSharpTyconRepr v) + | 4 -> let v = u_ty st (fun _flagBit -> TMeasureableRepr v) + | _ -> ufailwith st "u_tycon_repr" + + // Unions with static fields use a different format to other FSharpTyconRepr + | 2 -> + let cases = u_array u_unioncase_spec st + let data = u_tycon_objmodel_data st + fun _flagBit -> TFSharpTyconRepr { data with fsobjmodel_cases = Construct.MakeUnionCases (Array.toList cases) } | _ -> ufailwith st "u_tycon_repr" and u_tycon_objmodel_data st = let x1, x2, x3 = u_tup3 u_tycon_objmodel_kind u_vrefs u_rfield_table st - {fsobjmodel_kind=x1; fsobjmodel_vslots=x2; fsobjmodel_rfields=x3 } + { + fsobjmodel_cases = Construct.MakeUnionCases [] + fsobjmodel_kind=x1 + fsobjmodel_vslots=x2 + fsobjmodel_rfields=x3 + } and u_attribs_ext extraf st = u_list_ext extraf u_attrib st and u_unioncase_spec st = @@ -2230,6 +2322,8 @@ and u_tycon_objmodel_kind st = | 2 -> TFSharpStruct | 3 -> u_slotsig st |> TFSharpDelegate | 4 -> TFSharpEnum + | 5 -> TFSharpUnion + | 6 -> TFSharpRecord | _ -> ufailwith st "u_tycon_objmodel_kind" and u_vrefFlags st = diff --git a/src/fcs-fable/src/Compiler/Utilities/FileSystem.fs b/src/fcs-fable/src/Compiler/Utilities/FileSystem.fs index 7b118e719f..0a2b8106c5 100644 --- a/src/fcs-fable/src/Compiler/Utilities/FileSystem.fs +++ b/src/fcs-fable/src/Compiler/Utilities/FileSystem.fs @@ -954,6 +954,8 @@ type internal ByteStream = max: int } + member b.IsEOF = (b.pos >= b.max) + member b.ReadByte() = if b.pos >= b.max then failwith "end of stream" diff --git a/src/fcs-fable/src/Compiler/Utilities/FileSystem.fsi b/src/fcs-fable/src/Compiler/Utilities/FileSystem.fsi index 3ee9bb119b..f14df3ee9c 100644 --- a/src/fcs-fable/src/Compiler/Utilities/FileSystem.fsi +++ b/src/fcs-fable/src/Compiler/Utilities/FileSystem.fsi @@ -381,16 +381,27 @@ type internal ByteMemory with /// Creates a ByteMemory object that is backed by a byte array. static member FromArray: bytes: byte[] -> ByteMemory + /// Gets a ByteMemory object that is empty + static member Empty: ByteMemory + [] type internal ByteStream = + + member IsEOF: bool + member ReadByte: unit -> byte + member ReadBytes: int -> ReadOnlyByteMemory + member ReadUtf8String: int -> string + member Position: int + static member FromBytes: ReadOnlyByteMemory * start: int * length: int -> ByteStream #if LAZY_UNPICKLE member CloneAndSeek: int -> ByteStream + member Skip: int -> unit #endif diff --git a/src/fcs-fable/src/Compiler/Utilities/InternalCollections.fs b/src/fcs-fable/src/Compiler/Utilities/InternalCollections.fs index 96aaf9b684..f10cd10e19 100755 --- a/src/fcs-fable/src/Compiler/Utilities/InternalCollections.fs +++ b/src/fcs-fable/src/Compiler/Utilities/InternalCollections.fs @@ -80,8 +80,8 @@ type internal AgedLookup<'Token, 'Key, 'Value when 'Value: not struct>(keepStron | Weak (weakReference) -> #if FX_NO_GENERIC_WEAKREFERENCE match weakReference.Target with - | null -> () - | value -> yield key, (value :?> 'Value) + | Null -> () + | NonNull value -> yield key, (value :?> 'Value) ] #else match weakReference.TryGetTarget() with diff --git a/src/fcs-fable/src/Compiler/Utilities/illib.fs b/src/fcs-fable/src/Compiler/Utilities/illib.fs index 1206eb22aa..3172fc594b 100644 --- a/src/fcs-fable/src/Compiler/Utilities/illib.fs +++ b/src/fcs-fable/src/Compiler/Utilities/illib.fs @@ -139,14 +139,14 @@ type InlineDelayInit<'T when 'T: not struct> = } val mutable store: 'T - val mutable func: Func<'T> + val mutable func: Func<'T> MaybeNull member x.Value = match x.func with | null -> x.store | _ -> let res = LazyInitializer.EnsureInitialized(&x.store, x.func) - x.func <- Unchecked.defaultof<_> + x.func <- null res #endif //!FABLE_COMPILER @@ -194,7 +194,7 @@ module Array = Array.length l1 = Array.length l2 && Array.forall2 p l1 l2 let order (eltOrder: IComparer<'T>) = - { new IComparer> with + { new IComparer<'T array> with member _.Compare(xs, ys) = let c = compare xs.Length ys.Length @@ -347,6 +347,12 @@ module Array = let endsWith (suffix: _[]) (whole: _[]) = isSubArray suffix whole (whole.Length - suffix.Length) + let prepend item (array: 'T[]) = + let res = Array.zeroCreate (array.Length + 1) + res[0] <- item + Array.blit array 0 res 1 array.Length + res + module Option = let mapFold f s opt = @@ -585,6 +591,11 @@ module List = | [ _ ] -> true | _ -> false + let prependIfSome x l = + match x with + | Some x -> x :: l + | _ -> l + module ResizeArray = /// Split a ResizeArray into an array of smaller chunks. @@ -635,6 +646,19 @@ module ResizeArray = // in order to prevent long-term storage of those values chunkBySize maxArrayItemCount f inp +#if !FABLE_COMPILER +module Span = + let inline exists ([] predicate: 'T -> bool) (span: Span<'T>) = + let mutable state = false + let mutable i = 0 + + while not state && i < span.Length do + state <- predicate span[i] + i <- i + 1 + + state +#endif + module ValueOptionInternal = let inline ofOption x = @@ -642,7 +666,7 @@ module ValueOptionInternal = | Some x -> ValueSome x | None -> ValueNone - let inline bind f x = + let inline bind ([] f) x = match x with | ValueSome x -> f x | ValueNone -> ValueNone @@ -1103,11 +1127,7 @@ type internal StampedDictionary<'T, 'U>(keyComparer: IEqualityComparer<'T>) = match valueReplaceFunc oldVal with | None -> () -#if FABLE_COMPILER - | Some newVal -> table[key] <- lazy (stamp, newVal) -#else | Some newVal -> table.TryUpdate(key, lazy (stamp, newVal), v) |> ignore -#endif | _ -> () member _.GetAll() = diff --git a/src/fcs-fable/src/Compiler/Utilities/illib.fsi b/src/fcs-fable/src/Compiler/Utilities/illib.fsi index 5a5c1afd95..43033f9d16 100644 --- a/src/fcs-fable/src/Compiler/Utilities/illib.fsi +++ b/src/fcs-fable/src/Compiler/Utilities/illib.fsi @@ -26,8 +26,8 @@ module internal PervasiveAutoOpens = /// Returns true if the argument is non-null. val inline isNotNull: x: 'T -> bool when 'T: null - /// Indicates that a type may be null. 'MaybeNull' used internally in the F# compiler as unchecked - /// replacement for 'string?' for example for future FS-1060. + /// Indicates that a type may be null. 'MaybeNull' is used internally in the F# compiler as + /// replacement for 'string?' to align with FS-1060. type 'T MaybeNull when 'T: null and 'T: not struct = 'T /// Asserts the argument is non-null and raises an exception if it is @@ -134,6 +134,8 @@ module internal Array = /// Returns true if one array has trailing elements equal to another's. val endsWith: suffix: 'a[] -> whole: 'a[] -> bool when 'a: equality + val prepend: item: 'T -> array: 'T[] -> 'T[] + module internal Option = val mapFold: f: ('a -> 'b -> 'c * 'a) -> s: 'a -> opt: 'b option -> 'c option * 'a @@ -219,6 +221,8 @@ module internal List = val isSingleton: xs: 'T list -> bool + val prependIfSome: x: 'a option -> l: 'a list -> 'a list + module internal ResizeArray = /// Split a ResizeArray into an array of smaller chunks. @@ -231,6 +235,11 @@ module internal ResizeArray = /// probability of smaller collections. Stop-the-world is still possible, just less likely. val mapToSmallArrayChunks: f: ('t -> 'a) -> inp: ResizeArray<'t> -> 'a[][] +#if !FABLE_COMPILER +module internal Span = + val inline exists: predicate: ('T -> bool) -> span: Span<'T> -> bool +#endif + module internal ValueOptionInternal = val inline ofOption: x: 'a option -> 'a voption diff --git a/src/fcs-fable/src/Compiler/Utilities/lib.fs b/src/fcs-fable/src/Compiler/Utilities/lib.fs index 3a938f425b..e61d9a8fd1 100755 --- a/src/fcs-fable/src/Compiler/Utilities/lib.fs +++ b/src/fcs-fable/src/Compiler/Utilities/lib.fs @@ -6,9 +6,7 @@ open System open System.Collections.Generic open System.IO open System.Text -open System.Threading open System.Threading.Tasks -open System.Runtime.InteropServices open Internal.Utilities.Collections open Internal.Utilities.Library @@ -31,7 +29,10 @@ let isEnvVarSet s = let GetEnvInteger e dflt = match Environment.GetEnvironmentVariable(e) with null -> dflt | t -> try int t with _ -> dflt #endif -let dispose (x:IDisposable) = match x with null -> () | x -> x.Dispose() +let dispose (x: IDisposable MaybeNull) = + match x with + | Null -> () + | NonNull x -> x.Dispose() //------------------------------------------------------------------------- // Library: bits @@ -336,16 +337,9 @@ type Graph<'Data, 'Id when 'Id : comparison and 'Id : equality> // with care. //---------------------------------------------------------------------------- -// The following DEBUG code does not currently compile. -//#if DEBUG -//type 'T NonNullSlot = 'T option -//let nullableSlotEmpty() = None -//let nullableSlotFull(x) = Some x -//#else type NonNullSlot<'T> = 'T let nullableSlotEmpty() = Unchecked.defaultof<'T> let nullableSlotFull x = x -//#endif //--------------------------------------------------------------------------- // Caches, mainly for free variables @@ -354,7 +348,7 @@ let nullableSlotFull x = x type cache<'T> = { mutable cacheVal: 'T NonNullSlot } let newCache() = { cacheVal = nullableSlotEmpty() } -let inline cached cache resF = +let inline cached cache ([] resF) = match box cache.cacheVal with | null -> let res = resF() @@ -363,7 +357,7 @@ let inline cached cache resF = | _ -> cache.cacheVal -let inline cacheOptByref (cache: byref<'T option>) f = +let inline cacheOptByref (cache: byref<'T option>) ([] f) = match cache with | Some v -> v | None -> @@ -374,7 +368,7 @@ let inline cacheOptByref (cache: byref<'T option>) f = // REVIEW: this is only used because we want to mutate a record field, // and because you cannot take a byref<_> of such a thing directly, // we cannot use 'cacheOptByref'. If that is changed, this can be removed. -let inline cacheOptRef (cache: _ ref) f = +let inline cacheOptRef (cache: _ ref) ([] f) = match cache.Value with | Some v -> v | None -> @@ -393,53 +387,6 @@ type Dumper(x:obj) = member self.Dump = sprintf "%A" x #endif -#if !FABLE_COMPILER - -//--------------------------------------------------------------------------- -// EnableHeapTerminationOnCorruption() -//--------------------------------------------------------------------------- - -// USAGE: call UnmanagedProcessExecutionOptions.EnableHeapTerminationOnCorruption() from "main()". -// Note: This is not SDL required but recommended. -module UnmanagedProcessExecutionOptions = - - [] - extern UIntPtr private GetProcessHeap() - - [] - extern bool private HeapSetInformation( - UIntPtr _HeapHandle, - UInt32 _HeapInformationClass, - UIntPtr _HeapInformation, - UIntPtr _HeapInformationLength) - - [] - extern UInt32 private GetLastError() - - // Translation of C# from http://swikb/v1/DisplayOnlineDoc.aspx?entryID=826 and copy in bug://5018 - [] - let EnableHeapTerminationOnCorruption() = - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) && Environment.OSVersion.Version.Major >= 6 && // If OS is Vista or higher - Environment.Version.Major < 3) then // and CLR not 3.0 or higher - // "The flag HeapSetInformation sets is available in Windows XP SP3 and later. - // The data structure used for heap information is available on earlier versions of Windows. - // The call will either return TRUE (found and set the flag) or false (flag not found). - // Not a problem in native code, so the program will merrily continue running. - // In managed code, the call to HeapSetInformation is a p/invoke. - // If HeapSetInformation returns FALSE then an exception will be thrown. - // If we are not running an OS which supports this (XP SP3, Vista, Server 2008, and Win7) - // then the call should not be made." -- see bug://5018. - // See also: - // http://blogs.msdn.com/michael_howard/archive/2008/02/18/faq-about-heapsetinformation-in-windows-vista-and-heap-based-buffer-overruns.aspx - let HeapEnableTerminationOnCorruption = 1u : uint32 - if not (HeapSetInformation(GetProcessHeap(), HeapEnableTerminationOnCorruption, UIntPtr.Zero, UIntPtr.Zero)) then - raise (System.Security.SecurityException( - "Unable to enable unmanaged process execution option TerminationOnCorruption. " + - "HeapSetInformation() returned FALSE; LastError = 0x" + - GetLastError().ToString("X").PadLeft(8, '0') + ".")) - -#endif //!FABLE_COMPILER - [] type MaybeLazy<'T> = | Strict of 'T diff --git a/src/fcs-fable/src/Compiler/Utilities/lib.fsi b/src/fcs-fable/src/Compiler/Utilities/lib.fsi index 9422724954..9fc282c007 100644 --- a/src/fcs-fable/src/Compiler/Utilities/lib.fsi +++ b/src/fcs-fable/src/Compiler/Utilities/lib.fsi @@ -249,13 +249,6 @@ val inline cacheOptRef: cache: 'a option ref -> f: (unit -> 'a) -> 'a val inline tryGetCacheValue: cache: cache<'a> -> NonNullSlot<'a> voption -#if !FABLE_COMPILER - -module UnmanagedProcessExecutionOptions = - val EnableHeapTerminationOnCorruption: unit -> unit - -#endif //!FABLE_COMPILER - [] type MaybeLazy<'T> = | Strict of 'T diff --git a/src/fcs-fable/src/Compiler/Utilities/range.fs b/src/fcs-fable/src/Compiler/Utilities/range.fs index d234a1bf1a..8ac3503851 100755 --- a/src/fcs-fable/src/Compiler/Utilities/range.fs +++ b/src/fcs-fable/src/Compiler/Utilities/range.fs @@ -509,6 +509,20 @@ module Range = else m + let withStartEnd (startPos: Position) (endPos: Position) (r: range) = range (r.FileIndex, startPos, endPos) + + let withStart (startPos: Position) (r: range) = range (r.FileIndex, startPos, r.End) + + let withEnd (endPos: Position) (r: range) = range (r.FileIndex, r.Start, endPos) + + let shiftStart (lineDelta: int) (columnDelta: int) (r: range) = + let shiftedStart = mkPos (r.Start.Line + lineDelta) (r.StartColumn + columnDelta) + range (r.FileIndex, shiftedStart, r.End) + + let shiftEnd (lineDelta: int) (columnDelta: int) (r: range) = + let shiftedEnd = mkPos (r.End.Line + lineDelta) (r.EndColumn + columnDelta) + range (r.FileIndex, r.Start, shiftedEnd) + let rangeContainsRange (m1: range) (m2: range) = m1.FileIndex = m2.FileIndex && posGeq m2.Start m1.Start && posGeq m1.End m2.End diff --git a/src/fcs-fable/src/Compiler/Utilities/range.fsi b/src/fcs-fable/src/Compiler/Utilities/range.fsi index 100c57fb67..7b422fcd30 100755 --- a/src/fcs-fable/src/Compiler/Utilities/range.fsi +++ b/src/fcs-fable/src/Compiler/Utilities/range.fsi @@ -211,6 +211,21 @@ module Range = /// Union two ranges, taking their first occurring start position and last occurring end position val unionRanges: range -> range -> range + + // Create a new range with the given start and end positions + val withStartEnd: Position -> Position -> range -> range + + // Create a new range with the given start position + val withStart: Position -> range -> range + + // Create a new range with the given end position + val withEnd: Position -> range -> range + + // Create a new range with the start position shifted by the given deltas + val shiftStart: int -> int -> range -> range + + // Create a new range with the end position shifted by the given deltas + val shiftEnd: int -> int -> range -> range /// Test to see if one range contains another range val rangeContainsRange: range -> range -> bool diff --git a/src/fcs-fable/src/Compiler/Utilities/sformat.fs b/src/fcs-fable/src/Compiler/Utilities/sformat.fs index 76334a297e..deffadf488 100644 --- a/src/fcs-fable/src/Compiler/Utilities/sformat.fs +++ b/src/fcs-fable/src/Compiler/Utilities/sformat.fs @@ -252,6 +252,10 @@ module TaggedText = let rightBracketAngle = tagPunctuation ">]" let star = tagOperator "*" let keywordNew = tagKeyword "new" + let keywordInline = tagKeyword "inline" + let keywordModule = tagKeyword "module" + let keywordNamespace = tagKeyword "namespace" + let punctuationUnit = tagPunctuation "()" #endif [] diff --git a/src/fcs-fable/src/Compiler/Utilities/sformat.fsi b/src/fcs-fable/src/Compiler/Utilities/sformat.fsi index 994bc75722..5b2467b9d7 100644 --- a/src/fcs-fable/src/Compiler/Utilities/sformat.fsi +++ b/src/fcs-fable/src/Compiler/Utilities/sformat.fsi @@ -210,6 +210,10 @@ module internal TaggedText = val internal rightBracketAngle: TaggedText val internal star: TaggedText val internal keywordNew: TaggedText + val internal keywordInline: TaggedText + val internal keywordModule: TaggedText + val internal keywordNamespace: TaggedText + val internal punctuationUnit: TaggedText type internal IEnvironment = /// Return to the layout-generation diff --git a/src/fcs-fable/src/Compiler/lex.fsl b/src/fcs-fable/src/Compiler/lex.fsl index 752ff47770..755c763a6b 100644 --- a/src/fcs-fable/src/Compiler/lex.fsl +++ b/src/fcs-fable/src/Compiler/lex.fsl @@ -1,9 +1,6 @@ // Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. { - -module internal FSharp.Compiler.Lexer - //------------------------------------------------------------------------ // The Lexer. Some of the complication arises from the fact it is // reused by the Visual Studio mode to do partial lexing reporting @@ -14,21 +11,14 @@ open System open System.Globalization open System.Text -open Internal.Utilities open Internal.Utilities.Library open Internal.Utilities.Library.Extras -open Internal.Utilities.Text.Lexing open FSharp.Compiler -open FSharp.Compiler.AbstractIL open FSharp.Compiler.DiagnosticsLogger open FSharp.Compiler.Features open FSharp.Compiler.IO -open FSharp.Compiler.Lexhelp -open FSharp.Compiler.ParseHelpers -open FSharp.Compiler.Parser open FSharp.Compiler.Syntax -open FSharp.Compiler.Text open FSharp.Compiler.Text.Range module Ranges = @@ -107,8 +97,6 @@ let get0OXB (s:string) (p:byref) l = else 'd' #endif -let formatError() = raise (new System.FormatException(SR.GetString("bad format string"))) - let parseBinaryUInt64 (s:string) = Convert.ToUInt64(s, 2) @@ -160,14 +148,18 @@ let checkExprOp (lexbuf:UnicodeLexing.Lexbuf) = if lexbuf.LexemeContains '$' then deprecatedWithError (FSComp.SR.lexCharNotAllowedInOperatorNames("$")) lexbuf.LexemeRange #endif + +let checkExprGreaterColonOp (lexbuf:UnicodeLexing.Lexbuf) = +#if FABLE_COMPILER + if lexbuf.LexemeContains (uint16 '$') then +#else + if lexbuf.LexemeContains '$' then +#endif + deprecatedWithError (FSComp.SR.lexCharNotAllowedInOperatorNames("$")) lexbuf.LexemeRange let unexpectedChar lexbuf = LEX_FAILURE (FSComp.SR.lexUnexpectedChar(lexeme lexbuf)) -/// Arbitrary value -[] -let StringCapacity = 100 - let startString args (lexbuf: UnicodeLexing.Lexbuf) = let buf = ByteBuffer.Create StringCapacity let m = lexbuf.LexemeRange @@ -250,11 +242,11 @@ let shouldStartFile args lexbuf (m:range) err tok = if (m.StartColumn <> 0 || m.StartLine <> 1) then fail args lexbuf err tok else tok -let evalIfDefExpression startPos reportLibraryOnlyFeatures langVersion args (lookup:string->bool) (lexed:string) = +let evalIfDefExpression startPos reportLibraryOnlyFeatures langVersion strictIndentation args (lookup: string -> bool) (lexed: string) = #if FABLE_COMPILER - let lexbuf = LexBuffer<_>.FromString (reportLibraryOnlyFeatures, langVersion, lexed) + let lexbuf = LexBuffer<_>.FromString (reportLibraryOnlyFeatures, langVersion, strictIndentation, lexed) #else - let lexbuf = LexBuffer.FromChars (reportLibraryOnlyFeatures, langVersion, lexed.ToCharArray ()) + let lexbuf = LexBuffer.FromChars (reportLibraryOnlyFeatures, langVersion, strictIndentation, lexed.ToCharArray ()) #endif lexbuf.StartPos <- startPos lexbuf.EndPos <- startPos @@ -386,7 +378,7 @@ let ident_char = let ident = ident_start_char ident_char* -rule token args skip = parse +rule token (args: LexArgs) (skip: bool) = parse | ident { Keywords.KeywordOrIdentifierToken args lexbuf (lexeme lexbuf) } @@ -404,6 +396,9 @@ rule token args skip = parse | "and!" { AND_BANG(false) } + + | "while!" + { WHILE_BANG } | ident '!' { let tok = Keywords.KeywordOrIdentifierToken args lexbuf (lexemeTrimRight lexbuf 1) @@ -654,11 +649,12 @@ rule token args skip = parse // Single quote in triple quote ok, others disallowed match args.stringNest with - | (_, LexerStringStyle.TripleQuote, _) :: _ -> () + | (_, LexerStringStyle.ExtendedInterpolated, _, _) :: _ + | (_, LexerStringStyle.TripleQuote, _, _) :: _ -> () | _ :: _ -> errorR(Error(FSComp.SR.lexSingleQuoteInSingleQuote(), m)) | [] -> () - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, LexerStringKind.String, m)) + if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, LexerStringKind.String, args.interpolationDelimiterLength, m)) else singleQuoteString (buf, fin, m, LexerStringKind.String, args) skip lexbuf } | '$' '"' '"' '"' @@ -669,55 +665,90 @@ rule token args skip = parse | _ :: _ -> errorR(Error(FSComp.SR.lexTripleQuoteInTripleQuote(), m)) | [] -> () - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, LexerStringKind.InterpolatedStringFirst, m)) + args.interpolationDelimiterLength <- 1 + if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, LexerStringKind.InterpolatedStringFirst, 1, m)) else tripleQuoteString (buf, fin, m, LexerStringKind.InterpolatedStringFirst, args) skip lexbuf } + | ('$'+) '"' '"' '"' + { let buf, fin, m = startString args lexbuf + + if lexbuf.SupportsFeature LanguageFeature.ExtendedStringInterpolation then + // Single quote in triple quote ok, others disallowed + match args.stringNest with + | _ :: _ -> errorR(Error(FSComp.SR.lexTripleQuoteInTripleQuote(), m)) + | [] -> () + + args.interpolationDelimiterLength <- lexeme lexbuf |> Seq.takeWhile (fun c -> c = '$') |> Seq.length + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.ExtendedInterpolated, LexerStringKind.InterpolatedStringFirst, args.interpolationDelimiterLength, m)) + else + extendedInterpolatedString (buf, fin, m, LexerStringKind.InterpolatedStringFirst, args) skip lexbuf + else + let result = + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, LexerStringKind.InterpolatedStringFirst, args.interpolationDelimiterLength, m)) + else + tripleQuoteString (buf, fin, m, LexerStringKind.InterpolatedStringFirst, args) skip lexbuf + fail args lexbuf (FSComp.SR.lexExtendedStringInterpolationNotSupported()) result + } + | '$' '"' { let buf,fin,m = startString args lexbuf // Single quote in triple quote ok, others disallowed match args.stringNest with - | (_, LexerStringStyle.TripleQuote, _) :: _ -> () + | (_, style, _, _) :: _ when style = LexerStringStyle.ExtendedInterpolated || style = LexerStringStyle.TripleQuote -> () | _ :: _ -> errorR(Error(FSComp.SR.lexSingleQuoteInSingleQuote(), m)) | _ -> () - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, LexerStringKind.InterpolatedStringFirst, m)) - else singleQuoteString (buf, fin, m, LexerStringKind.InterpolatedStringFirst, args) skip lexbuf } + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, LexerStringKind.InterpolatedStringFirst, args.interpolationDelimiterLength, m)) + else + singleQuoteString (buf, fin, m, LexerStringKind.InterpolatedStringFirst, args) skip lexbuf } | '"' '"' '"' { let buf, fin, m = startString args lexbuf + args.interpolationDelimiterLength <- 0 + // Single quote in triple quote ok, others disallowed match args.stringNest with | _ :: _ -> errorR(Error(FSComp.SR.lexTripleQuoteInTripleQuote(), m)) | _ -> () - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, LexerStringKind.String, m)) - else tripleQuoteString (buf, fin, m, LexerStringKind.String, args) skip lexbuf } + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, LexerStringKind.String, args.interpolationDelimiterLength, m)) + else + tripleQuoteString (buf, fin, m, LexerStringKind.String, args) skip lexbuf } | '@' '"' { let buf, fin, m = startString args lexbuf // Single quote in triple quote ok, others disallowed match args.stringNest with - | (_, LexerStringStyle.TripleQuote, _) :: _ -> () + | (_, LexerStringStyle.ExtendedInterpolated, _, _) :: _ + | (_, LexerStringStyle.TripleQuote, _, _) :: _ -> () | _ :: _ -> errorR(Error(FSComp.SR.lexSingleQuoteInSingleQuote(), m)) | _ -> () - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, LexerStringKind.String, m)) - else verbatimString (buf, fin, m, LexerStringKind.String, args) skip lexbuf } + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, LexerStringKind.String, args.interpolationDelimiterLength, m)) + else + verbatimString (buf, fin, m, LexerStringKind.String, args) skip lexbuf } | ("$@" | "@$") '"' { let buf, fin, m = startString args lexbuf // Single quote in triple quote ok, others disallowed match args.stringNest with - | (_, LexerStringStyle.TripleQuote, _) :: _ -> () + | (_, style, _, _) :: _ when style = LexerStringStyle.ExtendedInterpolated || style = LexerStringStyle.TripleQuote -> () | _ :: _ -> errorR(Error(FSComp.SR.lexSingleQuoteInSingleQuote(), m)) | _ -> () - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, LexerStringKind.InterpolatedStringFirst, m)) - else verbatimString (buf, fin, m, LexerStringKind.InterpolatedStringFirst, args) skip lexbuf } + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, LexerStringKind.InterpolatedStringFirst, args.interpolationDelimiterLength, m)) + else + verbatimString (buf, fin, m, LexerStringKind.InterpolatedStringFirst, args) skip lexbuf } | truewhite+ { if skip then token args skip lexbuf @@ -915,10 +946,10 @@ rule token args skip = parse { match args.stringNest with | [] -> () - | (counter, style, m) :: rest -> + | (counter, style, d, m) :: rest -> // Note, we do not update the 'm', any incomplete-interpolation error // will be reported w.r.t. the first '{' - args.stringNest <- (counter + 1, style, m) :: rest + args.stringNest <- (counter + 1, style, d, m) :: rest // To continue token-by-token lexing may involve picking up the new args.stringNes let cont = LexCont.Token(args.ifdefStack, args.stringNest) LBRACE cont @@ -931,25 +962,29 @@ rule token args skip = parse // We encounter a '}' in the expression token stream. First check if we're in an interpolated string expression // and continue the string if necessary match args.stringNest with - | (1, style, _) :: rest -> + | (1, LexerStringStyle.ExtendedInterpolated, delimLength, r) :: rest when delimLength > 1 -> + args.stringNest <- (1, LexerStringStyle.ExtendedInterpolated, delimLength - 1, r) :: rest + token args skip lexbuf + | (1, style, _, _) :: rest -> args.stringNest <- rest let buf, fin, m = startString args lexbuf if not skip then - STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, style, LexerStringKind.InterpolatedStringPart, m)) + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, style, LexerStringKind.InterpolatedStringPart, args.interpolationDelimiterLength, m)) else match style with | LexerStringStyle.Verbatim -> verbatimString (buf, fin, m, LexerStringKind.InterpolatedStringPart, args) skip lexbuf | LexerStringStyle.SingleQuote -> singleQuoteString (buf, fin, m, LexerStringKind.InterpolatedStringPart, args) skip lexbuf | LexerStringStyle.TripleQuote -> tripleQuoteString (buf, fin, m, LexerStringKind.InterpolatedStringPart, args) skip lexbuf + | LexerStringStyle.ExtendedInterpolated -> extendedInterpolatedString (buf, fin, m, LexerStringKind.InterpolatedStringPart, args) skip lexbuf - | (counter, style, m) :: rest -> + | (counter, style, d, m) :: rest -> // Note, we do not update the 'm', any incomplete-interpolation error // will be reported w.r.t. the first '{' - args.stringNest <- (counter - 1, style, m) :: rest + args.stringNest <- (counter - 1, style, d, m) :: rest let cont = LexCont.Token(args.ifdefStack, args.stringNest) RBRACE cont - | _ -> + | _ -> let cont = LexCont.Token(args.ifdefStack, args.stringNest) RBRACE cont } @@ -972,7 +1007,9 @@ rule token args skip = parse | ignored_op_char* ('@'|'^') op_char* { checkExprOp lexbuf; INFIX_AT_HAT_OP(lexeme lexbuf) } - | ignored_op_char* ('=' | "!=" | '<' | '>' | '$') op_char* { checkExprOp lexbuf; INFIX_COMPARE_OP(lexeme lexbuf) } + | ignored_op_char* ('=' | "!=" | '<' | '$') op_char* { checkExprOp lexbuf; INFIX_COMPARE_OP(lexeme lexbuf) } + + | ignored_op_char* ('>') op_char* { checkExprGreaterColonOp lexbuf; INFIX_COMPARE_OP(lexeme lexbuf) } | ignored_op_char* ('&') op_char* { checkExprOp lexbuf; INFIX_AMP_OP(lexeme lexbuf) } @@ -1015,7 +1052,7 @@ rule token args skip = parse { let m = lexbuf.LexemeRange let lookup id = List.contains id args.conditionalDefines let lexed = lexeme lexbuf - let isTrue, expr = evalIfDefExpression lexbuf.StartPos lexbuf.ReportLibraryOnlyFeatures lexbuf.LanguageVersion args lookup lexed + let isTrue, expr = evalIfDefExpression lexbuf.StartPos lexbuf.ReportLibraryOnlyFeatures lexbuf.LanguageVersion lexbuf.StrictIndentation args lookup lexed args.ifdefStack <- (IfDefIf,m) :: args.ifdefStack LexbufIfdefStore.SaveIfHash(lexbuf, lexed, expr, m) @@ -1081,7 +1118,7 @@ rule token args skip = parse // Skips INACTIVE code until if finds #else / #endif matching with the #if or #else -and ifdefSkip n m args skip = parse +and ifdefSkip (n: int) (m: range) (args: LexArgs) (skip: bool) = parse | anywhite* "#if" anywhite+ anystring { let m = lexbuf.LexemeRange @@ -1092,7 +1129,7 @@ and ifdefSkip n m args skip = parse else let lexed = lexeme lexbuf let lookup id = List.contains id args.conditionalDefines - let _, expr = evalIfDefExpression lexbuf.StartPos lexbuf.ReportLibraryOnlyFeatures lexbuf.LanguageVersion args lookup lexed + let _, expr = evalIfDefExpression lexbuf.StartPos lexbuf.ReportLibraryOnlyFeatures lexbuf.LanguageVersion lexbuf.StrictIndentation args lookup lexed LexbufIfdefStore.SaveIfHash(lexbuf, lexed, expr, m) let tok = INACTIVECODE(LexCont.EndLine(args.ifdefStack, args.stringNest, LexerEndlineContinuation.Skip(n+1, m))) if not skip then tok else endline (LexerEndlineContinuation.Skip(n+1, m)) args skip lexbuf } @@ -1161,7 +1198,7 @@ and ifdefSkip n m args skip = parse // Called after lexing #if IDENT/#else/#endif - this checks whether there is nothing except end of line // or end of file and then calls the lexing function specified by 'cont' - either token or ifdefSkip -and endline cont args skip = parse +and endline (cont: LexerEndlineContinuation) (args: LexArgs) (skip: bool) = parse | newline { newline lexbuf match cont with @@ -1189,47 +1226,59 @@ and endline cont args skip = parse let tok = fail args lexbuf (FSComp.SR.pplexExpectedSingleLineComment()) tok if not skip then tok else token args skip lexbuf } -and singleQuoteString sargs skip = parse +and singleQuoteString (sargs: LexerStringArgs) (skip: bool) = parse | '\\' newline anywhite* { let (_buf, _fin, m, kind, args) = sargs newline lexbuf let text = lexeme lexbuf let text2 = text |> String.filter (fun c -> c <> ' ' && c <> '\t') advanceColumnBy lexbuf (text.Length - text2.Length) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, m)) - else singleQuoteString sargs skip lexbuf } + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) + else + singleQuoteString sargs skip lexbuf } | escape_char { let (buf, _fin, m, kind, args) = sargs addByteChar buf (escape (lexeme lexbuf).[1]) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, m)) - else singleQuoteString sargs skip lexbuf } + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) + else + singleQuoteString sargs skip lexbuf } | trigraph { let (buf, _fin, m, kind, args) = sargs let s = lexeme lexbuf addByteChar buf (trigraph s.[1] s.[2] s.[3]) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, m)) - else singleQuoteString sargs skip lexbuf } + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) + else + singleQuoteString sargs skip lexbuf } | hexGraphShort { let (buf, _fin, m, kind, args) = sargs addUnicodeChar buf (int (hexGraphShort (lexemeTrimLeft lexbuf 2))) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, m)) - else singleQuoteString sargs skip lexbuf } + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) + else + singleQuoteString sargs skip lexbuf } | unicodeGraphShort { let (buf, _fin, m, kind, args) = sargs addUnicodeChar buf (int (unicodeGraphShort (lexemeTrimLeft lexbuf 2))) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, m)) - else singleQuoteString sargs skip lexbuf } + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) + else + singleQuoteString sargs skip lexbuf } | unicodeGraphLong { let (buf, _fin, m, kind, args) = sargs let hexChars = lexemeTrimLeft lexbuf 2 let result() = - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, m)) - else singleQuoteString sargs skip lexbuf + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) + else + singleQuoteString sargs skip lexbuf match unicodeGraphLong hexChars with | Invalid -> fail args lexbuf (FSComp.SR.lexInvalidUnicodeLiteral hexChars) (result()) @@ -1244,92 +1293,109 @@ and singleQuoteString sargs skip = parse | '"' { let (buf, fin, _m, kind, args) = sargs let cont = LexCont.Token(args.ifdefStack, args.stringNest) - fin.Finish buf kind (enum(0)) cont + fin.Finish buf kind (LexerStringFinisherContext()) cont } | '"''B' { let (buf, fin, _m, kind, args) = sargs let cont = LexCont.Token(args.ifdefStack, args.stringNest) - fin.Finish buf { kind with IsByteString = true } (enum(0)) cont + fin.Finish buf { kind with IsByteString = true } (LexerStringFinisherContext()) cont } | ("{{" | "}}") { let (buf, _fin, m, kind, args) = sargs let s = lexeme lexbuf addUnicodeString buf (if kind.IsInterpolated then s.[0..0] else s) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, m)) - else singleQuoteString sargs skip lexbuf } + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) + else + singleQuoteString sargs skip lexbuf } | "{" { let (buf, fin, m, kind, args) = sargs if kind.IsInterpolated then // get a new range for where the fill starts let m2 = lexbuf.LexemeRange - args.stringNest <- (1, LexerStringStyle.SingleQuote, m2) :: args.stringNest + args.stringNest <- (1, LexerStringStyle.SingleQuote, args.interpolationDelimiterLength, m2) :: args.stringNest let cont = LexCont.Token(args.ifdefStack, args.stringNest) fin.Finish buf kind LexerStringFinisherContext.InterpolatedPart cont else addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, m)) - else singleQuoteString sargs skip lexbuf + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) + else + singleQuoteString sargs skip lexbuf } | "}" { let (buf, _fin, m, kind, args) = sargs let result() = - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, m)) - else singleQuoteString sargs skip lexbuf + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) + else + singleQuoteString sargs skip lexbuf if kind.IsInterpolated then fail args lexbuf (FSComp.SR.lexRBraceInInterpolatedString()) (result()) else addUnicodeString buf (lexeme lexbuf) - (result()) - } + (result()) } | newline { let (buf, _fin, m, kind, args) = sargs newline lexbuf addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, m)) - else singleQuoteString sargs skip lexbuf } + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) + else + singleQuoteString sargs skip lexbuf } | ident { let (buf, _fin, m, kind, args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, m)) - else singleQuoteString sargs skip lexbuf } + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) + else + singleQuoteString sargs skip lexbuf } | integer | xinteger { let (buf, _fin, m, kind, args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, m)) - else singleQuoteString sargs skip lexbuf } + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) + else + singleQuoteString sargs skip lexbuf } | anywhite + { let (buf, _fin, m, kind, args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, m)) - else singleQuoteString sargs skip lexbuf } + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) + else + singleQuoteString sargs skip lexbuf } | eof { let (_buf, _fin, m, kind, args) = sargs - EOF (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, m)) } + EOF (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) } | surrogateChar surrogateChar // surrogate code points always come in pairs | _ { let (buf, _fin, m, kind, args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, m)) - else singleQuoteString sargs skip lexbuf } + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, kind, args.interpolationDelimiterLength, m)) + else + singleQuoteString sargs skip lexbuf } -and verbatimString sargs skip = parse +and verbatimString (sargs: LexerStringArgs) (skip: bool) = parse | '"' '"' { let (buf, _fin, m, kind, args) = sargs addByteChar buf '\"' - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, m)) - else verbatimString sargs skip lexbuf } + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, args.interpolationDelimiterLength, m)) + else + verbatimString sargs skip lexbuf } | '"' { let (buf, fin, _m, kind, args) = sargs @@ -1347,35 +1413,43 @@ and verbatimString sargs skip = parse { let (buf, _fin, m, kind, args) = sargs newline lexbuf addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, m)) - else verbatimString sargs skip lexbuf } + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, args.interpolationDelimiterLength, m)) + else + verbatimString sargs skip lexbuf } | ("{{" | "}}") { let (buf, _fin, m, kind, args) = sargs let s = lexeme lexbuf addUnicodeString buf (if kind.IsInterpolated then s.[0..0] else s) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, m)) - else verbatimString sargs skip lexbuf } + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, args.interpolationDelimiterLength, m)) + else + verbatimString sargs skip lexbuf } | "{" { let (buf, fin, m, kind, args) = sargs if kind.IsInterpolated then // get a new range for where the fill starts let m2 = lexbuf.LexemeRange - args.stringNest <- (1, LexerStringStyle.Verbatim, m2) :: args.stringNest + args.stringNest <- (1, LexerStringStyle.Verbatim, args.interpolationDelimiterLength, m2) :: args.stringNest let cont = LexCont.Token(args.ifdefStack, args.stringNest) - fin.Finish buf kind (enum(3)) cont + fin.Finish buf kind (LexerStringFinisherContext.InterpolatedPart ||| LexerStringFinisherContext.Verbatim) cont else addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, m)) - else verbatimString sargs skip lexbuf + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, args.interpolationDelimiterLength, m)) + else + verbatimString sargs skip lexbuf } | "}" { let (buf, _fin, m, kind, args) = sargs let result() = - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, m)) - else verbatimString sargs skip lexbuf + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, args.interpolationDelimiterLength, m)) + else + verbatimString sargs skip lexbuf if kind.IsInterpolated then fail args lexbuf (FSComp.SR.lexRBraceInInterpolatedString()) (result()) else @@ -1386,92 +1460,115 @@ and verbatimString sargs skip = parse | ident { let (buf, _fin, m, kind, args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, m)) - else verbatimString sargs skip lexbuf } + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, args.interpolationDelimiterLength, m)) + else + verbatimString sargs skip lexbuf } | integer | xinteger { let (buf, _fin, m, kind, args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, m)) - else verbatimString sargs skip lexbuf } + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, args.interpolationDelimiterLength, m)) + else + verbatimString sargs skip lexbuf } | anywhite + { let (buf, _fin, m, kind, args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, m)) - else verbatimString sargs skip lexbuf } + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, args.interpolationDelimiterLength, m)) + else + verbatimString sargs skip lexbuf } | eof { let (_buf, _fin, m, kind, args) = sargs - EOF (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, m)) } + EOF (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, args.interpolationDelimiterLength, m)) } | surrogateChar surrogateChar // surrogate code points always come in pairs | _ { let (buf, _fin, m, kind, args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, m)) - else verbatimString sargs skip lexbuf } + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, kind, args.interpolationDelimiterLength, m)) + else + verbatimString sargs skip lexbuf } -and tripleQuoteString sargs skip = parse +and tripleQuoteString (sargs: LexerStringArgs) (skip: bool) = parse | '"' '"' '"' { let (buf, fin, _m, kind, args) = sargs + args.interpolationDelimiterLength <- 0 let cont = LexCont.Token(args.ifdefStack, args.stringNest) - fin.Finish buf kind (enum(4)) cont } + fin.Finish buf kind LexerStringFinisherContext.TripleQuote cont } | newline { let (buf, _fin, m, kind, args) = sargs newline lexbuf addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, m)) - else tripleQuoteString sargs skip lexbuf } + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, args.interpolationDelimiterLength, m)) + else + tripleQuoteString sargs skip lexbuf } // The rest is to break into pieces to allow double-click-on-word and other such things | ident { let (buf, _fin, m, kind, args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, m)) - else tripleQuoteString sargs skip lexbuf } + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, args.interpolationDelimiterLength, m)) + else + tripleQuoteString sargs skip lexbuf } | integer | xinteger { let (buf, _fin, m, kind, args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, m)) - else tripleQuoteString sargs skip lexbuf } + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, args.interpolationDelimiterLength, m)) + else + tripleQuoteString sargs skip lexbuf } | anywhite + { let (buf, _fin, m, kind, args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, m)) - else tripleQuoteString sargs skip lexbuf } + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, args.interpolationDelimiterLength, m)) + else + tripleQuoteString sargs skip lexbuf } | ("{{" | "}}") { let (buf, _fin, m, kind, args) = sargs let s = lexeme lexbuf addUnicodeString buf (if kind.IsInterpolated then s.[0..0] else s) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, m)) - else tripleQuoteString sargs skip lexbuf } + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, args.interpolationDelimiterLength, m)) + else + tripleQuoteString sargs skip lexbuf } | "{" { let (buf, fin, m, kind, args) = sargs if kind.IsInterpolated then // get a new range for where the fill starts let m2 = lexbuf.LexemeRange - args.stringNest <- (1, LexerStringStyle.TripleQuote, m2) :: args.stringNest + args.stringNest <- (1, LexerStringStyle.TripleQuote, args.interpolationDelimiterLength, m2) :: args.stringNest let cont = LexCont.Token(args.ifdefStack, args.stringNest) - fin.Finish buf kind (enum(5)) cont + fin.Finish buf kind (LexerStringFinisherContext.InterpolatedPart ||| LexerStringFinisherContext.TripleQuote) cont else addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, m)) - else tripleQuoteString sargs skip lexbuf + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, args.interpolationDelimiterLength, m)) + else + tripleQuoteString sargs skip lexbuf } | "}" { let (buf, _fin, m, kind, args) = sargs let result() = - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, m)) - else tripleQuoteString sargs skip lexbuf + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, args.interpolationDelimiterLength, m)) + else + tripleQuoteString sargs skip lexbuf if kind.IsInterpolated then fail args lexbuf (FSComp.SR.lexRBraceInInterpolatedString()) (result()) else @@ -1481,17 +1578,140 @@ and tripleQuoteString sargs skip = parse | eof { let (_buf, _fin, m, kind, args) = sargs - EOF (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, m)) } + EOF (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, args.interpolationDelimiterLength, m)) } | surrogateChar surrogateChar // surrogate code points always come in pairs | _ { let (buf, _fin, m, kind, args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, m)) - else tripleQuoteString sargs skip lexbuf } + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.TripleQuote, kind, args.interpolationDelimiterLength, m)) + else + tripleQuoteString sargs skip lexbuf } + +and extendedInterpolatedString (sargs: LexerStringArgs) (skip: bool) = parse + | '"' '"' '"' + { let (buf, fin, _m, kind, args) = sargs + args.interpolationDelimiterLength <- 0 + let cont = LexCont.Token(args.ifdefStack, args.stringNest) + fin.Finish buf kind LexerStringFinisherContext.TripleQuote cont } + + | newline + { let (buf, _fin, m, kind, args) = sargs + newline lexbuf + addUnicodeString buf (lexeme lexbuf) + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.ExtendedInterpolated, kind, args.interpolationDelimiterLength, m)) + else + extendedInterpolatedString sargs skip lexbuf } + +// The rest is to break into pieces to allow double-click-on-word and other such things + | ident + | integer + | xinteger + | anywhite + + { let (buf, _fin, m, kind, args) = sargs + addUnicodeString buf (lexeme lexbuf) + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.ExtendedInterpolated, kind, args.interpolationDelimiterLength, m)) + else + extendedInterpolatedString sargs skip lexbuf } + + | "%" + + { let (buf, _fin, m, kind, args) = sargs + let numPercents = lexeme lexbuf |> String.length + let result() = + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.ExtendedInterpolated, kind, args.interpolationDelimiterLength, m)) + else + extendedInterpolatedString sargs skip lexbuf + // interpolationDelimiterLength is number of $ chars prepended to opening quotes + // If number of consecutive % chars in content is equal to interpolationDelimiterLength, + // then that sequence is treated as a format specifier, + // as in $"""%3d{42}""" or (equivalent) $$"""%%3d{{42}}""". + // Any extra % chars up to interpolationDelimiterLength, are treated simply as regular string content. + // 2x interpolationDelimiterLength or more % chars in a sequence will result in an error. + let maxPercents = 2 * args.interpolationDelimiterLength - 1 + if numPercents > maxPercents then + let m2 = lexbuf.LexemeRange + let rest = result() + errorR(Error(FSComp.SR.lexTooManyPercentsInTripleQuote(), m2)) + rest + else + // Add two % chars for each % that is supposed to be treated as regular string content + // + 1 for a format specifier. + let percentsToEmit = + if numPercents < args.interpolationDelimiterLength then 2 * numPercents + else 2 * (numPercents - args.interpolationDelimiterLength) + 1 + let s = String.replicate percentsToEmit "%" + addUnicodeString buf s + result() } + + | "{" + + { let (buf, fin, m, kind, args) = sargs + let numBraces = String.length (lexeme lexbuf) + // Extended interpolated strings starts with at least 2 $ + // Number of leading $s is the number of '{' needed to open interpolation expression (interpolationDelimiterLength) + // 2x interpolationDelimiterLength (or more) of '{' in a row would be unambiguous, so it's disallowed + let maxBraces = 2 * args.interpolationDelimiterLength - 1 + if numBraces > maxBraces then + let m2 = lexbuf.LexemeRange + args.stringNest <- (1, LexerStringStyle.ExtendedInterpolated, args.interpolationDelimiterLength, m2) :: args.stringNest + let cont = LexCont.Token(args.ifdefStack, args.stringNest) + fail args lexbuf + (FSComp.SR.lexTooManyLBracesInTripleQuote()) + (fin.Finish buf kind (LexerStringFinisherContext.InterpolatedPart ||| LexerStringFinisherContext.TripleQuote) cont) + elif numBraces < args.interpolationDelimiterLength then + // Less than interpolationDelimiterLength means we treat '{' as normal content + addUnicodeString buf (lexeme lexbuf) + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.ExtendedInterpolated, kind, args.interpolationDelimiterLength, m)) + else + extendedInterpolatedString sargs skip lexbuf + // numBraces in [interpolationDelimiterLength; maxBraces) + else + // A sequence of interpolationDelimiterLength * '{' starts interpolation expression. + // Any extra '{' are treated as normal string content. + let extraBraces = numBraces - args.interpolationDelimiterLength + if extraBraces > 0 then + String.replicate extraBraces "{" |> addUnicodeString buf + // get a new range for where the fill starts + let m2 = lexbuf.LexemeRange + args.stringNest <- (1, LexerStringStyle.ExtendedInterpolated, args.interpolationDelimiterLength, m2) :: args.stringNest + let cont = LexCont.Token(args.ifdefStack, args.stringNest) + fin.Finish buf kind (LexerStringFinisherContext.InterpolatedPart ||| LexerStringFinisherContext.TripleQuote) cont + } + + | "}" + + { let (buf, _fin, m, kind, args) = sargs + let numBraces = lexeme lexbuf |> String.length + let result() = + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.ExtendedInterpolated, kind, args.interpolationDelimiterLength, m)) + else + extendedInterpolatedString sargs skip lexbuf + if args.interpolationDelimiterLength > numBraces then + lexeme lexbuf |> addUnicodeString buf + (result()) + else + fail args lexbuf (FSComp.SR.lexUnmatchedRBracesInTripleQuote()) (result()) + } + + | eof + { let (_buf, _fin, m, kind, args) = sargs + EOF (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.ExtendedInterpolated, kind, args.interpolationDelimiterLength, m)) } + + | surrogateChar surrogateChar // surrogate code points always come in pairs + | _ + { let (buf, _fin, m, kind, args) = sargs + addUnicodeString buf (lexeme lexbuf) + if not skip then + STRING_TEXT (LexCont.String(args.ifdefStack, args.stringNest, LexerStringStyle.ExtendedInterpolated, kind, args.interpolationDelimiterLength, m)) + else + extendedInterpolatedString sargs skip lexbuf } // Parsing single-line comment - we need to split it into words for Visual Studio IDE -and singleLineComment cargs skip = parse +and singleLineComment (cargs: SingleLineCommentArgs) (skip: bool) = parse | newline { let buff,_n, mStart, mEnd, args = cargs trySaveXmlDoc lexbuf buff @@ -1523,7 +1743,7 @@ and singleLineComment cargs skip = parse else token args skip lexbuf } -and comment cargs skip = parse +and comment (cargs: BlockCommentArgs) (skip: bool) = parse | char { let n, m, args = cargs if not skip then COMMENT (LexCont.Comment(args.ifdefStack, args.stringNest, n, m)) @@ -1588,7 +1808,7 @@ and comment cargs skip = parse if not skip then COMMENT (LexCont.Comment(args.ifdefStack, args.stringNest, n, m)) else comment (n, m, args) skip lexbuf } -and stringInComment n m args skip = parse +and stringInComment (n: int) (m: range) (args: LexArgs) (skip: bool) = parse // Follow string lexing, skipping tokens until it finishes | '\\' newline anywhite* { newline lexbuf @@ -1625,7 +1845,7 @@ and stringInComment n m args skip = parse { if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.SingleQuote, n, m)) else stringInComment n m args skip lexbuf } -and verbatimStringInComment n m args skip = parse +and verbatimStringInComment (n: int) (m: range) (args: LexArgs) (skip: bool) = parse // Follow verbatimString lexing, in short, skip double-quotes and other chars until we hit a single quote | '"' '"' { if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, n, m)) @@ -1655,7 +1875,7 @@ and verbatimStringInComment n m args skip = parse { if not skip then COMMENT (LexCont.StringInComment(args.ifdefStack, args.stringNest, LexerStringStyle.Verbatim, n, m)) else verbatimStringInComment n m args skip lexbuf } -and tripleQuoteStringInComment n m args skip = parse +and tripleQuoteStringInComment (n: int) (m: range) (args: LexArgs) (skip: bool) = parse // Follow tripleQuoteString lexing | '"' '"' '"' { if not skip then COMMENT (LexCont.Comment(args.ifdefStack, args.stringNest, n, m)) @@ -1682,7 +1902,7 @@ and tripleQuoteStringInComment n m args skip = parse else tripleQuoteStringInComment n m args skip lexbuf } -and mlOnly m args skip = parse +and mlOnly (m: range) (args: LexArgs) (skip: bool) = parse | "\"" { let buf = ByteBuffer.Create StringCapacity let m2 = lexbuf.LexemeRange diff --git a/src/fcs-fable/src/Compiler/pars.fsy b/src/fcs-fable/src/Compiler/pars.fsy index 01350198cd..a734f1aac4 100644 --- a/src/fcs-fable/src/Compiler/pars.fsy +++ b/src/fcs-fable/src/Compiler/pars.fsy @@ -21,8 +21,6 @@ open FSharp.Compiler.Syntax open FSharp.Compiler.SyntaxTrivia open FSharp.Compiler.Syntax.PrettyNaming open FSharp.Compiler.SyntaxTreeOps -open FSharp.Compiler.SyntaxTreeOps -open FSharp.Compiler.Text open FSharp.Compiler.Text.Position open FSharp.Compiler.Text.Range open FSharp.Compiler.Xml @@ -83,7 +81,7 @@ let parse_error_rich = Some(fun (ctxt: ParseErrorContext<_>) -> %token EXCEPTION FALSE FOR FUN FUNCTION IF IN JOIN_IN FINALLY DO_BANG %token LAZY OLAZY MATCH MATCH_BANG MUTABLE NEW OF %token OPEN OR REC THEN TO TRUE TRY TYPE VAL INLINE INTERFACE INSTANCE CONST -%token WHEN WHILE WITH HASH AMP AMP_AMP QUOTE LPAREN RPAREN RPAREN_COMING_SOON RPAREN_IS_HERE STAR COMMA RARROW GREATER_BAR_RBRACK LPAREN_STAR_RPAREN +%token WHEN WHILE WHILE_BANG WITH HASH AMP AMP_AMP QUOTE LPAREN RPAREN RPAREN_COMING_SOON RPAREN_IS_HERE STAR COMMA RARROW GREATER_BAR_RBRACK LPAREN_STAR_RPAREN %token QMARK QMARK_QMARK DOT COLON COLON_COLON COLON_GREATER COLON_QMARK_GREATER COLON_QMARK COLON_EQUALS SEMICOLON %token SEMICOLON_SEMICOLON LARROW EQUALS LBRACK LBRACK_BAR LBRACE_BAR LBRACK_LESS %token BAR_RBRACK BAR_RBRACE UNDERSCORE @@ -136,11 +134,12 @@ let parse_error_rich = Some(fun (ctxt: ParseErrorContext<_>) -> */ %token OBLOCKSEP /* LexFilter #light inserts when transforming CtxtSeqBlock(NotFirstInSeqBlock, _, AddBlockEnd) to CtxtSeqBlock(FirstInSeqBlock, _, AddBlockEnd) on exact alignment */ -/* REVIEW: merge OEND, ODECLEND, OBLOCKEND and ORIGHT_BLOCK_END into one token */ -%token OEND /* LexFilter #light inserts when closing CtxtFun, CtxtMatchClauses, CtxtWithAsLet _ */ -%token ODECLEND /* LexFilter #light inserts when closing CtxtDo and CtxtLetDecl(block) */ -%token ORIGHT_BLOCK_END /* LexFilter #light inserts when closing CtxtSeqBlock(_, _, AddOneSidedBlockEnd) */ -%token OBLOCKEND OBLOCKEND_COMING_SOON OBLOCKEND_IS_HERE /* LexFilter #light inserts when closing CtxtSeqBlock(_, _, AddBlockEnd) */ +/* LexFilter #light inserts these tokens when closing offside contexts */ +%token OEND // CtxtFun, CtxtMatchClauses, CtxtWithAsLet _ +%token ODECLEND // CtxtDo and CtxtLetDecl(block) +%token ORIGHT_BLOCK_END // CtxtSeqBlock(_, _, AddOneSidedBlockEnd) +%token OBLOCKEND // CtxtSeqBlock(_, _, AddBlockEnd) +%token OBLOCKEND_COMING_SOON OBLOCKEND_IS_HERE // CtxtSeqBlock(_, _, AddBlockEnd) %token OINTERFACE_MEMBER /* inserted for non-paranthetical use of 'INTERFACE', i.e. not INTERFACE/END */ %token FIXED @@ -159,18 +158,20 @@ let parse_error_rich = Some(fun (ctxt: ParseErrorContext<_>) -> %type ident %type typ typEOF %type tyconSpfnList -%type atomicPatsOrNamePatPairs +%type atomicPatsOrNamePatPairs %type atomicPatterns -%type patternResult +%type patternResult %type declExpr %type minusExpr %type appExpr %type argExpr %type declExprBlock %type headBindingPattern +%type atomTypeNonAtomicDeprecated %type atomicExprAfterType %type typedSequentialExprBlock %type atomicExpr +%type tupleExpr %type tyconDefnOrSpfnSimpleRepr %type list> unionTypeRepr %type tyconDefnAugmentation @@ -364,6 +365,7 @@ let parse_error_rich = Some(fun (ctxt: ParseErrorContext<_>) -> %left pat_app %left pat_args %left PREFIX_OP +%right dot_lambda %left DOT QMARK %left HIGH_PRECEDENCE_BRACK_APP %left HIGH_PRECEDENCE_PAREN_APP @@ -521,6 +523,17 @@ moduleIntro: let mModule = rhs parseState 1 mModule, $4, $5.LongIdent, $3, $2 } + | moduleKeyword opt_attributes opt_access opt_rec OBLOCKSEP + { if not (isNil $2) then + parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.AttributesToRightOfModuleKeyword (rhs parseState 4) + let mModule = rhs parseState 1 + mModule, $4, [], $3, $2 } + + | moduleKeyword opt_attributes opt_access opt_rec recover + { if not (isNil $2) then + parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.AttributesToRightOfModuleKeyword (rhs parseState 4) + let mModule = rhs parseState 1 + mModule, $4, [], $3, $2 } /* The start of a namespace declaration */ namespaceIntro: @@ -528,6 +541,10 @@ namespaceIntro: { let mNamespace = rhs parseState 1 mNamespace, $2, $3.LongIdent, grabXmlDoc(parseState, [], 1) } + | NAMESPACE opt_rec recover + { let mNamespace = rhs parseState 1 + mNamespace, $2, [], grabXmlDoc(parseState, [], 1) } + /* The contents of a signature file */ fileNamespaceSpecs: @@ -586,7 +603,7 @@ fileModuleSpec: | [] -> ParsedSigFileFragment.AnonModule($1, m) | _ -> let lastDeclRange = List.tryLast $1 |> Option.map (fun decl -> decl.Range) |> Option.defaultValue (rhs parseState 1) - let m = mkRange lastDeclRange.FileName (lhs parseState).Start lastDeclRange.End + let m = withStart (lhs parseState).Start lastDeclRange xml.MarkAsInvalid() let trivia: SynModuleOrNamespaceSigTrivia = match mNamespaceOpt with @@ -662,11 +679,13 @@ moduleSpfn: if isRec then raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsInvalidUseOfRec()) let info = SynComponentInfo($1 @ attribs2, None, [], path, xmlDoc, false, vis, rhs parseState 3) if Option.isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2)) - let m = (rhs2 parseState 1 4, $5) + let decls, mOptEnd = $5 + let m = (rhs2 parseState 1 4, decls) ||> unionRangeWithListBy (fun (d: SynModuleSigDecl) -> d.Range) |> unionRangeWithXmlDoc xmlDoc + let m = match mOptEnd with | None -> m | Some mEnd -> unionRanges m mEnd let trivia: SynModuleSigDeclNestedModuleTrivia = { ModuleKeyword = Some mModule; EqualsRange = $4 } - SynModuleSigDecl.NestedModule(info, isRec, $5, m, trivia) } + SynModuleSigDecl.NestedModule(info, isRec, decls, m, trivia) } | opt_attributes opt_access moduleIntro error { let mModule, isRec, path, vis, attribs2 = $3 @@ -704,7 +723,7 @@ moduleSpfn: SynModuleSigDecl.Exception(synExnDefn, mWhole) } | openDecl - { SynModuleSigDecl.Open($1, (rhs parseState 1)) } + { SynModuleSigDecl.Open $1 } valSpfn: | opt_attributes opt_access VAL opt_attributes opt_inline opt_mutable opt_access nameop opt_explicitValTyparDecls COLON topTypeWithTypeConstraints optLiteralValueSpfn @@ -743,15 +762,17 @@ moduleSpecBlock: /* #light-syntax, with no sig/end or begin/end */ | OBLOCKBEGIN moduleSpfns oblockend - { $2 } + { $2, None } /* #light-syntax, with sig/end or begin/end */ | OBLOCKBEGIN sigOrBegin moduleSpfnsPossiblyEmpty END oblockend - { $3 } + { let mEnd = rhs parseState 4 + $3, Some mEnd } /* non-#light-syntax, with sig/end or begin/end */ | sigOrBegin moduleSpfnsPossiblyEmpty END - { $2 } + { let mEnd = rhs parseState 3 + $2, Some mEnd } tyconSpfnList: @@ -954,8 +975,14 @@ classMemberSpfn: SynMemberSig.Interface($4, unionRanges (rhs parseState 3) ($4).Range) } | opt_attributes opt_access INHERIT appType - { if Option.isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2)) - SynMemberSig.Inherit($4, unionRanges (rhs parseState 3) ($4).Range) } + { if Option.isSome $2 then errorR (Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier (), rhs parseState 2)) + SynMemberSig.Inherit($4, unionRanges (rhs parseState 1) $4.Range) } + + | opt_attributes opt_access INHERIT recover + { if Option.isSome $2 then errorR (Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier (), rhs parseState 2)) + let mInherit = rhs parseState 3 + let ty = SynType.FromParseError(mInherit.EndRange) + SynMemberSig.Inherit(ty, unionRanges (rhs parseState 1) mInherit) } | opt_attributes opt_access VAL fieldDecl { let mWhole = rhs2 parseState 1 4 @@ -1031,6 +1058,19 @@ classMemberSpfnGetSetElements: else SynMemberKind.PropertyGetSet, Some(GetSetKeywords.GetSet(id2.idRange, id.idRange)) } + | nameop COMMA recover + { (let (SynIdent(id:Ident, _)) = $1 + if id.idText = "get" then + SynMemberKind.PropertyGet, Some(GetSetKeywords.Get id.idRange) + else if id.idText = "set" then + SynMemberKind.PropertySet, Some(GetSetKeywords.Set id.idRange) + else + raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsGetOrSetRequired())) } + + | OBLOCKBEGIN oblockend ODECLEND + { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsIdentifierExpected()) + SynMemberKind.Member, None } + memberSpecFlags: | memberFlags { $1 } | abstractMemberFlags { $1 } @@ -1128,11 +1168,11 @@ fileModuleImpl: | moduleDefnsOrExprPossiblyEmptyOrBlock { let m = (rhs parseState 1) (fun (mNamespaceOpt, isRec, path, xml) -> - match path with - | [] -> ParsedImplFileFragment.AnonModule($1, m) + match path, mNamespaceOpt with + | [], None -> ParsedImplFileFragment.AnonModule($1, m) | _ -> let lastDeclRange = List.tryLast $1 |> Option.map (fun decl -> decl.Range) |> Option.defaultValue (rhs parseState 1) - let m = mkRange lastDeclRange.FileName (lhs parseState).Start lastDeclRange.End + let m = withStart (lhs parseState).Start lastDeclRange xml.MarkAsInvalid() let trivia: SynModuleOrNamespaceTrivia = match mNamespaceOpt with @@ -1316,15 +1356,26 @@ moduleDefn: /* 'open' declarations */ | openDecl - { [ SynModuleDecl.Open($1, (rhs parseState 1)) ] } + { [ SynModuleDecl.Open $1 ] } openDecl: - /* 'open' declarations */ | OPEN path - { SynOpenDeclTarget.ModuleOrNamespace($2, (rhs parseState 2)) } + { let mOpen = rhs parseState 1 + let mPath = $2.Range + SynOpenDeclTarget.ModuleOrNamespace($2, mPath), unionRanges mOpen mPath } + + | OPEN recover + { let mOpen = rhs parseState 1 + SynOpenDeclTarget.ModuleOrNamespace(SynLongIdent([], [], []), mOpen.EndRange), mOpen } | OPEN typeKeyword appType - { SynOpenDeclTarget.Type($3, (rhs parseState 3)) } + { let mOpen = rhs parseState 1 + let mPath = $3.Range + SynOpenDeclTarget.Type($3, mPath), unionRanges mOpen mPath } + + | OPEN typeKeyword recover + { let m = rhs2 parseState 1 2 + SynOpenDeclTarget.ModuleOrNamespace(SynLongIdent([], [], []), m.EndRange), m } /* The right-hand-side of a module abbreviation definition */ /* This occurs on the right of a module abbreviation (#light encloses the r.h.s. with OBLOCKBEGIN/OBLOCKEND) */ @@ -1495,23 +1546,32 @@ memberFlags: | STATIC MEMBER { let mStatic = rhs parseState 1 let mMember = rhs parseState 2 - StaticMemberFlags, (SynLeadingKeyword.StaticMember(mStatic, mMember)) } + StaticMemberFlags, SynLeadingKeyword.StaticMember(mStatic, mMember) } + + | STATIC + { let mStatic = rhs parseState 1 + // todo: it should be possible to make it work better for both `abstract` and `member` in the type checker + StaticMemberFlags, SynLeadingKeyword.Static(mStatic) } + | MEMBER { let mMember = rhs parseState 1 - NonVirtualMemberFlags, (SynLeadingKeyword.Member mMember) } + NonVirtualMemberFlags, SynLeadingKeyword.Member mMember } + | OVERRIDE { let mOverride = rhs parseState 1 - OverrideMemberFlags, (SynLeadingKeyword.Override mOverride) } + OverrideMemberFlags, SynLeadingKeyword.Override mOverride } + | DEFAULT { let mDefault = rhs parseState 1 - OverrideMemberFlags, (SynLeadingKeyword.Default mDefault) } + OverrideMemberFlags, SynLeadingKeyword.Default mDefault } /* The name of a type in a signature or implementation, possibly with type parameters and constraints */ typeNameInfo: | opt_attributes tyconNameAndTyparDecls opt_typeConstraints { let typars, lid, fixity, vis = $2 let xmlDoc = grabXmlDoc(parseState, $1, 1) - SynComponentInfo ($1, typars, $3, lid, xmlDoc, fixity, vis, rangeOfLid lid) } + let m = match lid with [] -> rhs parseState 2 | _ -> rangeOfLid lid + SynComponentInfo ($1, typars, $3, lid, xmlDoc, fixity, vis, m) } /* Part of a set of type definitions */ tyconDefnList: @@ -1542,24 +1602,6 @@ tyconDefn: let trivia: SynTypeDefnTrivia = { LeadingKeyword = leadingKeyword; EqualsRange = None; WithKeyword = None } SynTypeDefn($1, SynTypeDefnRepr.Simple(SynTypeDefnSimpleRepr.None($1.Range), $1.Range), [], None, $1.Range, trivia) } - | typeNameInfo opt_equals tyconDefnRhsBlock - { match $2 with - | Some _ -> () - | None -> - let (SynComponentInfo(_, _, _, lid, _, _, _, _)) = $1 - // While the spec doesn't allow long idents here, the parser doesn't enforce this, so take one ident - let typeNameId = List.last lid - raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsEqualsMissingInTypeDefinition(typeNameId.ToString())) - - let nameRange = rhs parseState 1 - let (tcDefRepr: SynTypeDefnRepr), mWith, members = $3 nameRange - let declRange = unionRanges (rhs parseState 1) tcDefRepr.Range - let mWhole = (declRange, members) ||> unionRangeWithListBy (fun (mem: SynMemberDefn) -> mem.Range) - - fun leadingKeyword -> - let trivia: SynTypeDefnTrivia = { LeadingKeyword = leadingKeyword; EqualsRange = $2; WithKeyword = mWith } - SynTypeDefn($1, tcDefRepr, members, None, mWhole, trivia) } - | typeNameInfo tyconDefnAugmentation { let mWithKwd, classDefns = $2 let m = (rhs parseState 1, classDefns) ||> unionRangeWithListBy (fun mem -> mem.Range) @@ -1567,26 +1609,89 @@ tyconDefn: let trivia: SynTypeDefnTrivia = { LeadingKeyword = leadingKeyword; EqualsRange = None; WithKeyword = None } SynTypeDefn($1, SynTypeDefnRepr.ObjectModel(SynTypeDefnKind.Augmentation mWithKwd, [], m), classDefns, None, m, trivia) } - | typeNameInfo opt_attributes opt_access opt_HIGH_PRECEDENCE_APP simplePatterns optAsSpec EQUALS tyconDefnRhsBlock + | typeNameInfo opt_attributes opt_access opt_HIGH_PRECEDENCE_APP opt_simplePatterns optAsSpec EQUALS tyconDefnRhsBlock { let vis, spats, az = $3, $5, $6 let nameRange = rhs parseState 1 let (tcDefRepr, mWith, members) = $8 nameRange let (SynComponentInfo(_, _, _, lid, _, _, _, _)) = $1 let mEquals = rhs parseState 7 + // Gets the XML doc comments prior to the implicit constructor - let xmlDoc = grabXmlDoc(parseState, $2, 2) - let memberCtorPattern = SynMemberDefn.ImplicitCtor(vis, $2, spats, Option.map snd az, xmlDoc, rangeOfLid lid, { AsKeyword = Option.map fst az }) + let xmlDoc = grabXmlDoc (parseState, $2, 2) + + let m = match lid with [] -> rhs parseState 1 | _ -> rangeOfLid lid + + let memberCtorPattern = + spats |> Option.map (fun spats -> + SynMemberDefn.ImplicitCtor(vis, $2, spats, Option.bind snd az, xmlDoc, m, { AsKeyword = Option.map fst az }) + ) + let tcDefRepr = - match tcDefRepr with - | SynTypeDefnRepr.ObjectModel (k, cspec, m) -> SynTypeDefnRepr.ObjectModel(k, memberCtorPattern :: cspec, m) - | _ -> reportParseErrorAt (rhs2 parseState 1 5) (FSComp.SR.parsOnlyClassCanTakeValueArguments()); tcDefRepr + match tcDefRepr, memberCtorPattern with + | SynTypeDefnRepr.Simple(SynTypeDefnSimpleRepr.None _, m), Some ctor -> + reportParseErrorAt m (FSComp.SR.parsEmptyTypeDefinition()) + SynTypeDefnRepr.ObjectModel(SynTypeDefnKind.Unspecified, [ctor], unionRanges m mEquals) + + | SynTypeDefnRepr.Simple(SynTypeDefnSimpleRepr.None mName, m), _ -> + reportParseErrorAt m (FSComp.SR.parsEmptyTypeDefinition()) + tcDefRepr + + | SynTypeDefnRepr.ObjectModel(k, cspec, m), Some ctor -> + SynTypeDefnRepr.ObjectModel(k, ctor :: cspec, m) + + | _, Some ctor -> + reportParseErrorAt (rhs2 parseState 1 5) (FSComp.SR.parsOnlyClassCanTakeValueArguments ()) + tcDefRepr + + | _ -> + match az with + | Some(_, Some id) -> + reportParseErrorAt (rhs parseState 6) (FSComp.SR.tcLetAndDoRequiresImplicitConstructionSequence ()) + | _ -> () + + tcDefRepr + let declRange = unionRanges (rhs parseState 1) tcDefRepr.Range let mWhole = (declRange, members) ||> unionRangeWithListBy (fun (mem: SynMemberDefn) -> mem.Range) |> unionRangeWithXmlDoc xmlDoc + fun leadingKeyword -> let trivia: SynTypeDefnTrivia = { LeadingKeyword = leadingKeyword; EqualsRange = Some mEquals; WithKeyword = mWith } - SynTypeDefn($1, tcDefRepr, members, Some memberCtorPattern, mWhole, trivia) } + SynTypeDefn($1, tcDefRepr, members, memberCtorPattern, mWhole, trivia) } + + | typeNameInfo opt_attributes opt_access opt_HIGH_PRECEDENCE_APP opt_simplePatterns optAsSpec recover + { let vis, spats, az = $3, $5, $6 + let (SynComponentInfo(longId = lid)) = $1 + // Gets the XML doc comments prior to the implicit constructor + let xmlDoc = grabXmlDoc (parseState, $2, 2) + let m = match lid with [] -> rhs parseState 1 | _ -> rangeOfLid lid + let mName = $1.Range + let members, mWhole = + match spats, vis, az with + | Some spats, _, _ -> + let memberCtorPattern = SynMemberDefn.ImplicitCtor(vis, $2, spats, Option.bind snd az, xmlDoc, m, { AsKeyword = Option.map fst az }) + [memberCtorPattern], unionRanges mName memberCtorPattern.Range + + | _, _, Some(mAs, asId) -> + let mAs = + asId |> Option.map (fun id -> + reportParseErrorAt (rhs parseState 6) (FSComp.SR.tcLetAndDoRequiresImplicitConstructionSequence ()) + id.idRange + ) + |> Option.defaultValue mAs + + [], unionRanges mName mAs + + | _, Some vis, _ -> + [], unionRanges mName vis.Range + + | _ -> + [], mName + + fun leadingKeyword -> + let trivia = { SynTypeDefnTrivia.Zero with LeadingKeyword = leadingKeyword } + SynTypeDefn($1, SynTypeDefnRepr.Simple(SynTypeDefnSimpleRepr.None(mName), mName), members, None, mWhole, trivia) } /* The right-hand-side of a type definition */ @@ -1616,6 +1721,10 @@ tyconDefnRhsBlock: let tcDefRepr, members = $2 nameRange (checkForMultipleAugmentations m ($4 @ optClassDefn) []) tcDefRepr, mWith, members) } + | OBLOCKBEGIN oblockend + { fun mName -> + SynTypeDefnRepr.Simple(SynTypeDefnSimpleRepr.None mName, mName), None, [] } + | tyconDefnRhs opt_classDefn { let m = rhs parseState 1 let mWith, optClassDefn = $2 @@ -1664,7 +1773,7 @@ tyconClassDefn: | classOrInterfaceOrStruct classDefnBlock END { false, ($1, $2), Some(rhs2 parseState 1 3) } - | classOrInterfaceOrStruct classDefnBlock recover + | classOrInterfaceOrStruct classDefnBlock ends_coming_soon_or_recover { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedClassInterfaceOrStruct()) let m = (rhs parseState 1, $2) ||> unionRangeWithListBy (fun (d: SynMemberDefn) -> d.Range) false, ($1, $2), Some(m) } @@ -1676,7 +1785,7 @@ tyconClassDefn: /* The right-hand-side of a object type definition where the class/interface/struct kind has not been specified */ classDefnBlockKindUnspecified: - | OBLOCKBEGIN classDefnMembers recover + | OBLOCKBEGIN classDefnMembersAtLeastOne recover { if not $3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileTypeDefinition()) let mopt = match $2 with @@ -1684,7 +1793,7 @@ classDefnBlockKindUnspecified: | _ -> None false, $2, mopt } - | OBLOCKBEGIN classDefnMembers oblockend + | OBLOCKBEGIN classDefnMembersAtLeastOne oblockend { let mopt = match $2 with | _ :: _ -> Some((rhs parseState 1, $2) ||> unionRangeWithListBy (fun (d: SynMemberDefn) -> d.Range)) @@ -1723,7 +1832,9 @@ classDefnMembersAtLeastOne: | classDefnMember opt_seps classDefnMembers { match $1, $3 with | [ SynMemberDefn.Interface(members=Some []; range=m) ], nextMember :: _ -> - warning(IndentationProblem(FSComp.SR.lexfltTokenIsOffsideOfContextStartedEarlier(warningStringOfPos m.Start), nextMember.Range)) + let strictIndentation = parseState.LexBuffer.SupportsFeature LanguageFeature.StrictIndentation + let warnF = if strictIndentation then errorR else warning + warnF(IndentationProblem(FSComp.SR.lexfltTokenIsOffsideOfContextStartedEarlier(warningStringOfPos m.Start), nextMember.Range)) | _ -> () $1 @ $3 } @@ -1777,6 +1888,45 @@ memberCore: let memberRange = unionRanges rangeStart mRhs |> unionRangeWithXmlDoc xmlDoc [ SynMemberDefn.Member(binding, memberRange) ]) } + | opt_inline bindingPattern opt_topReturnTypeWithTypeConstraints OBLOCKSEP + { let optReturnType = $3 + let bindingPat, mBindLhs = $2 + let mEnd = + match optReturnType with + | Some(_, ty) -> ty.Range.EndRange + | _ -> bindingPat.Range.EndRange + let expr = arbExpr ("memberCore1", mEnd) + errorR (Error(FSComp.SR.parsMissingMemberBody(), rhs parseState 4)) + + fun vis flagsBuilderAndLeadingKeyword attrs rangeStart -> + let xmlDoc = grabXmlDocAtRangeStart(parseState, attrs, rangeStart) + let memFlagsBuilder, leadingKeyword = flagsBuilderAndLeadingKeyword + let memberFlags = memFlagsBuilder SynMemberKind.Member + let mWholeBindLhs = (mBindLhs, attrs) ||> unionRangeWithListBy (fun (a: SynAttributeList) -> a.Range) + let trivia: SynBindingTrivia = { LeadingKeyword = leadingKeyword; InlineKeyword = $1; EqualsRange = None } + let binding = mkSynBinding (xmlDoc, bindingPat) (vis, (Option.isSome $1), false, mWholeBindLhs, DebugPointAtBinding.NoneAtInvisible, optReturnType, expr, mEnd, [], attrs, Some memberFlags, trivia) + let memberRange = unionRanges rangeStart mEnd |> unionRangeWithXmlDoc xmlDoc + [ SynMemberDefn.Member (binding, memberRange) ] } + + | opt_inline bindingPattern opt_topReturnTypeWithTypeConstraints recover + { let optReturnType = $3 + let bindingPat, mBindLhs = $2 + let mEnd = + match optReturnType with + | Some(_, ty) -> ty.Range.EndRange + | _ -> bindingPat.Range.EndRange + let expr = arbExpr ("memberCore2", mEnd) + + fun vis flagsBuilderAndLeadingKeyword attrs rangeStart -> + let xmlDoc = grabXmlDocAtRangeStart(parseState, attrs, rangeStart) + let memFlagsBuilder, leadingKeyword = flagsBuilderAndLeadingKeyword + let memberFlags = memFlagsBuilder SynMemberKind.Member + let mWholeBindLhs = (mBindLhs, attrs) ||> unionRangeWithListBy (fun (a: SynAttributeList) -> a.Range) + let trivia: SynBindingTrivia = { LeadingKeyword = leadingKeyword; InlineKeyword = $1; EqualsRange = None } + let binding = mkSynBinding (xmlDoc, bindingPat) (vis, (Option.isSome $1), false, mWholeBindLhs, DebugPointAtBinding.NoneAtInvisible, optReturnType, expr, mEnd, [], attrs, Some memberFlags, trivia) + let memberRange = unionRanges rangeStart mEnd |> unionRangeWithXmlDoc xmlDoc + [ SynMemberDefn.Member (binding, memberRange) ] } + /* Properties with explicit get/set, also indexer properties */ | opt_inline bindingPattern opt_topReturnTypeWithTypeConstraints classDefnMemberGetSet { let mWith, (classDefnMemberGetSetElements, mAnd) = $4 @@ -1840,6 +1990,26 @@ classDefnMember: let flags = $3 $4 $2 flags $1 rangeStart } + | opt_attributes opt_access memberFlags recover + { let rangeStart = rhs parseState 1 + if Option.isSome $2 then + errorR (Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier (), rhs parseState 2)) + let memFlagsBuilder, leadingKeyword = $3 + let flags = Some(memFlagsBuilder SynMemberKind.Member) + let xmlDoc = grabXmlDocAtRangeStart (parseState, $1, rangeStart) + let trivia = { LeadingKeyword = leadingKeyword; InlineKeyword = None; EqualsRange = None } + let mMember = rhs parseState 3 + let mEnd = mMember.EndRange + let bindingPat = patFromParseError (SynPat.Wild(mEnd)) + let expr = arbExpr ("classDefnMember1", mEnd) + let mWhole = rhs2 parseState 1 3 + let binding = + mkSynBinding + (xmlDoc, bindingPat) + ($2, (Option.isSome $2), false, mWhole, DebugPointAtBinding.NoneAtInvisible, None, expr, mEnd, [], $1, flags, trivia) + + [SynMemberDefn.Member(binding, mWhole)] } + | opt_attributes opt_access interfaceMember appType opt_interfaceImplDefn { if not (isNil $1) then errorR(Error(FSComp.SR.parsAttributesAreNotPermittedOnInterfaceImplementations(), rhs parseState 1)) if Option.isSome $2 then errorR(Error(FSComp.SR.parsInterfacesHaveSameVisibilityAsEnclosingType(), rhs parseState 3)) @@ -1849,6 +2019,13 @@ classDefnMember: | Some(mWithKwd, members, m) -> Some mWithKwd, Some members, unionRanges (rhs2 parseState 1 4) m [ SynMemberDefn.Interface($4, mWithKwd, members, mWhole) ] } + | opt_attributes opt_access interfaceMember recover + { let mInterface = rhs parseState 3 + if not (isNil $1) then errorR(Error(FSComp.SR.parsAttributesAreNotPermittedOnInterfaceImplementations(), rhs parseState 1)) + if Option.isSome $2 then errorR(Error(FSComp.SR.parsInterfacesHaveSameVisibilityAsEnclosingType(), mInterface)) + let ty = SynType.FromParseError(mInterface.EndRange) + [ SynMemberDefn.Interface(ty, None, None, rhs2 parseState 1 3) ] } + | opt_attributes opt_access abstractMemberFlags opt_inline nameop opt_explicitValTyparDecls COLON topTypeWithTypeConstraints classMemberSpfnGetSet opt_ODECLEND { let ty, arity = $8 let isInline, doc, id, explicitValTyparDecls = (Option.isSome $4), grabXmlDoc(parseState, $1, 1), $5, $6 @@ -1897,7 +2074,7 @@ classDefnMember: let m = unionRanges mWholeBindLhs $7.Range |> unionRangeWithXmlDoc xmlDoc let mEquals = rhs parseState 6 let expr = $7 - let valSynData = SynValData (Some CtorMemberFlags, SynValInfo([SynInfo.InferSynArgInfoFromPat $4], SynInfo.unnamedRetVal), Option.map snd $5) + let valSynData = SynValData (Some CtorMemberFlags, SynValInfo([SynInfo.InferSynArgInfoFromPat $4], SynInfo.unnamedRetVal), Option.bind snd $5, None) let vis = $2 let declPat = SynPat.LongIdent(SynLongIdent([mkSynId (rhs parseState 3) "new"], [], [None]), None, Some noInferredTypars, SynArgPats.Pats [$4], vis, rhs parseState 3) // Check that 'SynPatForConstructorDecl' matches this correctly @@ -1905,6 +2082,46 @@ classDefnMember: let synBindingTrivia: SynBindingTrivia = { LeadingKeyword = SynLeadingKeyword.New mNew; InlineKeyword = None; EqualsRange = Some mEquals } [ SynMemberDefn.Member(SynBinding (None, SynBindingKind.Normal, false, false, $1, xmlDoc, valSynData, declPat, None, expr, mWholeBindLhs, DebugPointAtBinding.NoneAtInvisible, synBindingTrivia), m) ] } + | opt_attributes opt_access NEW atomicPattern optAsSpec ends_coming_soon_or_recover + { if not $6 then reportParseErrorAt (rhs parseState 6) (FSComp.SR.parsMissingMemberBody ()) + let mNew = rhs parseState 3 + let mAs = $5 |> Option.map (fun (mAs, id) -> id |> Option.map (fun id -> id.idRange) |> Option.defaultValue mAs) + let mEnd = mAs |> Option.defaultValue $4.Range + let xmlDoc = grabXmlDoc (parseState, $1, 1) + let m = unionRanges (rhs parseState 1) mEnd |> unionRangeWithXmlDoc xmlDoc + let expr = arbExpr ("new1", mEnd.EndRange) + let valSynData = SynValData (Some CtorMemberFlags, SynValInfo([SynInfo.InferSynArgInfoFromPat $4], SynInfo.unnamedRetVal), Option.bind snd $5, None) + let declPat = SynPat.LongIdent(SynLongIdent([mkSynId (rhs parseState 3) "new"], [], [None]), None, Some noInferredTypars, SynArgPats.Pats [$4], $2, rhs parseState 3) + assert (match declPat with SynPatForConstructorDecl _ -> true | _ -> false) + let synBindingTrivia: SynBindingTrivia = { LeadingKeyword = SynLeadingKeyword.New mNew; InlineKeyword = None; EqualsRange = None } + [ SynMemberDefn.Member(SynBinding(None, SynBindingKind.Normal, false, false, $1, xmlDoc, valSynData, declPat, None, expr, m, DebugPointAtBinding.NoneAtInvisible, synBindingTrivia), m) ] } + + | opt_attributes opt_access NEW atomicPattern optAsSpec OBLOCKSEP + { reportParseErrorAt (rhs parseState 5) (FSComp.SR.parsMissingMemberBody ()) + let mNew = rhs parseState 3 + let mAs = $5 |> Option.map (fun (mAs, id) -> id |> Option.map (fun id -> id.idRange) |> Option.defaultValue mAs) + let mEnd = mAs |> Option.defaultValue $4.Range + let xmlDoc = grabXmlDoc (parseState, $1, 1) + let m = unionRanges (rhs parseState 1) mEnd |> unionRangeWithXmlDoc xmlDoc + let expr = arbExpr ("new2", mEnd.EndRange) + let valSynData = SynValData(Some CtorMemberFlags, SynValInfo([SynInfo.InferSynArgInfoFromPat $4], SynInfo.unnamedRetVal), Option.bind snd $5, None) + let declPat = SynPat.LongIdent(SynLongIdent([mkSynId (rhs parseState 3) "new"], [], [None]), None, Some noInferredTypars, SynArgPats.Pats [$4], $2, rhs parseState 3) + assert (match declPat with SynPatForConstructorDecl _ -> true | _ -> false) + let synBindingTrivia: SynBindingTrivia = { LeadingKeyword = SynLeadingKeyword.New mNew; InlineKeyword = None; EqualsRange = None } + [ SynMemberDefn.Member(SynBinding (None, SynBindingKind.Normal, false, false, $1, xmlDoc, valSynData, declPat, None, expr, m, DebugPointAtBinding.NoneAtInvisible, synBindingTrivia), m) ] } + + | opt_attributes opt_access NEW recover opt_OBLOCKSEP + { let m = rhs2 parseState 1 3 + let mNew = rhs parseState 3 + let xmlDoc = grabXmlDoc (parseState, $1, 1) + let pat = patFromParseError (SynPat.Wild(mNew.EndRange)) + let expr = arbExpr ("new3", mNew.EndRange) + let valSynData = SynValData(Some CtorMemberFlags, SynValInfo([SynInfo.InferSynArgInfoFromPat pat], SynInfo.unnamedRetVal), None, None) + let vis = $2 + let declPat = SynPat.LongIdent(SynLongIdent([mkSynId (rhs parseState 3) "new"], [], [None]), None, Some noInferredTypars, SynArgPats.Pats [pat], vis, rhs parseState 3) + let synBindingTrivia: SynBindingTrivia = { LeadingKeyword = SynLeadingKeyword.New mNew; InlineKeyword = None; EqualsRange = None } + [ SynMemberDefn.Member(SynBinding(None, SynBindingKind.Normal, false, false, $1, xmlDoc, valSynData, declPat, None, expr, m, DebugPointAtBinding.NoneAtInvisible, synBindingTrivia), m) ] } + | opt_attributes opt_access STATIC typeKeyword tyconDefn { if Option.isSome $2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(), rhs parseState 2)) let leadingKeyword = SynTypeDefnLeadingKeyword.StaticType(rhs parseState 3, rhs parseState 4) @@ -1916,42 +2133,98 @@ valDefnDecl: | VAL opt_mutable opt_access ident COLON typ { let mVal = rhs parseState 1 let mRhs = rhs2 parseState 4 6 - let mValDecl = rhs2 parseState 1 6 - (fun rangeStart attribs mStaticOpt -> - let isStatic = Option.isSome mStaticOpt - let xmlDoc = grabXmlDocAtRangeStart(parseState, attribs, rangeStart) - let mValDecl = unionRanges rangeStart mValDecl |> unionRangeWithXmlDoc xmlDoc - let leadingKeyword = - match mStaticOpt with - | None -> SynLeadingKeyword.Val mVal - | Some mStatic -> SynLeadingKeyword.StaticVal(mStatic, mVal) - let fld = SynField(attribs, isStatic, Some $4, $6, $2, xmlDoc, $3, mRhs, { LeadingKeyword = Some leadingKeyword }) - [ SynMemberDefn.ValField(fld, mValDecl) ]) } + fun rangeStart attribs mStaticOpt -> + let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart) + [ mkValField mVal mRhs $2 $3 $4 $6 xmlDoc rangeStart attribs mStaticOpt ] } + + | VAL opt_mutable opt_access ident COLON recover + { let mVal = rhs parseState 1 + let mRhs = rhs2 parseState 4 6 + let mColon = rhs parseState 5 + let ty = SynType.FromParseError(mColon.EndRange) + fun rangeStart attribs mStaticOpt -> + let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart) + [ mkValField mVal mRhs $2 $3 $4 ty xmlDoc rangeStart attribs mStaticOpt ] } + + | VAL opt_mutable opt_access ident recover + { let mVal = rhs parseState 1 + let mRhs = rhs2 parseState 4 6 + let mColon = rhs parseState 5 + let ty = SynType.FromParseError(mColon.EndRange) + fun rangeStart attribs mStaticOpt -> + let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart) + [ mkValField mVal mRhs $2 $3 $4 ty xmlDoc rangeStart attribs mStaticOpt ] } + + | VAL opt_mutable opt_access recover + { let mVal = rhs parseState 1 + let mRhs = rhs2 parseState 4 6 + let id = mkSynId mVal.EndRange "" + let mColon = rhs parseState 5 + let ty = SynType.FromParseError(mColon.EndRange) + fun rangeStart attribs mStaticOpt -> + let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart) + [ mkValField mVal mRhs $2 $3 id ty xmlDoc rangeStart attribs mStaticOpt ] } /* An auto-property definition in an object type definition */ autoPropsDefnDecl: | VAL opt_mutable opt_access ident opt_typ EQUALS typedSequentialExprBlock classMemberSpfnGetSet { let mVal = rhs parseState 1 - let mWith, (getSet, getSetOpt) = $8 let mEquals = rhs parseState 6 if $2 then - errorR (Error (FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSet (), rhs parseState 3)) - (fun attribs flags rangeStart -> + errorR (Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSet (), rhs parseState 2)) + fun attribs flags rangeStart -> + let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart) + [ mkAutoPropDefn mVal $3 $4 $5 (Some mEquals) $7 $8 xmlDoc attribs flags rangeStart ] } + +| VAL opt_mutable opt_access ident opt_typ ends_coming_soon_or_recover + { let mVal = rhs parseState 1 + let mEnd = + match $5 with + | Some t -> t.Range + | _ -> $4.idRange + let expr = arbExpr ("autoProp1", mEnd.EndRange) + if $2 then + errorR (Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSet (), rhs parseState 2)) + fun attribs flags rangeStart -> + let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart) + [ mkAutoPropDefn mVal $3 $4 $5 None expr (None, (SynMemberKind.Member, None)) xmlDoc attribs flags rangeStart ] } + + | VAL opt_mutable opt_access ident opt_typ OBLOCKSEP + { let mVal = rhs parseState 1 + let mEnd = + match $5 with + | Some t -> t.Range + | _ -> $4.idRange + let expr = arbExpr ("autoProp2", mEnd.EndRange) + if $2 then + errorR (Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSet (), rhs parseState 2)) + fun attribs flags rangeStart -> + let xmlDoc = grabXmlDocAtRangeStart (parseState, attribs, rangeStart) + [ mkAutoPropDefn mVal $3 $4 $5 None expr (None, (SynMemberKind.Member, None)) xmlDoc attribs flags rangeStart ] } + +| VAL opt_mutable opt_access recover + { let mVal = rhs parseState 1 + let id = mkSynId mVal.EndRange "" + let expr = arbExpr ("autoProp3", mVal.EndRange) + if $2 then + errorR (Error(FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSet (), rhs parseState 2)) + fun attribs flags rangeStart -> let xmlDoc = grabXmlDocAtRangeStart(parseState, attribs, rangeStart) - let memberRange = unionRanges rangeStart $7.Range |> unionRangeWithXmlDoc xmlDoc - let flags, leadingKeyword = flags - let leadingKeyword = appendValToLeadingKeyword mVal leadingKeyword - let memberFlags = flags SynMemberKind.Member - let memberFlagsForSet = flags SynMemberKind.PropertySet - let isStatic = not memberFlags.IsInstance - let trivia = { LeadingKeyword = leadingKeyword; WithKeyword = mWith; EqualsRange = Some mEquals; GetSetKeywords = getSetOpt } - [ SynMemberDefn.AutoProperty(attribs, isStatic, $4, $5, getSet, memberFlags, memberFlagsForSet, xmlDoc, $3, $7, memberRange, trivia) ]) } + [ mkAutoPropDefn mVal $3 id None None expr (None, (SynMemberKind.Member, None)) xmlDoc attribs flags rangeStart ] } /* An optional type on an auto-property definition */ opt_typ: - | /* EMPTY */ { None } - | COLON typ { Some $2 } + | /* EMPTY */ + { None } + + | COLON typ + { Some $2 } + + | COLON recover + { let mColon = rhs parseState 1 + let ty = SynType.FromParseError(mColon.EndRange) + Some ty } atomicPatternLongIdent: @@ -2032,7 +2305,7 @@ opt_classDefn: /* An 'inherits' definition in an object type definition */ inheritsDefn: | INHERIT atomTypeNonAtomicDeprecated optBaseSpec - { let mDecl = unionRanges (rhs parseState 1) (($2): SynType).Range + { let mDecl = unionRanges (rhs parseState 1) $2.Range SynMemberDefn.Inherit($2, $3, mDecl) } | INHERIT atomTypeNonAtomicDeprecated opt_HIGH_PRECEDENCE_APP atomicExprAfterType optBaseSpec @@ -2041,7 +2314,7 @@ inheritsDefn: | INHERIT ends_coming_soon_or_recover { let mDecl = (rhs parseState 1) - if not $2 then errorR(Error(FSComp.SR.parsTypeNameCannotBeEmpty(), mDecl)) + if not $2 then errorR (Error(FSComp.SR.parsTypeNameCannotBeEmpty (), mDecl)) SynMemberDefn.Inherit(SynType.LongIdent(SynLongIdent([], [], [])), None, mDecl) } optAsSpec: @@ -2053,7 +2326,10 @@ optAsSpec: asSpec: | AS ident - { rhs parseState 1, $2 } + { rhs parseState 1, Some $2 } + + | AS recover + { rhs parseState 1, None } optBaseSpec: | baseSpec @@ -2169,7 +2445,7 @@ tyconDefnOrSpfnSimpleRepr: if parseState.LexBuffer.ReportLibraryOnlyFeatures then libraryOnlyError mLhs if Option.isSome $2 then errorR(Error(FSComp.SR.parsInlineAssemblyCannotHaveVisibilityDeclarations(), rhs parseState 2)) let s, _ = $5 - let ilType = ParseAssemblyCodeType s parseState.LexBuffer.ReportLibraryOnlyFeatures parseState.LexBuffer.LanguageVersion (rhs parseState 5) + let ilType = ParseAssemblyCodeType s parseState.LexBuffer.ReportLibraryOnlyFeatures parseState.LexBuffer.LanguageVersion parseState.LexBuffer.StrictIndentation (rhs parseState 5) SynTypeDefnSimpleRepr.LibraryOnlyILAssembly(box ilType, mLhs) } @@ -2227,9 +2503,12 @@ tyconNameAndTyparDecls: | opt_access path postfixTyparDecls { Some $3, $2.LongIdent, true, $1 } + | opt_access recover + { None, [], false, $1 } + prefixTyparDecls: | typar - { SynTyparDecls.SinglePrefix(SynTyparDecl([], $1), rhs parseState 1) } + { SynTyparDecls.SinglePrefix(SynTyparDecl([], $1, [], SynTyparDeclTrivia.Zero), rhs parseState 1) } | LPAREN typarDeclList rparen { SynTyparDecls.PrefixList(List.rev $2, rhs2 parseState 1 3) } @@ -2238,9 +2517,14 @@ typarDeclList: | typarDeclList COMMA typarDecl { $3 :: $1 } | typarDecl { [$1] } -typarDecl : +typarDecl: | opt_attributes typar - { SynTyparDecl($1, $2) } + { SynTyparDecl($1, $2, [], SynTyparDeclTrivia.Zero) } + + | opt_attributes typar AMP intersectionConstraints + { parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.ConstraintIntersectionOnFlexibleTypes (rhs2 parseState 3 4) + let constraints, mAmpersands = $4 + SynTyparDecl($1, $2, List.rev constraints, { AmpersandRanges = rhs parseState 3 :: List.rev mAmpersands }) } /* Any tokens in this grammar must be added to the lex filter rule 'peekAdjacentTypars' */ /* See the F# specification "Lexical analysis of type applications and type parameter definitions" */ @@ -2294,6 +2578,25 @@ typeConstraints: | typeConstraint { [$1] } +/* Any tokens in this grammar must be added to the lex filter rule 'peekAdjacentTypars' */ +/* See the F# specification "Lexical analysis of type applications and type parameter definitions" */ +intersectionConstraints: + | intersectionConstraints AMP atomType %prec prec_no_more_attr_bindings // todo precedence + { let constraints, mAmpersands = $1 + + match $3 with + | SynType.HashConstraint _ -> () + | ty -> errorR(Error(FSComp.SR.parsConstraintIntersectionSyntaxUsedWithNonFlexibleType(), ty.Range)) + + ($3 :: constraints), (rhs parseState 2 :: mAmpersands) } + + | atomType + { match $1 with + | SynType.HashConstraint _ -> () + | ty -> errorR(Error(FSComp.SR.parsConstraintIntersectionSyntaxUsedWithNonFlexibleType(), ty.Range)) + + [ $1 ], [] } + /* Any tokens in this grammar must be added to the lex filter rule 'peekAdjacentTypars' */ /* See the F# specification "Lexical analysis of type applications and type parameter definitions" */ typeConstraint: @@ -2381,69 +2684,36 @@ attrUnionCaseDecls: /* The core of a union case definition */ attrUnionCaseDecl: | opt_attributes opt_access unionCaseName - { if Option.isSome $2 then errorR(Error(FSComp.SR.parsUnionCasesCannotHaveVisibilityDeclarations(), rhs parseState 2)) - let mDecl = rhs parseState 3 - (fun (xmlDoc, mBar) -> - let trivia: SynUnionCaseTrivia = { BarRange = Some mBar } - let mDecl = unionRangeWithXmlDoc xmlDoc mDecl - Choice2Of2 (SynUnionCase ($1, $3, SynUnionCaseKind.Fields [], xmlDoc, None, mDecl, trivia))) } + { mkSynUnionCase $1 $2 $3 (SynUnionCaseKind.Fields []) (rhs2 parseState 1 3) >> Choice2Of2 } | opt_attributes opt_access recover - { if Option.isSome $2 then errorR(Error(FSComp.SR.parsUnionCasesCannotHaveVisibilityDeclarations(), rhs parseState 2)) - (fun (xmlDoc, mBar) -> - let id = SynIdent(mkSynId mBar.EndRange "", None) - let trivia: SynUnionCaseTrivia = { BarRange = Some mBar } - let mDecl = unionRangeWithXmlDoc xmlDoc mBar - Choice2Of2 (SynUnionCase ($1, id, SynUnionCaseKind.Fields [], xmlDoc, None, mDecl, trivia))) } + { fun (xmlDoc, mBar) -> mkSynUnionCase $1 $2 (SynIdent(mkSynId mBar.EndRange "", None)) (SynUnionCaseKind.Fields []) mBar (xmlDoc, mBar) |> Choice2Of2 } | opt_attributes opt_access unionCaseName OF unionCaseRepr - { if Option.isSome $2 then errorR(Error(FSComp.SR.parsUnionCasesCannotHaveVisibilityDeclarations(), rhs parseState 2)) - let mDecl = rhs2 parseState 1 5 - (fun (xmlDoc, mBar) -> - let trivia: SynUnionCaseTrivia = { BarRange = Some mBar } - let mDecl = unionRangeWithXmlDoc xmlDoc mDecl - Choice2Of2 (SynUnionCase ($1, $3, SynUnionCaseKind.Fields $5, xmlDoc, None, mDecl, trivia))) } + { mkSynUnionCase $1 $2 $3 (SynUnionCaseKind.Fields $5) (rhs2 parseState 1 5) >> Choice2Of2 } + + | opt_attributes opt_access unionCaseName unionCaseRepr + { errorR (Error(FSComp.SR.parsMissingKeyword("of"), rhs2 parseState 3 4)) + mkSynUnionCase $1 $2 $3 (SynUnionCaseKind.Fields $4) (rhs2 parseState 1 4) >> Choice2Of2 } | opt_attributes opt_access OF unionCaseRepr - { if Option.isSome $2 then errorR(Error(FSComp.SR.parsUnionCasesCannotHaveVisibilityDeclarations(), rhs parseState 2)) - let mOf = rhs parseState 3 + { let mOf = rhs parseState 3 let mId = mOf.StartRange errorR (Error(FSComp.SR.parsMissingUnionCaseName(), mOf)) - let mDecl = rhs2 parseState 1 4 - (fun (xmlDoc, mBar) -> - let id = SynIdent(mkSynId mId "", None) - let trivia: SynUnionCaseTrivia = { BarRange = Some mBar } - let mDecl = unionRangeWithXmlDoc xmlDoc mDecl - Choice2Of2(SynUnionCase($1, id, SynUnionCaseKind.Fields $4, xmlDoc, None, mDecl, trivia))) } + mkSynUnionCase $1 $2 (SynIdent(mkSynId mId "", None)) (SynUnionCaseKind.Fields $4) (rhs2 parseState 1 4) >> Choice2Of2 } | opt_attributes opt_access OF recover - { if Option.isSome $2 then errorR(Error(FSComp.SR.parsUnionCasesCannotHaveVisibilityDeclarations(), rhs parseState 2)) - let mOf = rhs parseState 3 + { let mOf = rhs parseState 3 let mId = mOf.StartRange errorR (Error(FSComp.SR.parsMissingUnionCaseName(), mOf)) - let mDecl = rhs2 parseState 1 3 - (fun (xmlDoc, mBar) -> - let id = SynIdent(mkSynId mId "", None) - let trivia: SynUnionCaseTrivia = { BarRange = Some mBar } - let mDecl = unionRangeWithXmlDoc xmlDoc mDecl - Choice2Of2(SynUnionCase($1, id, SynUnionCaseKind.Fields [], xmlDoc, None, mDecl, trivia))) } + mkSynUnionCase $1 $2 (SynIdent(mkSynId mId "", None)) (SynUnionCaseKind.Fields []) (rhs2 parseState 1 3) >> Choice2Of2 } | opt_attributes opt_access unionCaseName OF recover - { if Option.isSome $2 then errorR(Error(FSComp.SR.parsUnionCasesCannotHaveVisibilityDeclarations(), rhs parseState 2)) - let mDecl = rhs2 parseState 1 4 - (fun (xmlDoc, mBar) -> - let trivia: SynUnionCaseTrivia = { BarRange = Some mBar } - let mDecl = unionRangeWithXmlDoc xmlDoc mDecl - Choice2Of2 (SynUnionCase ($1, $3, SynUnionCaseKind.Fields [], xmlDoc, None, mDecl, trivia))) } + { mkSynUnionCase $1 $2 $3 (SynUnionCaseKind.Fields []) (rhs2 parseState 1 4) >> Choice2Of2 } | opt_attributes opt_access unionCaseName COLON topType - { if Option.isSome $2 then errorR(Error(FSComp.SR.parsUnionCasesCannotHaveVisibilityDeclarations(), rhs parseState 2)) - if parseState.LexBuffer.ReportLibraryOnlyFeatures then libraryOnlyWarning(lhs parseState) - let mDecl = rhs2 parseState 1 5 - (fun (xmlDoc, mBar) -> - let trivia: SynUnionCaseTrivia = { BarRange = Some mBar } - let mDecl = unionRangeWithXmlDoc xmlDoc mDecl - Choice2Of2 (SynUnionCase ($1, $3, SynUnionCaseKind.FullType $5, xmlDoc, None, mDecl, trivia))) } + { if parseState.LexBuffer.ReportLibraryOnlyFeatures then libraryOnlyWarning(lhs parseState) + mkSynUnionCase $1 $2 $3 (SynUnionCaseKind.FullType $5) (rhs2 parseState 1 5) >> Choice2Of2 } | opt_attributes opt_access unionCaseName EQUALS atomicExpr { if Option.isSome $2 then errorR(Error(FSComp.SR.parsEnumFieldsCannotHaveVisibilityDeclarations(), rhs parseState 2)) @@ -2533,6 +2803,17 @@ unionCaseReprElement: { let xmlDoc = grabXmlDoc(parseState, [], 1) mkSynAnonField ($1, xmlDoc) } + | ident COLON invalidUseOfAppTypeFunction + { let xmlDoc = grabXmlDoc(parseState, [], 1) + let mWhole = rhs2 parseState 1 3 |> unionRangeWithXmlDoc xmlDoc + reportParseErrorAt ($3 : SynType).Range (FSComp.SR.tcUnexpectedFunTypeInUnionCaseField()) + mkSynNamedField ($1, $3, xmlDoc, mWhole) } + + | invalidUseOfAppTypeFunction + { let xmlDoc = grabXmlDoc(parseState, [], 1) + reportParseErrorAt ($1 : SynType).Range (FSComp.SR.tcUnexpectedFunTypeInUnionCaseField()) + mkSynAnonField ($1, xmlDoc) } + unionCaseRepr: | braceFieldDeclList { errorR(Deprecated(FSComp.SR.parsConsiderUsingSeparateRecordType(), lhs parseState)) @@ -2562,9 +2843,14 @@ recdFieldDecl: /* Part of a field or val declaration in a record type or object type */ fieldDecl: | opt_mutable opt_access ident COLON typ - { fun attrs stat mWhole leadingKeyword -> - let xmlDoc = grabXmlDocAtRangeStart(parseState, attrs, mWhole) - SynField(attrs, stat, Some $3, $5, $1, xmlDoc, $2, mWhole, { LeadingKeyword = leadingKeyword }) } + { mkSynField parseState (Some $3) $5 $1 $2 } + | opt_mutable opt_access ident COLON recover + { let mColon = rhs parseState 4 + let t = SynType.FromParseError(mColon.EndRange) + mkSynField parseState (Some $3) t $1 $2 } + | opt_mutable opt_access ident recover + { let t = SynType.FromParseError($3.idRange.EndRange) + mkSynField parseState (Some $3) t $1 $2 } /* An exception definition */ exconDefn: @@ -2679,7 +2965,7 @@ hardwhiteLetBindings: else SynLeadingKeyword.Let(mLetKwd) - let report, mIn = $4 + let report, mIn, _ = $4 report (if isUse then "use" else "let") mLetKwd // report unterminated error let localBindingsLastRangeOpt, localBindingsBuilder = $3 @@ -2706,13 +2992,20 @@ hardwhiteLetBindings: /* A 'do ...' statement */ hardwhiteDoBinding: | ODO typedSequentialExprBlock hardwhiteDefnBindingsTerminator - { let mDoKwd = rhs parseState 1 - let bindingSetRange = unionRanges mDoKwd $2.Range + { let mDo = rhs parseState 1 + let _, _, mDone = $3 + let mAll = unionRanges mDo $2.Range let seqPt = DebugPointAtBinding.NoneAtDo // any attributes prior to the 'let' are left free, e.g. become top-level attributes // associated with the module, 'main' function or assembly depending on their target - BindingSetPreAttrs(mDoKwd, false, false, (fun attrs vis -> attrs, [mkSynDoBinding (vis, mDoKwd, $2, bindingSetRange)]), bindingSetRange), $2 } + BindingSetPreAttrs(mDo, false, false, (fun attrs vis -> attrs, [mkSynDoBinding (vis, mDo, $2, mAll)]), mAll), $2 } + | ODO ODECLEND + { let mDo = rhs parseState 1 + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectingExpression ()) + let seqPt = DebugPointAtBinding.NoneAtDo + let expr = arbExpr ("hardwhiteDoBinding1", mDo.EndRange) + BindingSetPreAttrs(mDo, false, false, (fun attrs vis -> attrs, [mkSynDoBinding (vis, mDo, expr, mDo)]), mDo), expr } /* The bindings in a class type definition */ classDefnBindings: @@ -2736,7 +3029,7 @@ hardwhiteDefnBindingsTerminator: { let mToken = rhs parseState 1 // In LexFilter.fs the IN token could have been transformed to an ODECLEND one. let mIn = if (mToken.EndColumn - mToken.StartColumn) = 2 then Some mToken else None - (fun _ m -> ()), mIn } + (fun _ m -> ()), mIn, Some $1 } | recover { (fun kwd m -> @@ -2746,13 +3039,13 @@ hardwhiteDefnBindingsTerminator: | "use!" -> FSComp.SR.parsUnmatchedUseBang() | "use" -> FSComp.SR.parsUnmatchedUse() | _ (*"let" *) -> FSComp.SR.parsUnmatchedLet() - reportParseErrorAt m msg), None } + reportParseErrorAt m msg), None, None } /* An 'extern' DllImport function definition in C-style syntax */ cPrototype: | EXTERN cRetType opt_access ident opt_HIGH_PRECEDENCE_APP LPAREN externArgs rparen { let mExtern = rhs parseState 1 - let rty, vis, nm, args = $2, $3, $4, $7 + let rty, vis, nm, (args, commas) = $2, $3, $4, $7 let nmm = rhs parseState 3 let argsm = rhs parseState 6 let mBindLhs = lhs parseState @@ -2766,7 +3059,7 @@ cPrototype: SynExpr.Const(SynConst.String("extern was not given a DllImport attribute", SynStringKind.Regular, rhs parseState 8), rhs parseState 8), mRhs) (fun attrs _ -> - let bindingPat = SynPat.LongIdent(SynLongIdent([nm], [], [None]), None, Some noInferredTypars, SynArgPats.Pats [SynPat.Tuple(false, args, argsm)], vis, nmm) + let bindingPat = SynPat.LongIdent(SynLongIdent([nm], [], [None]), None, Some noInferredTypars, SynArgPats.Pats [SynPat.Tuple(false, args, commas, argsm)], vis, nmm) let mWholeBindLhs = (mBindLhs, attrs) ||> unionRangeWithListBy (fun (a: SynAttributeList) -> a.Range) let xmlDoc = grabXmlDoc(parseState, attrs, 1) let trivia = { LeadingKeyword = SynLeadingKeyword.Extern mExtern; InlineKeyword = None; EqualsRange = None } @@ -2779,21 +3072,25 @@ cPrototype: /* A list of arguments in an 'extern' DllImport function definition */ externArgs: | externMoreArgs - { List.rev $1 } + { let args, commas = $1 + List.rev args, (List.rev commas) } | externArg - { [$1] } + { [$1], [] } | - { [] } + { [], [] } /* Part of the list of arguments in an 'extern' DllImport function definition */ externMoreArgs: | externMoreArgs COMMA externArg - { $3 :: $1 } + { let args, commas = $1 + let mComma = rhs parseState 2 + $3 :: args, (mComma :: commas) } | externArg COMMA externArg - { [$3; $1] } + { let mComma = rhs parseState 2 + [$3; $1], [mComma] } /* A single argument in an 'extern' DllImport function definition */ @@ -3037,41 +3334,44 @@ rationalConstant: { if $2 <> "/" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedOperatorForUnitOfMeasure()) if fst $3 = 0 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsIllegalDenominatorForMeasureExponent()) if (snd $1) || (snd $3) then errorR(Error(FSComp.SR.lexOutsideThirtyTwoBitSigned(), lhs parseState)) - SynRationalConst.Rational(fst $1, fst $3, lhs parseState) } + SynRationalConst.Rational(fst $1, rhs parseState 1, rhs parseState 2, fst $3, rhs parseState 3, lhs parseState) } | MINUS INT32 INFIX_STAR_DIV_MOD_OP INT32 { if $3 <> "/" then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedOperatorForUnitOfMeasure()) if fst $4 = 0 then reportParseErrorAt (rhs parseState 4) (FSComp.SR.parsIllegalDenominatorForMeasureExponent()) if (snd $2) || (snd $4) then errorR(Error(FSComp.SR.lexOutsideThirtyTwoBitSigned(), lhs parseState)) - SynRationalConst.Negate(SynRationalConst.Rational(fst $2, fst $4, lhs parseState)) } + SynRationalConst.Negate(SynRationalConst.Rational(fst $2, rhs parseState 2, rhs parseState 3, fst $4, rhs parseState 4, lhs parseState), lhs parseState) } | INT32 { if snd $1 then errorR(Error(FSComp.SR.lexOutsideThirtyTwoBitSigned(), lhs parseState)) - SynRationalConst.Integer(fst $1) } + SynRationalConst.Integer(fst $1, lhs parseState) } | MINUS INT32 { if snd $2 then errorR(Error(FSComp.SR.lexOutsideThirtyTwoBitSigned(), lhs parseState)) - SynRationalConst.Negate(SynRationalConst.Integer(fst $2)) } + SynRationalConst.Negate(SynRationalConst.Integer(fst $2, rhs parseState 2), lhs parseState) } atomicUnsignedRationalConstant: | INT32 { if snd $1 then errorR(Error(FSComp.SR.lexOutsideThirtyTwoBitSigned(), lhs parseState)) - SynRationalConst.Integer(fst $1) } + SynRationalConst.Integer(fst $1, lhs parseState) } | LPAREN rationalConstant rparen - { $2 } + { SynRationalConst.Paren($2, rhs2 parseState 1 3) } atomicRationalConstant: | atomicUnsignedRationalConstant { $1 } | MINUS atomicUnsignedRationalConstant - { SynRationalConst.Negate($2) } + { SynRationalConst.Negate($2, lhs parseState) } constant: | rawConstant { $1, rhs parseState 1 } | rawConstant HIGH_PRECEDENCE_TYAPP measureTypeArg - { SynConst.Measure($1, rhs parseState 1, $3), lhs parseState } + { let synMeasure, trivia = $3 + let mConstant = rhs parseState 1 + let m = unionRanges mConstant trivia.GreaterRange + SynConst.Measure($1, rhs parseState 1, synMeasure, trivia), m } bindingPattern: | headBindingPattern @@ -3104,9 +3404,16 @@ simplePatternCommaList: { $1 } | simplePattern COMMA simplePatternCommaList - { match $3 with - | SynPat.Tuple(_, pats, _) -> SynPat.Tuple(false, $1 :: pats, rhs2 parseState 1 3) - | _ -> SynPat.Tuple(false, [$1; $3], rhs2 parseState 1 3) } + { let mComma = rhs parseState 2 + match $3 with + | SynPat.Tuple(_, pats, commas, _) -> SynPat.Tuple(false, $1 :: pats, mComma :: commas, rhs2 parseState 1 3) + | _ -> SynPat.Tuple(false, [$1; $3], [mComma], rhs2 parseState 1 3) } + +opt_simplePatterns: + | simplePatterns + { Some $1 } + + | { None } simplePatterns: | LPAREN simplePatternCommaList rparen @@ -3121,7 +3428,7 @@ simplePatterns: | LPAREN simplePatternCommaList recover { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen()) - let parenPat = SynPat.Paren(SynPat.Tuple(false, [], rhs2 parseState 1 2), rhs2 parseState 1 2) // todo: report parsed pats anyway? + let parenPat = SynPat.Paren(SynPat.Tuple(false, [], [], rhs2 parseState 1 2), rhs2 parseState 1 2) // todo: report parsed pats anyway? let simplePats, _ = SimplePatsOfPat parseState.SynArgNameGenerator parenPat simplePats } @@ -3150,9 +3457,10 @@ headBindingPattern: SynPat.ListCons($1, $3, rhs2 parseState 1 3, { ColonColonRange = mColonColon }) } | tuplePatternElements %prec pat_tuple - { let pats = normalizeTuplePat $1 + { let pats, commas = $1 + let pats, commas = normalizeTuplePat pats commas let m = (rhs parseState 1, pats) ||> unionRangeWithListBy (fun p -> p.Range) - SynPat.Tuple(false, List.rev pats, m) } + SynPat.Tuple(false, List.rev pats, List.rev commas, m) } | conjPatternElements %prec pat_conj { SynPat.Ands(List.rev $1, lhs parseState) } @@ -3162,35 +3470,37 @@ headBindingPattern: tuplePatternElements: | tuplePatternElements COMMA headBindingPattern - { $3 :: $1 } + { let pats, commas = $1 + $3 :: pats, (rhs parseState 2 :: commas) } | headBindingPattern COMMA headBindingPattern - { [$3; $1] } + { [$3; $1], [rhs parseState 2] } | tuplePatternElements COMMA ends_coming_soon_or_recover - { let commaRange = rhs parseState 2 - reportParseErrorAt commaRange (FSComp.SR.parsExpectingPatternInTuple ()) + { let pats, commas = $1 + let commaRange = rhs parseState 2 + reportParseErrorAt commaRange (FSComp.SR.parsExpectingPattern ()) let pat2 = SynPat.Wild(commaRange.EndRange) - pat2 :: $1 } + pat2 :: pats, (commaRange :: commas) } | headBindingPattern COMMA ends_coming_soon_or_recover { let commaRange = rhs parseState 2 - reportParseErrorAt commaRange (FSComp.SR.parsExpectingPatternInTuple ()) + reportParseErrorAt commaRange (FSComp.SR.parsExpectingPattern ()) let pat2 = SynPat.Wild(commaRange.EndRange) - [pat2; $1] } + [pat2; $1], [commaRange] } | COMMA headBindingPattern { let commaRange = rhs parseState 1 - reportParseErrorAt commaRange (FSComp.SR.parsExpectingPatternInTuple ()) + reportParseErrorAt commaRange (FSComp.SR.parsExpectingPattern ()) let pat1 = SynPat.Wild(commaRange.StartRange) - [$2; pat1] } + [$2; pat1], [commaRange] } | COMMA ends_coming_soon_or_recover { let commaRange = rhs parseState 1 if not $2 then reportParseErrorAt commaRange (FSComp.SR.parsExpectedPatternAfterToken ()) let pat1 = SynPat.Wild(commaRange.StartRange) let pat2 = SynPat.Wild(commaRange.EndRange) - [pat2; pat1] } + [pat2; pat1], [commaRange] } conjPatternElements: | conjPatternElements AMP headBindingPattern @@ -3201,21 +3511,26 @@ conjPatternElements: namePatPairs: | namePatPair opt_seps - { [$1], lhs parseState } + { [$1] } | namePatPair seps namePatPairs - { let (rs, _) = $3 - ($1 :: rs), lhs parseState } + { $1 :: $3 } + + | namePatPair seps seps namePatPairs + { reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsExpectingPattern ()) + ($1 :: $4) } namePatPair: | ident EQUALS parenPattern { let mEquals = rhs parseState 2 - ($1, Some mEquals, $3) } + $1, Some mEquals, $3 } + | ident EQUALS recover { let mEquals = rhs parseState 2 - ($1, Some mEquals, patFromParseError (SynPat.Wild mEquals.EndRange)) } + $1, Some mEquals, patFromParseError (SynPat.Wild mEquals.EndRange) } + | ident recover - { ($1, None, patFromParseError (SynPat.Wild $1.idRange.EndRange)) } + { $1, None, patFromParseError (SynPat.Wild $1.idRange.EndRange) } constrPattern: | atomicPatternLongIdent explicitValTyparDecls @@ -3267,9 +3582,8 @@ constrPattern: atomicPatsOrNamePatPairs: | LPAREN namePatPairs rparen { let mParen = rhs2 parseState 1 3 - let pats, m = $2 let trivia = { ParenRange = mParen } - SynArgPats.NamePatPairs(pats, m, trivia), snd $2 } + SynArgPats.NamePatPairs($2, rhs parseState 2, trivia), mParen } | atomicPatterns { let mParsed = rhs parseState 1 @@ -3296,12 +3610,11 @@ atomicPattern: | quoteExpr { SynPat.QuoteExpr($1, lhs parseState) } - | CHAR DOT_DOT CHAR - { SynPat.DeprecatedCharRange($1, $3, rhs2 parseState 1 3) } - | LBRACE recordPatternElementsAux rbrace - { let rs, m = $2 - SynPat.Record(rs, rhs2 parseState 1 3) } + { SynPat.Record($2, rhs2 parseState 1 3) } + + | LBRACE error rbrace + { SynPat.Record([], rhs2 parseState 1 3) } | LBRACK listPatternElements RBRACK { SynPat.ArrayOrList(false, $2, lhs parseState) } @@ -3358,11 +3671,13 @@ atomicPattern: patFromParseError parenPat } | STRUCT LPAREN tupleParenPatternElements rparen - { SynPat.Tuple(true, List.rev $3, lhs parseState) } + { let pats, commas = $3 + SynPat.Tuple(true, List.rev pats, List.rev commas, lhs parseState) } | STRUCT LPAREN tupleParenPatternElements recover { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnmatchedParen()) - SynPat.Tuple(true, List.rev $3, lhs parseState) } + let pats, commas = $3 + SynPat.Tuple(true, List.rev pats, List.rev commas, lhs parseState) } | STRUCT LPAREN error rparen { (* silent recovery *) SynPat.Wild(lhs parseState) } @@ -3412,9 +3727,10 @@ parenPattern: SynPat.Or($1, $3, rhs2 parseState 1 3, { BarRange = mBar }) } | tupleParenPatternElements - { let pats = normalizeTuplePat $1 + { let pats, commas = $1 + let pats, commas = normalizeTuplePat pats commas let m = (rhs parseState 1, pats) ||> unionRangeWithListBy (fun p -> p.Range) - SynPat.Tuple(false, List.rev pats, m) } + SynPat.Tuple(false, List.rev pats, List.rev commas, m) } | conjParenPatternElements { SynPat.Ands(List.rev $1, rhs2 parseState 1 3) } @@ -3440,35 +3756,39 @@ parenPattern: tupleParenPatternElements: | tupleParenPatternElements COMMA parenPattern - { $3 :: $1 } + { let pats, commas = $1 + let mComma = rhs parseState 2 + $3 :: pats, (mComma :: commas) } | parenPattern COMMA parenPattern - { [$3; $1] } + { let mComma = rhs parseState 2 + [$3; $1], [mComma] } | tupleParenPatternElements COMMA ends_coming_soon_or_recover - { let commaRange = rhs parseState 2 - reportParseErrorAt commaRange (FSComp.SR.parsExpectingPatternInTuple()) + { let pats, commas = $1 + let commaRange = rhs parseState 2 + reportParseErrorAt commaRange (FSComp.SR.parsExpectingPattern()) let pat2 = SynPat.Wild(commaRange.EndRange) - pat2 :: $1 } + pat2 :: pats, (commaRange :: commas) } | parenPattern COMMA ends_coming_soon_or_recover { let commaRange = rhs parseState 2 - reportParseErrorAt commaRange (FSComp.SR.parsExpectingPatternInTuple()) + reportParseErrorAt commaRange (FSComp.SR.parsExpectingPattern()) let pat2 = SynPat.Wild(commaRange.EndRange) - [pat2; $1] } + [pat2; $1], [commaRange] } | COMMA parenPattern { let commaRange = rhs parseState 1 - reportParseErrorAt commaRange (FSComp.SR.parsExpectingPatternInTuple()) + reportParseErrorAt commaRange (FSComp.SR.parsExpectingPattern()) let pat1 = SynPat.Wild(commaRange.StartRange) - [$2; pat1] } + [$2; pat1], [commaRange] } | COMMA ends_coming_soon_or_recover { let commaRange = rhs parseState 1 if not $2 then reportParseErrorAt commaRange (FSComp.SR.parsExpectedPatternAfterToken ()) let pat1 = SynPat.Wild(commaRange.StartRange) let pat2 = SynPat.Wild(commaRange.EndRange) - [pat2; pat1] } + [pat2; pat1], [commaRange] } conjParenPatternElements: | conjParenPatternElements AMP parenPattern @@ -3477,19 +3797,29 @@ conjParenPatternElements: | parenPattern AMP parenPattern { $3 :: $1 :: [] } -recordPatternElementsAux: /* Fix 1190 */ +recordPatternElementsAux: | recordPatternElement opt_seps - { [$1], lhs parseState } + { [$1] } | recordPatternElement seps recordPatternElementsAux - { let r = $1 - let (rs, dropMark) = $3 - (r :: rs), lhs parseState } + { $1 :: $3 } recordPatternElement: | path EQUALS parenPattern - { let mEquals = rhs parseState 2 - (List.frontAndBack $1.LongIdent, mEquals, $3) } + { let mPath = $1.Range + let mEquals = rhs parseState 2 + let mPat = $3.Range + List.frontAndBack $1.LongIdent, Some mEquals, $3 } + + | path EQUALS recover + { let mPath = $1.Range + let mEquals = rhs parseState 2 + let pat = SynPat.Wild(mEquals.EndRange) + List.frontAndBack $1.LongIdent, Some mEquals, pat } + + | path recover + { let pat = SynPat.Wild($1.Range.EndRange) + List.frontAndBack $1.LongIdent, None, pat } listPatternElements: | /* EMPTY */ @@ -3510,6 +3840,11 @@ typedSequentialExprBlock: { if not $3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileExpression()) exprFromParseError $2 } + | OBLOCKBEGIN oblockend + { let m = rhs parseState 1 + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectingExpression ()) + arbExpr ("typedSequentialExprBlock1", m.EndRange) } + | typedSequentialExpr { $1 } @@ -3518,6 +3853,11 @@ declExprBlock: | OBLOCKBEGIN typedSequentialExpr oblockend { $2 } + | OBLOCKBEGIN oblockend + { let m = rhs parseState 1 + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectingExpression ()) + arbExpr ("declExprBlock1", m.EndRange) } + | declExpr { $1 } @@ -3531,7 +3871,7 @@ typedSequentialExprBlockR: { fun _ -> $1 } | recover - { fun mStart -> arbExpr ("typedSequentialExprBlockR", mStart) } + { fun (mStart: range) -> arbExpr ("typedSequentialExprBlockR1", mStart.EndRange) } typedSequentialExpr: | sequentialExpr COLON typeWithTypeConstraints @@ -3593,7 +3933,7 @@ moreBinders: SynExprAndBang(spBind, $1, true, $2, $4, m, { EqualsRange = mEquals; InKeyword = Some mIn }) :: $6 } | OAND_BANG headBindingPattern EQUALS typedSequentialExprBlock hardwhiteDefnBindingsTerminator opt_OBLOCKSEP moreBinders %prec expr_let - { let report, mIn = $5 + { let report, mIn, _ = $5 report "and!" (rhs parseState 1) // report unterminated error let spBind = DebugPointAtBinding.Yes(rhs2 parseState 1 5) (* TODO Pretty sure this is wrong *) let mEquals = rhs parseState 3 @@ -3634,7 +3974,7 @@ declExpr: mkLocalBindings (unionRanges m (rhs parseState 3), hwlb, mIn, arbExpr ("declExpr3", (rhs parseState 3))) } | hardwhiteDoBinding %prec expr_let - { let e = snd $1 + { let (BindingSetPreAttrs(_, _, _, _, m)), e = $1 SynExpr.Do(e, unionRanges (rhs parseState 1).StartRange e.Range) } | anonMatchingExpr %prec expr_function @@ -3699,6 +4039,42 @@ declExpr: WithToEndRange = mWhole } SynExpr.TryWith(expr, [], mWhole, spTry, spWith, trivia) } + | TRY ORIGHT_BLOCK_END %prec expr_try + { let mTry = rhs parseState 1 + let mExpr = mTry.EndRange + let expr = arbExpr ("try1", mExpr) + let spTry = DebugPointAtTry.Yes mTry + let mWith, (clauses, mLast) = mExpr, ([], mExpr) + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectingExpression ()) + let spWith = DebugPointAtWith.Yes mWith + let mTryToWith = unionRanges mTry mWith + let mWithToLast = unionRanges mWith mLast + let mTryToLast = unionRanges mTry mLast + let trivia: SynExprTryWithTrivia = + { TryKeyword = mTry + TryToWithRange = mTryToWith + WithKeyword = mWith + WithToEndRange = mWithToLast } + SynExpr.TryWith(expr, clauses, mTryToLast, spTry, spWith, trivia) } + + | TRY ORIGHT_BLOCK_END withClauses %prec expr_try + { let mTry = rhs parseState 1 + let mExpr = mTry.EndRange + let expr = arbExpr ("try2", mExpr) + let spTry = DebugPointAtTry.Yes mTry + let mWith, (clauses, mLast) = $3 + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectingExpression ()) + let spWith = DebugPointAtWith.Yes mWith + let mTryToWith = unionRanges mTry mWith + let mWithToLast = unionRanges mWith mLast + let mTryToLast = unionRanges mTry mLast + let trivia: SynExprTryWithTrivia = + { TryKeyword = mTry + TryToWithRange = mTryToWith + WithKeyword = mWith + WithToEndRange = mWithToLast } + SynExpr.TryWith(expr, clauses, mTryToLast, spTry, spWith, trivia) } + | TRY typedSequentialExprBlockR FINALLY typedSequentialExprBlock %prec expr_try { let mTry = rhs parseState 1 let tryExpr = $2 mTry @@ -3715,22 +4091,22 @@ declExpr: $3 $2 mIf false } | IF declExpr recover %prec expr_if - { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsIncompleteIf()) - // Produce an approximate expression during error recovery. - // Include expressions to make sure they get type checked in case that generates useful results for intellisense. - // Generate a throwAway for the expression so it isn't forced to have a type 'bool' - // from the context it is used in. - exprFromParseError $2 } + { errorR (Error(FSComp.SR.parsIncompleteIf (), rhs parseState 1)) + let ifExpr = $2 + let mIf = rhs parseState 1 + let mThen = ifExpr.Range.EndRange + let m = unionRanges mIf mThen + let spIfToThen = DebugPointAtBinding.Yes m + let trivia = { IfKeyword = mIf; IsElif = false; ThenKeyword = mThen; ElseKeyword = None; IfToThenRange = m } + SynExpr.IfThenElse($2, arbExpr ("if1", mThen), None, spIfToThen, true, m, trivia) } | IF recover %prec expr_if - { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsIncompleteIf()) - // Produce an approximate expression during error recovery. There can still be value in doing this even - // for this pathological case. + { errorR (Error(FSComp.SR.parsIncompleteIf (), rhs parseState 1)) let m = rhs parseState 1 let mEnd = m.EndRange let spIfToThen = DebugPointAtBinding.Yes mEnd let trivia = { IfKeyword = m; IsElif = false; ThenKeyword = m; ElseKeyword = None; IfToThenRange = m } - exprFromParseError (SynExpr.IfThenElse(arbExpr ("ifGuard1", mEnd), arbExpr ("thenBody1", mEnd), None, spIfToThen, true, m, trivia)) } + SynExpr.IfThenElse(arbExpr ("if2", mEnd), arbExpr ("if3", mEnd), None, spIfToThen, true, m, trivia) } | LAZY declExpr %prec expr_lazy { SynExpr.Lazy($2, unionRanges (rhs parseState 1) $2.Range) } @@ -3750,144 +4126,106 @@ declExpr: | OASSERT %prec expr_assert { raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsAssertIsNotFirstClassValue()) } - | WHILE declExpr doToken typedSequentialExprBlock doneDeclEnd - { let mWhileHeader = unionRanges (rhs parseState 1) $2.Range - let spWhile = DebugPointAtWhile.Yes mWhileHeader - let mWhileAll = unionRanges (rhs parseState 1) $4.Range - SynExpr.While(spWhile, $2, $4, mWhileAll) } + | WHILE whileExprCore + { SynExpr.While ($2 (rhs parseState 1)) } - | WHILE declExpr doToken typedSequentialExprBlock recover - { if not $5 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileWhile()) - let mWhileHeader = unionRanges (rhs parseState 1) $2.Range - let spWhile = DebugPointAtWhile.Yes mWhileHeader - let mWhileAll = unionRanges (rhs parseState 1) $4.Range - exprFromParseError (SynExpr.While(spWhile, $2, $4, mWhileAll)) } - - | WHILE declExpr doToken error doneDeclEnd - { // silent recovery - let mWhileHeader = unionRanges (rhs parseState 1) $2.Range - let spWhile = DebugPointAtWhile.Yes mWhileHeader - let mWhileBodyArb = unionRanges (rhs parseState 4) (rhs parseState 5) - let mWhileAll = unionRanges (rhs parseState 1) (rhs parseState 5) - SynExpr.While(spWhile, $2, arbExpr ("whileBody1", mWhileBodyArb), mWhileAll) } - - | WHILE declExpr recover - { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsWhileDoExpected()) - let mWhileHeader = unionRanges (rhs parseState 1) $2.Range - let spWhile = DebugPointAtWhile.Yes mWhileHeader - let mWhileBodyArb = rhs parseState 3 - let mWhileAll = unionRanges (rhs parseState 1) (rhs parseState 3) - exprFromParseError (SynExpr.While(spWhile, $2, arbExpr ("whileBody2", mWhileBodyArb), mWhileAll)) } - - | WHILE recover - { if not $2 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileWhile()) - arbExpr ("whileLoop1", rhs parseState 1) } - - | WHILE error doneDeclEnd - { //silent recovery - let mWhileHeader = rhs parseState 1 - let spWhile = DebugPointAtWhile.Yes mWhileHeader - let mWhileBodyArb = rhs parseState 3 - let mWhileAll = unionRanges (rhs parseState 1) (rhs parseState 3) - exprFromParseError (SynExpr.While(spWhile, arbExpr ("whileGuard1", mWhileHeader), arbExpr ("whileBody3", mWhileBodyArb), mWhileAll)) } + | WHILE_BANG whileExprCore + { let mKeyword = rhs parseState 1 + parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.WhileBang mKeyword + SynExpr.WhileBang ($2 mKeyword) } | FOR forLoopBinder doToken typedSequentialExprBlock doneDeclEnd { let mFor = rhs parseState 1 let mDo = rhs parseState 3 let spFor = DebugPointAtFor.Yes mFor - let (a, b, _, spIn) = $2 - SynExpr.ForEach(spFor, spIn, SeqExprOnly false, true, a, b, $4, unionRanges (rhs parseState 1) $4.Range) } + let (pat, expr, _, spIn) = $2 + SynExpr.ForEach(spFor, spIn, SeqExprOnly false, true, pat, expr, $4, unionRanges mFor $5) } | FOR forLoopBinder doToken typedSequentialExprBlock ends_coming_soon_or_recover - { if not $5 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileFor()) - let mFor = rhs parseState 1 + { let mFor = rhs parseState 1 + if not $5 then reportParseErrorAt mFor (FSComp.SR.parsUnexpectedEndOfFileFor ()) let spFor = DebugPointAtFor.Yes mFor - let (a, b, _, spIn) = $2 - let mForLoopAll = unionRanges (rhs parseState 1) $4.Range - SynExpr.ForEach(spFor, spIn, SeqExprOnly false, true, a, b, $4, mForLoopAll) } + let (pat, expr, _, spIn) = $2 + SynExpr.ForEach(spFor, spIn, SeqExprOnly false, true, pat, expr, $4, unionRanges mFor $4.Range) } | FOR forLoopBinder doToken error doneDeclEnd - { // Silent recovery - let mFor = rhs parseState 1 + { let mFor = rhs parseState 1 let spFor = DebugPointAtFor.Yes mFor - let (a, b, _, spIn) = $2 - let mForLoopBodyArb = rhs parseState 5 - let mForLoopAll = rhs2 parseState 1 5 - SynExpr.ForEach(spFor, spIn, SeqExprOnly false, true, a, b, arbExpr ("forLoopBody2a", mForLoopBodyArb), mForLoopAll) } + let (pat, expr, _, spIn) = $2 + let bodyExpr = arbExpr ("forLoopBody2a", rhs parseState 4) + SynExpr.ForEach(spFor, spIn, SeqExprOnly false, true, pat, expr, bodyExpr, unionRanges mFor $5) } | FOR forLoopBinder doToken ends_coming_soon_or_recover - { if not $4 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsExpectedExpressionAfterToken()) - let mFor = rhs parseState 1 + { let mFor = rhs parseState 1 + if not $4 then reportParseErrorAt mFor (FSComp.SR.parsExpectedExpressionAfterToken ()) let spFor = DebugPointAtFor.Yes mFor - let (a, b, _, spIn) = $2 - let mForLoopBodyArb = rhs parseState 3 - let mForLoopAll = rhs2 parseState 1 3 - SynExpr.ForEach(spFor, spIn, SeqExprOnly false, true, a, b, arbExpr ("forLoopBody2", mForLoopBodyArb), mForLoopAll) } + let (pat, expr, _, spIn) = $2 + let mDo = rhs parseState 3 + let bodyExpr = arbExpr ("forLoopBody2", mDo.EndRange) + SynExpr.ForEach(spFor, spIn, SeqExprOnly false, true, pat, expr, bodyExpr, unionRanges mFor mDo) } | FOR forLoopBinder ends_coming_soon_or_recover - { let (a, b, ok, spIn) = $2 - if not $3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsForDoExpected()) - let mFor = rhs parseState 1 + { let mFor = rhs parseState 1 + let (pat, expr, ok, spIn) = $2 + if not $3 then reportParseErrorAt mFor (FSComp.SR.parsForDoExpected ()) let spFor = DebugPointAtFor.Yes mFor - let mForLoopBodyArb = rhs parseState 3 - let mForLoopAll = rhs2 parseState 1 3 - SynExpr.ForEach(spFor, spIn, SeqExprOnly false, true, a, b, arbExpr ("forLoopBody1", mForLoopBodyArb), mForLoopAll) } + let mExpr = expr.Range + let mForLoopBodyArb = mExpr.EndRange + let bodyExpr = arbExpr ("forLoopBody1", mForLoopBodyArb) + SynExpr.ForEach(spFor, spIn, SeqExprOnly false, true, pat, expr, bodyExpr, unionRanges mFor mForLoopBodyArb) } | FOR forLoopBinder opt_OBLOCKSEP arrowThenExprR %prec expr_let - { let spFor = DebugPointAtFor.Yes(rhs parseState 1) - let (a, b, _, spIn) = $2 - SynExpr.ForEach(spFor, spIn, SeqExprOnly true, true, a, b, $4, unionRanges (rhs parseState 1) $4.Range) } + { let mFor = rhs parseState 1 + let spFor = DebugPointAtFor.Yes mFor + let (pat, expr, _, spIn) = $2 + SynExpr.ForEach(spFor, spIn, SeqExprOnly true, true, pat, expr, $4, unionRanges mFor $4.Range) } | FOR forLoopRange doToken typedSequentialExprBlock doneDeclEnd { let mFor = rhs parseState 1 let spFor = DebugPointAtFor.Yes mFor - let (a, b, c, d, e, spTo) = $2 - let mForLoopAll = unionRanges (rhs parseState 1) $4.Range - SynExpr.For(spFor, spTo, a, b, c, d, e, $4, mForLoopAll) } + let (a, b, c, d, exprTo, spTo) = $2 + SynExpr.For(spFor, spTo, a, b, c, d, exprTo, $4, unionRanges mFor $5) } | FOR forLoopRange doToken typedSequentialExprBlock recover - { if not $5 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileFor()) - // Still produce an expression - let mFor = rhs parseState 1 + { let mFor = rhs parseState 1 + if not $5 then reportParseErrorAt mFor (FSComp.SR.parsUnexpectedEndOfFileFor ()) let spFor = DebugPointAtFor.Yes mFor - let (a, b, c, d, e, spTo) = $2 - let mForLoopAll = unionRanges (rhs parseState 1) $4.Range - exprFromParseError (SynExpr.For(spFor, spTo, a, b, c, d, e, $4, mForLoopAll)) } + let (a, b, c, d, exprTo, spTo) = $2 + SynExpr.For(spFor, spTo, a, b, c, d, exprTo, $4, unionRanges mFor $4.Range) } | FOR forLoopRange doToken error doneDeclEnd - { // silent recovery - let mFor = rhs parseState 1 + { let mFor = rhs parseState 1 let spFor = DebugPointAtFor.Yes mFor - let (a, b, c, d, e, spTo) = $2 - let mForLoopBodyArb = rhs parseState 5 - let mForLoopAll = rhs2 parseState 1 5 - SynExpr.For(spFor, spTo, a, b, c, d, e, arbExpr ("declExpr11", mForLoopBodyArb), mForLoopAll) } + let (a, b, c, d, exprTo, spTo) = $2 + let mForLoopBodyArb = rhs parseState 4 + let bodyExpr = arbExpr ("declExpr11", mForLoopBodyArb) + SynExpr.For(spFor, spTo, a, b, c, d, exprTo, bodyExpr, unionRanges mFor $5) } | FOR forLoopRange doToken recover - { if not $4 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileFor()) - let mFor = rhs parseState 1 + { let mFor = rhs parseState 1 + if not $4 then reportParseErrorAt mFor (FSComp.SR.parsUnexpectedEndOfFileFor ()) let spFor = DebugPointAtFor.Yes mFor - let (a, b, c, d, e, spTo) = $2 - let mForLoopBodyArb = rhs parseState 3 - let mForLoopAll = rhs2 parseState 1 3 - exprFromParseError (SynExpr.For(spFor, spTo, a, b, c, d, e, arbExpr ("declExpr11", mForLoopBodyArb), mForLoopAll)) } + let (a, b, c, d, exprTo, spTo) = $2 + let mDo = rhs parseState 3 + let bodyExpr = arbExpr ("declExpr11", mDo.EndRange) + SynExpr.For(spFor, spTo, a, b, c, d, exprTo, bodyExpr, rhs2 parseState 1 3) } | FOR forLoopRange recover - { if not $3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileFor()) - let mFor = rhs parseState 1 + { let mFor = rhs parseState 1 + if not $3 then reportParseErrorAt mFor (FSComp.SR.parsUnexpectedEndOfFileFor ()) let spFor = DebugPointAtFor.Yes mFor - let (a, b, c, d, e, spTo) = $2 - let mForLoopBodyArb = (rhs parseState 2).EndRange - let mForLoopAll = rhs2 parseState 1 2 - exprFromParseError (SynExpr.For(spFor, spTo, a, b, c, d, e, arbExpr ("declExpr11", mForLoopBodyArb), mForLoopAll)) } + let (a, b, c, d, exprTo, spTo) = $2 + let mExpr = exprTo.Range + let bodyExpr = arbExpr ("declExpr11", mExpr.EndRange) + SynExpr.For(spFor, spTo, a, b, c, d, exprTo, bodyExpr, unionRanges mFor mExpr) } | FOR error doToken typedSequentialExprBlock doneDeclEnd - { // silent recovery - let mFor = rhs parseState 1 + { let mFor = rhs parseState 1 let spToFake = DebugPointAtInOrTo.Yes mFor - let mForLoopAll = unionRanges (rhs parseState 1) $4.Range let spFor = DebugPointAtFor.Yes mFor - SynExpr.For(spFor, spToFake, mkSynId mFor "_loopVar", None, arbExpr ("startLoopRange1", mFor), true, arbExpr ("endLoopRange1", rhs parseState 3), $4, mForLoopAll) } + let expr1 = arbExpr ("startLoopRange1", mFor) + let expr2 = arbExpr ("endLoopRange1", rhs parseState 3) + SynExpr.For(spFor, spToFake, mkSynId mFor "_loopVar", None, expr1, true, expr2, $4, unionRanges mFor $4.Range) } | FOR ends_coming_soon_or_recover { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsIdentifierExpected()) @@ -3934,7 +4272,7 @@ declExpr: SynExpr.LetOrUseBang(spBind, ($1 = "use"), true, $2, $4, $7, $8, m, trivia) } | OBINDER headBindingPattern EQUALS typedSequentialExprBlock hardwhiteDefnBindingsTerminator opt_OBLOCKSEP moreBinders typedSequentialExprBlock %prec expr_let - { let report, mIn = $5 + { let report, mIn, _ = $5 report (if $1 = "use" then "use!" else "let!") (rhs parseState 1) // report unterminated error let spBind = DebugPointAtBinding.Yes(unionRanges (rhs parseState 1) $4.Range) let mEquals = rhs parseState 3 @@ -4000,162 +4338,174 @@ declExpr: | tupleExpr %prec expr_tuple { let exprs, commas = $1 - let exprs, commas = - // Nested non-struct tuple is only possible during error recovery, - // in other situations there are intermediate nodes. - match exprs with - | SynExpr.Tuple(false, _, _, _) :: _ -> normalizeTupleExpr exprs commas - | _ -> exprs, commas - - SynExpr.Tuple(false, List.rev exprs, List.rev commas, (commas.Head, exprs) ||> unionRangeWithListBy (fun e -> e.Range)) } + let m = unionRanges exprs.Head.Range (List.last exprs).Range + SynExpr.Tuple(false, List.rev exprs, List.rev commas, m) } | declExpr JOIN_IN declExpr { SynExpr.JoinIn($1, rhs parseState 2, $3, unionRanges $1.Range $3.Range) } + | declExpr JOIN_IN ends_coming_soon_or_recover + { let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "in") + mkSynInfix mOp $1 "@in" (arbExpr ("declExprInfixJoinIn", mOp.EndRange)) } + | declExpr BAR_BAR declExpr { mkSynInfix (rhs parseState 2) $1 "||" $3 } + | declExpr BAR_BAR ends_coming_soon_or_recover + { let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "||") + mkSynInfix mOp $1 "||" (arbExpr ("declExprInfixBarBar", mOp.EndRange)) } + | declExpr INFIX_BAR_OP declExpr { mkSynInfix (rhs parseState 2) $1 $2 $3 } + | declExpr INFIX_BAR_OP ends_coming_soon_or_recover + { let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression $2) + mkSynInfix mOp $1 $2 (arbExpr ("declExprInfixBarOp", mOp.EndRange)) } + | declExpr OR declExpr { mkSynInfix (rhs parseState 2) $1 "or" $3 } + | declExpr OR ends_coming_soon_or_recover + { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression "or") + mkSynInfix (rhs parseState 2) $1 "or" (arbExpr ("declExprInfixOr", (rhs parseState 3).StartRange)) } + | declExpr AMP declExpr { mkSynInfix (rhs parseState 2) $1 "&" $3 } + | declExpr AMP ends_coming_soon_or_recover + { let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "&") + mkSynInfix mOp $1 "&" (arbExpr ("declExprInfixAmp", mOp.EndRange)) } + | declExpr AMP_AMP declExpr { mkSynInfix (rhs parseState 2) $1 "&&" $3 } + | declExpr AMP_AMP ends_coming_soon_or_recover + { let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "&&") + mkSynInfix mOp $1 "&&" (arbExpr ("declExprInfixAmpAmp", mOp.EndRange)) } + | declExpr INFIX_AMP_OP declExpr { mkSynInfix (rhs parseState 2) $1 $2 $3 } + | declExpr INFIX_AMP_OP ends_coming_soon_or_recover + { let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression $2) + mkSynInfix mOp $1 $2 (arbExpr ("declExprInfixAmpOp", (rhs parseState 3).StartRange)) } + | declExpr EQUALS declExpr { mkSynInfix (rhs parseState 2) $1 "=" $3 } + | declExpr EQUALS ends_coming_soon_or_recover + { let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "=") + mkSynInfix mOp $1 "=" (arbExpr ("declExprInfixEquals", mOp.EndRange)) } + | declExpr INFIX_COMPARE_OP declExpr { mkSynInfix (rhs parseState 2) $1 $2 $3 } + | declExpr INFIX_COMPARE_OP ends_coming_soon_or_recover + { let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression $2) + mkSynInfix mOp $1 $2 (arbExpr ("declExprInfix", mOp.EndRange)) } + | declExpr DOLLAR declExpr { mkSynInfix (rhs parseState 2) $1 "$" $3 } + | declExpr DOLLAR ends_coming_soon_or_recover + { let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "$") + mkSynInfix mOp $1 "$" (arbExpr ("declExprInfixDollar", mOp.EndRange)) } + | declExpr LESS declExpr { mkSynInfix (rhs parseState 2) $1 "<" $3 } - | declExpr LESS recover - { if not $3 then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("<")) - exprFromParseError (mkSynInfix (rhs parseState 2) $1 "<" (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) } + | declExpr LESS ends_coming_soon_or_recover + { let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "<") + mkSynInfix mOp $1 "<" (arbExpr ("declExprInfixLess", mOp.EndRange)) } | declExpr GREATER declExpr { mkSynInfix (rhs parseState 2) $1 ">" $3 } + | declExpr GREATER ends_coming_soon_or_recover + { let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression ">") + mkSynInfix mOp $1 ">" (arbExpr ("declExprInfixGreater", mOp.EndRange)) } + | declExpr INFIX_AT_HAT_OP declExpr { mkSynInfix (rhs parseState 2) $1 $2 $3 } + | declExpr INFIX_AT_HAT_OP ends_coming_soon_or_recover %prec infix_at_hat_op_binary + { let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression $2) + mkSynInfix mOp $1 $2 (arbExpr ("declExprInfix", mOp.EndRange)) } + | declExpr PERCENT_OP declExpr { mkSynInfix (rhs parseState 2) $1 $2 $3 } + | declExpr PERCENT_OP ends_coming_soon_or_recover + { let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression $2) + mkSynInfix mOp $1 $2 (arbExpr ("declExprInfixPercent", mOp.EndRange)) } + | declExpr COLON_COLON declExpr - { let tupExpr = SynExpr.Tuple(false, [$1;$3], [rhs parseState 2], unionRanges $1.Range $3.Range) - let identExpr = mkSynOperator (rhs parseState 2) "::" - SynExpr.App(ExprAtomicFlag.NonAtomic, true, identExpr, tupExpr, unionRanges $1.Range $3.Range) } + { let mOp = rhs parseState 2 + let m = unionRanges $1.Range $3.Range + let tupExpr = SynExpr.Tuple(false, [$1; $3], [mOp], m) + let identExpr = mkSynOperator mOp "::" + SynExpr.App(ExprAtomicFlag.NonAtomic, true, identExpr, tupExpr, m) } + + | declExpr COLON_COLON ends_coming_soon_or_recover + { let mOp = rhs parseState 2 + let m = unionRanges $1.Range mOp + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "::") + let identExpr = mkSynOperator mOp "::" + let tupExpr = SynExpr.Tuple(false, [$1; (arbExpr ("declExprInfixColonColon", mOp.EndRange))], [mOp], m) + SynExpr.App(ExprAtomicFlag.NonAtomic, true, identExpr, tupExpr, m) } | declExpr PLUS_MINUS_OP declExpr { mkSynInfix (rhs parseState 2) $1 $2 $3 } + | declExpr PLUS_MINUS_OP ends_coming_soon_or_recover + { let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression $2) + mkSynInfix mOp $1 $2 (arbExpr ("declExprInfixPlusMinus", mOp.EndRange)) } + | declExpr MINUS declExpr { mkSynInfix (rhs parseState 2) $1 "-" $3 } + | declExpr MINUS ends_coming_soon_or_recover + { let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "-") + mkSynInfix mOp $1 "-" (arbExpr ("declExprInfixMinus", mOp.EndRange)) } + | declExpr STAR declExpr { mkSynInfix (rhs parseState 2) $1 "*" $3 } + | declExpr STAR ends_coming_soon_or_recover + { let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression "*") + mkSynInfix mOp $1 "*" (arbExpr ("declExprInfixStar", mOp.EndRange)) } + | declExpr INFIX_STAR_DIV_MOD_OP declExpr { mkSynInfix (rhs parseState 2) $1 $2 $3 } + | declExpr INFIX_STAR_DIV_MOD_OP ends_coming_soon_or_recover + { let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression $2) + mkSynInfix mOp $1 $2 (arbExpr ("declExprInfixStarDivMod", mOp.EndRange)) } + | declExpr INFIX_STAR_STAR_OP declExpr { mkSynInfix (rhs parseState 2) $1 $2 $3 } - | declExpr JOIN_IN OBLOCKEND_COMING_SOON - { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("in")) - exprFromParseError(mkSynInfix (rhs parseState 2) $1 "@in" (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) } - - | declExpr BAR_BAR OBLOCKEND_COMING_SOON - { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("||")) - exprFromParseError(mkSynInfix (rhs parseState 2) $1 "||" (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) } - - | declExpr INFIX_BAR_OP OBLOCKEND_COMING_SOON - { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression($2)) - exprFromParseError(mkSynInfix (rhs parseState 2) $1 $2 (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) } - - | declExpr OR OBLOCKEND_COMING_SOON - { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("or")) - exprFromParseError(mkSynInfix (rhs parseState 2) $1 "or" (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) } - - | declExpr AMP OBLOCKEND_COMING_SOON - { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("&")) - exprFromParseError(mkSynInfix (rhs parseState 2) $1 "&" (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) } - - | declExpr AMP_AMP OBLOCKEND_COMING_SOON - { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("&&")) - exprFromParseError(mkSynInfix (rhs parseState 2) $1 "&&" (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) } - - | declExpr INFIX_AMP_OP OBLOCKEND_COMING_SOON - { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression($2)) - exprFromParseError(mkSynInfix (rhs parseState 2) $1 $2 (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) } - - | declExpr EQUALS OBLOCKEND_COMING_SOON - { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("=")) - exprFromParseError(mkSynInfix (rhs parseState 2) $1 "=" (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) } - - | declExpr INFIX_COMPARE_OP OBLOCKEND_COMING_SOON - { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression($2)) - exprFromParseError(mkSynInfix (rhs parseState 2) $1 $2 (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) } - - | declExpr DOLLAR OBLOCKEND_COMING_SOON - { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("$")) - exprFromParseError(mkSynInfix (rhs parseState 2) $1 "$" (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) } - - | declExpr LESS OBLOCKEND_COMING_SOON - { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("<")) - exprFromParseError(mkSynInfix (rhs parseState 2) $1 "<" (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) } - - | declExpr GREATER OBLOCKEND_COMING_SOON - { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression(">")) - exprFromParseError(mkSynInfix (rhs parseState 2) $1 ">" (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) } - - | declExpr INFIX_AT_HAT_OP OBLOCKEND_COMING_SOON %prec infix_at_hat_op_binary - { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression($2)) - exprFromParseError(mkSynInfix (rhs parseState 2) $1 $2 (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) } - - | declExpr PERCENT_OP OBLOCKEND_COMING_SOON - { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression($2)) - exprFromParseError(mkSynInfix (rhs parseState 2) $1 $2 (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) } - - | declExpr COLON_COLON OBLOCKEND_COMING_SOON - { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("::")) - let identExpr = mkSynOperator (rhs parseState 2) "::" - let tupExpr = SynExpr.Tuple(false, [$1;(arbExpr ("declExprInfix", (rhs parseState 3).StartRange))], [rhs parseState 2], unionRanges $1.Range (rhs parseState 3).StartRange) - SynExpr.App(ExprAtomicFlag.NonAtomic, true, identExpr, tupExpr, unionRanges $1.Range (rhs parseState 3).StartRange) } - - | declExpr PLUS_MINUS_OP OBLOCKEND_COMING_SOON - { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression($2)) - exprFromParseError(mkSynInfix (rhs parseState 2) $1 $2 (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) } - - | declExpr MINUS OBLOCKEND_COMING_SOON - { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("-")) - exprFromParseError(mkSynInfix (rhs parseState 2) $1 "-" (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) } - - | declExpr STAR OBLOCKEND_COMING_SOON - { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("*")) - exprFromParseError(mkSynInfix (rhs parseState 2) $1 "*" (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) } - - | declExpr INFIX_STAR_DIV_MOD_OP OBLOCKEND_COMING_SOON - { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression($2)) - exprFromParseError(mkSynInfix (rhs parseState 2) $1 $2 (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) } - - | declExpr INFIX_STAR_STAR_OP OBLOCKEND_COMING_SOON - { reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression($2)) - exprFromParseError(mkSynInfix (rhs parseState 2) $1 $2 (arbExpr ("declExprInfix", (rhs parseState 3).StartRange))) } + | declExpr INFIX_STAR_STAR_OP ends_coming_soon_or_recover + { let mOp = rhs parseState 2 + reportParseErrorAt mOp (FSComp.SR.parsUnfinishedExpression $2) + mkSynInfix mOp $1 $2 (arbExpr ("declExprInfixStarStar", mOp.EndRange)) } | declExpr DOT_DOT declExpr { let wholem = rhs2 parseState 1 3 @@ -4178,6 +4528,65 @@ declExpr: | minusExpr %prec expr_prefix_plus_minus { $1 } +whileExprCore: + | declExpr doToken typedSequentialExprBlock doneDeclEnd + { fun mKeyword -> + let mWhileHeader = unionRanges mKeyword $1.Range + let spWhile = DebugPointAtWhile.Yes mWhileHeader + let mWhileAll = unionRanges mKeyword $4 + + spWhile, $1, $3, mWhileAll } + + | declExpr doToken typedSequentialExprBlock recover + { fun mKeyword -> + if not $4 then reportParseErrorAt mKeyword (FSComp.SR.parsUnexpectedEndOfFileWhile ()) + let mWhileHeader = unionRanges mKeyword $1.Range + let spWhile = DebugPointAtWhile.Yes mWhileHeader + let mWhileAll = unionRanges mKeyword $3.Range + + spWhile, $1, $3, mWhileAll } + + | declExpr doToken error doneDeclEnd + { let mWhileBodyArb = rhs parseState 3 + + fun mKeyword -> + let mWhileHeader = unionRanges mKeyword $1.Range + let spWhile = DebugPointAtWhile.Yes mWhileHeader + let mWhileAll = unionRanges mKeyword $4 + let bodyArb = arbExpr ("whileBody1", mWhileBodyArb) + + spWhile, $1, bodyArb, mWhileAll } + + | declExpr recover + { fun mKeyword -> + reportParseErrorAt mKeyword (FSComp.SR.parsWhileDoExpected()) + let mWhileHeader = unionRanges mKeyword $1.Range + let spWhile = DebugPointAtWhile.Yes mWhileHeader + let mWhileAll = mWhileHeader + let bodyArb = arbExpr ("whileBody2", $1.Range.EndRange) + + spWhile, $1, bodyArb, mWhileAll } + + | recover + { fun mKeyword -> + if not $1 then reportParseErrorAt mKeyword (FSComp.SR.parsUnexpectedEndOfFileWhile ()) + let spWhile = DebugPointAtWhile.Yes mKeyword + let expr1 = arbExpr ("whileLoop1", mKeyword.EndRange) + let expr2 = arbExpr ("whileLoop2", mKeyword.EndRange) + + spWhile, expr1, expr2, mKeyword } + + | error doneDeclEnd + { let mWhileBodyArb = rhs parseState 1 + + fun mKeyword -> + let spWhile = DebugPointAtWhile.Yes mKeyword + let expr1 = arbExpr ("whileGuard1", mKeyword.EndRange) + let expr2 = arbExpr ("whileBody3", mWhileBodyArb.EndRange) + let mWhileAll = unionRanges mKeyword $2 + + spWhile, expr1, expr2, mWhileAll } + dynamicArg: | IDENT { let m = rhs parseState 1 @@ -4200,6 +4609,11 @@ withClauses: { if not $3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileWith()) rhs parseState 1, $2 } + | OWITH recover + { let mWith = rhs parseState 1 + if not $2 then reportParseErrorAt mWith (FSComp.SR.parsUnexpectedEndOfFileWith ()) + mWith, ([], mWith.EndRange) } + withPatternClauses: | patternClauses { $1 None } @@ -4301,12 +4715,16 @@ ifExprThen: | THEN declExpr %prec prec_then_if { $2, rhs parseState 1 } - | OTHEN OBLOCKBEGIN typedSequentialExpr oblockend %prec prec_then_if - { $3, rhs parseState 1 } + | THEN recover %prec prec_then_if + { let mThen = rhs parseState 1 + arbExpr ("ifThen1", mThen.EndRange), mThen } + + | OTHEN typedSequentialExprBlock %prec prec_then_if + { $2, rhs parseState 1 } - | OTHEN OBLOCKBEGIN typedSequentialExpr recover %prec prec_then_if - { if not $4 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileThen()) - exprFromParseError $3, rhs parseState 1 } + | OTHEN recover %prec prec_then_if + { let mThen = rhs parseState 1 + arbExpr ("ifThen2", mThen.EndRange), mThen } ifExprElifs: | /* EMPTY */ @@ -4316,14 +4734,9 @@ ifExprElifs: { let mElse = rhs parseState 1 Some mElse, Some $2 } - | OELSE OBLOCKBEGIN typedSequentialExpr oblockend + | OELSE typedSequentialExprBlock { let mElse = rhs parseState 1 - Some mElse, Some $3 } - - | OELSE OBLOCKBEGIN typedSequentialExpr recover - { let mElse = rhs parseState 1 - if not $4 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileElse()) - Some mElse, Some(exprFromParseError $3) } + Some mElse, Some $2 } | ELIF declExpr ifExprCases { let mElif = rhs parseState 1 @@ -4351,23 +4764,47 @@ tupleExpr: let exprs, commas = $1 arbExpr ("tupleExpr1", commaRange.EndRange) :: exprs, commaRange :: commas } + | tupleExpr COMMA COMMA declExpr + { let exprs, commas = $1 + let mComma1 = rhs parseState 2 + let mComma2 = rhs parseState 3 + reportParseErrorAt mComma2 (FSComp.SR.parsExpectingExpression ()) + let expr = arbExpr ("tupleExpr2", mComma1.EndRange) + $4 :: expr :: exprs, (mComma2 :: mComma1 :: commas) } + + | tupleExpr COMMA COMMA ends_coming_soon_or_recover + { let exprs, commas = $1 + let mComma1 = rhs parseState 2 + let mComma2 = rhs parseState 3 + reportParseErrorAt mComma2 (FSComp.SR.parsExpectingExpression ()) + if not $4 then reportParseErrorAt mComma2 (FSComp.SR.parsExpectedExpressionAfterToken ()) + let expr1 = arbExpr ("tupleExpr3", mComma1.EndRange) + let expr2 = arbExpr ("tupleExpr4", mComma2.EndRange) + expr2 :: expr1 :: exprs, mComma2 :: mComma1 :: commas } + | declExpr COMMA ends_coming_soon_or_recover { let commaRange = rhs parseState 2 if not $3 then reportParseErrorAt commaRange (FSComp.SR.parsExpectedExpressionAfterToken ()) - [arbExpr ("tupleExpr2", commaRange.EndRange); $1], [commaRange] } + [arbExpr ("tupleExpr5", commaRange.EndRange); $1], [commaRange] } | declExpr COMMA declExpr { [$3; $1], [rhs parseState 2] } - | COMMA declExpr - { let commaRange = rhs parseState 1 - reportParseErrorAt commaRange (FSComp.SR.parsExpectingExpressionInTuple ()) - [$2; arbExpr ("tupleExpr3", commaRange.StartRange)], [commaRange] } - - | COMMA ends_coming_soon_or_recover - { let commaRange = rhs parseState 1 - if not $2 then reportParseErrorAt commaRange (FSComp.SR.parsExpectedExpressionAfterToken ()) - [arbExpr ("tupleExpr4", commaRange.EndRange); arbExpr ("tupleExpr5", commaRange.StartRange)], [commaRange] } + | declExpr COMMA COMMA ends_coming_soon_or_recover + { let mComma1 = rhs parseState 2 + let mComma2 = rhs parseState 3 + reportParseErrorAt mComma2 (FSComp.SR.parsExpectingExpression ()) + if not $4 then reportParseErrorAt mComma2 (FSComp.SR.parsExpectedExpressionAfterToken ()) + let expr1 = arbExpr ("tupleExpr6", mComma1.EndRange) + let expr2 = arbExpr ("tupleExpr7", mComma2.EndRange) + [expr2; expr1; $1], [mComma2; mComma1] } + + | declExpr COMMA COMMA declExpr + { let mComma1 = rhs parseState 2 + let mComma2 = rhs parseState 3 + reportParseErrorAt mComma2 (FSComp.SR.parsExpectingExpression ()) + let expr = arbExpr ("tupleExpr8", mComma1.EndRange) + [$4; expr; $1], [mComma2; mComma1] } minusExpr: | INFIX_AT_HAT_OP minusExpr @@ -4440,6 +4877,23 @@ argExpr: arg } atomicExpr: + | UNDERSCORE DOT atomicExpr %prec dot_lambda + { let mUnderscore = rhs parseState 1 + let mDot = rhs parseState 2 + parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.AccessorFunctionShorthand (unionRanges mUnderscore mDot ) + let expr, hpa = $3 + let trivia: SynExprDotLambdaTrivia = { UnderscoreRange = mUnderscore ; DotRange = mDot } + SynExpr.DotLambda(expr, unionRanges mUnderscore expr.Range, trivia), false } + + | UNDERSCORE DOT appExpr recover %prec dot_lambda + { let mUnderscore = rhs parseState 1 + let mDot = rhs parseState 2 + parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.AccessorFunctionShorthand (unionRanges mUnderscore mDot ) + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnderScoreDotLambdaNonAtomic()) + let expr = $3 + let trivia: SynExprDotLambdaTrivia = { UnderscoreRange = mUnderscore ; DotRange = mDot } + SynExpr.DotLambda(expr, unionRanges mUnderscore expr.Range, trivia), false } + | atomicExpr HIGH_PRECEDENCE_BRACK_APP atomicExpr { let arg1, _ = $1 let arg2, hpa = $3 @@ -4534,18 +4988,18 @@ atomicExprQualification: | GLOBAL { (fun e mLhs mDot -> reportParseErrorAt (rhs parseState 3) (FSComp.SR.nrGlobalUsedOnlyAsFirstName()) - let fixedLhsm = mkRange mLhs.FileName mLhs.Start mDot.End // previous mLhs is wrong after 'recover' + let fixedLhsm = withEnd mDot.End mLhs // previous mLhs is wrong after 'recover' mkSynDotMissing mDot fixedLhsm e) } | /* empty */ { (fun e mLhs mDot -> reportParseErrorAt mDot (FSComp.SR.parsMissingQualificationAfterDot()) - let fixedLhsm = mkRange mLhs.FileName mLhs.Start mDot.End // previous mLhs is wrong after 'recover' + let fixedLhsm = withEnd mDot.End mLhs // previous mLhs is wrong after 'recover' mkSynDotMissing mDot fixedLhsm e) } | recover { (fun e mLhs mDot -> reportParseErrorAt mDot (FSComp.SR.parsMissingQualificationAfterDot()) - let fixedLhsm = mkRange mLhs.FileName mLhs.Start mDot.End // previous mLhs is wrong after 'recover' + let fixedLhsm = withEnd mDot.End mLhs // previous mLhs is wrong after 'recover' // Include 'e' in the returned expression but throw it away mkSynDotMissing mDot fixedLhsm e) } | LPAREN COLON_COLON rparen DOT INT32 @@ -4715,6 +5169,20 @@ parenExpr: //let mLhs = if $2 then unionRangeWithPos mLeftParen (rhs parseState 2).Start else mLeftParen //arbExpr ("parenExpr2", mLhs) } + | LPAREN COMMA declExpr rparen + { let mComma = rhs parseState 2 + let mLparen = rhs parseState 1 + let mRparen = rhs parseState 3 + reportParseErrorAt mComma (FSComp.SR.parsExpectingExpression ()) + let errorExpr = arbExpr ("tupleExpr3", mComma.EndRange) + let mTuple = unionRanges mComma $3.Range + let tupleExpr = + match $3 with + | SynExpr.Tuple(false, exprs, commas, m) -> + SynExpr.Tuple(false, errorExpr :: exprs, mComma :: commas, mTuple) + | expr -> SynExpr.Tuple(false, [errorExpr; expr], [mComma], mTuple) + SynExpr.Paren(tupleExpr, mLparen, Some mRparen, rhs2 parseState 1 4) } + parenExprBody: | typars COLON LPAREN classMemberSpfn rparen typedSequentialExpr { (fun m -> SynExpr.TraitCall($1, $4, $6, m)) } /* disambiguate: x $a.id(x) */ @@ -4802,15 +5270,17 @@ arrowThenExprR: forLoopBinder: | parenPattern IN declExpr - { ($1, $3, true, DebugPointAtInOrTo.Yes(rhs parseState 2)) } + { $1, $3, true, DebugPointAtInOrTo.Yes(rhs parseState 2) } | parenPattern IN ends_coming_soon_or_recover - { if not $3 then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectedExpressionAfterToken()) - ($1, arbExpr ("forLoopBinder", (rhs parseState 2)), false, DebugPointAtInOrTo.Yes(rhs parseState 2)) } + { let mIn = rhs parseState 2 + if not $3 then reportParseErrorAt mIn (FSComp.SR.parsExpectedExpressionAfterToken ()) + $1, arbExpr ("forLoopBinder1", mIn.EndRange), false, DebugPointAtInOrTo.Yes mIn } | parenPattern ends_coming_soon_or_recover - { if not $2 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsInOrEqualExpected()) - ($1, arbExpr ("forLoopBinder2", (rhs parseState 1).EndRange), false, DebugPointAtInOrTo.Yes(rhs parseState 2)) } + { let mPat = rhs parseState 1 + if not $2 then reportParseErrorAt mPat (FSComp.SR.parsInOrEqualExpected ()) + $1, arbExpr ("forLoopBinder2", mPat.EndRange), false, DebugPointAtInOrTo.Yes(rhs parseState 2) } forLoopRange: | parenPattern EQUALS declExpr forLoopDirection declExpr @@ -4828,7 +5298,7 @@ inlineAssemblyExpr: { if parseState.LexBuffer.ReportLibraryOnlyFeatures then libraryOnlyWarning (lhs parseState) let (s, _), sm = $2, rhs parseState 2 (fun m -> - let ilInstrs = ParseAssemblyCodeInstructions s parseState.LexBuffer.ReportLibraryOnlyFeatures parseState.LexBuffer.LanguageVersion sm + let ilInstrs = ParseAssemblyCodeInstructions s parseState.LexBuffer.ReportLibraryOnlyFeatures parseState.LexBuffer.LanguageVersion parseState.LexBuffer.StrictIndentation sm SynExpr.LibraryOnlyILAssembly(box ilInstrs, $3, List.rev $4, $5, m)) } optCurriedArgExprs: @@ -4887,6 +5357,20 @@ recdExprCore: (None, l) | _ -> raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsFieldBinding()) } + | appExpr EQUALS recover + { match $1 with + | LongOrSingleIdent(false, (SynLongIdent _ as f), None, m) -> + let f = mkRecdField f + let mEquals = rhs parseState 2 + let l = rebindRanges (f, Some mEquals, None) [] None + None, l + | _ -> raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsFieldBinding ()) } + + | appExpr + { let mExpr = rhs parseState 1 + reportParseErrorAt mExpr (FSComp.SR.parsFieldBinding ()) + Some($1, (mExpr.EndRange, None)), [] } + /* handles cases when identifier can start from the underscore */ @@ -5069,7 +5553,13 @@ opt_objExprInterfaces: objExprInterface: | interfaceMember appType opt_objExprBindings opt_declEnd opt_OBLOCKSEP { let mWithKwd, bindings, members = $3 - SynInterfaceImpl($2, mWithKwd, bindings, members, lhs parseState) } + let m = + match List.tryLast members with + | None -> lhs parseState + | Some ms -> + let mInterface = rhs parseState 1 + mkFileIndexRange mInterface.FileIndex mInterface.Start ms.Range.End + SynInterfaceImpl($2, mWithKwd, bindings, members, m) } braceBarExpr: | STRUCT braceBarExprCore @@ -5247,7 +5737,7 @@ topTupleType: let mStar = rhs parseState 2 let ty2 = SynType.FromParseError(mStar.EndRange) let path = [SynTupleTypeSegment.Type ty1; SynTupleTypeSegment.Star mStar; SynTupleTypeSegment.Type ty2] - mkSynTypeTuple path, [argInfo] } + mkSynTypeTuple path, [argInfo; SynInfo.emptySynArgInfo] } | STAR topTupleTypeElements { let mStar = rhs parseState 1 @@ -5270,7 +5760,7 @@ topTupleTypeElements: { let ty1, argInfo = $1 let mStar = rhs parseState 2 let ty2 = SynType.FromParseError(mStar.EndRange) - [(SynTupleTypeSegment.Type ty1, Some argInfo); (SynTupleTypeSegment.Star mStar, None); (SynTupleTypeSegment.Type ty2, None)] } + [SynTupleTypeSegment.Type ty1, Some argInfo; SynTupleTypeSegment.Star mStar, None; SynTupleTypeSegment.Type ty2, Some SynInfo.emptySynArgInfo] } | STAR topTupleTypeElements { let mStar = rhs parseState 1 @@ -5342,6 +5832,31 @@ topAppType: | appType { $1, SynArgInfo([], false, None) } +/* Grammar rule meant for recovery scenarios */ +/* For example in unionCaseReprElement where function type is not allowed */ +invalidUseOfAppTypeFunction: + | appType RARROW invalidUseOfAppTypeFunction + { let mArrow = rhs parseState 2 + let m = unionRanges (rhs2 parseState 1 2) $3.Range + SynType.Fun($1, $3, m, { ArrowRange = mArrow }) } + | appType RARROW recover + { let mArrow = rhs parseState 2 + let ty = SynType.FromParseError(mArrow.EndRange) + let m = rhs2 parseState 1 2 + SynType.Fun($1, ty, m, { ArrowRange = mArrow }) } + | appType RARROW RARROW invalidUseOfAppTypeFunction + { let mArrow1 = rhs parseState 2 + let mArrow2 = rhs parseState 3 + reportParseErrorAt mArrow2 (FSComp.SR.parsExpectingType ()) + let ty = SynType.FromParseError(mArrow2.StartRange) + let m1 = unionRanges $1.Range $4.Range + let m2 = unionRanges mArrow2 $4.Range + SynType.Fun($1, SynType.Fun(ty, $4, m2, { ArrowRange = mArrow2 }), m1, { ArrowRange = mArrow1 }) } + | appType RARROW appType + { let mArrow = rhs parseState 2 + let m = rhs2 parseState 1 3 + SynType.Fun($1, $3, m, { ArrowRange = mArrow }) } + /* Any tokens in this grammar must be added to the lex filter rule 'peekAdjacentTypars' */ /* See the F# specification "Lexical analysis of type applications and type parameter definitions" */ typ: @@ -5457,6 +5972,15 @@ tupleOrQuotTypeElements: | appType %prec prec_tuptyptail_prefix { [ SynTupleTypeSegment.Type $1 ] } +intersectionType: + | typar AMP intersectionConstraints %prec prec_no_more_attr_bindings // todo precedence + { let constraints, mAmpersands = $3 + SynType.Intersection(Some $1, List.rev constraints, lhs parseState, { AmpersandRanges = rhs parseState 2 :: List.rev mAmpersands }) } + + | atomType AMP intersectionConstraints %prec prec_no_more_attr_bindings // todo precedence + { let constraints, mAmpersands = $3 + SynType.Intersection(None, $1 :: List.rev constraints, lhs parseState, { AmpersandRanges = rhs parseState 2 :: List.rev mAmpersands }) } + appTypeCon: | path %prec prec_atomtyp_path { SynType.LongIdent($1) } @@ -5467,7 +5991,11 @@ appTypeCon: appTypeConPower: | appTypeCon INFIX_AT_HAT_OP atomicRationalConstant { if $2 <> "^" && $2 <> "^-" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedInfixOperator()) - if $2 = "^-" then SynType.MeasurePower($1, SynRationalConst.Negate($3), lhs parseState) + if $2 = "^-" then + let afterMinus = (rhs parseState 2).EndRange + let beforeMinus = shiftStart 0 -1 afterMinus + let m = unionRanges beforeMinus (rhs parseState 3) // include MINUS in Negate range + SynType.MeasurePower($1, SynRationalConst.Negate($3, m), lhs parseState) else SynType.MeasurePower($1, $3, lhs parseState) } | appTypeCon @@ -5495,6 +6023,10 @@ appType: | powerType { $1 } + | intersectionType + { parseState.LexBuffer.CheckLanguageFeatureAndRecover LanguageFeature.ConstraintIntersectionOnFlexibleTypes (lhs parseState) + $1 } + | typar COLON_GREATER typ { let tp, typ = $1, $3 let m = lhs parseState @@ -5624,7 +6156,11 @@ powerType: | atomTypeOrAnonRecdType INFIX_AT_HAT_OP atomicRationalConstant { if $2 <> "^" && $2 <> "^-" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedInfixOperator()) - if $2 = "^-" then SynType.MeasurePower($1, SynRationalConst.Negate($3), lhs parseState) + if $2 = "^-" then + let afterMinus = (rhs parseState 2).EndRange + let beforeMinus = shiftStart 0 -1 afterMinus + let m = unionRanges beforeMinus (rhs parseState 3) // include MINUS in Negate range + SynType.MeasurePower($1, SynRationalConst.Negate($3, m), lhs parseState) else SynType.MeasurePower($1, $3, lhs parseState) } @@ -5817,10 +6353,16 @@ dummyTypeArg: measureTypeArg: | LESS measureTypeExpr GREATER - { $2 } + { let mLess = rhs parseState 1 + let mGreater = rhs parseState 3 + let trivia = { LessRange = mLess; GreaterRange = mGreater } + $2, trivia } | LESS UNDERSCORE GREATER - { SynMeasure.Anon(lhs parseState) } + { let mLess = rhs parseState 1 + let mGreater = rhs parseState 3 + let trivia = { LessRange = mLess; GreaterRange = mGreater } + SynMeasure.Anon(rhs parseState 2), trivia } measureTypeAtom: | path @@ -5839,12 +6381,19 @@ measureTypePower: | measureTypeAtom INFIX_AT_HAT_OP atomicRationalConstant { if $2 <> "^" && $2 <> "^-" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedOperatorForUnitOfMeasure()) - if $2 = "^-" then SynMeasure.Power($1, SynRationalConst.Negate($3), lhs parseState) - else SynMeasure.Power($1, $3, lhs parseState) } + if $2 = "^-" then + let mOp = rhs parseState 2 + let afterMinus = mOp.EndRange + let beforeMinus = shiftStart 0 -1 afterMinus + let mNegate = unionRanges beforeMinus (rhs parseState 3) // include MINUS in Negate range + let mCaret = unionRanges mOp.StartRange mNegate.StartRange + SynMeasure.Power($1, mCaret, SynRationalConst.Negate($3, mNegate), lhs parseState) + else SynMeasure.Power($1, rhs parseState 2, $3, lhs parseState) } | INT32 { if fst $1 <> 1 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedIntegerLiteralForUnitOfMeasure()) - SynMeasure.One } + let m = rhs parseState 1 + SynMeasure.One(m) } measureTypeSeq: | measureTypePower @@ -5858,16 +6407,16 @@ measureTypeExpr: { SynMeasure.Seq($1, lhs parseState) } | measureTypeExpr STAR measureTypeExpr - { SynMeasure.Product($1, $3, lhs parseState) } + { SynMeasure.Product($1, rhs parseState 2, $3, lhs parseState) } | measureTypeExpr INFIX_STAR_DIV_MOD_OP measureTypeExpr { if $2 <> "*" && $2 <> "/" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedOperatorForUnitOfMeasure()) - if $2 = "*" then SynMeasure.Product($1, $3, lhs parseState) - else SynMeasure.Divide($1, $3, lhs parseState) } + if $2 = "*" then SynMeasure.Product($1, rhs parseState 2, $3, lhs parseState) + else SynMeasure.Divide(Some $1, rhs parseState 2, $3, lhs parseState) } | INFIX_STAR_DIV_MOD_OP measureTypeExpr { if $1 <> "/" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedOperatorForUnitOfMeasure()) - SynMeasure.Divide(SynMeasure.One, $2, lhs parseState) } + SynMeasure.Divide(None, rhs parseState 1, $2, lhs parseState) } typar: | QUOTE ident @@ -6056,8 +6605,9 @@ pathOp: | ident DOT pathOp { prependIdentInLongIdentWithTrivia (SynIdent($1, None)) (rhs parseState 2) $3 } - | ident DOT error - { (* silent recovery *) SynLongIdent([$1], [rhs parseState 2], [None]) } + | ident DOT ends_coming_soon_or_recover + { if not $3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsIdentifierExpected()) + SynLongIdent([$1], [rhs parseState 2], [None]) } /* nameop is identOrOp not used as part of a path */ @@ -6160,8 +6710,10 @@ doToken: | ODO { } doneDeclEnd: - | DONE { } - | ODECLEND { } /* DONE gets thrown away by the lexfilter in favour of ODECLEND */ + | DONE + { rhs parseState 1 } + | ODECLEND + { $1 } structOrBegin: | STRUCT diff --git a/src/fcs-fable/src/Compiler/pplex.fsl b/src/fcs-fable/src/Compiler/pplex.fsl index 3806b11484..515b31227b 100644 --- a/src/fcs-fable/src/Compiler/pplex.fsl +++ b/src/fcs-fable/src/Compiler/pplex.fsl @@ -1,17 +1,8 @@ // Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. { - -module internal FSharp.Compiler.PPLexer - -open System - open FSharp.Compiler.DiagnosticsLogger -open FSharp.Compiler.Lexhelp open FSharp.Compiler.ParseHelpers -open FSharp.Compiler.Syntax - -open Internal.Utilities.Text.Lexing let lexeme (lexbuf : UnicodeLexing.Lexbuf) = UnicodeLexing.Lexbuf.LexemeString lexbuf @@ -43,7 +34,7 @@ let comment = "//" _* let mcomment = "(*" _* let whitespace = [' ' '\t'] -rule tokenstream args = parse +rule tokenstream (args: LexArgs) = parse // -------------------------- | "#if" { PPParser.PRELUDE } | "#elif" { PPParser.PRELUDE } @@ -68,4 +59,4 @@ rule tokenstream args = parse // -------------------------- and rest = parse | _ { rest lexbuf } -| eof { () } +| eof { PPParser.EOF } diff --git a/src/fcs-fable/src/Compiler/pppars.fsy b/src/fcs-fable/src/Compiler/pppars.fsy index 53616c481e..fb2ae8a1c3 100644 --- a/src/fcs-fable/src/Compiler/pppars.fsy +++ b/src/fcs-fable/src/Compiler/pppars.fsy @@ -2,8 +2,6 @@ %{ open FSharp.Compiler.DiagnosticsLogger -open FSharp.Compiler.ParseHelpers -open FSharp.Compiler.Syntax let dummy = IfdefId("DUMMY") diff --git a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.cs.xlf b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.cs.xlf index 669a1cf177..3dde918f6f 100644 --- a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.cs.xlf +++ b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.cs.xlf @@ -2,6 +2,11 @@ + + Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended. + Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended. + + All elements of an array must be implicitly convertible to the type of the first element, which here is a tuple of length {0} of type\n {1} \nThis element is a tuple of length {2} of type\n {3} \n Všechny prvky pole musí být implicitně převoditelné na typ prvního elementu, což je řazená kolekce členů o délce {0} typu\n {1} \nTento element je řazená kolekce členů o délce {2} typu\n {3} \n @@ -42,6 +47,11 @@ Pokud typ používá atribut [<Sealed>] i [<AbstractClass>], znamená to, že je statický. Konstruktor s argumenty není povolený. + + This expression is an anonymous record, use {{|...|}} instead of {{...}}. + This expression is an anonymous record, use {{|...|}} instead of {{...}}. + + Duplicate parameter. The parameter '{0}' has been used more that once in this method. Duplicitní parametr Parametr {0} byl v této metodě použit vícekrát. @@ -102,6 +112,11 @@ Pokud typ používá atribut [<Sealed>] i [<AbstractClass>], znamená to, že je statický. Členové instance nejsou povoleni. + + The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way. + The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way. + + The 'AssemblyKeyNameAttribute' has been deprecated. Use 'AssemblyKeyFileAttribute' instead. Atribut AssemblyKeyNameAttribute je zastaralý. Použijte místo něj AssemblyKeyFileAttribute. @@ -157,6 +172,11 @@ Argument {0} neodpovídá + + The constraints 'unmanaged' and 'not struct' are inconsistent + The constraints 'unmanaged' and 'not struct' are inconsistent + + All branches of an 'if' expression must return values implicitly convertible to the type of the first branch, which here is a tuple of length {0} of type\n {1} \nThis branch returns a tuple of length {2} of type\n {3} \n Všechny větve výrazu if musí vracet hodnoty implicitně převoditelné na typ první větve, což je řazená kolekce členů o délce {0} typu\n {1} \nTato větev vrací řazenou kolekci členů o délce {2} typu\n {3} \n @@ -177,6 +197,11 @@ Atribut sestavení {0} odkazuje na navržené sestavení {1}, které se nedá načíst nebo neexistuje. Ohlášená výjimka: {2} – {3} + + underscore dot shorthand for accessor only function + underscore dot shorthand for accessor only function + + additional type-directed conversions další převody orientované na typ @@ -207,6 +232,16 @@ Povolit implicitní atribut Extension pro deklarující typy, moduly + + Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way. + Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way. + + + + Constraint intersection on flexible types + Constraint intersection on flexible types + + default interface member consumption využití člena výchozího rozhraní @@ -252,6 +287,16 @@ více typů podporuje měrné jednotky + + extended fixed bindings for byref and GetPinnableReference + extended fixed bindings for byref and GetPinnableReference + + + + Extended string interpolation similar to C# raw string literals. + Extended string interpolation similar to C# raw string literals. + + fixed-index slice 3d/4d řez 3d/4d s pevným indexem @@ -267,11 +312,21 @@ implicitní yield + + Improved implied argument names + Improved implied argument names + + expr[idx] notation for indexing and slicing Notace expr[idx] pro indexování a vytváření řezů + + Diagnostic 3559 (warn when obj inferred) at informational level, off by default + Diagnostic 3559 (warn when obj inferred) at informational level, off by default + + support for consuming init properties podpora využívání vlastností init @@ -342,6 +397,11 @@ správa balíčků + + prefer String.GetPinnableReference in fixed bindings + prefer String.GetPinnableReference in fixed bindings + + binary formatting for integers formátování typu binary pro integery @@ -387,11 +447,21 @@ vzor s jedním podtržítkem + + Allow static let bindings in union, record, struct, non-incremental-class types + Allow static let bindings in union, record, struct, non-incremental-class types + + Static members in interfaces Statické členy v rozhraních + + Raises errors on incorrect indentation, allows better recovery and analysis during editing + Raises errors on incorrect indentation, allows better recovery and analysis during editing + + string interpolation interpolace řetězce @@ -407,6 +477,11 @@ Podpora try-with ve výrazech pořadí + + Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq) + Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq) + + Raises warnings when an copy-and-update record expression changes all fields of a record. Vyvolá upozornění, když výraz záznamu kopírování a aktualizace změní všechna pole záznamu. @@ -417,6 +492,16 @@ Vyvolá upozornění, když se použije „let inline ... =“ společně s atributem [<MethodImpl(MethodImplOptions.NoInlining)>]. Funkce není vkládána. + + Raises warnings when multiple record type matches were found during name resolution because of overlapping field names. + Raises warnings when multiple record type matches were found during name resolution because of overlapping field names. + + + + 'while!' expression + 'while!' expression + + wild card in for loop zástupný znak ve smyčce for @@ -517,11 +602,21 @@ Slouží ke kontrole, zda je objekt daného typu ve vzoru nebo vazbě. + + Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression. + Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression. + + a byte string may not be interpolated Bajtový řetězec se nedá interpolovat. + + Extended string interpolation is not supported in this version of F#. + Extended string interpolation is not supported in this version of F#. + + IF-FSHARP/IF-CAML regions are no longer supported Oblasti IF-FSHARP/IF-CAML už nejsou podporovány. @@ -542,11 +637,26 @@ Neplatný interpolovaný řetězec. Literály s jednoduchou uvozovkou nebo doslovné řetězcové literály se nedají použít v interpolovaných výrazech v řetězcích s jednoduchou uvozovkou nebo v doslovných řetězcích. Zvažte možnost použít pro výraz interpolace explicitní vazbu let nebo řetězec s trojitými uvozovkami jako vnější řetězcový literál. + + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content. + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content. + + + + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters. + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters. + + Invalid interpolated string. Triple quote string literals may not be used in interpolated expressions. Consider using an explicit 'let' binding for the interpolation expression. Neplatný interpolovaný řetězec. V interpolovaných výrazech se nedají použít řetězcové literály s trojitými uvozovkami. Zvažte možnost použít pro interpolovaný výraz explicitní vazbu let. + + The interpolated string contains unmatched closing braces. + The interpolated string contains unmatched closing braces. + + All elements of a list must be implicitly convertible to the type of the first element, which here is a tuple of length {0} of type\n {1} \nThis element is a tuple of length {2} of type\n {3} \n Všechny prvky seznamu musí být implicitně převoditelné na typ prvního prvku, což je řazená kolekce členů o délce {0} typu\n {1} \nTento element je řazená kolekce členů o délce {2} typu\n {3} \n @@ -682,6 +792,11 @@ Zahrnout informace o rozhraní F#, výchozí je soubor. Klíčové pro distribuci knihoven. + + Override indentation rules implied by the language version + Override indentation rules implied by the language version + + Supported language versions: Podporované jazykové verze: @@ -717,6 +832,11 @@ Funkce správy balíčků vyžaduje jazykovou verzi 5.0 nebo vyšší. + + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. + + Invalid interpolated string. This interpolated string expression fill is empty, an expression was expected. Neplatný interpolovaný řetězec. Vyplnění výrazu interpolovaného řetězce je prázdné, očekával se výraz. @@ -742,24 +862,19 @@ Tady nebo před tímto místem začal neúplný interpolovaný doslovný řetězec. - - Unexpected token in type definition. Expected '=' after the type '{0}'. - Neočekávaný token v definici typu. Za typem {0} se očekává =. - - Expected a pattern after this point Za tímto bodem byl očekáván vzor - + Expecting expression - Byl očekáván výraz. + Expecting expression - + Expecting pattern - Očekává se vzorek. + Expecting pattern @@ -777,6 +892,16 @@ Neúplný výraz operátoru (například^b) nebo volání kvalifikovaného typu (příklad: ^T.Name) + + Missing keyword '{0}' + Missing keyword '{0}' + + + + Expecting member body + Expecting member body + + Missing union case name Missing union case name @@ -787,6 +912,11 @@ Tento přístup člena je nejednoznačný. Při vytváření objektu použijte závorky, např. (new SomeType(args)).MemberName' + + _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses. + _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses. + + Unexpected end of input in 'else if' or 'elif' branch of conditional expression. Expected 'elif <expr> then <expr>' or 'else if <expr> then <expr>'. Neočekávaný konec vstupu ve větvi else if nebo elif podmíněného výrazu Očekávalo se elif <expr> then <expr> nebo else if <expr> then <expr>. @@ -807,6 +937,11 @@ Algoritmus {0} není podporovaný. + + Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} + Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} + + A constrained generic construct occured in the resumable code specification Ve specifikaci obnovitelného kódu došlo k omezené obecné konstrukci. @@ -887,6 +1022,16 @@ Sadu .NET SDK pro tento skript nešlo určit. Pokud se skript nachází v adresáři používajícím global.json, zkontrolujte, jestli je nainstalovaná odpovídající sada .NET SDK. Neočekávaná chyba {0}. + + (Suggested name) + (Suggested name) + + + + The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope. + The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope. + + This expression has type '{0}' and is only made compatible with type '{1}' through an ambiguous implicit conversion. Consider using an explicit call to 'op_Implicit'. The applicable implicit conversions are:{2} Tento výraz má typ {0} a je kompatibilní pouze s typem {1} prostřednictvím nejednoznačného implicitního převodu. Zvažte použití explicitního volání op_Implicit. Použitelnými implicitními převody jsou: {2} @@ -902,24 +1047,54 @@ Pole {0} se v tomto výrazu záznamu vyskytuje vícekrát. - - This is the wrong anonymous record. It should have the fields {0}. - Toto je nesprávný anonymní záznam. Měl by mít pole {0}. + + This anonymous record does not exactly match the expected shape. Add the missing fields {0} and remove the extra fields {1}. + Tento anonymní záznam neodpovídá přesně očekávanému tvaru. Přidejte chybějící pole {0} a odeberte nadbytečná pole {1}. - - This anonymous record does not have enough fields. Add the missing fields {0}. - Tento anonymní záznam nemá dost polí. Přidejte chybějící pole {0}. + + Invalid Anonymous Record type declaration. + Neplatná deklarace typu anonymního záznamu - - This anonymous record has too many fields. Remove the extra fields {0}. - Tento anonymní záznam má příliš mnoho polí. Odeberte nadbytečná pole {0}. + + This anonymous record should have fields {0}; but here has fields {1}. + This anonymous record should have fields {0}; but here has fields {1}. - - Invalid Anonymous Record type declaration. - Neplatná deklarace typu anonymního záznamu + + This anonymous record should have fields {0}; but here has field '{1}'. + This anonymous record should have fields {0}; but here has field '{1}'. + + + + This anonymous record is missing fields {0}. + This anonymous record is missing fields {0}. + + + + This anonymous record has extra fields. Remove fields {0}. + This anonymous record has extra fields. Remove fields {0}. + + + + This anonymous record should have field '{0}' but here has fields {1}. + This anonymous record should have field '{0}' but here has fields {1}. + + + + This anonymous record should have field '{0}' but here has field '{1}'. + This anonymous record should have field '{0}' but here has field '{1}'. + + + + This anonymous record is missing field '{0}'. + This anonymous record is missing field '{0}'. + + + + This anonymous record has an extra field. Remove field '{0}'. + This anonymous record has an extra field. Remove field '{0}'. @@ -972,6 +1147,11 @@ Tento výraz používá implicitní převod {0} pro převod typu {1} na typ {2}. Přečtěte si téma https://aka.ms/fsharp-implicit-convs. Toto upozornění může být vypnuté pomocí '#nowarn \"3391\". + + This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses. + This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses. + + Init-only property '{0}' cannot be set outside the initialization code. See https://aka.ms/fsharp-assigning-values-to-properties-at-initialization Vlastnost init-only „{0}“ nelze nastavit mimo inicializační kód. Zobrazit https://aka.ms/fsharp-assigning-values-to-properties-at-initialization @@ -1052,6 +1232,16 @@ Je třeba inicializovat následující požadované vlastnosti:{0} + + The field '{0}' appears multiple times in this record expression or pattern + The field '{0}' appears multiple times in this record expression or pattern + + + + Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements. + Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements. + + Using methods with 'NoEagerConstraintApplicationAttribute' requires /langversion:6.0 or later Použití metod s atributem NoEagerConstraintApplicationAttribute vyžaduje /langversion:6.0 nebo novější. @@ -1087,6 +1277,11 @@ Syntaxe expr1[expr2] je teď vyhrazena pro indexování a je při použití jako argument nejednoznačná. Více informací: https://aka.ms/fsharp-index-notation. Pokud voláte funkci s vícenásobnými curryfikovanými argumenty, přidejte mezi ně mezeru, třeba someFunction expr1 [expr2]. + + This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c'). + This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c'). + + The syntax '(expr1)[expr2]' is ambiguous when used as an argument. See https://aka.ms/fsharp-index-notation. If you intend indexing or slicing then you must use '(expr1).[expr2]' in argument position. If calling a function with multiple curried arguments, add a space between them, e.g. 'someFunction (expr1) [expr2]'. Syntaxe (expr1)[expr2] je při použití jako argument nejednoznačná. Více informací: https://aka.ms/fsharp-index-notation. Pokud plánujete indexování nebo vytváření řezů, musíte použít (expr1).[expr2] na pozici argumentu. Pokud voláte funkci s vícenásobnými curryfikovanými argumenty, přidejte mezi ně mezeru, třeba someFunction (expr1) [expr2]. @@ -1098,8 +1293,8 @@ - The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSource' and 'Bind' methods - Konstrukt let! ... and! ... se dá použít jen v případě, že tvůrce výpočetních výrazů definuje buď metodu {0}, nebo vhodné metody MergeSource a Bind. + The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods + The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods @@ -1137,6 +1332,11 @@ Nelze volat „{0}“ - metodu setter pro vlastnost pouze init. Použijte místo toho inicializaci objektu. Viz https://aka.ms/fsharp-assigning-values-to-properties-at-initialization + + Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead. + Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead. + + This expression implicitly converts type '{0}' to type '{1}'. See https://aka.ms/fsharp-implicit-convs. Tento výraz implicitně převede typ {0} na typ {1}. Přečtěte si téma https://aka.ms/fsharp-implicit-convs. @@ -1177,6 +1377,11 @@ Neplatný interpolovaný řetězec. {0} + + Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b). + Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b). + + '{0}' is normally used as a type constraint in generic code, e.g. \"'T when ISomeInterface<'T>\" or \"let f (x: #ISomeInterface<_>)\". See https://aka.ms/fsharp-iwsams for guidance. You can disable this warning by using '#nowarn \"3536\"' or '--nowarn:3536'. '{0}' se obvykle používá jako omezení typu v obecném kódu, například \"T when ISomeInterface<'T>\" nebo \"let f (x: #ISomeInterface<_>)\". Pokyny najdete v https://aka.ms/fsharp-iwsams. Toto upozornění můžete zakázat pomocí #nowarn \"3536\" nebo '--nowarn:3536'. @@ -1573,8 +1778,8 @@ - Unrecognized option: '{0}' - Nerozpoznaná možnost: {0} + Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options. + Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options. @@ -3228,8 +3433,8 @@ - Multiple accessibilities given for property getter or setter - Zadali jste víc dostupností pro metodu getter nebo setter vlastnosti. + When the visibility for a property is specified, setting the visibility of the set or get method is not allowed. + When the visibility for a property is specified, setting the visibility of the set or get method is not allowed. @@ -3692,11 +3897,6 @@ Tyto popisky pole a očekávaný typ tohoto výrazu záznamu nebo vzoru neurčují jednoznačně odpovídající typ záznamu. - - The field '{0}' appears twice in this record expression or pattern - Pole {0} se v tomto výrazu záznamu nebo vzoru vyskytuje dvakrát. - - Unknown union case Neznámý případ typu union @@ -4002,11 +4202,6 @@ Toto není platný vzor. - - Character range matches have been removed in F#. Consider using a 'when' pattern guard instead. - Porovnání rozsahu znaků se už v F# nepoužívá. Zvažte možnost použít místo toho ochrannou vazbu vzoru when. - - Illegal pattern Neplatný vzor @@ -4833,8 +5028,8 @@ - Static value definitions may only be used in types with a primary constructor. Consider adding arguments to the type definition, e.g. 'type X(args) = ...'. - Statické definice hodnot se dají použít jenom u typů s primárním konstruktorem. Zvažte přidání argumentů do definice typu, třeba type X(args) = ... + For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'. + For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'. @@ -5953,8 +6148,8 @@ - Possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this token further or using standard formatting conventions. - Je možné, že máte nesprávné odsazení: tento token leží mimo odsazení kontextu, který začíná na pozici {0}. Zkuste tento token odsadit víc nebo použijte standardní konvence formátování. + Unexpected syntax or possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this further.\nTo continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7. + Je možné, že máte nesprávné odsazení: tento token leží mimo odsazení kontextu, který začíná na pozici {0}. Zkuste tento token odsadit víc nebo použijte standardní konvence formátování. @@ -7668,8 +7863,8 @@ - Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is an array, the address of a field, the address of an array element or a string' - Neplatné použití fixed. fixed se dá použít jenom v deklaraci ve tvaru use x = fixed expr, kde výraz je pole, adresa pole nebo adresa prvku pole nebo řetězce. + Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is one of the following: an array, the address of an array element, a string, a byref, an inref, or a type implementing GetPinnableReference() + Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is one of the following: an array, the address of an array element, a string, a byref, an inref, or a type implementing GetPinnableReference() @@ -8102,11 +8297,6 @@ Tato hodnota není funkce a nedá se použít. Nezapomněli jste ukončit deklaraci? - - The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. - Názvy argumentů v signatuře {0} a implementaci {1} si neodpovídají. Použije se název argumentu ze souboru signatury. To může způsobit problémy při ladění nebo profilování. - - An error occurred while reading the F# metadata of assembly '{0}'. A reserved construct was utilized. You may need to upgrade your F# compiler or use an earlier version of the assembly that doesn't make use of a specific construct. Při čtení metadat jazyka F# sestavení {0} došlo k chybě. Byl použit rezervovaný konstruktor. Je možné, že budete muset upgradovat kompilátor jazyka F# nebo použít dřívější verzi sestavení, ve které se nevyužívá konkrétní konstruktor. @@ -8242,14 +8432,9 @@ Dva typy anonymních záznamů jsou z různých sestavení: {0} a {1}. - - This anonymous record does not exactly match the expected shape. Add the missing fields {0} and remove the extra fields {1}. - Tento anonymní záznam neodpovídá přesně očekávanému tvaru. Přidejte chybějící pole {0} a odeberte nadbytečná pole {1}. - - - Cannot call the byref extension method '{0}. The first parameter requires the value to be mutable or a non-readonly byref type. - Nejde volat metodu rozšíření byref {0}. První parametr vyžaduje, aby hodnota byla měnitelná nebo typu byref, která není jen pro čtení. + Cannot call the byref extension method '{0}. 'this' parameter requires the value to be mutable or a non-readonly byref type. + Nejde volat metodu rozšíření byref {0}. První parametr vyžaduje, aby hodnota byla měnitelná nebo typu byref, která není jen pro čtení. @@ -8338,8 +8523,8 @@ - Package manager key '{0}' was not registered in {1}. Currently registered: {2} - Klíč správce balíčků {0} nebyl zaregistrován v {1}. Aktuálně registrováno: {2} + Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager + Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager diff --git a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.de.xlf b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.de.xlf index 99cf7d8407..623d248e74 100644 --- a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.de.xlf +++ b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.de.xlf @@ -2,6 +2,11 @@ + + Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended. + Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended. + + All elements of an array must be implicitly convertible to the type of the first element, which here is a tuple of length {0} of type\n {1} \nThis element is a tuple of length {2} of type\n {3} \n Alle Elemente eines Arrays müssen implizit in den Typ des ersten Elements konvertiert werden. Hierbei handelt es sich um ein Tupel der Länge {0} vom Typ\n {1} \nDieses Element ist ein Tupel der Länge {2} vom Typ\n {3}. \n @@ -42,6 +47,11 @@ Wenn ein Typ sowohl das Attribute [<Sealed>] wie auch [<AbstractClass>] verwendet, bedeutet dies, dass er statisch ist. Der Konstruktor mit Argumenten ist nicht zulässig. + + This expression is an anonymous record, use {{|...|}} instead of {{...}}. + This expression is an anonymous record, use {{|...|}} instead of {{...}}. + + Duplicate parameter. The parameter '{0}' has been used more that once in this method. Doppelter Parameter. Der Parameter „{0}“ wurde in dieser Methode mehrmals verwendet. @@ -102,6 +112,11 @@ Wenn ein Typ sowohl das Attribute [<Sealed>] wie auch [<AbstractClass>] verwendet, bedeutet dies, dass er statisch ist. Members in Instanzen sind nicht zulässig. + + The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way. + The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way. + + The 'AssemblyKeyNameAttribute' has been deprecated. Use 'AssemblyKeyFileAttribute' instead. "AssemblyKeyNameAttribute" gilt als veraltet. Verwenden Sie stattdessen "AssemblyKeyFileAttribute". @@ -157,6 +172,11 @@ Das Argument "{0}" stimmt nicht überein. + + The constraints 'unmanaged' and 'not struct' are inconsistent + The constraints 'unmanaged' and 'not struct' are inconsistent + + All branches of an 'if' expression must return values implicitly convertible to the type of the first branch, which here is a tuple of length {0} of type\n {1} \nThis branch returns a tuple of length {2} of type\n {3} \n Alle Verzweigungen eines „If-Ausdrucks“ müssen Werte zurückgeben, die implizit in den Typ der ersten Verzweigung konvertierbar sind. In diesem Fall handelt es sich dabei um ein Tupel der Länge {0} des Typs.\n {1} \nDiese Verzweigung gibt ein Tupel der Länge {2} des Typs\n {3} \nzurück. @@ -177,6 +197,11 @@ Das Assemblyattribut "{0}" verweist auf eine Designerassembly "{1}", die entweder nicht geladen werden kann oder nicht vorhanden ist. Gemeldete Ausnahme: {2} – {3} + + underscore dot shorthand for accessor only function + underscore dot shorthand for accessor only function + + additional type-directed conversions zusätzliche typgesteuerte Konvertierungen @@ -207,6 +232,16 @@ Implizites Erweiterungsattribut für deklarierende Typen und Module zulassen + + Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way. + Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way. + + + + Constraint intersection on flexible types + Constraint intersection on flexible types + + default interface member consumption standardmäßige Schnittstellenmembernutzung @@ -252,6 +287,16 @@ Maßeinheitenunterstützung durch weitere Typen + + extended fixed bindings for byref and GetPinnableReference + extended fixed bindings for byref and GetPinnableReference + + + + Extended string interpolation similar to C# raw string literals. + Extended string interpolation similar to C# raw string literals. + + fixed-index slice 3d/4d Segment 3D/4D mit feststehendem Index @@ -267,11 +312,21 @@ implizite yield-Anweisung + + Improved implied argument names + Improved implied argument names + + expr[idx] notation for indexing and slicing expr[idx]-Notation zum Indizieren und Aufteilen + + Diagnostic 3559 (warn when obj inferred) at informational level, off by default + Diagnostic 3559 (warn when obj inferred) at informational level, off by default + + support for consuming init properties Unterstützung für die Nutzung von Initialisierungseigenschaften @@ -342,6 +397,11 @@ Paketverwaltung + + prefer String.GetPinnableReference in fixed bindings + prefer String.GetPinnableReference in fixed bindings + + binary formatting for integers binäre Formatierung für ganze Zahlen @@ -387,11 +447,21 @@ Muster mit einzelnem Unterstrich + + Allow static let bindings in union, record, struct, non-incremental-class types + Allow static let bindings in union, record, struct, non-incremental-class types + + Static members in interfaces Statische Member in Schnittstellen + + Raises errors on incorrect indentation, allows better recovery and analysis during editing + Raises errors on incorrect indentation, allows better recovery and analysis during editing + + string interpolation Zeichenfolgeninterpolation @@ -407,6 +477,11 @@ Unterstützung für "try-with" in Sequenzausdrücken + + Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq) + Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq) + + Raises warnings when an copy-and-update record expression changes all fields of a record. Löst Warnungen aus, wenn ein Ausdruck zum Kopieren und Aktualisieren von Datensätzen alle Felder eines Datensatzes ändert. @@ -417,6 +492,16 @@ Löst Warnungen aus, wenn „let inline ... =“ zusammen mit dem Attribut [<MethodImpl(MethodImplOptions.NoInlining)>] verwendet wird. Die Funktion wird nicht inline gesetzt. + + Raises warnings when multiple record type matches were found during name resolution because of overlapping field names. + Raises warnings when multiple record type matches were found during name resolution because of overlapping field names. + + + + 'while!' expression + 'while!' expression + + wild card in for loop Platzhalter in for-Schleife @@ -517,11 +602,21 @@ Wird verwendet, um zu überprüfen, ob ein Objekt in einem Muster oder einer Bindung vom angegebenen Typ ist. + + Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression. + Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression. + + a byte string may not be interpolated Eine Bytezeichenfolge darf nicht interpoliert werden. + + Extended string interpolation is not supported in this version of F#. + Extended string interpolation is not supported in this version of F#. + + IF-FSHARP/IF-CAML regions are no longer supported IF-FSHARP-/IF-CAML-Regionen werden nicht mehr unterstützt @@ -542,11 +637,26 @@ Ungültige interpolierte Zeichenfolge. Literale mit einzelnen Anführungszeichen oder ausführliche Zeichenfolgenliterale dürfen nicht in interpolierten Ausdrücken in Zeichenfolgen mit einfachen Anführungszeichen oder ausführlichen Zeichenfolgen verwendet werden. Erwägen Sie die Verwendung einer expliziten let-Bindung für den Interpolationsausdruck, oder verwenden Sie eine Zeichenfolge mit dreifachen Anführungszeichen als äußeres Zeichenfolgenliteral. + + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content. + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content. + + + + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters. + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters. + + Invalid interpolated string. Triple quote string literals may not be used in interpolated expressions. Consider using an explicit 'let' binding for the interpolation expression. Ungültige interpolierte Zeichenfolge. Zeichenfolgenliterale mit dreifachen Anführungszeichen dürfen in interpolierten Ausdrücken nicht verwendet werden. Erwägen Sie die Verwendung einer expliziten let-Bindung für den Interpolationsausdruck. + + The interpolated string contains unmatched closing braces. + The interpolated string contains unmatched closing braces. + + All elements of a list must be implicitly convertible to the type of the first element, which here is a tuple of length {0} of type\n {1} \nThis element is a tuple of length {2} of type\n {3} \n Alle Elemente einer Liste müssen implizit in den Typ des ersten Elements konvertiert werden. Hierbei handelt es sich um ein Tupel der Länge {0} vom Typ\n {1} \nDieses Element ist ein Tupel der Länge {2} vom Typ\n {3}. \n @@ -682,6 +792,11 @@ Schließen Sie F#-Schnittstelleninformationen ein, der Standardwert ist „file“. Wesentlich für die Verteilung von Bibliotheken. + + Override indentation rules implied by the language version + Override indentation rules implied by the language version + + Supported language versions: Unterstützte Sprachversionen: @@ -717,6 +832,11 @@ Für das „Paketverwaltungsfeature“ ist Sprachversion 5.0 oder höher erforderlich + + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. + + Invalid interpolated string. This interpolated string expression fill is empty, an expression was expected. Ungültige interpolierte Zeichenfolge. Die Ausdrucksfüllung der interpolierten Zeichenfolge ist leer. Es wurde ein Ausdruck erwartet. @@ -742,24 +862,19 @@ Unvollständige interpolierte ausführliche Zeichenfolge, die an oder vor dieser Stelle begonnen wurde. - - Unexpected token in type definition. Expected '=' after the type '{0}'. - Unerwartetes Token in Typdefinition. Nach Typ "{0}" wurde "=" erwartet. - - Expected a pattern after this point Nach diesem Punkt wurde ein Muster erwartet. - + Expecting expression - Ausdruck wird erwartet + Expecting expression - + Expecting pattern - Muster wird erwartet + Expecting pattern @@ -777,6 +892,16 @@ Unvollständiger Operatorausdruck (Beispiel: a^b) oder qualifizierter Typaufruf (Beispiel: ^T.Name) + + Missing keyword '{0}' + Missing keyword '{0}' + + + + Expecting member body + Expecting member body + + Missing union case name Missing union case name @@ -787,6 +912,11 @@ Dieser Memberzugriff ist mehrdeutig. Setzen Sie Klammern um die Objekterstellung, z. B. "(new SomeType(args)). MemberName“ + + _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses. + _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses. + + Unexpected end of input in 'else if' or 'elif' branch of conditional expression. Expected 'elif <expr> then <expr>' or 'else if <expr> then <expr>'. Unerwartetes Ende der Eingabe im "else if"- oder "elif"-Branch des bedingten Ausdrucks. Erwartet wird: "elif <expr> then <expr>" oder "else if <expr> then <expr>". @@ -807,6 +937,11 @@ Algorithmus "{0}" wird nicht unterstützt + + Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} + Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} + + A constrained generic construct occured in the resumable code specification In der fortsetzbaren Codespezifikation ist ein eingeschränktes generisches Konstrukt aufgetreten. @@ -887,6 +1022,16 @@ Das .NET SDK für dieses Skript konnte nicht ermittelt werden. Wenn sich das Skript in einem Verzeichnis mit "global.json" befindet, stellen Sie sicher, dass das entsprechende .NET SDK installiert ist. Unerwarteter Fehler: {0}. + + (Suggested name) + (Suggested name) + + + + The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope. + The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope. + + This expression has type '{0}' and is only made compatible with type '{1}' through an ambiguous implicit conversion. Consider using an explicit call to 'op_Implicit'. The applicable implicit conversions are:{2} Dieser Ausdruck weist den Typ "{0}" auf und wird nur durch eine mehrdeutige implizite Konvertierung mit dem Typ "{1}" kompatibel gemacht. Erwägen Sie die Verwendung eines expliziten Aufrufs an "op_Implicit". Die anwendbaren impliziten Konvertierungen sind: {2} @@ -902,24 +1047,54 @@ Das Feld "{0}" ist in diesem Datensatzausdruck mehrmals vorhanden. - - This is the wrong anonymous record. It should have the fields {0}. - Dies ist der falsche anonyme Datensatz. Er muss folgende Felder umfassen: {0}. + + This anonymous record does not exactly match the expected shape. Add the missing fields {0} and remove the extra fields {1}. + Dieser anonyme Datensatz stimmt nicht genau mit der erwarteten Form überein. Fügen Sie die fehlenden Felder ({0}) hinzu, und entfernen Sie die zusätzlichen Felder ({1}). - - This anonymous record does not have enough fields. Add the missing fields {0}. - Dieser anonyme Datensatz weist nicht genügend Felder auf. Fügen Sie die fehlenden Felder ({0}) hinzu. + + Invalid Anonymous Record type declaration. + Ungültige Deklaration für anonymen Datensatztyp. - - This anonymous record has too many fields. Remove the extra fields {0}. - Dieser anonyme Datensatz enthält zu viele Felder. Entfernen Sie die zusätzlichen Felder ({0}). + + This anonymous record should have fields {0}; but here has fields {1}. + This anonymous record should have fields {0}; but here has fields {1}. - - Invalid Anonymous Record type declaration. - Ungültige Deklaration für anonymen Datensatztyp. + + This anonymous record should have fields {0}; but here has field '{1}'. + This anonymous record should have fields {0}; but here has field '{1}'. + + + + This anonymous record is missing fields {0}. + This anonymous record is missing fields {0}. + + + + This anonymous record has extra fields. Remove fields {0}. + This anonymous record has extra fields. Remove fields {0}. + + + + This anonymous record should have field '{0}' but here has fields {1}. + This anonymous record should have field '{0}' but here has fields {1}. + + + + This anonymous record should have field '{0}' but here has field '{1}'. + This anonymous record should have field '{0}' but here has field '{1}'. + + + + This anonymous record is missing field '{0}'. + This anonymous record is missing field '{0}'. + + + + This anonymous record has an extra field. Remove field '{0}'. + This anonymous record has an extra field. Remove field '{0}'. @@ -972,6 +1147,11 @@ Dieser Ausdruck verwendet die implizite Konvertierung "{0}", um den Typ "{1}" in den Typ "{2}" zu konvertieren. Siehe https://aka.ms/fsharp-implicit-convs. Diese Warnung kann durch "#nowarn \" 3391 \ " deaktiviert werden. + + This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses. + This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses. + + Init-only property '{0}' cannot be set outside the initialization code. See https://aka.ms/fsharp-assigning-values-to-properties-at-initialization Die Eigenschaft „{0}“ nur für die Initialisierung kann nicht außerhalb des Initialisierungscodes festgelegt werden. Siehe https://aka.ms/fsharp-assigning-values-to-properties-at-initialization @@ -1052,6 +1232,16 @@ Die folgenden erforderlichen Eigenschaften müssen initialisiert werden:{0} + + The field '{0}' appears multiple times in this record expression or pattern + The field '{0}' appears multiple times in this record expression or pattern + + + + Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements. + Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements. + + Using methods with 'NoEagerConstraintApplicationAttribute' requires /langversion:6.0 or later Die Verwendung von Methoden mit "NoEagerConstraintApplicationAttribute" erfordert /langversion:6.0 oder höher. @@ -1087,6 +1277,11 @@ Die Syntax "expr1[expr2]" ist jetzt für die Indizierung reserviert und mehrdeutig, wenn sie als Argument verwendet wird. Siehe https://aka.ms/fsharp-index-notation. Wenn Sie eine Funktion mit mehreren geschweiften Argumenten aufrufen, fügen Sie ein Leerzeichen dazwischen hinzu, z. B. "someFunction expr1 [expr2]". + + This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c'). + This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c'). + + The syntax '(expr1)[expr2]' is ambiguous when used as an argument. See https://aka.ms/fsharp-index-notation. If you intend indexing or slicing then you must use '(expr1).[expr2]' in argument position. If calling a function with multiple curried arguments, add a space between them, e.g. 'someFunction (expr1) [expr2]'. Die Syntax "(expr1)[expr2]" ist mehrdeutig, wenn sie als Argument verwendet wird. Siehe https://aka.ms/fsharp-index-notation. Wenn Sie indizieren oder aufteilen möchten, müssen Sie "(expr1).[expr2]' in Argumentposition verwenden. Wenn Sie eine Funktion mit mehreren geschweiften Argumenten aufrufen, fügen Sie ein Leerzeichen dazwischen hinzu, z. B. "someFunction (expr1) [expr2]". @@ -1098,8 +1293,8 @@ - The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSource' and 'Bind' methods - Das Konstrukt "let! ... and! ..." kann nur verwendet werden, wenn der Berechnungsausdrucks-Generator entweder eine {0}-Methode oder geeignete MergeSource- und Bind-Methoden definiert. + The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods + The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods @@ -1137,6 +1332,11 @@ „{0}“ kann nicht aufgerufen werden – ein Setter für die Eigenschaft nur für die Initialisierung. Bitte verwenden Sie stattdessen die Objektinitialisierung. Siehe https://aka.ms/fsharp-assigning-values-to-properties-at-initialization + + Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead. + Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead. + + This expression implicitly converts type '{0}' to type '{1}'. See https://aka.ms/fsharp-implicit-convs. Dieser Ausdruck konvertiert den Typ "{0}" implizit in den Typ "{1}". Siehe https://aka.ms/fsharp-implicit-convs. @@ -1177,6 +1377,11 @@ Ungültige interpolierte Zeichenfolge. {0} + + Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b). + Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b). + + '{0}' is normally used as a type constraint in generic code, e.g. \"'T when ISomeInterface<'T>\" or \"let f (x: #ISomeInterface<_>)\". See https://aka.ms/fsharp-iwsams for guidance. You can disable this warning by using '#nowarn \"3536\"' or '--nowarn:3536'. „{0}“ wird normalerweise als Typeinschränkung im generischen Code verwendet, z. B. \"'T when ISomeInterface<'T>\" oder \"let f (x: #ISomeInterface<_>)\". Anleitungen finden Sie unter https://aka.ms/fsharp-iwsams. Sie können diese Warnung deaktivieren, indem Sie „#nowarn \"3536\"“ or „--nowarn:3536“ verwenden. @@ -1573,8 +1778,8 @@ - Unrecognized option: '{0}' - Unbekannte Option: "{0}" + Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options. + Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options. @@ -3228,8 +3433,8 @@ - Multiple accessibilities given for property getter or setter - Für den Getter oder Setter der Eigenschaft wurden mehrere Zugriffsebenen angegeben. + When the visibility for a property is specified, setting the visibility of the set or get method is not allowed. + When the visibility for a property is specified, setting the visibility of the set or get method is not allowed. @@ -3692,11 +3897,6 @@ Anhand der Feldbezeichnungen und des erwarteten Typs dieses Datensatzausdrucks oder Musters lässt sich kein eindeutiger Datensatztyp bestimmen. - - The field '{0}' appears twice in this record expression or pattern - Das Feld "{0}" ist in diesem Datensatzausdruck oder Muster zweimal vorhanden. - - Unknown union case Unbekannter Union-Fall. @@ -4002,11 +4202,6 @@ Dies ist kein gültiges Muster. - - Character range matches have been removed in F#. Consider using a 'when' pattern guard instead. - Der Abgleich von Zeichenbereichen wurde in F# entfernt. Verwenden Sie stattdessen einen when-Musterwächter. - - Illegal pattern Unzulässiges Muster. @@ -4833,8 +5028,8 @@ - Static value definitions may only be used in types with a primary constructor. Consider adding arguments to the type definition, e.g. 'type X(args) = ...'. - Statische Wertdefinitionen dürfen nur in Typen mit einem primären Konstruktor verwendet werden. Ziehen Sie in Betracht, Argumente zur Typdefinition hinzuzufügen, z. B. "type X(args) = ...". + For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'. + For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'. @@ -5953,8 +6148,8 @@ - Possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this token further or using standard formatting conventions. - Möglicherweise falscher Einzug: Dieses Token ist gegenüber dem bei Position {0} beginnenden Kontext verschoben. Erhöhen Sie den Einzug für dieses Token, oder verwenden Sie die standardmäßigen Formatierungskonventionen. + Unexpected syntax or possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this further.\nTo continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7. + Möglicherweise falscher Einzug: Dieses Token ist gegenüber dem bei Position {0} beginnenden Kontext verschoben. Erhöhen Sie den Einzug für dieses Token, oder verwenden Sie die standardmäßigen Formatierungskonventionen. @@ -7668,8 +7863,8 @@ - Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is an array, the address of a field, the address of an array element or a string' - Ungültige Verwendung von "fixed". "fixed" darf ausschließlich in einer Deklaration der Form "use x = fixed expr" verwendet werden. Dabei ist der Ausdruck ein Array, die Adresse eines Felds, die Adresse eines Arrayelements oder eine Zeichenfolge. + Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is one of the following: an array, the address of an array element, a string, a byref, an inref, or a type implementing GetPinnableReference() + Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is one of the following: an array, the address of an array element, a string, a byref, an inref, or a type implementing GetPinnableReference() @@ -8102,11 +8297,6 @@ Dieser Wert ist keine Funktion und kann nicht angewendet werden. Wurde möglicherweise eine Deklaration nicht abgeschlossen? - - The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. - Die Argumentnamen in Signatur "{0}" und Implementierung "{1}" stimmen nicht überein. Der Argumentname aus der Signaturdatei wird verwendet. Dadurch können Probleme beim Debuggen oder bei der Profilerstellung auftreten. - - An error occurred while reading the F# metadata of assembly '{0}'. A reserved construct was utilized. You may need to upgrade your F# compiler or use an earlier version of the assembly that doesn't make use of a specific construct. Fehler beim Lesen der F#-Metadaten der Assembly "{0}". Es wurde ein reserviertes Konstrukt verwendet. Möglicherweise müssen Sie Ihren F#-Compiler aktualisieren oder eine frühere Version der Assembly verwenden, die dieses spezielle Konstrukt nicht verwendet. @@ -8242,14 +8432,9 @@ Zwei anonyme Datensatztypen stammen aus verschiedenen Assemblys: "{0}" und "{1}". - - This anonymous record does not exactly match the expected shape. Add the missing fields {0} and remove the extra fields {1}. - Dieser anonyme Datensatz stimmt nicht genau mit der erwarteten Form überein. Fügen Sie die fehlenden Felder ({0}) hinzu, und entfernen Sie die zusätzlichen Felder ({1}). - - - Cannot call the byref extension method '{0}. The first parameter requires the value to be mutable or a non-readonly byref type. - Die ByRef-Erweiterungsmethode "{0}" kann nicht aufgerufen werden. Für den ersten Parameter muss der Wert änderbar sein oder einem nicht schreibgeschützten ByRef-Typ entsprechen. + Cannot call the byref extension method '{0}. 'this' parameter requires the value to be mutable or a non-readonly byref type. + Die ByRef-Erweiterungsmethode "{0}" kann nicht aufgerufen werden. Für den ersten Parameter muss der Wert änderbar sein oder einem nicht schreibgeschützten ByRef-Typ entsprechen. @@ -8338,8 +8523,8 @@ - Package manager key '{0}' was not registered in {1}. Currently registered: {2} - Der Paket-Manager-Schlüssel "{0}" wurde in "{1}" nicht registriert. Aktuell registriert: {2} + Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager + Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager diff --git a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.es.xlf b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.es.xlf index 1e889b6e32..b8bf954523 100644 --- a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.es.xlf +++ b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.es.xlf @@ -2,6 +2,11 @@ + + Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended. + Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended. + + All elements of an array must be implicitly convertible to the type of the first element, which here is a tuple of length {0} of type\n {1} \nThis element is a tuple of length {2} of type\n {3} \n Todos los elementos de una matriz deben convertirse implícitamente en el tipo del primer elemento, que aquí es una tupla de longitud {0} de tipo\n {1} \nEste elemento es una tupla de longitud {2} de tipo\n {3} \n @@ -42,6 +47,11 @@ Si un tipo usa los atributos [<Sealed>] y [<AbstractClass>], significa que es estático. No se permite un constructor con argumentos. + + This expression is an anonymous record, use {{|...|}} instead of {{...}}. + This expression is an anonymous record, use {{|...|}} instead of {{...}}. + + Duplicate parameter. The parameter '{0}' has been used more that once in this method. Parámetro duplicado. El parámetro '{0}' se ha usado más una vez en este método. @@ -102,6 +112,11 @@ Si un tipo usa los atributos [<Sealed>] y [<AbstractClass>], significa que es estático. No se permiten miembros de instancia. + + The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way. + The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way. + + The 'AssemblyKeyNameAttribute' has been deprecated. Use 'AssemblyKeyFileAttribute' instead. El elemento "AssemblyKeyNameAttribute" está en desuso. Use "AssemblyKeyFileAttribute" en su lugar. @@ -157,6 +172,11 @@ El argumento "{0}" no coincide. + + The constraints 'unmanaged' and 'not struct' are inconsistent + The constraints 'unmanaged' and 'not struct' are inconsistent + + All branches of an 'if' expression must return values implicitly convertible to the type of the first branch, which here is a tuple of length {0} of type\n {1} \nThis branch returns a tuple of length {2} of type\n {3} \n Todas las ramas de una expresión 'if' deben devolver valores implícitamente convertibles al tipo de la primera rama, que aquí es una tupla de longitud {0} de tipo\n {1} \nEsta rama devuelve una tupla de longitud {2} de tipo\n {3} \n @@ -177,6 +197,11 @@ El atributo de ensamblado "{0}" hace referencia a un ensamblado de diseñador "{1}" que no se puede cargar o no existe. Se notificó la excepción: {2} - {3}. + + underscore dot shorthand for accessor only function + underscore dot shorthand for accessor only function + + additional type-directed conversions conversiones adicionales dirigidas a tipos @@ -207,6 +232,16 @@ Permitir atributo Extension implícito en tipos declarativo, módulos + + Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way. + Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way. + + + + Constraint intersection on flexible types + Constraint intersection on flexible types + + default interface member consumption consumo de miembros de interfaz predeterminados @@ -252,6 +287,16 @@ más tipos admiten las unidades de medida + + extended fixed bindings for byref and GetPinnableReference + extended fixed bindings for byref and GetPinnableReference + + + + Extended string interpolation similar to C# raw string literals. + Extended string interpolation similar to C# raw string literals. + + fixed-index slice 3d/4d segmento de índice fijo 3d/4d @@ -267,11 +312,21 @@ elemento yield implícito + + Improved implied argument names + Improved implied argument names + + expr[idx] notation for indexing and slicing Notación para indexación y segmentación expr[idx] + + Diagnostic 3559 (warn when obj inferred) at informational level, off by default + Diagnostic 3559 (warn when obj inferred) at informational level, off by default + + support for consuming init properties compatibilidad con el consumo de propiedades init @@ -342,6 +397,11 @@ administración de paquetes + + prefer String.GetPinnableReference in fixed bindings + prefer String.GetPinnableReference in fixed bindings + + binary formatting for integers formato binario para enteros @@ -387,11 +447,21 @@ patrón de subrayado simple + + Allow static let bindings in union, record, struct, non-incremental-class types + Allow static let bindings in union, record, struct, non-incremental-class types + + Static members in interfaces Miembros estáticos en interfaces + + Raises errors on incorrect indentation, allows better recovery and analysis during editing + Raises errors on incorrect indentation, allows better recovery and analysis during editing + + string interpolation interpolación de cadena @@ -407,6 +477,11 @@ Compatibilidad con try-with en expresiones secuenciales + + Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq) + Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq) + + Raises warnings when an copy-and-update record expression changes all fields of a record. Emite advertencias cuando una expresión de copiar y actualizar registros cambia todos los campos de un registro. @@ -417,6 +492,16 @@ Genera advertencias cuando se usa "let inline ... =" junto con el atributo [<MethodImpl(MethodImplOptions.NoInlining)>]. La función no se está insertando. + + Raises warnings when multiple record type matches were found during name resolution because of overlapping field names. + Raises warnings when multiple record type matches were found during name resolution because of overlapping field names. + + + + 'while!' expression + 'while!' expression + + wild card in for loop carácter comodín en bucle for @@ -517,11 +602,21 @@ Se usa para comprobar si un objeto es del tipo especificado en un patrón o enlace. + + Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression. + Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression. + + a byte string may not be interpolated no se puede interpolar una cadena de bytes + + Extended string interpolation is not supported in this version of F#. + Extended string interpolation is not supported in this version of F#. + + IF-FSHARP/IF-CAML regions are no longer supported Ya no se admiten las regiones IF-FSHARP/IF-CAML @@ -542,11 +637,26 @@ Cadena interpolada no válida. No se pueden usar literales de cadena textual o de comillas simples en expresiones interpoladas en cadenas textuales o de comillas simples. Puede usar un enlace "let" explícito para la expresión de interpolación o utilizar una cadena de comillas triples como literal de cadena externo. + + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content. + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content. + + + + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters. + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters. + + Invalid interpolated string. Triple quote string literals may not be used in interpolated expressions. Consider using an explicit 'let' binding for the interpolation expression. Cadena interpolada no válida. No se pueden usar literales de cadena de comillas triples en las expresiones interpoladas. Puede usar un enlace "let" explícito para la expresión de interpolación. + + The interpolated string contains unmatched closing braces. + The interpolated string contains unmatched closing braces. + + All elements of a list must be implicitly convertible to the type of the first element, which here is a tuple of length {0} of type\n {1} \nThis element is a tuple of length {2} of type\n {3} \n Todos los elementos de una lista deben convertirse implícitamente en el tipo del primer elemento, que aquí es una tupla de longitud {0} de tipo\n {1} \nEste elemento es una tupla de longitud {2} de tipo\n {3} \n @@ -682,6 +792,11 @@ Incluir información de interfaz de F#, el valor predeterminado es file. Esencial para distribuir bibliotecas. + + Override indentation rules implied by the language version + Override indentation rules implied by the language version + + Supported language versions: Versiones de lenguaje admitidas: @@ -717,6 +832,11 @@ La característica de "administración de paquetes" requiere la versión de lenguaje 5.0 o superior + + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. + + Invalid interpolated string. This interpolated string expression fill is empty, an expression was expected. Cadena interpolada no válida. Este relleno de expresión de cadena interpolada está vacío; se esperaba una expresión. @@ -742,24 +862,19 @@ La cadena textual interpolada incompleta comenzaba aquí o antes. - - Unexpected token in type definition. Expected '=' after the type '{0}'. - Token inesperado en la definición de tipo. Se esperaba "=" después del tipo "{0}". - - Expected a pattern after this point Se esperaba un patrón después de este punto - + Expecting expression - Se espera una expresión + Expecting expression - + Expecting pattern - Se espera un patrón + Expecting pattern @@ -777,6 +892,16 @@ Expresión de operador incompleta (ejemplo, a^b) o invocación de tipo calificada (ejemplo: ^T.Name) + + Missing keyword '{0}' + Missing keyword '{0}' + + + + Expecting member body + Expecting member body + + Missing union case name Missing union case name @@ -787,6 +912,11 @@ Este acceso de miembro es ambiguo. Use paréntesis alrededor de la creación del objeto, por ejemplo, '(nuevo AlgúnTipo(args)).NombreMiembro' + + _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses. + _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses. + + Unexpected end of input in 'else if' or 'elif' branch of conditional expression. Expected 'elif <expr> then <expr>' or 'else if <expr> then <expr>'. Fin de entrada inesperado en la rama "else if" o "elif" de una expresión condicional. Se espera "elif <expr> then <expr>" o "else if <expr> then <expr>". @@ -807,6 +937,11 @@ No se admite el algoritmo '{0}' + + Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} + Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} + + A constrained generic construct occured in the resumable code specification En la especificación del código resumible aparecía una construcción genérica restringida @@ -887,6 +1022,16 @@ No se pudo determinar el SDK de .NET para este script. Si el script está en un directorio que usa una instancia de "global.json", asegúrese de que el SDK de .NET pertinente esté instalado. Error inesperado: "{0}". + + (Suggested name) + (Suggested name) + + + + The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope. + The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope. + + This expression has type '{0}' and is only made compatible with type '{1}' through an ambiguous implicit conversion. Consider using an explicit call to 'op_Implicit'. The applicable implicit conversions are:{2} Esta expresión tiene el tipo "{0}" y solo se hace compatible con el tipo "{1}" mediante una conversión implícita ambigua. Considere la posibilidad de usar una llamada explícita a 'op_Implicit'. Las conversiones implícitas aplicables son:{2} @@ -902,24 +1047,54 @@ El campo "{0}" aparece varias veces en esta expresión de registro. - - This is the wrong anonymous record. It should have the fields {0}. - Este es un registro anónimo incorrecto. Debe tener los campos {0}. + + This anonymous record does not exactly match the expected shape. Add the missing fields {0} and remove the extra fields {1}. + Este registro anónimo no coincide exactamente con la forma esperada. Agregue los campos que faltan {0} y quite los campos adicionales {1}. - - This anonymous record does not have enough fields. Add the missing fields {0}. - Este registro anónimo no tiene suficientes campos. Agregue los campos que faltan {0}. + + Invalid Anonymous Record type declaration. + Declaración de tipo de registro anónimo no válido. - - This anonymous record has too many fields. Remove the extra fields {0}. - Este registro anónimo tiene demasiados campos. Quite los campos adicionales {0}. + + This anonymous record should have fields {0}; but here has fields {1}. + This anonymous record should have fields {0}; but here has fields {1}. - - Invalid Anonymous Record type declaration. - Declaración de tipo de registro anónimo no válido. + + This anonymous record should have fields {0}; but here has field '{1}'. + This anonymous record should have fields {0}; but here has field '{1}'. + + + + This anonymous record is missing fields {0}. + This anonymous record is missing fields {0}. + + + + This anonymous record has extra fields. Remove fields {0}. + This anonymous record has extra fields. Remove fields {0}. + + + + This anonymous record should have field '{0}' but here has fields {1}. + This anonymous record should have field '{0}' but here has fields {1}. + + + + This anonymous record should have field '{0}' but here has field '{1}'. + This anonymous record should have field '{0}' but here has field '{1}'. + + + + This anonymous record is missing field '{0}'. + This anonymous record is missing field '{0}'. + + + + This anonymous record has an extra field. Remove field '{0}'. + This anonymous record has an extra field. Remove field '{0}'. @@ -972,6 +1147,11 @@ Esta expresión usa la conversión implícita '{0}' para convertir el tipo '{1}' al tipo '{2}'. Consulte https://aka.ms/fsharp-implicit-convs. Esta advertencia se puede deshabilitar mediante '#nowarn \"3391\". + + This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses. + This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses. + + Init-only property '{0}' cannot be set outside the initialization code. See https://aka.ms/fsharp-assigning-values-to-properties-at-initialization No se puede establecer la propiedad init-only '{0}' fuera del código de inicialización. Ver https://aka.ms/fsharp-assigning-values-to-properties-at-initialization @@ -1052,6 +1232,16 @@ Se deben inicializar las siguientes propiedades necesarias:{0} + + The field '{0}' appears multiple times in this record expression or pattern + The field '{0}' appears multiple times in this record expression or pattern + + + + Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements. + Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements. + + Using methods with 'NoEagerConstraintApplicationAttribute' requires /langversion:6.0 or later El uso de métodos con "NoEagerConstraintApplicationAttribute" requiere /langversion:6.0 o posteriores @@ -1087,6 +1277,11 @@ La sintaxis "expr1[expr2]" está reservada ahora para la indexación y es ambigua cuando se usa como argumento. Vea https://aka.ms/fsharp-index-notation. Si se llama a una función con varios argumentos currificados, agregue un espacio entre ellos, por ejemplo, "unaFunción expr1 [expr2]". + + This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c'). + This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c'). + + The syntax '(expr1)[expr2]' is ambiguous when used as an argument. See https://aka.ms/fsharp-index-notation. If you intend indexing or slicing then you must use '(expr1).[expr2]' in argument position. If calling a function with multiple curried arguments, add a space between them, e.g. 'someFunction (expr1) [expr2]'. La sintaxis "(expr1)[expr2]" es ambigua cuando se usa como argumento. Vea https://aka.ms/fsharp-index-notation. Si piensa indexar o segmentar, debe usar "(expr1).[expr2]" en la posición del argumento. Si se llama a una función con varios argumentos currificados, se agregará un espacio entre ellos, por ejemplo, "unaFunción (expr1) [expr2]". @@ -1098,8 +1293,8 @@ - The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSource' and 'Bind' methods - La construcción "let! ... and! ..." solo se puede usar si el generador de expresiones de cálculo define un método "{0}" o bien los métodos "MergeSource" y "Bind" adecuados. + The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods + The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods @@ -1137,6 +1332,11 @@ No se puede llamar a '{0}': un establecedor para una propiedad de solo inicialización. Use la inicialización del objeto en su lugar. Ver https://aka.ms/fsharp-assigning-values-to-properties-at-initialization + + Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead. + Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead. + + This expression implicitly converts type '{0}' to type '{1}'. See https://aka.ms/fsharp-implicit-convs. Esta expresión convierte implícitamente el tipo '{0}' al tipo '{1}'. Consulte https://aka.ms/fsharp-implicit-convs. @@ -1177,6 +1377,11 @@ Cadena interpolada no válida. {0} + + Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b). + Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b). + + '{0}' is normally used as a type constraint in generic code, e.g. \"'T when ISomeInterface<'T>\" or \"let f (x: #ISomeInterface<_>)\". See https://aka.ms/fsharp-iwsams for guidance. You can disable this warning by using '#nowarn \"3536\"' or '--nowarn:3536'. '{0}' se usa normalmente como restricción de tipo en código genérico; por ejemplo, \"'T when ISomeInterface<'T>\" o \"let f (x: #ISomeInterface<_>)\". Consulte https://aka.ms/fsharp-iwsams para obtener instrucciones. Puede deshabilitar esta advertencia con "#nowarn \"3536\"" o "--nowarn:3536". @@ -1573,8 +1778,8 @@ - Unrecognized option: '{0}' - Opción no reconocida: '{0}'. + Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options. + Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options. @@ -3228,8 +3433,8 @@ - Multiple accessibilities given for property getter or setter - Se proporcionaron varias accesibilidades para un captador o establecedor de propiedad. + When the visibility for a property is specified, setting the visibility of the set or get method is not allowed. + When the visibility for a property is specified, setting the visibility of the set or get method is not allowed. @@ -3692,11 +3897,6 @@ Las etiquetas de campo y el tipo esperado de este patrón o expresión de registro no determinan de forma única un tipo de registro correspondiente. - - The field '{0}' appears twice in this record expression or pattern - El campo '{0}' aparece dos veces en este patrón o expresión de registro. - - Unknown union case Caso de unión desconocido. @@ -4002,11 +4202,6 @@ Este no es un patrón válido. - - Character range matches have been removed in F#. Consider using a 'when' pattern guard instead. - Las coincidencias de intervalo de caracteres se han quitado en F#. Considere el uso de una restricción de patrón 'when' en su lugar. - - Illegal pattern Patrón no válido. @@ -4833,8 +5028,8 @@ - Static value definitions may only be used in types with a primary constructor. Consider adding arguments to the type definition, e.g. 'type X(args) = ...'. - Las definiciones de valores estáticos se pueden usar solo en tipos con un constructor principal. Considere agregar argumentos a la definición de tipo, por ejemplo, 'type X(args) = ...'. + For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'. + For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'. @@ -5953,8 +6148,8 @@ - Possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this token further or using standard formatting conventions. - Posible sangría incorrecta: este token está fuera del contexto iniciado en la posición {0}. Pruebe aplicando más sangría a este token o usando convenciones de formato estándar. + Unexpected syntax or possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this further.\nTo continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7. + Posible sangría incorrecta: este token está fuera del contexto iniciado en la posición {0}. Pruebe aplicando más sangría a este token o usando convenciones de formato estándar. @@ -7668,8 +7863,8 @@ - Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is an array, the address of a field, the address of an array element or a string' - Uso no válido de 'fixed'. 'fixed' debe utilizarse solo en una declaración del formulario 'use x = fixed expr' donde la expresión es una matriz, la dirección de un campo, la dirección de un elemento de matriz o una cadena' + Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is one of the following: an array, the address of an array element, a string, a byref, an inref, or a type implementing GetPinnableReference() + Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is one of the following: an array, the address of an array element, a string, a byref, an inref, or a type implementing GetPinnableReference() @@ -8102,11 +8297,6 @@ Este valor no es una función y no se puede aplicar. ¿Olvidó terminar una declaración? - - The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. - Los nombres de argumento en la firma "{0}" y la implementación "{1}" no coinciden. Se utilizará el nombre del argumento desde el archivo de firma. Esto puede causar problemas durante la depuración o la generación de perfiles. - - An error occurred while reading the F# metadata of assembly '{0}'. A reserved construct was utilized. You may need to upgrade your F# compiler or use an earlier version of the assembly that doesn't make use of a specific construct. Se produjo un error al leer los metadatos de F# del ensamblado "{0}". Se utilizó una construcción reservada. Puede que deba actualizar su compilador de F# o usar una versión anterior del ensamblado que no haga uso de una construcción específica. @@ -8242,14 +8432,9 @@ Dos tipos de registro anónimos provienen de diferentes ensamblados "{0}" y "{1}" - - This anonymous record does not exactly match the expected shape. Add the missing fields {0} and remove the extra fields {1}. - Este registro anónimo no coincide exactamente con la forma esperada. Agregue los campos que faltan {0} y quite los campos adicionales {1}. - - - Cannot call the byref extension method '{0}. The first parameter requires the value to be mutable or a non-readonly byref type. - No se puede llamar al método de extensión de byref "{0}". El primer parámetro requiere que el valor sea mutable o un tipo de byref que no sea de solo lectura. + Cannot call the byref extension method '{0}. 'this' parameter requires the value to be mutable or a non-readonly byref type. + No se puede llamar al método de extensión de byref "{0}". El primer parámetro requiere que el valor sea mutable o un tipo de byref que no sea de solo lectura. @@ -8338,8 +8523,8 @@ - Package manager key '{0}' was not registered in {1}. Currently registered: {2} - La clave del administrador de paquetes "{0}" no se registró en {1}. Registrada actualmente: {2} + Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager + Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager diff --git a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.fr.xlf b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.fr.xlf index cb6d5cfe07..7e7a3c5231 100644 --- a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.fr.xlf +++ b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.fr.xlf @@ -2,6 +2,11 @@ + + Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended. + Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended. + + All elements of an array must be implicitly convertible to the type of the first element, which here is a tuple of length {0} of type\n {1} \nThis element is a tuple of length {2} of type\n {3} \n Tous les éléments d’un tableau doivent être implicitement convertibles en type du premier élément, qui est ici un tuple de longueur {0} de type\n {1} \nCet élément est un tuple de longueur {2} de type\n {3} \n @@ -42,6 +47,11 @@ Si un type utilise les attributs [<Sealed>] et [<AbstractClass>], cela signifie qu’il est statique. Le constructeur avec des arguments n’est pas autorisé. + + This expression is an anonymous record, use {{|...|}} instead of {{...}}. + This expression is an anonymous record, use {{|...|}} instead of {{...}}. + + Duplicate parameter. The parameter '{0}' has been used more that once in this method. Paramètre dupliqué. Le paramètre « {0} » a été utilisé une fois de plus dans cette méthode. @@ -102,6 +112,11 @@ Si un type utilise les attributs [<Sealed>] et [<AbstractClass>], cela signifie qu’il est statique. Les membres de l’instance ne sont pas autorisés. + + The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way. + The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way. + + The 'AssemblyKeyNameAttribute' has been deprecated. Use 'AssemblyKeyFileAttribute' instead. 'AssemblyKeyNameAttribute' a été déprécié. Utilisez 'AssemblyKeyFileAttribute' à la place. @@ -157,6 +172,11 @@ L'argument '{0}' ne correspond pas + + The constraints 'unmanaged' and 'not struct' are inconsistent + The constraints 'unmanaged' and 'not struct' are inconsistent + + All branches of an 'if' expression must return values implicitly convertible to the type of the first branch, which here is a tuple of length {0} of type\n {1} \nThis branch returns a tuple of length {2} of type\n {3} \n Toutes les branches d’une expression « if » doivent retourner des valeurs implicitement convertibles au type de la première branche, qui est ici un tuple de longueur {0} de type\n {1} \nCette branche renvoie un tuple de longueur {2} de type\n {3} \n @@ -177,6 +197,11 @@ L'attribut d'assembly '{0}' fait référence à un assembly de concepteur '{1}' qui ne peut pas être chargé ou qui n'existe pas. Exception signalée : {2} - {3} + + underscore dot shorthand for accessor only function + underscore dot shorthand for accessor only function + + additional type-directed conversions conversions supplémentaires dirigées vers le type @@ -207,6 +232,16 @@ Autoriser l’attribut implicite Extension lors de la déclaration des types, modules + + Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way. + Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way. + + + + Constraint intersection on flexible types + Constraint intersection on flexible types + + default interface member consumption consommation par défaut des membres d'interface @@ -252,6 +287,16 @@ d'autres types prennent en charge les unités de mesure + + extended fixed bindings for byref and GetPinnableReference + extended fixed bindings for byref and GetPinnableReference + + + + Extended string interpolation similar to C# raw string literals. + Extended string interpolation similar to C# raw string literals. + + fixed-index slice 3d/4d section à index fixe 3D/4D @@ -267,11 +312,21 @@ yield implicite + + Improved implied argument names + Improved implied argument names + + expr[idx] notation for indexing and slicing Notation expr[idx] pour l’indexation et le découpage + + Diagnostic 3559 (warn when obj inferred) at informational level, off by default + Diagnostic 3559 (warn when obj inferred) at informational level, off by default + + support for consuming init properties prise en charge de la consommation des propriétés init @@ -342,6 +397,11 @@ Package Management + + prefer String.GetPinnableReference in fixed bindings + prefer String.GetPinnableReference in fixed bindings + + binary formatting for integers mise en forme binaire pour les entiers @@ -387,11 +447,21 @@ modèle de trait de soulignement unique + + Allow static let bindings in union, record, struct, non-incremental-class types + Allow static let bindings in union, record, struct, non-incremental-class types + + Static members in interfaces Membres statiques dans les interfaces + + Raises errors on incorrect indentation, allows better recovery and analysis during editing + Raises errors on incorrect indentation, allows better recovery and analysis during editing + + string interpolation interpolation de chaîne @@ -407,6 +477,11 @@ Prise en charge de try-with dans les expressions de séquence + + Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq) + Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq) + + Raises warnings when an copy-and-update record expression changes all fields of a record. Génère des avertissements lorsqu'une expression d'enregistrement de copie et de mise à jour modifie tous les champs d'un enregistrement. @@ -417,6 +492,16 @@ Génère des avertissements lorsque « let inline ... = » est utilisé avec l’attribut [<MethodImpl(MethodImplOptions.NoInlining)>]. La fonction n’est pas inlined. + + Raises warnings when multiple record type matches were found during name resolution because of overlapping field names. + Raises warnings when multiple record type matches were found during name resolution because of overlapping field names. + + + + 'while!' expression + 'while!' expression + + wild card in for loop caractère générique dans une boucle for @@ -517,11 +602,21 @@ Permet de vérifier si un objet est du type donné dans un modèle ou une liaison. + + Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression. + Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression. + + a byte string may not be interpolated une chaîne d'octets ne peut pas être interpolée + + Extended string interpolation is not supported in this version of F#. + Extended string interpolation is not supported in this version of F#. + + IF-FSHARP/IF-CAML regions are no longer supported Les régions IF-FSHARP/IF-CAML ne sont plus prises en charge. @@ -542,11 +637,26 @@ Chaîne interpolée non valide. Les littéraux de chaîne verbatim ou à guillemet simple ne peuvent pas être utilisés dans les expressions interpolées dans des chaînes verbatim ou à guillemet simple. Utilisez une liaison 'let' explicite pour l'expression d'interpolation ou une chaîne à guillemets triples comme littéral de chaîne externe. + + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content. + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content. + + + + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters. + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters. + + Invalid interpolated string. Triple quote string literals may not be used in interpolated expressions. Consider using an explicit 'let' binding for the interpolation expression. Chaîne interpolée non valide. Les littéraux de chaîne à guillemets triples ne peuvent pas être utilisés dans des expressions interpolées. Utilisez une liaison 'let' explicite pour l'expression d'interpolation. + + The interpolated string contains unmatched closing braces. + The interpolated string contains unmatched closing braces. + + All elements of a list must be implicitly convertible to the type of the first element, which here is a tuple of length {0} of type\n {1} \nThis element is a tuple of length {2} of type\n {3} \n Tous les éléments d’une liste doivent être implicitement convertibles en type du premier élément, qui est ici un tuple de longueur {0} de type\n {1} \nCet élément est un tuple de longueur {2} de type\n {3} \n @@ -682,6 +792,11 @@ Incluez les informations de l’interface F#, la valeur par défaut est un fichier. Essentiel pour la distribution des bibliothèques. + + Override indentation rules implied by the language version + Override indentation rules implied by the language version + + Supported language versions: Versions linguistiques prises en charge : @@ -717,6 +832,11 @@ La fonction « gestion des paquets » nécessite une version de langue 5.0 ou supérieure. + + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. + + Invalid interpolated string. This interpolated string expression fill is empty, an expression was expected. Chaîne interpolée non valide. Le remplissage de cette expression de chaîne interpolée est vide. Une expression est attendue. @@ -742,24 +862,19 @@ Chaîne verbatim interpolée incomplète ayant débuté à cet emplacement ou avant - - Unexpected token in type definition. Expected '=' after the type '{0}'. - Jeton inattendu dans la définition de type. Signe '=' attendu après le type '{0}'. - - Expected a pattern after this point Modèle attendu après ce point - + Expecting expression - Expression attendue + Expecting expression - + Expecting pattern - Modèle attendu + Expecting pattern @@ -777,6 +892,16 @@ Expression d’opérateur incomplète (exemple a^b) ou appel de type qualifié (exemple : ^T.Name) + + Missing keyword '{0}' + Missing keyword '{0}' + + + + Expecting member body + Expecting member body + + Missing union case name Missing union case name @@ -787,6 +912,11 @@ L’accès à ce membre est ambigu. Utilisez des parenthèses autour de la création de l’objet, par exemple' (New SomeType (args)). MemberName + + _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses. + _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses. + + Unexpected end of input in 'else if' or 'elif' branch of conditional expression. Expected 'elif <expr> then <expr>' or 'else if <expr> then <expr>'. Fin d'entrée inattendue dans la branche 'else if' ou 'elif' de l'expression conditionnelle. Attendu 'elif <expr> then <expr>' ou 'else if <expr> then <expr>'. @@ -807,6 +937,11 @@ Algorithme '{0}' non pris en charge + + Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} + Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} + + A constrained generic construct occured in the resumable code specification Une construction générique contrainte s'est produite dans la spécification de code de reprise @@ -887,6 +1022,16 @@ Le kit SDK .NET de ce script n'a pas pu être déterminé. Si le script se trouve dans un répertoire utilisant un fichier 'global.json', vérifiez que le kit SDK .NET approprié est installé. Erreur inattendue '{0}'. + + (Suggested name) + (Suggested name) + + + + The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope. + The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope. + + This expression has type '{0}' and is only made compatible with type '{1}' through an ambiguous implicit conversion. Consider using an explicit call to 'op_Implicit'. The applicable implicit conversions are:{2} Cette expression a le type « {0} » et est uniquement compatible avec le type « {1} » via une conversion implicite ambiguë. Envisagez d’utiliser un appel explicite à’op_Implicit'. Les conversions implicites applicables sont : {2} @@ -902,24 +1047,54 @@ Le champ «{0}» apparaît plusieurs fois dans cette expression d’enregistrement. - - This is the wrong anonymous record. It should have the fields {0}. - Il s'agit de l'enregistrement anonyme incorrect. Il doit contenir les champs {0}. + + This anonymous record does not exactly match the expected shape. Add the missing fields {0} and remove the extra fields {1}. + Cet enregistrement anonyme ne correspond pas exactement à la forme attendue. Ajoutez les champs manquants {0} et supprimez les champs supplémentaires {1}. - - This anonymous record does not have enough fields. Add the missing fields {0}. - Cet enregistrement anonyme ne contient pas suffisamment de champs. Ajoutez les champs manquants {0}. + + Invalid Anonymous Record type declaration. + Déclaration de type d'enregistrement anonyme non valide. - - This anonymous record has too many fields. Remove the extra fields {0}. - Cet enregistrement anonyme a trop de champs. Supprimez les champs supplémentaires {0}. + + This anonymous record should have fields {0}; but here has fields {1}. + This anonymous record should have fields {0}; but here has fields {1}. - - Invalid Anonymous Record type declaration. - Déclaration de type d'enregistrement anonyme non valide. + + This anonymous record should have fields {0}; but here has field '{1}'. + This anonymous record should have fields {0}; but here has field '{1}'. + + + + This anonymous record is missing fields {0}. + This anonymous record is missing fields {0}. + + + + This anonymous record has extra fields. Remove fields {0}. + This anonymous record has extra fields. Remove fields {0}. + + + + This anonymous record should have field '{0}' but here has fields {1}. + This anonymous record should have field '{0}' but here has fields {1}. + + + + This anonymous record should have field '{0}' but here has field '{1}'. + This anonymous record should have field '{0}' but here has field '{1}'. + + + + This anonymous record is missing field '{0}'. + This anonymous record is missing field '{0}'. + + + + This anonymous record has an extra field. Remove field '{0}'. + This anonymous record has an extra field. Remove field '{0}'. @@ -972,6 +1147,11 @@ Cette expression utilise la conversion implicite '{0}' pour convertir le type '{1}' en type '{2}'. Voir https://aka.ms/fsharp-implicit-convs. Cet avertissement peut être désactivé en utilisant '#nowarn \"3391\". + + This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses. + This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses. + + Init-only property '{0}' cannot be set outside the initialization code. See https://aka.ms/fsharp-assigning-values-to-properties-at-initialization La propriété init-only '{0}' ne peut pas être définie en dehors du code d’initialisation. Voir https://aka.ms/fsharp-assigning-values-to-properties-at-initialization @@ -1052,6 +1232,16 @@ Les propriétés requises suivantes doivent être initialisées :{0} + + The field '{0}' appears multiple times in this record expression or pattern + The field '{0}' appears multiple times in this record expression or pattern + + + + Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements. + Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements. + + Using methods with 'NoEagerConstraintApplicationAttribute' requires /langversion:6.0 or later L’utilisation de méthodes avec « NoEagerConstraintApplicationAttribute » requiert/langversion:6.0 ou ultérieur @@ -1087,6 +1277,11 @@ La syntaxe « expr1[expr2] » est désormais réservée à l’indexation et est ambiguë lorsqu’elle est utilisée comme argument. Voir https://aka.ms/fsharp-index-notation. Si vous appelez une fonction avec plusieurs arguments codés, ajoutez un espace entre eux, par exemple « someFunction expr1 [expr2] ». + + This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c'). + This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c'). + + The syntax '(expr1)[expr2]' is ambiguous when used as an argument. See https://aka.ms/fsharp-index-notation. If you intend indexing or slicing then you must use '(expr1).[expr2]' in argument position. If calling a function with multiple curried arguments, add a space between them, e.g. 'someFunction (expr1) [expr2]'. La syntaxe « (expr1)[expr2] » est ambiguë lorsqu’elle est utilisée comme argument. Voir https://aka.ms/fsharp-index-notation. Si vous avez l’intention d’indexer ou de découper, vous devez utiliser « (expr1).[expr2] » en position d’argument. Si vous appelez une fonction avec plusieurs arguments codés, ajoutez un espace entre eux, par exemple « someFunction (expr1) [expr2] ». @@ -1098,8 +1293,8 @@ - The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSource' and 'Bind' methods - La construction 'let! ... and! ...' peut uniquement être utilisée si le générateur d'expressions de calcul définit une méthode '{0}' ou les méthodes 'MergeSource' et 'Bind' appropriées + The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods + The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods @@ -1137,6 +1332,11 @@ Nous n’avons pas pu appeler '{0}' - méthode setter pour la propriété init-only. Utilisez plutôt l’initialisation d’objet. Consultez https://aka.ms/fsharp-assigning-values-to-properties-at-initialization. + + Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead. + Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead. + + This expression implicitly converts type '{0}' to type '{1}'. See https://aka.ms/fsharp-implicit-convs. Cette expression convertit implicitement le type « {0} » en type « {1} ». Voir https://aka.ms/fsharp-implicit-convs. @@ -1177,6 +1377,11 @@ Chaîne interpolée non valide. {0} + + Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b). + Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b). + + '{0}' is normally used as a type constraint in generic code, e.g. \"'T when ISomeInterface<'T>\" or \"let f (x: #ISomeInterface<_>)\". See https://aka.ms/fsharp-iwsams for guidance. You can disable this warning by using '#nowarn \"3536\"' or '--nowarn:3536'. '{0}' est généralement utilisée comme contrainte de type dans le code générique, par exemple \"'T when ISomeInterface<'T>\" or \"let f (x: #ISomeInterface<_>)\". Consultez https://aka.ms/fsharp-iwsams pour obtenir de l’aide. Vous pouvez désactiver cet avertissement à l’aide de '#nowarn \"3536\"' or '--nowarn:3536'. @@ -1573,8 +1778,8 @@ - Unrecognized option: '{0}' - Option non reconnue : '{0}' + Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options. + Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options. @@ -3228,8 +3433,8 @@ - Multiple accessibilities given for property getter or setter - Plusieurs accessibilités fournies pour la méthode getter ou setter de la propriété + When the visibility for a property is specified, setting the visibility of the set or get method is not allowed. + When the visibility for a property is specified, setting the visibility of the set or get method is not allowed. @@ -3692,11 +3897,6 @@ Les étiquettes et le type attendu du champ de cette expression d'enregistrement ou ce modèle d'enregistrement ne déterminent pas de manière unique un type enregistrement correspondant - - The field '{0}' appears twice in this record expression or pattern - Le champ '{0}' apparaît à deux reprises dans cette expression ou ce modèle d'enregistrement - - Unknown union case Cas d'union inconnu @@ -4002,11 +4202,6 @@ Modèle non valide - - Character range matches have been removed in F#. Consider using a 'when' pattern guard instead. - Les correspondances de plages de caractères ont été supprimées de F#. Utilisez une garde par modèle 'when' à la place. - - Illegal pattern Modèle non conforme @@ -4833,8 +5028,8 @@ - Static value definitions may only be used in types with a primary constructor. Consider adding arguments to the type definition, e.g. 'type X(args) = ...'. - Les définitions de valeur statiques peuvent uniquement être utilisées dans les types comportant un constructeur principal. Ajoutez des arguments à la définition de type, par exemple 'type X(args) = …'. + For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'. + For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'. @@ -5953,8 +6148,8 @@ - Possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this token further or using standard formatting conventions. - Mise en retrait éventuellement incorrecte : ce jeton est situé hors du contexte qui débute à la position {0}. Essayez d'effectuer une mise en retrait supplémentaire de ce jeton ou d'utiliser des conventions de mise en forme standard. + Unexpected syntax or possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this further.\nTo continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7. + Mise en retrait éventuellement incorrecte : ce jeton est situé hors du contexte qui débute à la position {0}. Essayez d'effectuer une mise en retrait supplémentaire de ce jeton ou d'utiliser des conventions de mise en forme standard. @@ -7668,8 +7863,8 @@ - Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is an array, the address of a field, the address of an array element or a string' - Utilisation non valide de 'fixed'. Utilisez uniquement 'fixed' dans une déclaration de la forme 'use x = fixed expr' où l'expression est un tableau, l'adresse d'un champ, l'adresse d'un élément de tableau ou une chaîne + Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is one of the following: an array, the address of an array element, a string, a byref, an inref, or a type implementing GetPinnableReference() + Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is one of the following: an array, the address of an array element, a string, a byref, an inref, or a type implementing GetPinnableReference() @@ -8102,11 +8297,6 @@ Cette valeur n'est pas une fonction et ne peut pas être appliquée. Avez-vous oublié de terminer une déclaration ? - - The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. - Les noms d'arguments dans la signature '{0}' et l'implémentation '{1}' ne correspondent pas. Le nom d'argument du fichier de signature va être utilisé. Cela peut entraîner des problèmes durant le débogage ou le profilage. - - An error occurred while reading the F# metadata of assembly '{0}'. A reserved construct was utilized. You may need to upgrade your F# compiler or use an earlier version of the assembly that doesn't make use of a specific construct. Une erreur s'est produite durant la lecture des métadonnées F# de l'assembly '{0}'. Une construction réservée a été utilisée. Vous devrez peut-être mettre à niveau votre compilateur F# ou utiliser une version antérieure de l'assembly qui ne fait pas appel à une construction spécifique. @@ -8242,14 +8432,9 @@ Deux types d'enregistrement anonyme proviennent d'assemblys différents '{0}' et '{1}' - - This anonymous record does not exactly match the expected shape. Add the missing fields {0} and remove the extra fields {1}. - Cet enregistrement anonyme ne correspond pas exactement à la forme attendue. Ajoutez les champs manquants {0} et supprimez les champs supplémentaires {1}. - - - Cannot call the byref extension method '{0}. The first parameter requires the value to be mutable or a non-readonly byref type. - Impossible d’appeler la méthode d’extension byref « {0} ». Le premier paramètre nécessite que la valeur soit mutable ou un type byref autre qu'en lecture seule. + Cannot call the byref extension method '{0}. 'this' parameter requires the value to be mutable or a non-readonly byref type. + Impossible d’appeler la méthode d’extension byref « {0} ». Le premier paramètre nécessite que la valeur soit mutable ou un type byref autre qu'en lecture seule. @@ -8338,8 +8523,8 @@ - Package manager key '{0}' was not registered in {1}. Currently registered: {2} - La clé '{0}' du gestionnaire de packages n'était pas inscrite dans {1}. L'inscription a été effectuée : {2} + Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager + Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager diff --git a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.it.xlf b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.it.xlf index 48a1e719e8..a3977ebcac 100644 --- a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.it.xlf +++ b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.it.xlf @@ -2,6 +2,11 @@ + + Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended. + Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended. + + All elements of an array must be implicitly convertible to the type of the first element, which here is a tuple of length {0} of type\n {1} \nThis element is a tuple of length {2} of type\n {3} \n Tutti gli elementi di una matrice devono essere convertibili in modo implicito nel tipo del primo elemento, che qui è una tupla di lunghezza {0} di tipo\n {1} \nQuesto elemento è una tupla di lunghezza {2} di tipo\n {3} \n @@ -42,6 +47,11 @@ Se un tipo usa entrambi gli attributi [<Sealed>] e [<AbstractClass>], significa che è statico. Costruttore con argomenti non consentito. + + This expression is an anonymous record, use {{|...|}} instead of {{...}}. + This expression is an anonymous record, use {{|...|}} instead of {{...}}. + + Duplicate parameter. The parameter '{0}' has been used more that once in this method. Parametro duplicato. Il parametro '{0}' è stato utilizzato più volte in questo metodo. @@ -102,6 +112,11 @@ Se un tipo usa entrambi gli attributi [<Sealed>] e [<AbstractClass>], significa che è statico. Membri dell'istanza non consentiti. + + The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way. + The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way. + + The 'AssemblyKeyNameAttribute' has been deprecated. Use 'AssemblyKeyFileAttribute' instead. L'attributo 'AssemblyKeyNameAttribute' è deprecato. In alternativa, usare 'AssemblyKeyFileAttribute'. @@ -157,6 +172,11 @@ L'argomento '{0}' non corrisponde + + The constraints 'unmanaged' and 'not struct' are inconsistent + The constraints 'unmanaged' and 'not struct' are inconsistent + + All branches of an 'if' expression must return values implicitly convertible to the type of the first branch, which here is a tuple of length {0} of type\n {1} \nThis branch returns a tuple of length {2} of type\n {3} \n Tutti i rami di un'espressione 'if' devono restituire valori convertibili in modo implicito nel tipo del primo ramo, che è una tupla di lunghezza {0} di tipo\n {1} \nQuesto ramo restituisce una tupla di lunghezza {2} di tipo\n {3} \n @@ -177,6 +197,11 @@ L'attributo di assembly '{0}' fa riferimento a un assembly '{1}' della finestra di progettazione che non è stato caricato o non esiste. L'eccezione restituita è {2} - {3} + + underscore dot shorthand for accessor only function + underscore dot shorthand for accessor only function + + additional type-directed conversions conversioni aggiuntive dirette ai tipi @@ -207,6 +232,16 @@ Consentire l'attributo estensione implicito per i tipi dichiarabili, i moduli + + Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way. + Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way. + + + + Constraint intersection on flexible types + Constraint intersection on flexible types + + default interface member consumption utilizzo predefinito dei membri di interfaccia @@ -252,6 +287,16 @@ più tipi supportano le unità di misura + + extended fixed bindings for byref and GetPinnableReference + extended fixed bindings for byref and GetPinnableReference + + + + Extended string interpolation similar to C# raw string literals. + Extended string interpolation similar to C# raw string literals. + + fixed-index slice 3d/4d sezione a indice fisso 3D/4D @@ -267,11 +312,21 @@ istruzione yield implicita + + Improved implied argument names + Improved implied argument names + + expr[idx] notation for indexing and slicing Notazione expr[idx] per l'indicizzazione e il sezionamento + + Diagnostic 3559 (warn when obj inferred) at informational level, off by default + Diagnostic 3559 (warn when obj inferred) at informational level, off by default + + support for consuming init properties supporto per l'utilizzo delle proprietà init @@ -342,6 +397,11 @@ gestione pacchetti + + prefer String.GetPinnableReference in fixed bindings + prefer String.GetPinnableReference in fixed bindings + + binary formatting for integers formattazione binaria per interi @@ -387,11 +447,21 @@ criterio per carattere di sottolineatura singolo + + Allow static let bindings in union, record, struct, non-incremental-class types + Allow static let bindings in union, record, struct, non-incremental-class types + + Static members in interfaces Membri statici nelle interfacce + + Raises errors on incorrect indentation, allows better recovery and analysis during editing + Raises errors on incorrect indentation, allows better recovery and analysis during editing + + string interpolation interpolazione di stringhe @@ -407,6 +477,11 @@ Supporto per try-with nelle espressioni di sequenza + + Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq) + Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq) + + Raises warnings when an copy-and-update record expression changes all fields of a record. Genera avvisi quando un'espressione di record di copia e aggiornamento modifica tutti i campi di un record. @@ -417,6 +492,16 @@ Genera avvisi quando 'let inline ... =' viene usato insieme all'attributo [<MethodImpl(MethodImplOptions.NoInlining)>]. La funzione non viene resa inline. + + Raises warnings when multiple record type matches were found during name resolution because of overlapping field names. + Raises warnings when multiple record type matches were found during name resolution because of overlapping field names. + + + + 'while!' expression + 'while!' expression + + wild card in for loop carattere jolly nel ciclo for @@ -517,11 +602,21 @@ Usato per controllare se un oggetto è del tipo specificato in un criterio o in un'associazione. + + Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression. + Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression. + + a byte string may not be interpolated non è possibile interpolare una stringa di byte + + Extended string interpolation is not supported in this version of F#. + Extended string interpolation is not supported in this version of F#. + + IF-FSHARP/IF-CAML regions are no longer supported Le aree IF-FSHARP/IF-CAML non sono più supportate @@ -542,11 +637,26 @@ La stringa interpolata non è valida. Non è possibile usare valori letterali stringa tra virgolette singole o verbatim in espressioni interpolate in stringhe verbatim o tra virgolette singole. Provare a usare un binding 'let' esplicito per l'espressione di interpolazione oppure usare una stringa tra virgolette triple come valore letterale stringa esterno. + + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content. + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content. + + + + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters. + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters. + + Invalid interpolated string. Triple quote string literals may not be used in interpolated expressions. Consider using an explicit 'let' binding for the interpolation expression. La stringa interpolata non è valida. Non è possibile usare valori letterali stringa tra virgolette triple in espressioni interpolate. Provare a usare un binding 'let' esplicito per l'espressione di interpolazione. + + The interpolated string contains unmatched closing braces. + The interpolated string contains unmatched closing braces. + + All elements of a list must be implicitly convertible to the type of the first element, which here is a tuple of length {0} of type\n {1} \nThis element is a tuple of length {2} of type\n {3} \n Tutti gli elementi di un elenco devono essere convertibili in modo implicito nel tipo del primo elemento, che qui è una tupla di lunghezza {0} di tipo\n {1} \nQuesto elemento è una tupla di lunghezza {2} di tipo\n {3} \n @@ -682,6 +792,11 @@ Includere le informazioni sull'interfaccia F#. Il valore predefinito è file. Essential per la distribuzione di librerie. + + Override indentation rules implied by the language version + Override indentation rules implied by the language version + + Supported language versions: Versioni del linguaggio supportate: @@ -717,6 +832,11 @@ La funzionalità 'gestione pacchetti' richiede la versione del linguaggio 5.0 o superiore + + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. + + Invalid interpolated string. This interpolated string expression fill is empty, an expression was expected. La stringa interpolata non è valida. Il riempimento espressione di questa stringa interpolata è vuoto, mentre era prevista un'espressione. @@ -742,24 +862,19 @@ La stringa verbatim interpolata incompleta inizia in questa posizione o prima di essa - - Unexpected token in type definition. Expected '=' after the type '{0}'. - Token imprevisto nella definizione del tipo. Dopo il tipo '{0}' è previsto '='. - - Expected a pattern after this point Previsto un criterio dopo questa posizione - + Expecting expression - Prevista espressione. + Expecting expression - + Expecting pattern - Criterio previsto + Expecting pattern @@ -777,6 +892,16 @@ Espressione operatore incompleta (ad esempio a^b) o chiamata di tipo qualificato (ad esempio: ^T.Name) + + Missing keyword '{0}' + Missing keyword '{0}' + + + + Expecting member body + Expecting member body + + Missing union case name Missing union case name @@ -787,6 +912,11 @@ L'accesso ai membri è ambiguo. Utilizzare le parentesi intorno alla creazione oggetto, ad esempio “(New SomeType (args)). MemberName” + + _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses. + _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses. + + Unexpected end of input in 'else if' or 'elif' branch of conditional expression. Expected 'elif <expr> then <expr>' or 'else if <expr> then <expr>'. Fine dell'input imprevista nel ramo 'else if' o 'elif' dell'espressione condizionale. È previsto 'elif <expr> then <expr>' o 'else if <expr> then <expr>'. @@ -807,6 +937,11 @@ L'algoritmo '{0}' non è supportato + + Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} + Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} + + A constrained generic construct occured in the resumable code specification Costrutto generico vincolato nella specifica del codice ripristinabile @@ -887,6 +1022,16 @@ Non è stato possibile determinare la versione di .NET SDK per questo script. Se lo script si trova in una directory che usa un file 'global.json', assicurarsi che sia installata la versione pertinente di .NET SDK. Errore imprevisto: '{0}'. + + (Suggested name) + (Suggested name) + + + + The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope. + The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope. + + This expression has type '{0}' and is only made compatible with type '{1}' through an ambiguous implicit conversion. Consider using an explicit call to 'op_Implicit'. The applicable implicit conversions are:{2} Questa espressione di tipo '{0}' è resa compatibile con il tipo '{1}' solo tramite una conversione implicita ambigua. Provare a usare una chiamata esplicita a 'op_Implicit'. Le conversioni implicite applicabili sono: {2} @@ -902,24 +1047,54 @@ Il campo '{0}' viene visualizzato più volte in questa espressione di record. - - This is the wrong anonymous record. It should have the fields {0}. - Si tratta del record anonimo errato. Deve includere i campi {0}. + + This anonymous record does not exactly match the expected shape. Add the missing fields {0} and remove the extra fields {1}. + Questo record anonimo non corrisponde esattamente alla forma prevista. Aggiungere i campi mancanti {0} e rimuovere i campi aggiuntivi {1}. - - This anonymous record does not have enough fields. Add the missing fields {0}. - Questo record anonimo non contiene un numero sufficiente di campi. Aggiungere i campi mancanti {0}. + + Invalid Anonymous Record type declaration. + La dichiarazione di tipo Record anonimo non è valida. - - This anonymous record has too many fields. Remove the extra fields {0}. - Questo record anonimo contiene troppi campi. Rimuovere i campi aggiuntivi {0}. + + This anonymous record should have fields {0}; but here has fields {1}. + This anonymous record should have fields {0}; but here has fields {1}. - - Invalid Anonymous Record type declaration. - La dichiarazione di tipo Record anonimo non è valida. + + This anonymous record should have fields {0}; but here has field '{1}'. + This anonymous record should have fields {0}; but here has field '{1}'. + + + + This anonymous record is missing fields {0}. + This anonymous record is missing fields {0}. + + + + This anonymous record has extra fields. Remove fields {0}. + This anonymous record has extra fields. Remove fields {0}. + + + + This anonymous record should have field '{0}' but here has fields {1}. + This anonymous record should have field '{0}' but here has fields {1}. + + + + This anonymous record should have field '{0}' but here has field '{1}'. + This anonymous record should have field '{0}' but here has field '{1}'. + + + + This anonymous record is missing field '{0}'. + This anonymous record is missing field '{0}'. + + + + This anonymous record has an extra field. Remove field '{0}'. + This anonymous record has an extra field. Remove field '{0}'. @@ -972,6 +1147,11 @@ Questa espressione usa la conversione implicita '{0}' per convertire il tipo '{1}' nel tipo '{2}'. Vedere https://aka.ms/fsharp-implicit-convs. Per disabilitare questo avviso, usare '#nowarn \"3391\"'. + + This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses. + This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses. + + Init-only property '{0}' cannot be set outside the initialization code. See https://aka.ms/fsharp-assigning-values-to-properties-at-initialization La proprietà init-only '{0}' non può essere impostata al di fuori del codice di inizializzazione. Vedere https://aka.ms/fsharp-assigning-values-to-properties-at-initialization @@ -1052,6 +1232,16 @@ È necessario inizializzare le proprietà obbligatorie seguenti:{0} + + The field '{0}' appears multiple times in this record expression or pattern + The field '{0}' appears multiple times in this record expression or pattern + + + + Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements. + Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements. + + Using methods with 'NoEagerConstraintApplicationAttribute' requires /langversion:6.0 or later L'utilizzo di metodi con 'NoEagerConstraintApplicationAttribute' richiede /langversion: 6.0 o versione successiva @@ -1087,6 +1277,11 @@ La sintassi 'expr1[expr2]' è ora riservata per l'indicizzazione ed è ambigua quando usata come argomento. Vedere https://aka.ms/fsharp-index-notation. Se si chiama una funzione con più argomenti sottoposti a corsi, aggiungere uno spazio tra di essi, ad esempio 'someFunction expr1 [expr2]'. + + This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c'). + This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c'). + + The syntax '(expr1)[expr2]' is ambiguous when used as an argument. See https://aka.ms/fsharp-index-notation. If you intend indexing or slicing then you must use '(expr1).[expr2]' in argument position. If calling a function with multiple curried arguments, add a space between them, e.g. 'someFunction (expr1) [expr2]'. La sintassi '(expr1)[expr2]' è ambigua se usata come argomento. Vedere https://aka.ms/fsharp-index-notation. Se si intende eseguire l'indicizzazione o il sezionamento, è necessario usare '(expr1).[expr2]' nella posizione dell'argomento. Se si chiama una funzione con più argomenti sottoposti a corsi, aggiungere uno spazio tra di essi, ad esempio 'someFunction (expr1) [expr2]'. @@ -1098,8 +1293,8 @@ - The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSource' and 'Bind' methods - È possibile usare il costrutto 'let! ... and! ...' solo se il generatore di espressioni di calcolo definisce un metodo '{0}' o metodi 'MergeSource' e 'Bind' appropriati + The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods + The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods @@ -1137,6 +1332,11 @@ Non è possibile chiamare '{0}', un setter per la proprietà init-only. Usare invece l'inizializzazione dell'oggetto. Vedere https://aka.ms/fsharp-assigning-values-to-properties-at-initialization + + Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead. + Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead. + + This expression implicitly converts type '{0}' to type '{1}'. See https://aka.ms/fsharp-implicit-convs. Questa espressione converte in modo implicito il tipo '{0}' nel tipo '{1}'. Vedere https://aka.ms/fsharp-implicit-convs. @@ -1177,6 +1377,11 @@ La stringa interpolata non è valida. {0} + + Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b). + Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b). + + '{0}' is normally used as a type constraint in generic code, e.g. \"'T when ISomeInterface<'T>\" or \"let f (x: #ISomeInterface<_>)\". See https://aka.ms/fsharp-iwsams for guidance. You can disable this warning by using '#nowarn \"3536\"' or '--nowarn:3536'. '{0}' viene in genere usato come vincolo di tipo nel codice generico, ad esempio \"'T when ISomeInterface<'T>\" o \"let f (x: #ISomeInterface<_>)\". Per indicazioni, vedere https://aka.ms/fsharp-iwsams. È possibile disabilitare questo avviso usando '#nowarn \"3536\"' o '--nowarn:3536'. @@ -1573,8 +1778,8 @@ - Unrecognized option: '{0}' - Opzione non riconosciuta: '{0}' + Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options. + Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options. @@ -3228,8 +3433,8 @@ - Multiple accessibilities given for property getter or setter - Sono state assegnate più accessibilità per il getter o il setter della proprietà + When the visibility for a property is specified, setting the visibility of the set or get method is not allowed. + When the visibility for a property is specified, setting the visibility of the set or get method is not allowed. @@ -3692,11 +3897,6 @@ Le etichette di campo e il tipo previsto di questo criterio o espressione del record non determinano in modo univoco un tipo di record corrispondente - - The field '{0}' appears twice in this record expression or pattern - Il campo '{0}' è presente due volte nei criteri o nell'espressione del record - - Unknown union case Case di unione sconosciuto @@ -4002,11 +4202,6 @@ Questo non è un criterio valido - - Character range matches have been removed in F#. Consider using a 'when' pattern guard instead. - Corrispondenze dell'intervallo di caratteri rimosse in F#. Provare a utilizzare invece un'espressione guard con criterio 'when'. - - Illegal pattern Criterio non valido @@ -4833,8 +5028,8 @@ - Static value definitions may only be used in types with a primary constructor. Consider adding arguments to the type definition, e.g. 'type X(args) = ...'. - Le definizioni di valore statiche possono essere utilizzate solo nei tipi con un costruttore primario. Provare ad aggiungere argomenti alla definizione di tipo, ad esempio 'type X(args) = ...'. + For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'. + For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'. @@ -5953,8 +6148,8 @@ - Possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this token further or using standard formatting conventions. - Possibile rientro non corretto: il token si trova oltre il limite del contesto iniziato alla posizione {0}. Provare ad applicare un ulteriore rientro al token oppure a utilizzare convenzioni di formattazione standard. + Unexpected syntax or possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this further.\nTo continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7. + Possibile rientro non corretto: il token si trova oltre il limite del contesto iniziato alla posizione {0}. Provare ad applicare un ulteriore rientro al token oppure a utilizzare convenzioni di formattazione standard. @@ -7668,8 +7863,8 @@ - Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is an array, the address of a field, the address of an array element or a string' - Uso non valido di 'fixed'. 'fixed' può essere usato solo in una dichiarazione in formato 'use x = fixed expr', in cui l'espressione è una matrice, l'indirizzo di un campo, l'indirizzo di un elemento di matrice oppure una stringa + Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is one of the following: an array, the address of an array element, a string, a byref, an inref, or a type implementing GetPinnableReference() + Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is one of the following: an array, the address of an array element, a string, a byref, an inref, or a type implementing GetPinnableReference() @@ -8102,11 +8297,6 @@ Questo valore non è una funzione e non può essere applicato. Potrebbe essere presente una dichiarazione non terminata. - - The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. - I nomi degli argomenti nella firma '{0}' e nell'implementazione '{1}' non corrispondono. Verrà usato il nome dell'argomento del file di firma. Questa situazione potrebbe causare problemi durante il debug o la profilatura. - - An error occurred while reading the F# metadata of assembly '{0}'. A reserved construct was utilized. You may need to upgrade your F# compiler or use an earlier version of the assembly that doesn't make use of a specific construct. Si è verificato un errore durante la lettura dei metadati F# dell'assembly '{0}'. È stato utilizzato un costrutto riservato. Potrebbe essere necessario aggiornare il compilatore F# o usare una versione precedente dell'assembly che non usa un costrutto specifico. @@ -8242,14 +8432,9 @@ Due tipi di record anonimo provengono da assembly diversi, '{0}' e '{1}' - - This anonymous record does not exactly match the expected shape. Add the missing fields {0} and remove the extra fields {1}. - Questo record anonimo non corrisponde esattamente alla forma prevista. Aggiungere i campi mancanti {0} e rimuovere i campi aggiuntivi {1}. - - - Cannot call the byref extension method '{0}. The first parameter requires the value to be mutable or a non-readonly byref type. - Non è possibile chiamare il metodo di estensione byref '{0}. Il valore del primo parametro deve essere modificabile oppure un tipo byref non di sola lettura. + Cannot call the byref extension method '{0}. 'this' parameter requires the value to be mutable or a non-readonly byref type. + Non è possibile chiamare il metodo di estensione byref '{0}. Il valore del primo parametro deve essere modificabile oppure un tipo byref non di sola lettura. @@ -8338,8 +8523,8 @@ - Package manager key '{0}' was not registered in {1}. Currently registered: {2} - La chiave di gestione pacchetti '{0}' non è stata registrata in {1}. Attualmente registrata: {2} + Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager + Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager diff --git a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.ja.xlf b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.ja.xlf index 126d2e4709..8ef13d0911 100644 --- a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.ja.xlf +++ b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.ja.xlf @@ -2,6 +2,11 @@ + + Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended. + Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended. + + All elements of an array must be implicitly convertible to the type of the first element, which here is a tuple of length {0} of type\n {1} \nThis element is a tuple of length {2} of type\n {3} \n 配列のすべての要素は、最初の要素の型に暗黙的に変換できる必要があります。これは、型の長さ {0} のタプルです\n {1} \nこの要素は、型の長さ {2} のタプルです\n {3} \n @@ -42,6 +47,11 @@ 型が [<Sealed>] と [<AbstractClass>] の両方の属性を使用する場合、それは静的であることを意味します。引数を持つコンストラクターは許可されていません。 + + This expression is an anonymous record, use {{|...|}} instead of {{...}}. + This expression is an anonymous record, use {{|...|}} instead of {{...}}. + + Duplicate parameter. The parameter '{0}' has been used more that once in this method. パラメーターが重複しています。パラメーター '{0}' は、このメソッドで 1 回以上使用されています。 @@ -102,6 +112,11 @@ 型が [<Sealed>] と [<AbstractClass>] の両方の属性を使用する場合、それは静的であることを意味します。インスタンス メンバーは許可されません。 + + The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way. + The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way. + + The 'AssemblyKeyNameAttribute' has been deprecated. Use 'AssemblyKeyFileAttribute' instead. 'AssemblyKeyNameAttribute' は非推奨になりました。代わりに 'AssemblyKeyFileAttribute' を使用してください。 @@ -157,6 +172,11 @@ 引数 '{0}' が一致しません + + The constraints 'unmanaged' and 'not struct' are inconsistent + The constraints 'unmanaged' and 'not struct' are inconsistent + + All branches of an 'if' expression must return values implicitly convertible to the type of the first branch, which here is a tuple of length {0} of type\n {1} \nThis branch returns a tuple of length {2} of type\n {3} \n 'if' 式のすべての分岐は、最初の分岐の型に暗黙的に変換できる値を返す必要があります。これは、型の長さ {0} のタプルです\n {1} \nこの分岐は、型の長さ {2} のタプルを返します\n {3} \n @@ -177,6 +197,11 @@ アセンブリ属性 '{0}' は、デザイナー アセンブリ '{1}' を参照していますが、これは読み込むことができないか、存在していません。報告された例外: {2} - {3} + + underscore dot shorthand for accessor only function + underscore dot shorthand for accessor only function + + additional type-directed conversions その他の型指定された変換 @@ -207,6 +232,16 @@ 型、モジュールの宣言で暗黙的な拡張属性を許可する + + Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way. + Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way. + + + + Constraint intersection on flexible types + Constraint intersection on flexible types + + default interface member consumption 既定のインターフェイス メンバーの消費 @@ -252,6 +287,16 @@ 単位をサポートするその他の型 + + extended fixed bindings for byref and GetPinnableReference + extended fixed bindings for byref and GetPinnableReference + + + + Extended string interpolation similar to C# raw string literals. + Extended string interpolation similar to C# raw string literals. + + fixed-index slice 3d/4d 固定インデックス スライス 3d/4d @@ -267,11 +312,21 @@ 暗黙的な yield + + Improved implied argument names + Improved implied argument names + + expr[idx] notation for indexing and slicing インデックス作成とスライス用の expr[idx] 表記 + + Diagnostic 3559 (warn when obj inferred) at informational level, off by default + Diagnostic 3559 (warn when obj inferred) at informational level, off by default + + support for consuming init properties init プロパティの使用のサポート @@ -342,6 +397,11 @@ パッケージの管理 + + prefer String.GetPinnableReference in fixed bindings + prefer String.GetPinnableReference in fixed bindings + + binary formatting for integers 整数のバイナリ形式 @@ -387,11 +447,21 @@ 単一のアンダースコア パターン + + Allow static let bindings in union, record, struct, non-incremental-class types + Allow static let bindings in union, record, struct, non-incremental-class types + + Static members in interfaces インターフェイス内の静的メンバー + + Raises errors on incorrect indentation, allows better recovery and analysis during editing + Raises errors on incorrect indentation, allows better recovery and analysis during editing + + string interpolation 文字列の補間 @@ -407,6 +477,11 @@ シーケンス式内の try-with のサポート + + Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq) + Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq) + + Raises warnings when an copy-and-update record expression changes all fields of a record. copy-and-update レコード式によってレコードのすべてのフィールドが変更されたときに警告を表示します。 @@ -417,6 +492,16 @@ 'let inline ... =' が [<MethodImpl(MethodImplOptions.NoInlining)>] 属性と一緒に使用されるときに警告を生成します。関数はインライン化されていません。 + + Raises warnings when multiple record type matches were found during name resolution because of overlapping field names. + Raises warnings when multiple record type matches were found during name resolution because of overlapping field names. + + + + 'while!' expression + 'while!' expression + + wild card in for loop for ループのワイルド カード @@ -517,11 +602,21 @@ オブジェクトがパターンまたはバインディング内の指定された型であるかどうかを確認するために使用されます。 + + Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression. + Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression. + + a byte string may not be interpolated バイト文字列は補間されていない可能性があります + + Extended string interpolation is not supported in this version of F#. + Extended string interpolation is not supported in this version of F#. + + IF-FSHARP/IF-CAML regions are no longer supported IF-FSHARP/IF-CAML リージョンは現在サポートされていません @@ -542,11 +637,26 @@ 補間された文字列が無効です。単一引用符または逐語的文字列リテラルは、単一引用符または逐語的文字列内の補間された式では使用できません。補間式に対して明示的な 'let' バインドを使用するか、外部文字列リテラルとして三重引用符文字列を使用することをご検討ください。 + + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content. + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content. + + + + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters. + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters. + + Invalid interpolated string. Triple quote string literals may not be used in interpolated expressions. Consider using an explicit 'let' binding for the interpolation expression. 補間された文字列が無効です。三重引用符文字列リテラルは、補間された式では使用できません。補間式に対して明示的な 'let' バインドを使用することをご検討ください。 + + The interpolated string contains unmatched closing braces. + The interpolated string contains unmatched closing braces. + + All elements of a list must be implicitly convertible to the type of the first element, which here is a tuple of length {0} of type\n {1} \nThis element is a tuple of length {2} of type\n {3} \n リストのすべての要素は、最初の要素の型に暗黙的に変換できる必要があります。これは、型の長さ {0} のタプルです\n {1} \nこの要素は、型の長さ {2} のタプルです\n {3} \n @@ -682,6 +792,11 @@ F# インターフェイス情報を含めます。既定値は file です。ライブラリの配布に不可欠です。 + + Override indentation rules implied by the language version + Override indentation rules implied by the language version + + Supported language versions: サポートされる言語バージョン: @@ -717,6 +832,11 @@ 'package management' (パッケージ管理) 機能には、言語バージョン 5.0 以降が必要です + + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. + + Invalid interpolated string. This interpolated string expression fill is empty, an expression was expected. 補間された文字列が無効です。この補間された文字列式の塗りつぶしが空です。式が必要です。 @@ -742,24 +862,19 @@ この位置以前に始まった補間された逐語的文字列が不完全です - - Unexpected token in type definition. Expected '=' after the type '{0}'. - 型定義に予期しないトークンがあります。型 '{0}' の後には '=' が必要です。 - - Expected a pattern after this point このポイントの後にパターンが必要です - + Expecting expression - 式を指定してください + Expecting expression - + Expecting pattern - 必要なパターン + Expecting pattern @@ -777,6 +892,16 @@ 不完全な演算子式 (例 a^b) または修飾型の呼び出し (例: ^T.Name) + + Missing keyword '{0}' + Missing keyword '{0}' + + + + Expecting member body + Expecting member body + + Missing union case name Missing union case name @@ -787,6 +912,11 @@ このメンバーへのアクセスはあいまいです。オブジェクト作成の前後にはかっこを使用してください。例: '(new SomeType(args)).MemberName' + + _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses. + _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses. + + Unexpected end of input in 'else if' or 'elif' branch of conditional expression. Expected 'elif <expr> then <expr>' or 'else if <expr> then <expr>'. 条件式の 'else if' または 'elif' 分岐の入力が予期しない形式で終了しています。'elif <expr> then <expr>' または 'else if <expr> then <expr>' が必要でした。 @@ -807,6 +937,11 @@ アルゴリズム '{0}' はサポートされていません + + Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} + Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} + + A constrained generic construct occured in the resumable code specification 再開可能なコード指定で制約付きジェネリック コンストラクトが発生しました @@ -887,6 +1022,16 @@ このスクリプトの .NET SDK を特定できませんでした。このスクリプトが、'global.json' が使用されているディレクトリにある場合は、関連する .NET SDK がインストールされていることを確認してください。予期しないエラー '{0}'。 + + (Suggested name) + (Suggested name) + + + + The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope. + The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope. + + This expression has type '{0}' and is only made compatible with type '{1}' through an ambiguous implicit conversion. Consider using an explicit call to 'op_Implicit'. The applicable implicit conversions are:{2} この式の型は '{0}' であり、あいまいで暗黙的な変換によってのみ、型 '{1}' と互換性を持たせることが可能です。' op_Implicit' の明示的な呼び出しを使用することを検討してください。該当する暗黙的な変換は次のとおりです: {2} @@ -902,24 +1047,54 @@ このレコード式に、フィールド '{0}' が複数回出現します。 - - This is the wrong anonymous record. It should have the fields {0}. - この匿名レコードは正しくありません。フィールド {0} を含んでいる必要があります。 + + This anonymous record does not exactly match the expected shape. Add the missing fields {0} and remove the extra fields {1}. + この匿名レコードは、予期された形状と完全には一致していません。不足しているフィールド {0} を追加し、不要なフィールド {1} を削除してください。 - - This anonymous record does not have enough fields. Add the missing fields {0}. - この匿名レコードには十分なフィールドがありません。不足しているフィールド {0} を追加してください。 + + Invalid Anonymous Record type declaration. + 匿名レコードの型宣言が無効です。 - - This anonymous record has too many fields. Remove the extra fields {0}. - この匿名レコードはフィールドが多すぎます。不要なフィールド {0} を削除してください。 + + This anonymous record should have fields {0}; but here has fields {1}. + This anonymous record should have fields {0}; but here has fields {1}. - - Invalid Anonymous Record type declaration. - 匿名レコードの型宣言が無効です。 + + This anonymous record should have fields {0}; but here has field '{1}'. + This anonymous record should have fields {0}; but here has field '{1}'. + + + + This anonymous record is missing fields {0}. + This anonymous record is missing fields {0}. + + + + This anonymous record has extra fields. Remove fields {0}. + This anonymous record has extra fields. Remove fields {0}. + + + + This anonymous record should have field '{0}' but here has fields {1}. + This anonymous record should have field '{0}' but here has fields {1}. + + + + This anonymous record should have field '{0}' but here has field '{1}'. + This anonymous record should have field '{0}' but here has field '{1}'. + + + + This anonymous record is missing field '{0}'. + This anonymous record is missing field '{0}'. + + + + This anonymous record has an extra field. Remove field '{0}'. + This anonymous record has an extra field. Remove field '{0}'. @@ -972,6 +1147,11 @@ この式では、暗黙的な変換 '{0}' を使用して、型 '{1}' を型 '{2}' に変換しています。https://aka.ms/fsharp-implicit-convs をご確認ください。'#nowarn\"3391\" を使用して、この警告を無効にできる可能性があります。 + + This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses. + This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses. + + Init-only property '{0}' cannot be set outside the initialization code. See https://aka.ms/fsharp-assigning-values-to-properties-at-initialization 初期化コードの外部で init 専用プロパティ '{0}' を設定することはできません。https://aka.ms/fsharp-assigning-values-to-properties-at-initialization を参照してください @@ -1052,6 +1232,16 @@ 次の必須プロパティを初期化する必要があります:{0} + + The field '{0}' appears multiple times in this record expression or pattern + The field '{0}' appears multiple times in this record expression or pattern + + + + Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements. + Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements. + + Using methods with 'NoEagerConstraintApplicationAttribute' requires /langversion:6.0 or later 'NoEagerConstraintApplicationAttribute' を指定してメソッドを使用するには、/langversion:6.0 以降が必要です @@ -1087,6 +1277,11 @@ 構文 'expr1[expr2]' は引数として使用されている場合、あいまいです。https://aka.ms/fsharp-index-notation を参照してください。複数のカリー化された引数を持つ関数を呼び出す場合には、'someFunction expr1 [expr2]' のように間にスペースを追加します。 + + This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c'). + This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c'). + + The syntax '(expr1)[expr2]' is ambiguous when used as an argument. See https://aka.ms/fsharp-index-notation. If you intend indexing or slicing then you must use '(expr1).[expr2]' in argument position. If calling a function with multiple curried arguments, add a space between them, e.g. 'someFunction (expr1) [expr2]'. 構文 '(expr1)[expr2]' は引数として使用されている場合、あいまいです。https://aka.ms/fsharp-index-notation を参照してください。インデックス作成またはスライスを行う場合は、'(expr1).[expr2]' を引数の位置に使用する必要があります。複数のカリー化された引数を持つ関数を呼び出す場合は、'someFunction (expr1) [expr2]' のように間にスペースを追加します。 @@ -1098,8 +1293,8 @@ - The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSource' and 'Bind' methods - 'let! ... and! ...' コンストラクトは、コンピュテーション式ビルダーが '{0}' メソッドまたは適切な 'MergeSource' および 'Bind' メソッドのいずれかを定義している場合にのみ使用できます + The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods + The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods @@ -1137,6 +1332,11 @@ '{0}' を呼び出すことはできません。これは init のみのプロパティのセッターなので、代わりにオブジェクトの初期化を使用してください。https://aka.ms/fsharp-assigning-values-to-properties-at-initialization を参照してください。 + + Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead. + Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead. + + This expression implicitly converts type '{0}' to type '{1}'. See https://aka.ms/fsharp-implicit-convs. この式は、型 '{0}' を型 '{1}' に暗黙的に変換します。https://aka.ms/fsharp-implicit-convs を参照してください。 @@ -1177,6 +1377,11 @@ 補間された文字列が無効です。{0} + + Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b). + Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b). + + '{0}' is normally used as a type constraint in generic code, e.g. \"'T when ISomeInterface<'T>\" or \"let f (x: #ISomeInterface<_>)\". See https://aka.ms/fsharp-iwsams for guidance. You can disable this warning by using '#nowarn \"3536\"' or '--nowarn:3536'. '{0}' は通常、ジェネリック コードの型制約として使用されます (例: \"'T when ISomeInterface<'T>\" または \"let f (x: #ISomeInterface<_>)\")。ガイダンスについては https://aka.ms/fsharp-iwsams を参照してください。この警告は、'#nowarn \"3536\"' または '--nowarn:3536' を使用して無効にできます。 @@ -1573,8 +1778,8 @@ - Unrecognized option: '{0}' - 認識されないオプション:'{0}' + Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options. + Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options. @@ -3228,8 +3433,8 @@ - Multiple accessibilities given for property getter or setter - プロパティのゲッターまたはセッターに指定されたアクセシビリティが複数あります + When the visibility for a property is specified, setting the visibility of the set or get method is not allowed. + When the visibility for a property is specified, setting the visibility of the set or get method is not allowed. @@ -3692,11 +3897,6 @@ フィールド ラベルとこのレコード式またはパターンの型だけでは、対応するレコード型を一意に決定できません - - The field '{0}' appears twice in this record expression or pattern - のレコード式またはパターンに、フィールド '{0}' が 2 回出現します - - Unknown union case 不明な共用体ケースです @@ -4002,11 +4202,6 @@ これは有効なパターンではありません - - Character range matches have been removed in F#. Consider using a 'when' pattern guard instead. - F# では文字範囲の一致が削除されました。代わりに 'when' パターン ガードを使用してください。 - - Illegal pattern パターンが正しくありません @@ -4833,8 +5028,8 @@ - Static value definitions may only be used in types with a primary constructor. Consider adding arguments to the type definition, e.g. 'type X(args) = ...'. - 静的な値の定義は、プライマリ コンストラクターを含む型でのみ使用できます。型定義に引数を追加してください ( たとえば、'type X(args) = ...')。 + For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'. + For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'. @@ -5953,8 +6148,8 @@ - Possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this token further or using standard formatting conventions. - インデントが正しくない可能性があります。このトークンは位置 {0} から開始されるコンテキストのオフサイドになります。このトークンのインデントを増やすか、標準的な書式規則を使用してください。 + Unexpected syntax or possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this further.\nTo continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7. + インデントが正しくない可能性があります。このトークンは位置 {0} から開始されるコンテキストのオフサイドになります。このトークンのインデントを増やすか、標準的な書式規則を使用してください。 @@ -7668,8 +7863,8 @@ - Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is an array, the address of a field, the address of an array element or a string' - 'fixed' の使い方が正しくありません。'fixed' を使用できるのは書式 'use x = fixed expr' の宣言内だけで、この式は配列、フィールドのアドレス、配列要素のアドレス、または文字列です + Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is one of the following: an array, the address of an array element, a string, a byref, an inref, or a type implementing GetPinnableReference() + Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is one of the following: an array, the address of an array element, a string, a byref, an inref, or a type implementing GetPinnableReference() @@ -8102,11 +8297,6 @@ この値は関数ではないため、適用できません。宣言を終結しましたか? - - The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. - シグネチャ '{0}' と実装 '{1}' の引数の名前が一致しません。シグネチャ ファイルの引数の名前が使用されます。デバッグまたはプロファイルするときに問題が生じる原因となる可能性があります。 - - An error occurred while reading the F# metadata of assembly '{0}'. A reserved construct was utilized. You may need to upgrade your F# compiler or use an earlier version of the assembly that doesn't make use of a specific construct. アセンブリ '{0}' の F# メタデータ の読み取り中にエラーが発生しました。予約済みのコンストラクトが使用されました。F# コンパイラをアップグレードするか、特定のコンストラクトを使用しない以前のバージョンのアセンブリを使用しなければならない場合があります。 @@ -8242,14 +8432,9 @@ 2 つの匿名レコードの種類は、'{0}' と '{1}' の異なるアセンブリからのものです - - This anonymous record does not exactly match the expected shape. Add the missing fields {0} and remove the extra fields {1}. - この匿名レコードは、予期された形状と完全には一致していません。不足しているフィールド {0} を追加し、不要なフィールド {1} を削除してください。 - - - Cannot call the byref extension method '{0}. The first parameter requires the value to be mutable or a non-readonly byref type. - byref 拡張メソッド '{0} を呼び出すことはできません。最初のパラメーターでは、値を変更可能な byref 型または読み取り専用以外の byref 型にする必要があります。 + Cannot call the byref extension method '{0}. 'this' parameter requires the value to be mutable or a non-readonly byref type. + byref 拡張メソッド '{0} を呼び出すことはできません。最初のパラメーターでは、値を変更可能な byref 型または読み取り専用以外の byref 型にする必要があります。 @@ -8338,8 +8523,8 @@ - Package manager key '{0}' was not registered in {1}. Currently registered: {2} - パッケージ マネージャー キー '{0}' は {1} に登録されていませんでした。現在登録済み: {2} + Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager + Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager diff --git a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.ko.xlf b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.ko.xlf index 639df27e2f..88e4d1fe5c 100644 --- a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.ko.xlf +++ b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.ko.xlf @@ -2,6 +2,11 @@ + + Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended. + Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended. + + All elements of an array must be implicitly convertible to the type of the first element, which here is a tuple of length {0} of type\n {1} \nThis element is a tuple of length {2} of type\n {3} \n 배열의 모든 요소는 첫 번째 요소의 형식으로 암시적으로 변환할 수 있어야 합니다. 여기서는 형식이 \n {1}이고 길이가 {0}인 튜플입니다. \n이 요소는 형식이 \n {3}이고 길이가 {2}인 튜플입니다. \n @@ -42,6 +47,11 @@ 형식이 [<Sealed>] 및 [<AbstractClass>] 특성을 모두 사용하는 경우 정적임을 의미합니다. 인수가 있는 생성자는 허용되지 않습니다. + + This expression is an anonymous record, use {{|...|}} instead of {{...}}. + This expression is an anonymous record, use {{|...|}} instead of {{...}}. + + Duplicate parameter. The parameter '{0}' has been used more that once in this method. 매개 변수가 중복되었습니다. 이 메소드에서 매개 변수 '{0}'이(가) 두 번 이상 사용되었습니다. @@ -102,6 +112,11 @@ 형식이 [<Sealed>] 및 [<AbstractClass>] 특성을 모두 사용하는 경우 정적임을 의미합니다. 인스턴스 멤버는 허용되지 않습니다. + + The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way. + The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way. + + The 'AssemblyKeyNameAttribute' has been deprecated. Use 'AssemblyKeyFileAttribute' instead. 'AssemblyKeyNameAttribute'는 사용되지 않습니다. 대신 'AssemblyKeyFileAttribute'를 사용하세요. @@ -157,6 +172,11 @@ '{0}' 인수가 일치하지 않습니다. + + The constraints 'unmanaged' and 'not struct' are inconsistent + The constraints 'unmanaged' and 'not struct' are inconsistent + + All branches of an 'if' expression must return values implicitly convertible to the type of the first branch, which here is a tuple of length {0} of type\n {1} \nThis branch returns a tuple of length {2} of type\n {3} \n 'if' 식의 모든 분기는 첫 번째 분기의 유형으로 암시적으로 변환 가능한 값을 반환해야 합니다. 여기서는 형식이 \n {1}이고 길이가 {0}인 튜플입니다. \n이 분기는 형식이 \n {3}이고 길이가 {2}인 튜플을 반환합니다. \n @@ -177,6 +197,11 @@ '{0}' 어셈블리 특성이 로드할 수 없거나 존재하지 않는 디자이너 어셈블리'{1}'을(를) 참조합니다. 보고된 예외: {2} - {3} + + underscore dot shorthand for accessor only function + underscore dot shorthand for accessor only function + + additional type-directed conversions 추가 형식-디렉션 변환 @@ -207,6 +232,16 @@ 유형, 모듈 선언에 암시적 확장 속성 허용 + + Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way. + Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way. + + + + Constraint intersection on flexible types + Constraint intersection on flexible types + + default interface member consumption 기본 인터페이스 멤버 사용 @@ -252,6 +287,16 @@ 더 많은 형식이 측정 단위를 지원함 + + extended fixed bindings for byref and GetPinnableReference + extended fixed bindings for byref and GetPinnableReference + + + + Extended string interpolation similar to C# raw string literals. + Extended string interpolation similar to C# raw string literals. + + fixed-index slice 3d/4d 고정 인덱스 슬라이스 3d/4d @@ -267,11 +312,21 @@ 암시적 yield + + Improved implied argument names + Improved implied argument names + + expr[idx] notation for indexing and slicing 인덱싱 및 슬라이싱을 위한 expr[idx] 표기법 + + Diagnostic 3559 (warn when obj inferred) at informational level, off by default + Diagnostic 3559 (warn when obj inferred) at informational level, off by default + + support for consuming init properties init 속성 사용 지원 @@ -342,6 +397,11 @@ 패키지 관리 + + prefer String.GetPinnableReference in fixed bindings + prefer String.GetPinnableReference in fixed bindings + + binary formatting for integers 정수에 대한 이진 서식 지정 @@ -387,11 +447,21 @@ 단일 밑줄 패턴 + + Allow static let bindings in union, record, struct, non-incremental-class types + Allow static let bindings in union, record, struct, non-incremental-class types + + Static members in interfaces 인터페이스의 정적 멤버 + + Raises errors on incorrect indentation, allows better recovery and analysis during editing + Raises errors on incorrect indentation, allows better recovery and analysis during editing + + string interpolation 문자열 보간 @@ -407,6 +477,11 @@ 시퀀스 식에서 try-with 지원 + + Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq) + Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq) + + Raises warnings when an copy-and-update record expression changes all fields of a record. 레코드 복사 및 업데이트 식이 레코드의 모든 필드를 변경할 때 경고를 발생합니다. @@ -417,6 +492,16 @@ 'let inline ... ='을(를) [<MethodImpl(MethodImplOptions.NoInlining)>] 특성과 함께 사용하는 경우 경고를 발생합니다. 함수가 인라인되지 않습니다. + + Raises warnings when multiple record type matches were found during name resolution because of overlapping field names. + Raises warnings when multiple record type matches were found during name resolution because of overlapping field names. + + + + 'while!' expression + 'while!' expression + + wild card in for loop for 루프의 와일드카드 @@ -517,11 +602,21 @@ 개체가 패턴 또는 바인딩에서 지정된 형식인지 확인하는 데 사용됩니다. + + Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression. + Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression. + + a byte string may not be interpolated 바이트 문자열을 보간하지 못할 수 있습니다. + + Extended string interpolation is not supported in this version of F#. + Extended string interpolation is not supported in this version of F#. + + IF-FSHARP/IF-CAML regions are no longer supported IF-FSHARP/IF-CAML 영역은 더 이상 지원되지 않습니다. @@ -542,11 +637,26 @@ 잘못된 보간 문자열. 작은 따옴표 또는 축자 문자열 리터럴은 작은 따옴표 또는 축자 문자열의 보간 식에 사용할 수 없습니다. 보간 식에 명시적 'let' 바인딩을 사용하거나 삼중 따옴표 문자열을 외부 문자열 리터럴로 사용해 보세요. + + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content. + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content. + + + + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters. + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters. + + Invalid interpolated string. Triple quote string literals may not be used in interpolated expressions. Consider using an explicit 'let' binding for the interpolation expression. 잘못된 보간 문자열. 삼중 따옴표 문자열 리터럴은 보간 식에 사용할 수 없습니다. 보간 식에 명시적 'let' 바인딩을 사용해 보세요. + + The interpolated string contains unmatched closing braces. + The interpolated string contains unmatched closing braces. + + All elements of a list must be implicitly convertible to the type of the first element, which here is a tuple of length {0} of type\n {1} \nThis element is a tuple of length {2} of type\n {3} \n 목록의 모든 요소는 첫 번째 요소의 형식으로 암시적으로 변환할 수 있어야 합니다. 여기서는 형식이 \n {1}이고 길이가 {0}인 튜플입니다. \n이 요소는 형식이 \n {3}이고 길이가 {2}인 튜플입니다. \n @@ -682,6 +792,11 @@ F# 인터페이스 정보를 포함합니다. 기본값은 파일입니다. 라이브러리를 배포하는 데 필수적입니다. + + Override indentation rules implied by the language version + Override indentation rules implied by the language version + + Supported language versions: 지원되는 언어 버전: @@ -717,6 +832,11 @@ '패키지 관리' 기능을 사용하려면 언어 버전 5.0 이상이 필요합니다. + + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. + + Invalid interpolated string. This interpolated string expression fill is empty, an expression was expected. 보간된 문자열이 잘못되었습니다. 이 보간된 문자열 식 채우기가 비어 있는데, 식이 필요합니다. @@ -742,24 +862,19 @@ 불완전한 보간 축자 문자열이 여기 또는 이전에서 시작되었습니다. - - Unexpected token in type definition. Expected '=' after the type '{0}'. - 형식 정의에 예기치 않은 토큰이 있습니다. '{0}' 형식 뒤에 '='가 필요합니다. - - Expected a pattern after this point 이 지점 뒤에 패턴이 필요합니다. - + Expecting expression - 식이 필요함 + Expecting expression - + Expecting pattern - 예상되는 패턴 + Expecting pattern @@ -777,6 +892,16 @@ 불완전한 연산자 식(예: a^b) 또는 정규화된 형식 호출(예: ^T.Name) + + Missing keyword '{0}' + Missing keyword '{0}' + + + + Expecting member body + Expecting member body + + Missing union case name Missing union case name @@ -787,6 +912,11 @@ 이 구성원 액세스가 모호합니다. 개체 생성 주위에 괄호를 사용하세요. 예: '(새로운 SomeType(인수)).MemberName' + + _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses. + _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses. + + Unexpected end of input in 'else if' or 'elif' branch of conditional expression. Expected 'elif <expr> then <expr>' or 'else if <expr> then <expr>'. 조건식의 'else if' 또는 'elif' 분기에서 입력이 예기치 않게 끝났습니다. 'elif <expr> then <expr>' 또는 'else if <expr> then <expr>'이 필요합니다. @@ -807,6 +937,11 @@ {0}' 알고리즘은 지원되지 않습니다. + + Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} + Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} + + A constrained generic construct occured in the resumable code specification 다시 시작 가능한 코드 사양에서 제약이 있는 제네릭 구문이 발생했습니다. @@ -887,6 +1022,16 @@ 이 스크립트에 대한 .NET SDK를 확인할 수 없습니다. 스크립트가 'global.json'을 사용하는 디렉터리에 있는 경우 관련 .NET SDK가 설치되어 있는지 확인하세요. 예기치 않은 오류 '{0}'. + + (Suggested name) + (Suggested name) + + + + The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope. + The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope. + + This expression has type '{0}' and is only made compatible with type '{1}' through an ambiguous implicit conversion. Consider using an explicit call to 'op_Implicit'. The applicable implicit conversions are:{2} 이 식은 ‘{0}’ 형식이며 모호한 암시적 변환을 통해 ‘{1}’ 형식하고만 호환됩니다. ‘op_Implicit’에 대한 명시적 호출을 사용하십시오. 해당하는 암시적 변환은 ‘{2}’입니다. @@ -902,24 +1047,54 @@ '{0}' 필드가 이 레코드 식에 여러 번 나타납니다. - - This is the wrong anonymous record. It should have the fields {0}. - 잘못된 익명 레코드입니다. {0} 필드가 있어야 합니다. + + This anonymous record does not exactly match the expected shape. Add the missing fields {0} and remove the extra fields {1}. + 이 익명 레코드는 필요한 도형과 정확하게 일치하지 않습니다. 누락된 필드 {0}을(를) 추가하고 추가 필드 {1}을(를) 제거하세요. - - This anonymous record does not have enough fields. Add the missing fields {0}. - 이 익명 레코드에 필드가 부족합니다. 누락된 필드 {0}을(를) 추가하세요. + + Invalid Anonymous Record type declaration. + 익명 레코드 형식 선언이 잘못되었습니다. - - This anonymous record has too many fields. Remove the extra fields {0}. - 이 익명 레코드에 필드가 너무 많습니다. 추가 필드 {0}을(를) 제거하세요. + + This anonymous record should have fields {0}; but here has fields {1}. + This anonymous record should have fields {0}; but here has fields {1}. - - Invalid Anonymous Record type declaration. - 익명 레코드 형식 선언이 잘못되었습니다. + + This anonymous record should have fields {0}; but here has field '{1}'. + This anonymous record should have fields {0}; but here has field '{1}'. + + + + This anonymous record is missing fields {0}. + This anonymous record is missing fields {0}. + + + + This anonymous record has extra fields. Remove fields {0}. + This anonymous record has extra fields. Remove fields {0}. + + + + This anonymous record should have field '{0}' but here has fields {1}. + This anonymous record should have field '{0}' but here has fields {1}. + + + + This anonymous record should have field '{0}' but here has field '{1}'. + This anonymous record should have field '{0}' but here has field '{1}'. + + + + This anonymous record is missing field '{0}'. + This anonymous record is missing field '{0}'. + + + + This anonymous record has an extra field. Remove field '{0}'. + This anonymous record has an extra field. Remove field '{0}'. @@ -972,6 +1147,11 @@ 이 식은 암시적 변환 '{0}'을 사용하여 '{1}' 형식을 '{2}' 형식으로 변환 합니다. https://aka.ms/fsharp-implicit-convs 참조. ’#Nowarn \ "3391\"을 (를) 사용하여 이 경고를 사용 하지 않도록 설정할 수 있습니다. + + This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses. + This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses. + + Init-only property '{0}' cannot be set outside the initialization code. See https://aka.ms/fsharp-assigning-values-to-properties-at-initialization 초기화 코드 외부에서는 '{0}' 초기화 전용 속성을 설정할 수 없습니다. https://aka.ms/fsharp-assigning-values-to-properties-at-initialization을 참조하세요. @@ -1052,6 +1232,16 @@ 다음 필수 속성을 초기화해야 합니다. {0} + + The field '{0}' appears multiple times in this record expression or pattern + The field '{0}' appears multiple times in this record expression or pattern + + + + Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements. + Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements. + + Using methods with 'NoEagerConstraintApplicationAttribute' requires /langversion:6.0 or later 'NoEagerConstraintApplicationAttribute'와 함께 메서드를 사용하려면 /langversion:6.0 이상이 필요합니다. @@ -1087,6 +1277,11 @@ 구문 'expr1[expr2]'은 이제 인덱싱용으로 예약되어 있으며 인수로 사용될 때 모호합니다. https://aka.ms/fsharp-index-notation을 참조하세요. 여러 개의 커리된 인수로 함수를 호출하는 경우 그 사이에 공백을 추가하세요(예: 'someFunction expr1 [expr2]'). + + This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c'). + This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c'). + + The syntax '(expr1)[expr2]' is ambiguous when used as an argument. See https://aka.ms/fsharp-index-notation. If you intend indexing or slicing then you must use '(expr1).[expr2]' in argument position. If calling a function with multiple curried arguments, add a space between them, e.g. 'someFunction (expr1) [expr2]'. '(expr1)[expr2]' 구문은 인수로 사용될 때 모호합니다. https://aka.ms/fsharp-index-notation을 참조하세요. 인덱싱이나 슬라이싱을 하려면 인수 위치에 '(expr1).[expr2]'를 사용해야 합니다. 여러 개의 커리된 인수로 함수를 호출하는 경우 그 사이에 공백을 추가하세요(예: 'someFunction (expr1) [expr2]'). @@ -1098,8 +1293,8 @@ - The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSource' and 'Bind' methods - 'let! ... and! ...' 구문은 계산 식 작성기에서 '{0}' 메서드 또는 적절한 'MergeSource' 및 'Bind' 메서드를 정의한 경우에만 사용할 수 있습니다. + The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods + The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods @@ -1137,6 +1332,11 @@ init 전용 속성의 setter인 '{0}'을(를) 호출할 수 없습니다. 개체 초기화를 대신 사용하세요. https://aka.ms/fsharp-assigning-values-to-properties-at-initialization를 참조하세요. + + Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead. + Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead. + + This expression implicitly converts type '{0}' to type '{1}'. See https://aka.ms/fsharp-implicit-convs. 이 식은 암시적으로 '{0}' 형식을 '{1}' 형식으로 변환 합니다. https://aka.ms/fsharp-implicit-convs 참조 @@ -1177,6 +1377,11 @@ 잘못된 보간 문자열. {0} + + Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b). + Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b). + + '{0}' is normally used as a type constraint in generic code, e.g. \"'T when ISomeInterface<'T>\" or \"let f (x: #ISomeInterface<_>)\". See https://aka.ms/fsharp-iwsams for guidance. You can disable this warning by using '#nowarn \"3536\"' or '--nowarn:3536'. '{0}'은(는) 일반적으로 제네릭 코드에서 형식 제약 조건으로 사용됩니다(예: \"'T when ISomeInterface<'T>\" 또는 \"let f (x: #ISomeInterface<_>)\"). 지침은 https://aka.ms/fsharp-iwsams를 참조하세요. '#nowarn \"3536\"' 또는 '--nowarn:3536'을 사용하여 이 경고를 비활성화할 수 있습니다. @@ -1573,8 +1778,8 @@ - Unrecognized option: '{0}' - 인식할 수 없는 옵션: '{0}' + Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options. + Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options. @@ -3228,8 +3433,8 @@ - Multiple accessibilities given for property getter or setter - 속성 getter 또는 setter에 대해 여러 액세스 가능성이 지정되었습니다. + When the visibility for a property is specified, setting the visibility of the set or get method is not allowed. + When the visibility for a property is specified, setting the visibility of the set or get method is not allowed. @@ -3692,11 +3897,6 @@ 이 레코드 식 또는 패턴의 필요한 형식 및 필드 레이블이 해당하는 레코드 형식을 고유하게 확인하지 않습니다. - - The field '{0}' appears twice in this record expression or pattern - '{0}' 필드가 이 레코드 식 또는 패턴에 두 번 나타납니다. - - Unknown union case 알 수 없는 공용 구조체 케이스입니다. @@ -4002,11 +4202,6 @@ 올바른 패턴이 아닙니다. - - Character range matches have been removed in F#. Consider using a 'when' pattern guard instead. - 문자 범위 일치는 F#에서 제거되었습니다. 대신 'when' 패턴 가드를 사용하세요. - - Illegal pattern 패턴이 잘못되었습니다. @@ -4833,8 +5028,8 @@ - Static value definitions may only be used in types with a primary constructor. Consider adding arguments to the type definition, e.g. 'type X(args) = ...'. - 정적 값 정의는 기본 생성자가 포함된 형식에서만 사용할 수 있습니다. 'type X(args) = ...'와 같이 형식 정의에 인수를 추가해 보세요. + For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'. + For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'. @@ -5953,8 +6148,8 @@ - Possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this token further or using standard formatting conventions. - 들여쓰기가 잘못되었을 수 있습니다. 이 토큰은 {0} 위치에서 시작된 컨텍스트를 벗어납니다. 이 토큰을 더 들여쓰거나 표준 서식 규칙을 사용하세요. + Unexpected syntax or possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this further.\nTo continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7. + 들여쓰기가 잘못되었을 수 있습니다. 이 토큰은 {0} 위치에서 시작된 컨텍스트를 벗어납니다. 이 토큰을 더 들여쓰거나 표준 서식 규칙을 사용하세요. @@ -7668,8 +7863,8 @@ - Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is an array, the address of a field, the address of an array element or a string' - 'fixed'를 잘못 사용했습니다. 'fixed'는 식이 배열, 필드의 주소, 배열 요소 또는 문자열의 주소인 경우 'use x = fixed expr' 형식의 선언에만 사용할 수 있습니다. + Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is one of the following: an array, the address of an array element, a string, a byref, an inref, or a type implementing GetPinnableReference() + Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is one of the following: an array, the address of an array element, a string, a byref, an inref, or a type implementing GetPinnableReference() @@ -8102,11 +8297,6 @@ 이 값은 함수가 아니며 적용할 수 없습니다. 선언을 종료해야 합니다. - - The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. - 시그니처 '{0}'과(와) 구현 '{1}'의 인수 이름이 일치하지 않습니다. 시그니처 파일의 인수 이름이 사용됩니다. 이로 인해 디버깅 또는 프로파일링 시 문제가 발생할 수 있습니다. - - An error occurred while reading the F# metadata of assembly '{0}'. A reserved construct was utilized. You may need to upgrade your F# compiler or use an earlier version of the assembly that doesn't make use of a specific construct. '{0}' 어셈블리의 F# 메타데이터를 읽는 동안 오류가 발생했습니다. 예약 구문이 활용되었습니다. F# 컴파일러를 업그레이드하거나 특정 구문을 사용하지 않는 이전 버전의 어셈블리를 사용해야 할 수 있습니다. @@ -8242,14 +8432,9 @@ 두 무명 레코드 형식은 서로 다른 어셈블리 '{0}' 및 '{1}'에서 가져왔습니다. - - This anonymous record does not exactly match the expected shape. Add the missing fields {0} and remove the extra fields {1}. - 이 익명 레코드는 필요한 도형과 정확하게 일치하지 않습니다. 누락된 필드 {0}을(를) 추가하고 추가 필드 {1}을(를) 제거하세요. - - - Cannot call the byref extension method '{0}. The first parameter requires the value to be mutable or a non-readonly byref type. - byref 확장 메서드 '{0}'을(를) 호출할 수 없습니다. 첫 번째 매개 변수는 변경할 수 있거나 읽기 전용이 아닌 byref 형식인 값이 필요합니다. + Cannot call the byref extension method '{0}. 'this' parameter requires the value to be mutable or a non-readonly byref type. + byref 확장 메서드 '{0}'을(를) 호출할 수 없습니다. 첫 번째 매개 변수는 변경할 수 있거나 읽기 전용이 아닌 byref 형식인 값이 필요합니다. @@ -8338,8 +8523,8 @@ - Package manager key '{0}' was not registered in {1}. Currently registered: {2} - 패키지 관리자 키 '{0}'이(가) {1}에 등록되지 않았습니다. 현재 {2}이(가) 등록되었습니다. + Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager + Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager diff --git a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.pl.xlf b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.pl.xlf index c137d76cc4..aa61c578ed 100644 --- a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.pl.xlf +++ b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.pl.xlf @@ -2,6 +2,11 @@ + + Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended. + Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended. + + All elements of an array must be implicitly convertible to the type of the first element, which here is a tuple of length {0} of type\n {1} \nThis element is a tuple of length {2} of type\n {3} \n Wszystkie elementy tablicy muszą być niejawnie konwertowalne na typ pierwszego elementu, który w tym miejscu jest krotką o długości {0} typu\n {1} \nTen element jest krotką o długości {2} typu\n {3} \n @@ -42,6 +47,11 @@ Jeśli typ używa obu [<Sealed>] i [< AbstractClass>] atrybutów, oznacza to, że jest statyczny. Konstruktor z argumentami jest niedozwolony. + + This expression is an anonymous record, use {{|...|}} instead of {{...}}. + This expression is an anonymous record, use {{|...|}} instead of {{...}}. + + Duplicate parameter. The parameter '{0}' has been used more that once in this method. Zduplikowany parametr. Parametr „{0}” został użyty więcej niż raz w tej metodzie. @@ -102,6 +112,11 @@ Jeśli typ używa obu [<Sealed>] i [< AbstractClass>] atrybutów, oznacza to, że jest statyczny. Elementy członkowskie wystąpienia są niedozwolone. + + The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way. + The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way. + + The 'AssemblyKeyNameAttribute' has been deprecated. Use 'AssemblyKeyFileAttribute' instead. Element „AssemblyKeyNameAttribute” jest przestarzały. Zamiast niego użyj elementu „AssemblyKeyFileAttribute”. @@ -157,6 +172,11 @@ Argument „{0}” nie jest zgodny + + The constraints 'unmanaged' and 'not struct' are inconsistent + The constraints 'unmanaged' and 'not struct' are inconsistent + + All branches of an 'if' expression must return values implicitly convertible to the type of the first branch, which here is a tuple of length {0} of type\n {1} \nThis branch returns a tuple of length {2} of type\n {3} \n Wszystkie gałęzie wyrażenia „if” muszą zwracać wartości niejawnie konwertowalne na typ pierwszej gałęzi, która tutaj jest krotką o długości {0} typu\n {1} \nTa gałąź zwraca krotkę o długości {2} typu\n {3} \n @@ -177,6 +197,11 @@ Atrybut zestawu „{0}” odwołuje się do zestawu projektanta „{1}”, którego nie można załadować lub który nie istnieje. Zgłoszony wyjątek: {2} — {3} + + underscore dot shorthand for accessor only function + underscore dot shorthand for accessor only function + + additional type-directed conversions dodatkowe konwersje ukierunkowane na typ @@ -207,6 +232,16 @@ Zezwalaj na niejawny atrybut Rozszerzenie dla deklarujących typów, modułów + + Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way. + Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way. + + + + Constraint intersection on flexible types + Constraint intersection on flexible types + + default interface member consumption domyślne użycie składowej interfejsu @@ -252,6 +287,16 @@ więcej typów obsługuje jednostki miary + + extended fixed bindings for byref and GetPinnableReference + extended fixed bindings for byref and GetPinnableReference + + + + Extended string interpolation similar to C# raw string literals. + Extended string interpolation similar to C# raw string literals. + + fixed-index slice 3d/4d część o stałym indeksie 3d/4d @@ -267,11 +312,21 @@ niejawne słowo kluczowe yield + + Improved implied argument names + Improved implied argument names + + expr[idx] notation for indexing and slicing notacja wyrażenia expr[idx] do indeksowania i fragmentowania + + Diagnostic 3559 (warn when obj inferred) at informational level, off by default + Diagnostic 3559 (warn when obj inferred) at informational level, off by default + + support for consuming init properties obsługa używania właściwości init @@ -342,6 +397,11 @@ zarządzanie pakietami + + prefer String.GetPinnableReference in fixed bindings + prefer String.GetPinnableReference in fixed bindings + + binary formatting for integers formatowanie danych binarnych dla liczb całkowitych @@ -387,11 +447,21 @@ wzorzec z pojedynczym podkreśleniem + + Allow static let bindings in union, record, struct, non-incremental-class types + Allow static let bindings in union, record, struct, non-incremental-class types + + Static members in interfaces Statyczne składowe w interfejsach + + Raises errors on incorrect indentation, allows better recovery and analysis during editing + Raises errors on incorrect indentation, allows better recovery and analysis during editing + + string interpolation interpolacja ciągu @@ -407,6 +477,11 @@ Obsługa instrukcji try-with w wyrażeniach sekwencji + + Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq) + Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq) + + Raises warnings when an copy-and-update record expression changes all fields of a record. Zgłasza ostrzeżenia, gdy wyrażenie rekordu kopiowania i aktualizacji zmieni wszystkie pola rekordu. @@ -417,6 +492,16 @@ Zgłasza ostrzeżenia, gdy element „let inline ... =” jest używany razem z atrybutem [<MethodImpl(MethodImplOptions.NoInlining)>]. Funkcja nie jest wstawiana. + + Raises warnings when multiple record type matches were found during name resolution because of overlapping field names. + Raises warnings when multiple record type matches were found during name resolution because of overlapping field names. + + + + 'while!' expression + 'while!' expression + + wild card in for loop symbol wieloznaczny w pętli for @@ -517,11 +602,21 @@ Służy do sprawdzania, czy obiekt jest danego typu we wzorcu lub powiązaniu. + + Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression. + Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression. + + a byte string may not be interpolated ciąg bajtowy nie może być interpolowany + + Extended string interpolation is not supported in this version of F#. + Extended string interpolation is not supported in this version of F#. + + IF-FSHARP/IF-CAML regions are no longer supported Regiony IF-FSHARP/IF-CAML nie są już obsługiwane @@ -542,11 +637,26 @@ Nieprawidłowy ciąg interpolowany. Literały z pojedynczymi cudzysłowami lub literały ciągów dosłownych nie mogą być używane w wyrażeniach interpolowanych w ciągach z pojedynczymi cudzysłowami lub ciągach dosłownych. Rozważ użycie jawnego powiązania „let” dla wyrażenia interpolacji lub użycie ciągu z potrójnymi cudzysłowami jako zewnętrznego literału ciągu. + + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content. + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content. + + + + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters. + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters. + + Invalid interpolated string. Triple quote string literals may not be used in interpolated expressions. Consider using an explicit 'let' binding for the interpolation expression. Nieprawidłowy ciąg interpolowany. Literały ciągów z potrójnymi cudzysłowami nie mogą być używane w wyrażeniach interpolowanych. Rozważ użycie jawnego powiązania „let” dla wyrażenia interpolacji. + + The interpolated string contains unmatched closing braces. + The interpolated string contains unmatched closing braces. + + All elements of a list must be implicitly convertible to the type of the first element, which here is a tuple of length {0} of type\n {1} \nThis element is a tuple of length {2} of type\n {3} \n Wszystkie elementy tablicy muszą być niejawnie konwertowalne na typ pierwszego elementu, który w tym miejscu jest krotką o długości {0} typu\n {1} \nTen element jest krotką o długości {2} typu\n {3} \n @@ -682,6 +792,11 @@ Uwzględnij informacje o interfejsie języka F#. Wartość domyślna to plik. Niezbędne do rozpowszechniania bibliotek. + + Override indentation rules implied by the language version + Override indentation rules implied by the language version + + Supported language versions: Obsługiwane wersje językowe: @@ -717,6 +832,11 @@ Funkcja „Zarządzanie pakietami” wymaga języka w wersji 5.0 lub nowszej + + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. + + Invalid interpolated string. This interpolated string expression fill is empty, an expression was expected. Nieprawidłowy ciąg interpolowany. Wyrażenie ciągu interpolowanego nie jest wypełnione, a jest oczekiwane. @@ -742,24 +862,19 @@ Niekompletny interpolowany dosłowny ciąg rozpoczęty w tym miejscu lub wcześniej - - Unexpected token in type definition. Expected '=' after the type '{0}'. - Nieoczekiwany token w definicji typu. Oczekiwano znaku „=” po typie „{0}”. - - Expected a pattern after this point Oczekiwano wzorca po tym punkcie - + Expecting expression - Oczekiwanie na wyrażenie + Expecting expression - + Expecting pattern - Oczekiwano wzorca + Expecting pattern @@ -777,6 +892,16 @@ Niekompletne wyrażenie operatora (na przykład a^b) lub wywołanie typu kwalifikowanego (przykład: ^T.Name) + + Missing keyword '{0}' + Missing keyword '{0}' + + + + Expecting member body + Expecting member body + + Missing union case name Missing union case name @@ -787,6 +912,11 @@ Dostęp tego elementu członkowskiego jest niejednoznaczny. W celu utworzenia obiektu użyj nawiasów, na przykład „(nowy SomeType(args)).MemberName” + + _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses. + _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses. + + Unexpected end of input in 'else if' or 'elif' branch of conditional expression. Expected 'elif <expr> then <expr>' or 'else if <expr> then <expr>'. Nieoczekiwane zakończenie danych wejściowych w gałęzi „else” wyrażenia warunkowego. Oczekiwano konstrukcji „elif <expr> then <expr>” lub „else if <expr> then <expr>”. @@ -807,6 +937,11 @@ Algorytm „{0}” nie jest obsługiwany + + Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} + Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} + + A constrained generic construct occured in the resumable code specification W specyfikacji kodu z możliwością wznowienia wystąpiła ograniczona konstrukcja ogólna @@ -887,6 +1022,16 @@ Nie można określić zestawu .NET SDK dla tego skryptu. Jeśli skrypt znajduje się w katalogu korzystającym z pliku „global.json”, upewnij się, że zainstalowano odpowiedni zestaw .NET SDK. Nieoczekiwany błąd: „{0}”. + + (Suggested name) + (Suggested name) + + + + The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope. + The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope. + + This expression has type '{0}' and is only made compatible with type '{1}' through an ambiguous implicit conversion. Consider using an explicit call to 'op_Implicit'. The applicable implicit conversions are:{2} To wyrażenie ma typ "{0}" i jest zgodne tylko z typem "{1}" za pośrednictwem niejednoznacznie bezwarunkowej konwersji. Rozważ użycie jednoznacznego wywołania elementu "op_Implicit". Odpowiednimi jednoznacznymi konwersjami są: {2} @@ -902,24 +1047,54 @@ Pole „{0}” występuje wielokrotnie w tym wyrażeniu rekordu. - - This is the wrong anonymous record. It should have the fields {0}. - To jest nieprawidłowy rekord anonimowy. Powinien zawierać pola {0}. + + This anonymous record does not exactly match the expected shape. Add the missing fields {0} and remove the extra fields {1}. + Ten rekord anonimowy nie jest dokładnie zgodny z oczekiwanym kształtem. Dodaj brakujące pola {0} i usuń dodatkowe pola {1}. - - This anonymous record does not have enough fields. Add the missing fields {0}. - Ten rekord anonimowy nie ma wystarczającej liczby pól. Dodaj brakujące pola {0}. + + Invalid Anonymous Record type declaration. + Nieprawidłowa deklaracja typu rekordu anonimowego. - - This anonymous record has too many fields. Remove the extra fields {0}. - Ten rekord anonimowy ma za dużo pól. Usuń dodatkowe pola {0}. + + This anonymous record should have fields {0}; but here has fields {1}. + This anonymous record should have fields {0}; but here has fields {1}. - - Invalid Anonymous Record type declaration. - Nieprawidłowa deklaracja typu rekordu anonimowego. + + This anonymous record should have fields {0}; but here has field '{1}'. + This anonymous record should have fields {0}; but here has field '{1}'. + + + + This anonymous record is missing fields {0}. + This anonymous record is missing fields {0}. + + + + This anonymous record has extra fields. Remove fields {0}. + This anonymous record has extra fields. Remove fields {0}. + + + + This anonymous record should have field '{0}' but here has fields {1}. + This anonymous record should have field '{0}' but here has fields {1}. + + + + This anonymous record should have field '{0}' but here has field '{1}'. + This anonymous record should have field '{0}' but here has field '{1}'. + + + + This anonymous record is missing field '{0}'. + This anonymous record is missing field '{0}'. + + + + This anonymous record has an extra field. Remove field '{0}'. + This anonymous record has an extra field. Remove field '{0}'. @@ -972,6 +1147,11 @@ W tym wyrażeniu jest używana bezwzględna konwersja "{0}" w celu przekonwertowania typu "{1}" na typ "{2}". Zobacz https://aka.ms/fsharp-implicit-convs. To ostrzeżenie można wyłączyć przy użyciu polecenia "#nowarn \" 3391 \ ". + + This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses. + This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses. + + Init-only property '{0}' cannot be set outside the initialization code. See https://aka.ms/fsharp-assigning-values-to-properties-at-initialization Właściwość init-only „{0}” nie może być ustawiona poza kodem inicjowania. Zobacz https://aka.ms/fsharp-assigning-values-to-properties-at-initialization @@ -1052,6 +1232,16 @@ Następujące wymagane właściwości muszą zostać zainicjowane:{0} + + The field '{0}' appears multiple times in this record expression or pattern + The field '{0}' appears multiple times in this record expression or pattern + + + + Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements. + Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements. + + Using methods with 'NoEagerConstraintApplicationAttribute' requires /langversion:6.0 or later Używanie metod z atrybutem "NoEagerConstraintApplicationAttribute" wymaga parametru /langversion:6.0 lub nowszego @@ -1087,6 +1277,11 @@ Składnia wyrażenia „expr1[expr2]” jest teraz zarezerwowana do indeksowania i jest niejednoznaczna, gdy jest używana jako argument. Zobacz: https://aka.ms/fsharp-index-notation. Jeśli wywołujesz funkcję z wieloma argumentami typu curried, dodaj spację między nimi, np. „someFunction expr1 [expr2]”. + + This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c'). + This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c'). + + The syntax '(expr1)[expr2]' is ambiguous when used as an argument. See https://aka.ms/fsharp-index-notation. If you intend indexing or slicing then you must use '(expr1).[expr2]' in argument position. If calling a function with multiple curried arguments, add a space between them, e.g. 'someFunction (expr1) [expr2]'. Składnia wyrażenia „(expr1)[expr2]” jest niejednoznaczna, gdy jest używana jako argument. Zobacz https://aka.ms/fsharp-index-notation. Jeśli zamierzasz indeksować lub fragmentować, to w pozycji argumentu musi być użyte wyrażenie „(expr1).[expr2]”. Jeśli wywołujesz funkcję z wieloma argumentami typu curried, dodaj spację między nimi, np. „someFunction (expr1) [expr2]”. @@ -1098,8 +1293,8 @@ - The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSource' and 'Bind' methods - Konstrukcji „let! ... and! ...” można użyć tylko wtedy, gdy konstruktor wyrażeń obliczeniowych definiuje metodę „{0}” lub odpowiednie metody „MergeSource” i „Bind” + The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods + The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods @@ -1137,6 +1332,11 @@ Nie można wywołać „{0}” — metody ustawiającej dla właściwości tylko do inicjowania. Zamiast tego użyj inicjowania obiektu. Zobacz https://aka.ms/fsharp-assigning-values-to-properties-at-initialization + + Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead. + Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead. + + This expression implicitly converts type '{0}' to type '{1}'. See https://aka.ms/fsharp-implicit-convs. To wyrażenie bezwzględnie konwertuje typ "{0}" na typ "{1}". Zobacz https://aka.ms/fsharp-implicit-convs. @@ -1177,6 +1377,11 @@ Nieprawidłowy ciąg interpolowany. {0} + + Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b). + Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b). + + '{0}' is normally used as a type constraint in generic code, e.g. \"'T when ISomeInterface<'T>\" or \"let f (x: #ISomeInterface<_>)\". See https://aka.ms/fsharp-iwsams for guidance. You can disable this warning by using '#nowarn \"3536\"' or '--nowarn:3536'. Element „{0}” jest zwykle używany jako ograniczenie typu w kodzie ogólnym, np. \"" T, gdy ISomeInterface<' T>\" lub \"let f (x: #ISomeInterface<_>)\". Aby uzyskać wskazówki, zobacz https://aka.ms/fsharp-iwsams. To ostrzeżenie można wyłączyć, używając polecenia „nowarn \"3536\"" lub "--nowarn:3536”. @@ -1573,8 +1778,8 @@ - Unrecognized option: '{0}' - Nierozpoznana opcja: „{0}” + Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options. + Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options. @@ -3228,8 +3433,8 @@ - Multiple accessibilities given for property getter or setter - Podano wiele dostępności dla metody ustawiającej lub metody pobierającej właściwość + When the visibility for a property is specified, setting the visibility of the set or get method is not allowed. + When the visibility for a property is specified, setting the visibility of the set or get method is not allowed. @@ -3692,11 +3897,6 @@ Etykiety pól i oczekiwany typ tego wyrażenia rekordu lub wzorca nie określają jednoznacznie odpowiedniego typu rekordu - - The field '{0}' appears twice in this record expression or pattern - Pole „{0}” występuje dwa razy w tym wyrażeniu rekordu lub wzorcu - - Unknown union case Nieznany przypadek unii @@ -4002,11 +4202,6 @@ To nie jest prawidłowy wzorzec - - Character range matches have been removed in F#. Consider using a 'when' pattern guard instead. - Dopasowania zakresu znaków zostały usunięte w języku F#. Zamiast tego rozważ użycie ograniczenia wzorca „when”. - - Illegal pattern Niedozwolony wzorzec @@ -4833,8 +5028,8 @@ - Static value definitions may only be used in types with a primary constructor. Consider adding arguments to the type definition, e.g. 'type X(args) = ...'. - Definicje wartości statycznych mogą być używane tylko w przypadku typów z konstruktorem podstawowym. Rozważ dodanie argumentów do definicji typu, na przykład „type X(argumenty) = ...”. + For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'. + For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'. @@ -5953,8 +6148,8 @@ - Possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this token further or using standard formatting conventions. - Możliwe niepoprawne wcięcie: ten token jest poza kontekstem rozpoczynającym się w pozycji {0}. Spróbuj użyć dodatkowego wcięcia dla tego tokenu lub standardowych konwencji formatowania. + Unexpected syntax or possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this further.\nTo continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7. + Możliwe niepoprawne wcięcie: ten token jest poza kontekstem rozpoczynającym się w pozycji {0}. Spróbuj użyć dodatkowego wcięcia dla tego tokenu lub standardowych konwencji formatowania. @@ -7668,8 +7863,8 @@ - Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is an array, the address of a field, the address of an array element or a string' - Nieprawidłowe użycie wyrażenia „fixed”. Wyrażenia „fixed” można użyć tylko w deklaracji w postaci „use x = fixed expr”, gdzie wyrażenie jest tablicą, adresem pola, adresem elementu tablicy lub ciągiem + Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is one of the following: an array, the address of an array element, a string, a byref, an inref, or a type implementing GetPinnableReference() + Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is one of the following: an array, the address of an array element, a string, a byref, an inref, or a type implementing GetPinnableReference() @@ -8102,11 +8297,6 @@ Ta wartość nie jest funkcją i nie można jej zastosować. Czy deklaracja została zakończona? - - The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. - Nazwy argumentów w podpisie „{0}” i implementacji „{1}” nie są zgodne. Używana będzie nazwa argumentu z pliku podpisu. Może to spowodować problemy podczas debugowania lub profilowania. - - An error occurred while reading the F# metadata of assembly '{0}'. A reserved construct was utilized. You may need to upgrade your F# compiler or use an earlier version of the assembly that doesn't make use of a specific construct. Wystąpił błąd podczas odczytu metadanych języka F# z zestawu „{0}”. Została wykorzystana zarezerwowana konstrukcja. Może być konieczne uaktualnienie kompilatora języka F# lub użycie wcześniejszej wersji zestawu, która nie wykorzystuje określonej konstrukcji. @@ -8242,14 +8432,9 @@ Dwa typy rekordów anonimowych pochodzą z różnych zestawów: „{0}” i „{1}” - - This anonymous record does not exactly match the expected shape. Add the missing fields {0} and remove the extra fields {1}. - Ten rekord anonimowy nie jest dokładnie zgodny z oczekiwanym kształtem. Dodaj brakujące pola {0} i usuń dodatkowe pola {1}. - - - Cannot call the byref extension method '{0}. The first parameter requires the value to be mutable or a non-readonly byref type. - Nie można wywołać metody rozszerzenia byref „{0}”. Pierwszy parametr wymaga, aby wartość była typem byref zmiennym lub innym niż tylko do odczytu. + Cannot call the byref extension method '{0}. 'this' parameter requires the value to be mutable or a non-readonly byref type. + Nie można wywołać metody rozszerzenia byref „{0}”. Pierwszy parametr wymaga, aby wartość była typem byref zmiennym lub innym niż tylko do odczytu. @@ -8338,8 +8523,8 @@ - Package manager key '{0}' was not registered in {1}. Currently registered: {2} - Klucz menedżera pakietów „{0}” nie został zarejestrowany w elemencie {1}. Obecnie zarejestrowane: {2} + Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager + Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager diff --git a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.pt-BR.xlf b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.pt-BR.xlf index 09419ca738..2673132d50 100644 --- a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.pt-BR.xlf +++ b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.pt-BR.xlf @@ -2,6 +2,11 @@ + + Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended. + Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended. + + All elements of an array must be implicitly convertible to the type of the first element, which here is a tuple of length {0} of type\n {1} \nThis element is a tuple of length {2} of type\n {3} \n Todos os elementos de uma matriz devem ser implicitamente conversíveis ao tipo do primeiro elemento, que aqui é uma tupla de comprimento {0} do tipo\n {1} \nEste elemento é uma tupla de comprimento {2} do tipo\n {3} \n @@ -42,6 +47,11 @@ Se um tipo usa os atributos [<Sealed>] e [<AbstractClass>], significa que é estático. Construtor com argumentos não é permitido. + + This expression is an anonymous record, use {{|...|}} instead of {{...}}. + This expression is an anonymous record, use {{|...|}} instead of {{...}}. + + Duplicate parameter. The parameter '{0}' has been used more that once in this method. Parâmetro duplicado. O parâmetro '{0}' foi usado mais de uma vez neste método. @@ -102,6 +112,11 @@ Se um tipo usa os atributos [<Sealed>] e [<AbstractClass>], significa que é estático. Membros da instância não são permitidos. + + The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way. + The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way. + + The 'AssemblyKeyNameAttribute' has been deprecated. Use 'AssemblyKeyFileAttribute' instead. O 'AssemblyKeyNameAttribute' foi preterido. Use o 'AssemblyKeyFileAttribute'. @@ -157,6 +172,11 @@ O argumento '{0}' não corresponde + + The constraints 'unmanaged' and 'not struct' are inconsistent + The constraints 'unmanaged' and 'not struct' are inconsistent + + All branches of an 'if' expression must return values implicitly convertible to the type of the first branch, which here is a tuple of length {0} of type\n {1} \nThis branch returns a tuple of length {2} of type\n {3} \n Todas as ramificações de uma expressão 'if' devem retornar valores implicitamente conversíveis ao tipo da primeira ramificação, que aqui é uma tupla de comprimento {0} do tipo\n {1} \nEsta ramificação retorna uma tupla de comprimento {2} do tipo\n {3} \n @@ -177,6 +197,11 @@ O atributo de assembly '{0}' refere-se a um assembly de designer '{1}' que não pode ser carregado ou que não existe. A exceção relatada foi {2} – {3} + + underscore dot shorthand for accessor only function + underscore dot shorthand for accessor only function + + additional type-directed conversions conversões direcionadas por tipos adicionais @@ -207,6 +232,16 @@ Permitir atributo de Extensão implícito em tipos declarativos, módulos + + Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way. + Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way. + + + + Constraint intersection on flexible types + Constraint intersection on flexible types + + default interface member consumption consumo de membro da interface padrão @@ -252,6 +287,16 @@ mais tipos dão suporte para unidades de medida + + extended fixed bindings for byref and GetPinnableReference + extended fixed bindings for byref and GetPinnableReference + + + + Extended string interpolation similar to C# raw string literals. + Extended string interpolation similar to C# raw string literals. + + fixed-index slice 3d/4d fatia de índice fixo 3d/4d @@ -267,11 +312,21 @@ yield implícito + + Improved implied argument names + Improved implied argument names + + expr[idx] notation for indexing and slicing notação expr[idx] para indexação e fatia + + Diagnostic 3559 (warn when obj inferred) at informational level, off by default + Diagnostic 3559 (warn when obj inferred) at informational level, off by default + + support for consuming init properties suporte para consumir propriedades de inicialização @@ -342,6 +397,11 @@ gerenciamento de pacotes + + prefer String.GetPinnableReference in fixed bindings + prefer String.GetPinnableReference in fixed bindings + + binary formatting for integers formatação binária para números inteiros @@ -387,11 +447,21 @@ padrão de sublinhado simples + + Allow static let bindings in union, record, struct, non-incremental-class types + Allow static let bindings in union, record, struct, non-incremental-class types + + Static members in interfaces Membros estáticos em interfaces + + Raises errors on incorrect indentation, allows better recovery and analysis during editing + Raises errors on incorrect indentation, allows better recovery and analysis during editing + + string interpolation interpolação da cadeia de caracteres @@ -407,6 +477,11 @@ Suporte para try-with em expressões de sequência + + Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq) + Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq) + + Raises warnings when an copy-and-update record expression changes all fields of a record. Gera avisos quando uma expressão de registro de cópia e atualização altera todos os campos de um registro. @@ -417,6 +492,16 @@ Gera avisos quando 'let inline ... =' é usado junto com o atributo [<MethodImpl(MethodImplOptions.NoInlining)>]. A função não está sendo embutida. + + Raises warnings when multiple record type matches were found during name resolution because of overlapping field names. + Raises warnings when multiple record type matches were found during name resolution because of overlapping field names. + + + + 'while!' expression + 'while!' expression + + wild card in for loop curinga para loop @@ -517,11 +602,21 @@ Usado para verificar se um objeto é do tipo fornecido em um padrão ou associação. + + Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression. + Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression. + + a byte string may not be interpolated uma cadeia de caracteres de byte não pode ser interpolada + + Extended string interpolation is not supported in this version of F#. + Extended string interpolation is not supported in this version of F#. + + IF-FSHARP/IF-CAML regions are no longer supported As regiões IF-FSHARP/IF-CAML não são mais suportadas @@ -542,11 +637,26 @@ Cadeia de caracteres interpolada inválida. Literais de cadeia de caracteres verbatim ou com aspas simples não podem ser usados em expressões interpoladas em cadeias de caracteres verbatim ou com aspas simples. Considere usar uma associação 'let' explícita para a expressão de interpolação ou use uma cadeia de caracteres de aspas triplas como o literal da cadeia de caracteres externa. + + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content. + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content. + + + + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters. + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters. + + Invalid interpolated string. Triple quote string literals may not be used in interpolated expressions. Consider using an explicit 'let' binding for the interpolation expression. Cadeia de caracteres interpolada inválida. Literais de cadeia de caracteres de aspas triplas não podem ser usados em expressões interpoladas. Considere usar uma associação 'let' explícita para a expressão de interpolação. + + The interpolated string contains unmatched closing braces. + The interpolated string contains unmatched closing braces. + + All elements of a list must be implicitly convertible to the type of the first element, which here is a tuple of length {0} of type\n {1} \nThis element is a tuple of length {2} of type\n {3} \n Todos os elementos de uma lista devem ser implicitamente conversíveis ao tipo do primeiro elemento, que aqui é uma tupla de comprimento {0} do tipo\n {1} \nEste elemento é uma tupla de comprimento {2} do tipo\n {3} \n @@ -682,6 +792,11 @@ Inclua informações da interface F#, o padrão é file. Essencial para distribuir bibliotecas. + + Override indentation rules implied by the language version + Override indentation rules implied by the language version + + Supported language versions: Versões de linguagens com suporte: @@ -717,6 +832,11 @@ O recurso 'gerenciamento de pacotes' requer a versão 5.0 ou superior do idioma + + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. + + Invalid interpolated string. This interpolated string expression fill is empty, an expression was expected. Cadeia de caracteres interpolada inválida. O preenchimento dessa expressão de cadeia de caracteres interpolada está vazio. Era esperada uma expressão. @@ -742,24 +862,19 @@ A cadeia de caracteres verbatim interpolada incompleta foi iniciada aqui ou anteriormente - - Unexpected token in type definition. Expected '=' after the type '{0}'. - Token inesperado na definição de tipo. Esperava-se '=' após o tipo '{0}'. - - Expected a pattern after this point Um padrão é esperado após este ponto - + Expecting expression - Esperando uma expressão + Expecting expression - + Expecting pattern - Padrão esperado + Expecting pattern @@ -777,6 +892,16 @@ Expressão de operador incompleta (exemplo a^b) ou invocação de tipo qualificado (exemplo: ^T.Name) + + Missing keyword '{0}' + Missing keyword '{0}' + + + + Expecting member body + Expecting member body + + Missing union case name Missing union case name @@ -787,6 +912,11 @@ Este acesso de membro é ambíguo. Use parênteses em torno da criação do objeto, por exemplo, '(new SomeType(args)).MemberName''. + + _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses. + _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses. + + Unexpected end of input in 'else if' or 'elif' branch of conditional expression. Expected 'elif <expr> then <expr>' or 'else if <expr> then <expr>'. Fim inesperado de entrada no branch 'else if' ou 'elif' da expressão condicional. Esperado 'elif <expr> em seguida, <expr>' ou 'else if <expr> then <expr>'. @@ -807,6 +937,11 @@ Algoritmo '{0}' sem suporte + + Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} + Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} + + A constrained generic construct occured in the resumable code specification Um constructo genérico restrito ocorreu na especificação de código retomável @@ -887,6 +1022,16 @@ Não foi possível determinar o SDK do .NET deste script. Se o script estiver em um diretório que usa um 'global.json', verifique se o SDK do .NET relevante está instalado. Erro inesperado '{0}'. + + (Suggested name) + (Suggested name) + + + + The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope. + The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope. + + This expression has type '{0}' and is only made compatible with type '{1}' through an ambiguous implicit conversion. Consider using an explicit call to 'op_Implicit'. The applicable implicit conversions are:{2} Essa expressão possui o tipo '{0}' e só é compatível com o tipo '{1}' por uma conversão implícita ambígua. Considere usar uma chamada explícita para 'op_Implicit'. As conversões implícitas aplicáveis são:{2} @@ -902,24 +1047,54 @@ O campo '{0}' aparece várias vezes nesta expressão de registro. - - This is the wrong anonymous record. It should have the fields {0}. - Este é o registro anônimo errado. Ele deve ter os campos {0}. + + This anonymous record does not exactly match the expected shape. Add the missing fields {0} and remove the extra fields {1}. + Este registro anônimo não corresponde exatamente à forma esperada. Adicione os campos ausentes {0} e remova os campos extras {1}. - - This anonymous record does not have enough fields. Add the missing fields {0}. - Este registro anônimo não tem campos suficientes. Adicione os campos ausentes {0}. + + Invalid Anonymous Record type declaration. + Declaração inválida de tipo de Registro Anônimo. - - This anonymous record has too many fields. Remove the extra fields {0}. - Este registro anônimo tem muitos campos. Remova os campos extras {0}. + + This anonymous record should have fields {0}; but here has fields {1}. + This anonymous record should have fields {0}; but here has fields {1}. - - Invalid Anonymous Record type declaration. - Declaração inválida de tipo de Registro Anônimo. + + This anonymous record should have fields {0}; but here has field '{1}'. + This anonymous record should have fields {0}; but here has field '{1}'. + + + + This anonymous record is missing fields {0}. + This anonymous record is missing fields {0}. + + + + This anonymous record has extra fields. Remove fields {0}. + This anonymous record has extra fields. Remove fields {0}. + + + + This anonymous record should have field '{0}' but here has fields {1}. + This anonymous record should have field '{0}' but here has fields {1}. + + + + This anonymous record should have field '{0}' but here has field '{1}'. + This anonymous record should have field '{0}' but here has field '{1}'. + + + + This anonymous record is missing field '{0}'. + This anonymous record is missing field '{0}'. + + + + This anonymous record has an extra field. Remove field '{0}'. + This anonymous record has an extra field. Remove field '{0}'. @@ -972,6 +1147,11 @@ Essa expressão usa a conversão implícita '{0}' para converter o tipo '{1}' ao tipo '{2}'. Consulte https://aka.ms/fsharp-implicit-convs. Este aviso pode ser desabilitado usando '#nowarn\"3391\". + + This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses. + This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses. + + Init-only property '{0}' cannot be set outside the initialization code. See https://aka.ms/fsharp-assigning-values-to-properties-at-initialization A propriedade somente inicialização '{0}' não pode ser definida fora do código de inicialização. Confira https://aka.ms/fsharp-assigning-values-to-properties-at-initialization @@ -1052,6 +1232,16 @@ As seguintes propriedades necessárias precisam ser inicializadas:{0} + + The field '{0}' appears multiple times in this record expression or pattern + The field '{0}' appears multiple times in this record expression or pattern + + + + Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements. + Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements. + + Using methods with 'NoEagerConstraintApplicationAttribute' requires /langversion:6.0 or later Usar métodos com 'NoEagerConstraintApplicationAttribute' requer /langversion:6.0 ou posterior @@ -1087,6 +1277,11 @@ A sintaxe 'expr1[expr2]' agora está reservada para indexação e é ambígua quando usada como um argumento. Consulte https://aka.ms/fsharp-index-notation. Se chamar uma função com vários argumentos na forma curried, adicione um espaço entre eles, por exemplo, 'someFunction expr1 [expr2]'. + + This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c'). + This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c'). + + The syntax '(expr1)[expr2]' is ambiguous when used as an argument. See https://aka.ms/fsharp-index-notation. If you intend indexing or slicing then you must use '(expr1).[expr2]' in argument position. If calling a function with multiple curried arguments, add a space between them, e.g. 'someFunction (expr1) [expr2]'. A sintaxe '[expr1][expr2]' é ambígua quando usada como um argumento. Consulte https://aka.ms/fsharp-index-notation. Se você pretende indexar ou colocar em fatias, deve usar '(expr1).[expr2]' na posição do argumento. Se chamar uma função com vários argumentos na forma curried, adicione um espaço entre eles, por exemplo, 'someFunction [expr1] [expr2]'. @@ -1098,8 +1293,8 @@ - The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSource' and 'Bind' methods - O constructo 'let! ... and! ...' só pode ser usado se o construtor de expressões de computação definir um método '{0}' ou um método 'MergeSource' ou 'Bind' apropriado + The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods + The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods @@ -1137,6 +1332,11 @@ Não é possível chamar '{0}' – um setter da propriedade somente inicialização, use a inicialização de objeto. Confira https://aka.ms/fsharp-assigning-values-to-properties-at-initialization + + Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead. + Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead. + + This expression implicitly converts type '{0}' to type '{1}'. See https://aka.ms/fsharp-implicit-convs. Essa expressão converte implicitamente o tipo '{0}' ao tipo '{1}'. Consulte https://aka.ms/fsharp-implicit-convs. @@ -1177,6 +1377,11 @@ Cadeia de caracteres interpolada inválida. {0} + + Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b). + Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b). + + '{0}' is normally used as a type constraint in generic code, e.g. \"'T when ISomeInterface<'T>\" or \"let f (x: #ISomeInterface<_>)\". See https://aka.ms/fsharp-iwsams for guidance. You can disable this warning by using '#nowarn \"3536\"' or '--nowarn:3536'. '{0}' normalmente é usado como uma restrição de tipo em código genérico, por exemplo, \"'T when ISomeInterface<'T>\" ou \"let f (x: #ISomeInterface<_>)\". Confira https://aka.ms/fsharp-iwsams para obter as diretrizes. Você pode desabilitar este aviso usando '#nowarn \"3536\"' ou '--nowarn:3536'. @@ -1573,8 +1778,8 @@ - Unrecognized option: '{0}' - Opção não reconhecida: '{0}' + Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options. + Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options. @@ -3228,8 +3433,8 @@ - Multiple accessibilities given for property getter or setter - Acessibilidades múltiplas fornecidas para getter ou setter de propriedade + When the visibility for a property is specified, setting the visibility of the set or get method is not allowed. + When the visibility for a property is specified, setting the visibility of the set or get method is not allowed. @@ -3692,11 +3897,6 @@ Os rótulos de campo e tipo esperado desta expressão ou padrão de registro não determinam exclusivamente um tipo de registro correspondente - - The field '{0}' appears twice in this record expression or pattern - O campo '{0}' aparece duas vezes nesta expressão de registro ou padrão - - Unknown union case Caso união desconhecido @@ -4002,11 +4202,6 @@ Este não é um padrão válido - - Character range matches have been removed in F#. Consider using a 'when' pattern guard instead. - Correspondências de intervalo de caractere foram removidas em F#. Considere usar um 'when' na proteção padrão. - - Illegal pattern Padrão inválido @@ -4833,8 +5028,8 @@ - Static value definitions may only be used in types with a primary constructor. Consider adding arguments to the type definition, e.g. 'type X(args) = ...'. - Definições de valores estáticos só podem ser usadas em tipos com um construtor primário. Considere adicionar argumentos à definição de tipo, por exemplo, 'type X(args) = ...'. + For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'. + For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'. @@ -5953,8 +6148,8 @@ - Possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this token further or using standard formatting conventions. - Recuo possivelmente incorreto: este token está fora do contexto iniciado na posição {0}. Tente recuar mais este token ou use conversões de formatação padrão. + Unexpected syntax or possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this further.\nTo continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7. + Recuo possivelmente incorreto: este token está fora do contexto iniciado na posição {0}. Tente recuar mais este token ou use conversões de formatação padrão. @@ -7668,8 +7863,8 @@ - Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is an array, the address of a field, the address of an array element or a string' - Uso inválido da 'fixed'. 'fixed' somente pode ser usada em uma declaração no formato 'use x = fixed expr', em que a expressão é uma matriz, o endereço de um campo, o endereço de um elemento de matriz ou uma cadeia de caracteres + Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is one of the following: an array, the address of an array element, a string, a byref, an inref, or a type implementing GetPinnableReference() + Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is one of the following: an array, the address of an array element, a string, a byref, an inref, or a type implementing GetPinnableReference() @@ -8102,11 +8297,6 @@ Este valor não é uma função e não pode ser aplicado. Você esqueceu de finalizar a declaração? - - The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. - Os nomes de argumento na assinatura '{0}' e na implementação '{1}' não coincidem. O nome do argumento do arquivo da assinatura será usado. Isso pode causar problemas durante a depuração ou a criação de perfil. - - An error occurred while reading the F# metadata of assembly '{0}'. A reserved construct was utilized. You may need to upgrade your F# compiler or use an earlier version of the assembly that doesn't make use of a specific construct. Ocorreu um erro ao ler os metadados F# do assembly '{0}'. Foi utilizada um constructo reservado. Talvez seja necessário atualizar seu compilador F# ou usar uma versão anterior do assembly que não faça uso de um constructo específico. @@ -8242,14 +8432,9 @@ Dois tipos de registro anônimos são de diferentes assemblies '{0}' e '{1}' - - This anonymous record does not exactly match the expected shape. Add the missing fields {0} and remove the extra fields {1}. - Este registro anônimo não corresponde exatamente à forma esperada. Adicione os campos ausentes {0} e remova os campos extras {1}. - - - Cannot call the byref extension method '{0}. The first parameter requires the value to be mutable or a non-readonly byref type. - Não é possível chamar o método de extensão de byref '{0}. O primeiro parâmetro requer que o valor seja mutável ou não seja byref somente leitura. + Cannot call the byref extension method '{0}. 'this' parameter requires the value to be mutable or a non-readonly byref type. + Não é possível chamar o método de extensão de byref '{0}. O primeiro parâmetro requer que o valor seja mutável ou não seja byref somente leitura. @@ -8338,8 +8523,8 @@ - Package manager key '{0}' was not registered in {1}. Currently registered: {2} - A chave '{0}' do gerenciador de pacotes não foi registrada em {1}. Registrada no momento: {2} + Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager + Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager diff --git a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.ru.xlf b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.ru.xlf index 5a9d0aae1f..8df26b4c20 100644 --- a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.ru.xlf +++ b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.ru.xlf @@ -2,6 +2,11 @@ + + Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended. + Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended. + + All elements of an array must be implicitly convertible to the type of the first element, which here is a tuple of length {0} of type\n {1} \nThis element is a tuple of length {2} of type\n {3} \n Все элементы массива должны поддерживать неявное преобразование в тип первого элемента, который здесь является кортежем длиной {0} типа\n {1} \nЭтот элемент является кортежем длиной {2} типа\n {3} \n @@ -42,6 +47,11 @@ Если тип использует атрибуты [<Sealed>] и [<AbstractClass>], это означает, что он статический. Конструктор с аргументами не разрешен. + + This expression is an anonymous record, use {{|...|}} instead of {{...}}. + This expression is an anonymous record, use {{|...|}} instead of {{...}}. + + Duplicate parameter. The parameter '{0}' has been used more that once in this method. Повторяющийся параметр. Параметр "{0}" использовался в этом методе несколько раз. @@ -102,6 +112,11 @@ Если тип использует атрибуты [<Sealed>] и [<AbstractClass>], это означает, что он статический. Элементы экземпляра не разрешены. + + The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way. + The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way. + + The 'AssemblyKeyNameAttribute' has been deprecated. Use 'AssemblyKeyFileAttribute' instead. Атрибут "AssemblyKeyNameAttribute" является устаревшим. Используйте вместо него атрибут "AssemblyKeyFileAttribute". @@ -157,6 +172,11 @@ Аргумент "{0}" не соответствует + + The constraints 'unmanaged' and 'not struct' are inconsistent + The constraints 'unmanaged' and 'not struct' are inconsistent + + All branches of an 'if' expression must return values implicitly convertible to the type of the first branch, which here is a tuple of length {0} of type\n {1} \nThis branch returns a tuple of length {2} of type\n {3} \n Все ветви выражения "if" должны возвращать значения, поддерживающие неявное преобразование в тип первой ветви, которым здесь является кортеж длиной {0} типа\n {1} \nЭта ветвь возвращает кортеж длиной {2} типа\n {3} \n @@ -177,6 +197,11 @@ Атрибут сборки "{0}" ссылается на сборку конструктора "{1}", которая не может быть загружена или не существует. Получено исключение: {2} — {3} + + underscore dot shorthand for accessor only function + underscore dot shorthand for accessor only function + + additional type-directed conversions дополнительные преобразования на основе типа @@ -207,6 +232,16 @@ Разрешить атрибут неявного расширения для объявляющих типов, модулей + + Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way. + Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way. + + + + Constraint intersection on flexible types + Constraint intersection on flexible types + + default interface member consumption использование элемента интерфейса по умолчанию @@ -252,6 +287,16 @@ другие типы поддерживают единицы измерения + + extended fixed bindings for byref and GetPinnableReference + extended fixed bindings for byref and GetPinnableReference + + + + Extended string interpolation similar to C# raw string literals. + Extended string interpolation similar to C# raw string literals. + + fixed-index slice 3d/4d срез с фиксированным индексом 3d/4d @@ -267,11 +312,21 @@ неявное использование yield + + Improved implied argument names + Improved implied argument names + + expr[idx] notation for indexing and slicing expr[idx] для индексации и среза + + Diagnostic 3559 (warn when obj inferred) at informational level, off by default + Diagnostic 3559 (warn when obj inferred) at informational level, off by default + + support for consuming init properties поддержка использования свойств инициализации @@ -342,6 +397,11 @@ управление пакетами + + prefer String.GetPinnableReference in fixed bindings + prefer String.GetPinnableReference in fixed bindings + + binary formatting for integers двоичное форматирование для целых чисел @@ -387,11 +447,21 @@ шаблон с одним подчеркиванием + + Allow static let bindings in union, record, struct, non-incremental-class types + Allow static let bindings in union, record, struct, non-incremental-class types + + Static members in interfaces Статические элементы в интерфейсах + + Raises errors on incorrect indentation, allows better recovery and analysis during editing + Raises errors on incorrect indentation, allows better recovery and analysis during editing + + string interpolation интерполяция строк @@ -407,6 +477,11 @@ Поддержка try-with в выражениях последовательности + + Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq) + Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq) + + Raises warnings when an copy-and-update record expression changes all fields of a record. Создает предупреждения, когда выражение копирования и обновления записи изменяет все поля записи. @@ -417,6 +492,16 @@ Выдает предупреждения, когда используется параметр "let inline ... =" вместе с атрибутом [<MethodImpl(MethodImplOptions.NoInlining)>]. Функция не встраивается. + + Raises warnings when multiple record type matches were found during name resolution because of overlapping field names. + Raises warnings when multiple record type matches were found during name resolution because of overlapping field names. + + + + 'while!' expression + 'while!' expression + + wild card in for loop подстановочный знак в цикле for @@ -517,11 +602,21 @@ Используется для проверки принадлежности объекта заданному типу в шаблоне или привязке. + + Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression. + Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression. + + a byte string may not be interpolated невозможно выполнить интерполяцию для строки байтов + + Extended string interpolation is not supported in this version of F#. + Extended string interpolation is not supported in this version of F#. + + IF-FSHARP/IF-CAML regions are no longer supported Регионы IF-FSHARP/IF-CAML больше не поддерживаются @@ -542,11 +637,26 @@ Недопустимая интерполированная строка. Строковые литералы с одинарными кавычками или буквальные строковые литералы запрещено использовать в интерполированных выражениях в строках с одинарными кавычками или буквальных строках. Рекомендуется использовать явную привязку "let" для выражения интерполяции или использовать строку с тройными кавычками как внешний строковый литерал. + + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content. + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content. + + + + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters. + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters. + + Invalid interpolated string. Triple quote string literals may not be used in interpolated expressions. Consider using an explicit 'let' binding for the interpolation expression. Недопустимая интерполированная строка. Строковые литералы с тройными кавычками запрещено использовать в интерполированных выражениях. Рекомендуется использовать явную привязку "let" для выражения интерполяции. + + The interpolated string contains unmatched closing braces. + The interpolated string contains unmatched closing braces. + + All elements of a list must be implicitly convertible to the type of the first element, which here is a tuple of length {0} of type\n {1} \nThis element is a tuple of length {2} of type\n {3} \n Все элементы списка должны поддерживать неявное преобразование в тип первого элемента, который здесь является кортежем длиной {0} типа\n {1} \nЭтот элемент является кортежем длиной {2} типа\n {3} \n @@ -682,6 +792,11 @@ Включить сведения об интерфейсе F#, по умолчанию используется файл. Необходимо для распространения библиотек. + + Override indentation rules implied by the language version + Override indentation rules implied by the language version + + Supported language versions: Поддерживаемые языковые версии: @@ -717,6 +832,11 @@ Для функции управления пакетами требуется версия языка 5.0 или более поздняя + + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. + + Invalid interpolated string. This interpolated string expression fill is empty, an expression was expected. Недопустимая интерполированная строка. Выражение этой интерполированной строки является пустым. Ожидается выражение. @@ -742,24 +862,19 @@ Неполная интерполированная буквальная строка, начатая в этой позиции или до нее - - Unexpected token in type definition. Expected '=' after the type '{0}'. - Неожиданный токен в определении типа. После типа "{0}" ожидается "=". - - Expected a pattern after this point После этой точки ожидался шаблон - + Expecting expression - Ожидается выражение + Expecting expression - + Expecting pattern - Ожидается шаблон + Expecting pattern @@ -777,6 +892,16 @@ Неполное выражение оператора (например, a^b) или вызов квалифицированного типа (например, ^T.Name) + + Missing keyword '{0}' + Missing keyword '{0}' + + + + Expecting member body + Expecting member body + + Missing union case name Missing union case name @@ -787,6 +912,11 @@ Неоднозначный доступ к этому элементу. Заключите операцию создания объекта в круглые скобки, например (new Объект(аргументы)).Элемент + + _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses. + _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses. + + Unexpected end of input in 'else if' or 'elif' branch of conditional expression. Expected 'elif <expr> then <expr>' or 'else if <expr> then <expr>'. Неожиданное завершение входных данных ветви "else if" или "elif" условного выражения. Ожидается "elif <expr> then <expr> " или "else if <expr> then <expr>" @@ -807,6 +937,11 @@ Алгоритм "{0}" не поддерживается + + Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} + Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} + + A constrained generic construct occured in the resumable code specification В спецификации возобновляемого кода возникла ограниченная универсальная конструкция @@ -887,6 +1022,16 @@ Не удалось определить пакет SDK .NET для этого скрипта. Если сценарий находится в каталоге с использованием файла "global.json", убедитесь, что установлен соответствующий пакет SDK .NET. Непредвиденная ошибка "{0}". + + (Suggested name) + (Suggested name) + + + + The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope. + The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope. + + This expression has type '{0}' and is only made compatible with type '{1}' through an ambiguous implicit conversion. Consider using an explicit call to 'op_Implicit'. The applicable implicit conversions are:{2} Это выражение имеет тип "{0}" и совместимо только с типом "{1}" посредством неоднозначного неявного преобразования. Рассмотрите возможность использования явного вызова "op_Implicit". Применимые неявные преобразования: {2} @@ -902,24 +1047,54 @@ Поле "{0}" появляется несколько раз в данном выражении записи. - - This is the wrong anonymous record. It should have the fields {0}. - Неправильная анонимная запись. Она должна содержать поля {0}. + + This anonymous record does not exactly match the expected shape. Add the missing fields {0} and remove the extra fields {1}. + Эта анонимная запись не соответствует ожидаемой форме. Добавьте недостающие поля {0} и удалите лишние поля {1}. - - This anonymous record does not have enough fields. Add the missing fields {0}. - В этой анонимной записи недостаточно полей. Добавьте недостающие поля {0}. + + Invalid Anonymous Record type declaration. + Недопустимое объявление типа анонимной записи. - - This anonymous record has too many fields. Remove the extra fields {0}. - Эта анонимная запись содержит слишком много полей. Удалите лишние поля {0}. + + This anonymous record should have fields {0}; but here has fields {1}. + This anonymous record should have fields {0}; but here has fields {1}. - - Invalid Anonymous Record type declaration. - Недопустимое объявление типа анонимной записи. + + This anonymous record should have fields {0}; but here has field '{1}'. + This anonymous record should have fields {0}; but here has field '{1}'. + + + + This anonymous record is missing fields {0}. + This anonymous record is missing fields {0}. + + + + This anonymous record has extra fields. Remove fields {0}. + This anonymous record has extra fields. Remove fields {0}. + + + + This anonymous record should have field '{0}' but here has fields {1}. + This anonymous record should have field '{0}' but here has fields {1}. + + + + This anonymous record should have field '{0}' but here has field '{1}'. + This anonymous record should have field '{0}' but here has field '{1}'. + + + + This anonymous record is missing field '{0}'. + This anonymous record is missing field '{0}'. + + + + This anonymous record has an extra field. Remove field '{0}'. + This anonymous record has an extra field. Remove field '{0}'. @@ -972,6 +1147,11 @@ Это выражение использует неявное преобразование "{0}" для преобразования типа "{1}" в тип "{2}". См. сведения на странице https://aka.ms/fsharp-implicit-convs. Это предупреждение можно отключить, используя параметр '#nowarn \"3391\" + + This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses. + This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses. + + Init-only property '{0}' cannot be set outside the initialization code. See https://aka.ms/fsharp-assigning-values-to-properties-at-initialization Свойство только для инициализации "{0}" невозможно установить за пределами кода инициализации. См. https://aka.ms/fsharp-assigning-values-to-properties-at-initialization @@ -1052,6 +1232,16 @@ Необходимо инициализировать следующие обязательные свойства:{0} + + The field '{0}' appears multiple times in this record expression or pattern + The field '{0}' appears multiple times in this record expression or pattern + + + + Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements. + Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements. + + Using methods with 'NoEagerConstraintApplicationAttribute' requires /langversion:6.0 or later Для использования методов с "NoEagerConstraintApplicationAttribute" требуется /langversion:6.0 или более поздняя версия @@ -1087,6 +1277,11 @@ Синтаксис "expr1[expr2]" теперь зарезервирован для индексирования и неоднозначен при использовании в качестве аргумента. См. https://aka.ms/fsharp-index-notation. При вызове функции с несколькими каррированными аргументами добавьте между ними пробел, например "someFunction expr1 [expr2]". + + This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c'). + This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c'). + + The syntax '(expr1)[expr2]' is ambiguous when used as an argument. See https://aka.ms/fsharp-index-notation. If you intend indexing or slicing then you must use '(expr1).[expr2]' in argument position. If calling a function with multiple curried arguments, add a space between them, e.g. 'someFunction (expr1) [expr2]'. Синтаксис "(expr1)[expr2]" неоднозначен при использовании в качестве аргумента. См. https://aka.ms/fsharp-index-notation. Если вы намереваетесь индексировать или разрезать, необходимо использовать "(expr1).[expr2]" в позиции аргумента. При вызове функции с несколькими каррированными аргументами добавьте пробел между ними, например "someFunction (expr1) [expr2]". @@ -1098,8 +1293,8 @@ - The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSource' and 'Bind' methods - Конструкцию "let! ... and! ..." можно использовать только в том случае, если построитель выражений с вычислениями определяет либо метод "{0}", либо соответствующие методы "MergeSource" и "Bind" + The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods + The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods @@ -1137,6 +1332,11 @@ Не удается вызвать '{0}' — установщик для свойства только для инициализации, вместо этого используйте инициализацию объекта. См. https://aka.ms/fsharp-assigning-values-to-properties-at-initialization. + + Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead. + Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead. + + This expression implicitly converts type '{0}' to type '{1}'. See https://aka.ms/fsharp-implicit-convs. Это выражение неявно преобразует тип "{0}" в тип "{1}". См. сведения на странице https://aka.ms/fsharp-implicit-convs. @@ -1177,6 +1377,11 @@ Недопустимая интерполированная строка. {0} + + Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b). + Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b). + + '{0}' is normally used as a type constraint in generic code, e.g. \"'T when ISomeInterface<'T>\" or \"let f (x: #ISomeInterface<_>)\". See https://aka.ms/fsharp-iwsams for guidance. You can disable this warning by using '#nowarn \"3536\"' or '--nowarn:3536'. "{0}" обычно используется в качестве ограничения типа в универсальном коде, например \"'T when ISomeInterface<"T>\" или \"let f (x: #ISomeInterface<_>)\". См. руководство на https://aka.ms/fsharp-iwsams. Это предупреждение можно отключить с помощью "#nowarn \"3536\"" или "--nowarn:3536". @@ -1573,8 +1778,8 @@ - Unrecognized option: '{0}' - Нераспознанный параметр: '{0}' + Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options. + Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options. @@ -3228,8 +3433,8 @@ - Multiple accessibilities given for property getter or setter - Задано несколько модификаторов доступности для метода получения или задания свойства + When the visibility for a property is specified, setting the visibility of the set or get method is not allowed. + When the visibility for a property is specified, setting the visibility of the set or get method is not allowed. @@ -3692,11 +3897,6 @@ Метки поля и требуемый тип данного выражения записи или шаблона не определяют уникально соответствующий тип записи - - The field '{0}' appears twice in this record expression or pattern - Поле "{0}" появляется дважды в данном выражении записи или шаблоне - - Unknown union case Неизвестная ветвь объединения @@ -4002,11 +4202,6 @@ Недопустимый шаблон. - - Character range matches have been removed in F#. Consider using a 'when' pattern guard instead. - Совпадения диапазона символов были убраны из F#. Вместо этого рекомендуется использовать шаблон условия "when". - - Illegal pattern Недопустимый шаблон @@ -4833,8 +5028,8 @@ - Static value definitions may only be used in types with a primary constructor. Consider adding arguments to the type definition, e.g. 'type X(args) = ...'. - Статические определения значений можно использовать только в типах с первичными конструкторами. Попробуйте добавить в определение типа аргументы, напр. "type X(args) = ...". + For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'. + For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'. @@ -5953,8 +6148,8 @@ - Possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this token further or using standard formatting conventions. - Возможно, неправильные отступы: этот токен находится вне контекста, начиная с позиции {0}. Попробуйте увеличить отступ токена или использовать стандартные соглашения о форматировании. + Unexpected syntax or possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this further.\nTo continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7. + Возможно, неправильные отступы: этот токен находится вне контекста, начиная с позиции {0}. Попробуйте увеличить отступ токена или использовать стандартные соглашения о форматировании. @@ -7668,8 +7863,8 @@ - Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is an array, the address of a field, the address of an array element or a string' - Недопустимое использование выражения "fixed". Выражение "fixed" можно использовать только в объявлении формы "use x = fixed expr", где выражение является массивом, адресом поля, адресом элемента массива или строки. + Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is one of the following: an array, the address of an array element, a string, a byref, an inref, or a type implementing GetPinnableReference() + Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is one of the following: an array, the address of an array element, a string, a byref, an inref, or a type implementing GetPinnableReference() @@ -8102,11 +8297,6 @@ Данное значение не является функцией и не может быть применено. Забыли завершить объявление? - - The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. - Имена аргументов в сигнатуре "{0}" и реализации "{1}" не совпадают. Будет использоваться имя аргумента из файла сигнатуры. Это может вызвать проблемы при отладке или профилировании. - - An error occurred while reading the F# metadata of assembly '{0}'. A reserved construct was utilized. You may need to upgrade your F# compiler or use an earlier version of the assembly that doesn't make use of a specific construct. Произошла ошибка при чтении метаданных F# сборки "{0}". Использовалась зарезервированная конструкция. Попробуйте обновить компилятор F# или применить более раннюю версию сборки, где конкретная конструкция не используется. @@ -8242,14 +8432,9 @@ Два типа анонимных записей принадлежат различным сборкам '{0}' и '{1}' - - This anonymous record does not exactly match the expected shape. Add the missing fields {0} and remove the extra fields {1}. - Эта анонимная запись не соответствует ожидаемой форме. Добавьте недостающие поля {0} и удалите лишние поля {1}. - - - Cannot call the byref extension method '{0}. The first parameter requires the value to be mutable or a non-readonly byref type. - Не удается вызвать метод расширения byref "{0}". В качестве первого параметра необходимо указать изменяемое значение или значение типа byref, доступное не только для чтения. + Cannot call the byref extension method '{0}. 'this' parameter requires the value to be mutable or a non-readonly byref type. + Не удается вызвать метод расширения byref "{0}". В качестве первого параметра необходимо указать изменяемое значение или значение типа byref, доступное не только для чтения. @@ -8338,8 +8523,8 @@ - Package manager key '{0}' was not registered in {1}. Currently registered: {2} - Ключ "{0}" диспетчера пакетов не был зарегистрирован в {1}. Текущий зарегистрированный ключ: {2} + Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager + Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager diff --git a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.tr.xlf b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.tr.xlf index b40b29f543..8c4c9c3ae4 100644 --- a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.tr.xlf +++ b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.tr.xlf @@ -2,6 +2,11 @@ + + Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended. + Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended. + + All elements of an array must be implicitly convertible to the type of the first element, which here is a tuple of length {0} of type\n {1} \nThis element is a tuple of length {2} of type\n {3} \n Bir dizinin tüm öğeleri örtük olarak ilk öğenin türüne dönüştürülebilir olmalıdır. Burada ilk öğe {0} uzunluğunda türü\n {1} \nolan bir demet. Bu öğe ise {2} uzunluğunda türü\n {3} \nolan bir demet. @@ -42,6 +47,11 @@ Bir tür, hem [<Sealed>] hem de [< AbstractClass>] özniteliklerini kullanıyorsa bu statik olduğu anlamına gelir.Bağımsız değişkenlere sahip oluşturucuya izin verilmez. + + This expression is an anonymous record, use {{|...|}} instead of {{...}}. + This expression is an anonymous record, use {{|...|}} instead of {{...}}. + + Duplicate parameter. The parameter '{0}' has been used more that once in this method. Yinelenen parametre. '{0}' parametresi bu metotta bir kereden fazla kullanıldı. @@ -102,6 +112,11 @@ Bir tür, hem [<Sealed>] hem de [< AbstractClass>] özniteliklerini kullanıyorsa bu statik olduğu anlamına gelir. Örnek üyelerine izin verilmez. + + The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way. + The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way. + + The 'AssemblyKeyNameAttribute' has been deprecated. Use 'AssemblyKeyFileAttribute' instead. 'AssemblyKeyNameAttribute' kullanım dışı bırakıldı. Bunun yerine 'AssemblyKeyFileAttribute' kullanın. @@ -157,6 +172,11 @@ '{0}' bağımsız değişkeni eşleşmiyor + + The constraints 'unmanaged' and 'not struct' are inconsistent + The constraints 'unmanaged' and 'not struct' are inconsistent + + All branches of an 'if' expression must return values implicitly convertible to the type of the first branch, which here is a tuple of length {0} of type\n {1} \nThis branch returns a tuple of length {2} of type\n {3} \n Bir 'if' ifadesinin tüm dalları, örtük olarak ilk dalın türüne dönüştürülebilir değerler döndürmelidir. Burada ilk dal {0} uzunluğunda türü\n {1} olan bir demet \nBu dal {2} uzunluğunda türü\n {3} \nolan bir demet döndürüyor @@ -177,6 +197,11 @@ '{0}' bütünleştirilmiş kod özniteliği, yüklenemeyen veya mevcut olmayan '{1}' tasarımcı bütünleştirilmiş koduna başvuruyor. Bildirilen özel durum: {2} - {3} + + underscore dot shorthand for accessor only function + underscore dot shorthand for accessor only function + + additional type-directed conversions ek tür ile yönlendirilen dönüştürmeler @@ -207,6 +232,16 @@ Türler, modüller bildirirken örtük Extension özniteliğine izin ver + + Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way. + Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way. + + + + Constraint intersection on flexible types + Constraint intersection on flexible types + + default interface member consumption varsayılan arabirim üyesi tüketimi @@ -252,6 +287,16 @@ tür daha ölçü birimlerini destekler + + extended fixed bindings for byref and GetPinnableReference + extended fixed bindings for byref and GetPinnableReference + + + + Extended string interpolation similar to C# raw string literals. + Extended string interpolation similar to C# raw string literals. + + fixed-index slice 3d/4d sabit dizinli dilim 3d/4d @@ -267,11 +312,21 @@ örtük yield + + Improved implied argument names + Improved implied argument names + + expr[idx] notation for indexing and slicing Dizin oluşturma ve dilimleme için expr[idx] gösterimi + + Diagnostic 3559 (warn when obj inferred) at informational level, off by default + Diagnostic 3559 (warn when obj inferred) at informational level, off by default + + support for consuming init properties başlatma özelliklerini kullanma desteği @@ -342,6 +397,11 @@ paket yönetimi + + prefer String.GetPinnableReference in fixed bindings + prefer String.GetPinnableReference in fixed bindings + + binary formatting for integers tamsayılar için ikili biçim @@ -387,11 +447,21 @@ tek alt çizgi deseni + + Allow static let bindings in union, record, struct, non-incremental-class types + Allow static let bindings in union, record, struct, non-incremental-class types + + Static members in interfaces Arabirimlerdeki statik üyeler + + Raises errors on incorrect indentation, allows better recovery and analysis during editing + Raises errors on incorrect indentation, allows better recovery and analysis during editing + + string interpolation dizede düz metin arasına kod ekleme @@ -407,6 +477,11 @@ Dizi ifadelerinde try-with desteği + + Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq) + Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq) + + Raises warnings when an copy-and-update record expression changes all fields of a record. Bir kopyalama ve güncelleştirme kayıt ifadesi bir kaydın tüm alanlarını değiştirdiğinde uyarı oluşturur. @@ -417,6 +492,16 @@ [<MethodImpl(MethodImplOptions.NoInlining)>] özniteliği ile birlikte 'let inline ... =' kullanıldığında uyarı verir. İşlev satır içine alınmıyor. + + Raises warnings when multiple record type matches were found during name resolution because of overlapping field names. + Raises warnings when multiple record type matches were found during name resolution because of overlapping field names. + + + + 'while!' expression + 'while!' expression + + wild card in for loop for döngüsünde joker karakter @@ -517,11 +602,21 @@ Bir nesnenin desende veya bağlamada verilen türde olup olmadığını kontrol etmek için kullanılır. + + Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression. + Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression. + + a byte string may not be interpolated bir bayt dizesi, düz metin arasına kod eklenerek kullanılamaz + + Extended string interpolation is not supported in this version of F#. + Extended string interpolation is not supported in this version of F#. + + IF-FSHARP/IF-CAML regions are no longer supported IF-FSHARP/IF-CAML bölgeleri artık desteklenmiyor @@ -542,11 +637,26 @@ Geçersiz düz metin arasına kod eklenmiş dize. Tek tırnaklı veya düz metin dizesi sabitleri, tek tırnaklı veya düz metin dizelerinde düz metin arasına kod eklenmiş ifadelerde kullanılamaz. Düz metin arasına kod ekleme ifadesi için açık bir 'let' bağlaması kullanmayı düşünün veya dış dize sabiti olarak üç tırnaklı bir dize kullanın. + + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content. + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content. + + + + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters. + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters. + + Invalid interpolated string. Triple quote string literals may not be used in interpolated expressions. Consider using an explicit 'let' binding for the interpolation expression. Geçersiz düz metin arasına kod eklenmiş dize. Üç tırnaklı dize sabitleri, düz metin arasına kod eklenmiş ifadelerde kullanılamaz. Düz metin arasına kod ekleme ifadesi için açık bir 'let' bağlaması kullanmayı düşünün. + + The interpolated string contains unmatched closing braces. + The interpolated string contains unmatched closing braces. + + All elements of a list must be implicitly convertible to the type of the first element, which here is a tuple of length {0} of type\n {1} \nThis element is a tuple of length {2} of type\n {3} \n Bir listenin tüm öğeleri örtük olarak ilk öğenin türüne dönüştürülebilir olmalıdır. Burada ilk öğe {0} uzunluğunda türü\n {1} \nolan bir demet. Bu öğe ise {2} uzunluğunda türü\n {3} \nolan bir demet. @@ -682,6 +792,11 @@ F# arabirim bilgilerini dahil edin; varsayılan değer dosyadır. Kitaplıkları dağıtmak için gereklidir. + + Override indentation rules implied by the language version + Override indentation rules implied by the language version + + Supported language versions: Desteklenen dil sürümleri: @@ -717,6 +832,11 @@ ‘Paket yönetimi’ özelliği, dil sürümü 5.0 veya üstünü gerektirir + + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. + + Invalid interpolated string. This interpolated string expression fill is empty, an expression was expected. Düz metin arasına kod eklenmiş dize geçersiz. Bu düz metin arasına kod eklenmiş dize ifade dolgusu boş. İfade bekleniyordu. @@ -742,24 +862,19 @@ Tamamlanmamış düz metin arasına kod eklenmiş düz metin dizesi, burada veya daha önce başlıyordu - - Unexpected token in type definition. Expected '=' after the type '{0}'. - Tür tanımında beklenmeyen belirteç var. '{0}' türünden sonra '=' bekleniyordu. - - Expected a pattern after this point Bu noktadan sonra bir desen bekleniyordu - + Expecting expression - İfade bekleniyor + Expecting expression - + Expecting pattern - Desen bekleniyor + Expecting pattern @@ -777,6 +892,16 @@ Eksik işleç ifadesi (örnek a^b) veya tam tür çağrısı (örnek: ^T.Name) + + Missing keyword '{0}' + Missing keyword '{0}' + + + + Expecting member body + Expecting member body + + Missing union case name Missing union case name @@ -787,6 +912,11 @@ Bu üye erişimi belirsiz. Lütfen nesne oluşturma etrafında parantez kullanın, örneğin '(yeni SomeType (args)).MemberName’ + + _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses. + _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses. + + Unexpected end of input in 'else if' or 'elif' branch of conditional expression. Expected 'elif <expr> then <expr>' or 'else if <expr> then <expr>'. Koşullu ifadenin 'else if' veya 'elif' dalında beklenmeyen giriş sonu. 'elif <expr> then <expr>' veya 'else if <expr> then <expr>' bekleniyordu. @@ -807,6 +937,11 @@ {0}' algoritması desteklenmiyor + + Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} + Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} + + A constrained generic construct occured in the resumable code specification Sürdürülebilir kod belirtiminde kısıtlanmış bir genel yapı oluştu @@ -887,6 +1022,16 @@ Bu betik için .NET SDK belirlenemedi. Betik 'global.json' kullanan bir dizindeyse, ilgili .NET SDK'nın yüklü olduğundan emin olun. Beklenmeyen hata '{0}'. + + (Suggested name) + (Suggested name) + + + + The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope. + The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope. + + This expression has type '{0}' and is only made compatible with type '{1}' through an ambiguous implicit conversion. Consider using an explicit call to 'op_Implicit'. The applicable implicit conversions are:{2} Bu ifade '{0}' türüne sahip ve yalnızca belirsiz bir örtük dönüştürme aracılığıyla ’{1}' türüyle uyumlu hale getirilir. 'op_Implicit' için açık bir çağrı kullanmayı düşünün. Uygulanabilir örtük dönüştürmeler şunlardır: {2} @@ -902,24 +1047,54 @@ '{0}' alanı bu kayıt ifadesinde birden fazla yerde görünüyor. - - This is the wrong anonymous record. It should have the fields {0}. - Bu anonim kayıt yanlış. Kayıt, {0} alanlarını içermelidir. + + This anonymous record does not exactly match the expected shape. Add the missing fields {0} and remove the extra fields {1}. + Bu anonim kayıt, beklenen şekille tam olarak eşleşmiyor. Eksik {0} alanlarını ekleyin ve ek {1} alanlarını kaldırın. - - This anonymous record does not have enough fields. Add the missing fields {0}. - Bu anonim kayıtta yeterli sayıda alan yok. Eksik {0} alanlarını ekleyin. + + Invalid Anonymous Record type declaration. + Anonim Kayıt türü bildirimi geçersiz. - - This anonymous record has too many fields. Remove the extra fields {0}. - Bu anonim kayıtta çok fazla alan var. Ek {0} alanlarını kaldırın. + + This anonymous record should have fields {0}; but here has fields {1}. + This anonymous record should have fields {0}; but here has fields {1}. - - Invalid Anonymous Record type declaration. - Anonim Kayıt türü bildirimi geçersiz. + + This anonymous record should have fields {0}; but here has field '{1}'. + This anonymous record should have fields {0}; but here has field '{1}'. + + + + This anonymous record is missing fields {0}. + This anonymous record is missing fields {0}. + + + + This anonymous record has extra fields. Remove fields {0}. + This anonymous record has extra fields. Remove fields {0}. + + + + This anonymous record should have field '{0}' but here has fields {1}. + This anonymous record should have field '{0}' but here has fields {1}. + + + + This anonymous record should have field '{0}' but here has field '{1}'. + This anonymous record should have field '{0}' but here has field '{1}'. + + + + This anonymous record is missing field '{0}'. + This anonymous record is missing field '{0}'. + + + + This anonymous record has an extra field. Remove field '{0}'. + This anonymous record has an extra field. Remove field '{0}'. @@ -972,6 +1147,11 @@ Bu ifade '{1}' türünü '{2}' türüne dönüştürmek için '{0}' örtük dönüştürmesini kullanır. https://aka.ms/fsharp-implicit-convs adresine bakın. Bu uyarı '#nowarn \"3391\" kullanılarak devre dışı bırakılabilir. + + This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses. + This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses. + + Init-only property '{0}' cannot be set outside the initialization code. See https://aka.ms/fsharp-assigning-values-to-properties-at-initialization '{0}' yalnızca başlatma özelliği başlatma kodunun dışında ayarlanamaz. Bkz. https://aka.ms/fsharp-assigning-values-to-properties-at-initialization @@ -1052,6 +1232,16 @@ Aşağıdaki gerekli özelliklerin başlatılması gerekiyor:{0} + + The field '{0}' appears multiple times in this record expression or pattern + The field '{0}' appears multiple times in this record expression or pattern + + + + Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements. + Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements. + + Using methods with 'NoEagerConstraintApplicationAttribute' requires /langversion:6.0 or later 'NoEagerConstraintApplicationAttribute' içeren yöntemlerin kullanılması /langversion:6.0 veya üstünü gerektiriyor @@ -1087,6 +1277,11 @@ Söz dizimi “expr1[expr2]” artık dizin oluşturma için ayrılmıştır ve bağımsız değişken olarak kullanıldığında belirsizdir. https://aka.ms/fsharp-index-notation'a bakın. Birden çok curry bağımsız değişkenli bir işlev çağırıyorsanız, aralarına bir boşluk ekleyin, örn. “someFunction expr1 [expr2]”. + + This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c'). + This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c'). + + The syntax '(expr1)[expr2]' is ambiguous when used as an argument. See https://aka.ms/fsharp-index-notation. If you intend indexing or slicing then you must use '(expr1).[expr2]' in argument position. If calling a function with multiple curried arguments, add a space between them, e.g. 'someFunction (expr1) [expr2]'. Söz dizimi “(expr1)[expr2]” bağımsız değişken olarak kullanıldığında belirsizdir. https://aka.ms/fsharp-index-notation'a bakın. Dizin oluşturmayı veya dilimlemeyi düşünüyorsanız, bağımsız değişken konumunda “(expr1).[expr2]” kullanmalısınız. Birden çok curry bağımsız değişkenli bir işlev çağırıyorsanız, aralarına bir boşluk ekleyin, örn. “someFunction (expr1) [expr2]”. @@ -1098,8 +1293,8 @@ - The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSource' and 'Bind' methods - 'let! ... and! ...' yapısı, yalnızca hesaplama ifadesi oluşturucu bir '{0}' metodunu ya da uygun 'MergeSource' ve 'Bind' metotlarını tanımlarsa kullanılabilir + The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods + The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods @@ -1137,6 +1332,11 @@ Yalnızca başlatma özelliği için ayarlayıcı olan '{0}' çağrılamaz, lütfen bunun yerine nesne başlatmayı kullanın. bkz. https://aka.ms/fsharp-assigning-values-to-properties-at-initialization + + Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead. + Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead. + + This expression implicitly converts type '{0}' to type '{1}'. See https://aka.ms/fsharp-implicit-convs. Bu ifade '{0}' türünü örtülü olarak '{1}' türüne dönüştürür. https://aka.ms/fsharp-implicit-convs adresine bakın. @@ -1177,6 +1377,11 @@ Geçersiz düz metin arasına kod eklenmiş dize. {0} + + Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b). + Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b). + + '{0}' is normally used as a type constraint in generic code, e.g. \"'T when ISomeInterface<'T>\" or \"let f (x: #ISomeInterface<_>)\". See https://aka.ms/fsharp-iwsams for guidance. You can disable this warning by using '#nowarn \"3536\"' or '--nowarn:3536'. '{0}' normalde genel kodda tür kısıtlaması olarak kullanılır, ör. \"'T when ISomeInterface<'T>\" veya \"let f (x: #ISomeInterface<_>)\". Rehber için bkz. https://aka.ms/fsharp-iwsams. '#nowarn \"3536\"' veya '--nowarn:3536' kullanarak bu uyarıyı devre dışı bırakabilirsiniz. @@ -1573,8 +1778,8 @@ - Unrecognized option: '{0}' - Tanınmayan seçenek: '{0}' + Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options. + Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options. @@ -3228,8 +3433,8 @@ - Multiple accessibilities given for property getter or setter - Özellik alıcı veya ayarlayıcı için birden çok erişilebilirlik verildi + When the visibility for a property is specified, setting the visibility of the set or get method is not allowed. + When the visibility for a property is specified, setting the visibility of the set or get method is not allowed. @@ -3692,11 +3897,6 @@ Bu kayıt ifadesinin veya deseninin alan etiketleri ve beklenen türü, karşılık gelen bir kayıt türünü benzersiz olarak belirlemiyor - - The field '{0}' appears twice in this record expression or pattern - '{0}' alanı bu kayıt ifadesinde veya deseninde iki kez görünüyor - - Unknown union case Bilinmeyen birleşim durumu @@ -4002,11 +4202,6 @@ Bu geçerli bir desen değil - - Character range matches have been removed in F#. Consider using a 'when' pattern guard instead. - Karakter aralığı eşleştirmeler F# dilinde kaldırılmıştır. Onun yerine 'when' desen koruma kullanmayı düşünün. - - Illegal pattern Geçersiz desen @@ -4833,8 +5028,8 @@ - Static value definitions may only be used in types with a primary constructor. Consider adding arguments to the type definition, e.g. 'type X(args) = ...'. - Statik değer tanımları yalnızca birincil oluşturucusu olan türlerde kullanılabilir. Tür tanımına bağımsız değişkenler eklemeyi düşünün, örn. 'type X(args) = ...'. + For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'. + For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'. @@ -5953,8 +6148,8 @@ - Possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this token further or using standard formatting conventions. - Olası hatalı girinti: {0} konumundan başlatılan bu belirteç bağlam dışıdır. Bu belirteci daha fazla girintilemeyi veya standart biçimlendirme kurallarını kullanmayı deneyin. + Unexpected syntax or possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this further.\nTo continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7. + Olası hatalı girinti: {0} konumundan başlatılan bu belirteç bağlam dışıdır. Bu belirteci daha fazla girintilemeyi veya standart biçimlendirme kurallarını kullanmayı deneyin. @@ -7668,8 +7863,8 @@ - Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is an array, the address of a field, the address of an array element or a string' - Geçersiz 'fixed' kullanımı. 'fixed' yalnızca 'use x = fixed expr' biçimindeki bir bildirimde kullanılabilir. Burada ifade bir dizi, bir alanın adresi, bir dizi öğesinin adresi veya bir dizedir + Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is one of the following: an array, the address of an array element, a string, a byref, an inref, or a type implementing GetPinnableReference() + Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is one of the following: an array, the address of an array element, a string, a byref, an inref, or a type implementing GetPinnableReference() @@ -8102,11 +8297,6 @@ Bu değer bir işlev değil ve uygulanamaz. Bir bildirimi sonlandırmayı mı unuttunuz? - - The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. - {0}' imzası ve '{1}' uygulaması içindeki bağımsız değişken adları eşleşmiyor. İmza dosyasındaki bağımsız değişken adı kullanılacak. Bu, hata ayıklama veya profil oluşturma sırasında sorunlara neden olabilir. - - An error occurred while reading the F# metadata of assembly '{0}'. A reserved construct was utilized. You may need to upgrade your F# compiler or use an earlier version of the assembly that doesn't make use of a specific construct. '{0}' bütünleştirilmiş kodunun F# meta verileri okunurken bir hata oluştu. Ayrılmış bir yapı kullanıldı. F# derleyicinizi yükseltmeniz veya bütünleştirilmiş kodun belirli bir yapıyı kullanmayan daha eski bir sürümünü kullanmanız gerekebilir. @@ -8242,14 +8432,9 @@ İki anonim kayıt türü, birbirinden farklı olan '{0}' ve '{1}' derlemelerinden - - This anonymous record does not exactly match the expected shape. Add the missing fields {0} and remove the extra fields {1}. - Bu anonim kayıt, beklenen şekille tam olarak eşleşmiyor. Eksik {0} alanlarını ekleyin ve ek {1} alanlarını kaldırın. - - - Cannot call the byref extension method '{0}. The first parameter requires the value to be mutable or a non-readonly byref type. - '{0}' byref genişletme metodu çağrılamıyor. İlk parametre, değerin değişebilir olmasını veya salt okunur olmayan bir byref türünde olmasını gerektiriyor. + Cannot call the byref extension method '{0}. 'this' parameter requires the value to be mutable or a non-readonly byref type. + '{0}' byref genişletme metodu çağrılamıyor. İlk parametre, değerin değişebilir olmasını veya salt okunur olmayan bir byref türünde olmasını gerektiriyor. @@ -8338,8 +8523,8 @@ - Package manager key '{0}' was not registered in {1}. Currently registered: {2} - '{0}' paket yöneticisi anahtarı {1} içinde kayıtlı değil. Şu anda kayıtlı: {2} + Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager + Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager diff --git a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf index 7a660c0c0a..03d09f8425 100644 --- a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf +++ b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.zh-Hans.xlf @@ -2,6 +2,11 @@ + + Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended. + Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended. + + All elements of an array must be implicitly convertible to the type of the first element, which here is a tuple of length {0} of type\n {1} \nThis element is a tuple of length {2} of type\n {3} \n 数组的所有元素必须可隐式转换为第一个元素的类型,这是一个长度为 {0} 的类型的元组\n {1} \n此元素是长度为 {2} 类型的元组\n {3} \n @@ -42,6 +47,11 @@ 如果类型同时使用 [<Sealed>] 和 [<AbstractClass>] 属性,则表示它是静态的。不允许使用带参数的构造函数。 + + This expression is an anonymous record, use {{|...|}} instead of {{...}}. + This expression is an anonymous record, use {{|...|}} instead of {{...}}. + + Duplicate parameter. The parameter '{0}' has been used more that once in this method. 参数重复。此方法中多次使用了参数“{0}”。 @@ -102,6 +112,11 @@ 如果类型同时使用 [<Sealed>] 和 [<AbstractClass>] 属性,则表示它是静态的。不允许使用实例成员。 + + The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way. + The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way. + + The 'AssemblyKeyNameAttribute' has been deprecated. Use 'AssemblyKeyFileAttribute' instead. "AssemblyKeyNameAttribute" 已被弃用。请改为使用 "AssemblyKeyFileAttribute"。 @@ -157,6 +172,11 @@ 参数 "{0}" 不匹配 + + The constraints 'unmanaged' and 'not struct' are inconsistent + The constraints 'unmanaged' and 'not struct' are inconsistent + + All branches of an 'if' expression must return values implicitly convertible to the type of the first branch, which here is a tuple of length {0} of type\n {1} \nThis branch returns a tuple of length {2} of type\n {3} \n “if” 表达式的所有分支必须返回可隐式转换为第一个分支类型的值,这是一个长度为 {0} 的类型的元组\n {1} \n此分支会返回长度为 {2} 的类型的元组\n {3} \n @@ -177,6 +197,11 @@ 程序集属性“{0}”引用了无法加载或不存在的设计器程序集“{1}”。报告的异常是: {2} - {3} + + underscore dot shorthand for accessor only function + underscore dot shorthand for accessor only function + + additional type-directed conversions 附加类型定向转换 @@ -207,6 +232,16 @@ 允许对声明类型、模块使用隐式扩展属性 + + Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way. + Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way. + + + + Constraint intersection on flexible types + Constraint intersection on flexible types + + default interface member consumption 默认接口成员消耗 @@ -252,6 +287,16 @@ 更多类型支持度量单位 + + extended fixed bindings for byref and GetPinnableReference + extended fixed bindings for byref and GetPinnableReference + + + + Extended string interpolation similar to C# raw string literals. + Extended string interpolation similar to C# raw string literals. + + fixed-index slice 3d/4d 固定索引切片 3d/4d @@ -267,11 +312,21 @@ 隐式 yield + + Improved implied argument names + Improved implied argument names + + expr[idx] notation for indexing and slicing 用于索引和切片的 expr[idx] 表示法 + + Diagnostic 3559 (warn when obj inferred) at informational level, off by default + Diagnostic 3559 (warn when obj inferred) at informational level, off by default + + support for consuming init properties 支持使用 init 属性 @@ -342,6 +397,11 @@ 包管理 + + prefer String.GetPinnableReference in fixed bindings + prefer String.GetPinnableReference in fixed bindings + + binary formatting for integers 整数的二进制格式设置 @@ -387,11 +447,21 @@ 单下划线模式 + + Allow static let bindings in union, record, struct, non-incremental-class types + Allow static let bindings in union, record, struct, non-incremental-class types + + Static members in interfaces 接口中的静态成员 + + Raises errors on incorrect indentation, allows better recovery and analysis during editing + Raises errors on incorrect indentation, allows better recovery and analysis during editing + + string interpolation 字符串内插 @@ -407,6 +477,11 @@ 支持在序列表达式中试用 + + Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq) + Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq) + + Raises warnings when an copy-and-update record expression changes all fields of a record. 复制和更新记录表达式更改记录的所有字段时引发警告。 @@ -417,6 +492,16 @@ 当 "let inline ... =" 与 [<MethodImpl(MethodImplOptions.NoInlining)>] 属性一起使用时引发警告。函数未内联。 + + Raises warnings when multiple record type matches were found during name resolution because of overlapping field names. + Raises warnings when multiple record type matches were found during name resolution because of overlapping field names. + + + + 'while!' expression + 'while!' expression + + wild card in for loop for 循环中的通配符 @@ -517,11 +602,21 @@ 用于检查对象是否属于模式或绑定中的给定类型。 + + Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression. + Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression. + + a byte string may not be interpolated 不能内插字节字符串 + + Extended string interpolation is not supported in this version of F#. + Extended string interpolation is not supported in this version of F#. + + IF-FSHARP/IF-CAML regions are no longer supported 不再支持 IF-FSHARP/IF-CAML 区域 @@ -542,11 +637,26 @@ 内插字符串无效。在单引号字符串或逐字字符串的内插表达式中不能使用单引号或逐字字符串文本。请考虑对内插表达式使用显式 "let" 绑定,或使用三重引号字符串作为外部字符串文本。 + + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content. + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content. + + + + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters. + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters. + + Invalid interpolated string. Triple quote string literals may not be used in interpolated expressions. Consider using an explicit 'let' binding for the interpolation expression. 内插字符串无效。在内插表达式中不能使用三重引号字符串文字。请考虑对内插表达式使用显式的 "let" 绑定。 + + The interpolated string contains unmatched closing braces. + The interpolated string contains unmatched closing braces. + + All elements of a list must be implicitly convertible to the type of the first element, which here is a tuple of length {0} of type\n {1} \nThis element is a tuple of length {2} of type\n {3} \n 列表的所有元素必须可隐式转换为第一个元素的类型,这是一个长度为 {0} 的类型的元组\n {1} \n此元素是长度为 {2} 类型的元组\n {3} \n @@ -682,6 +792,11 @@ 包括 F# 接口信息,默认值为文件。对于分发库必不可少。 + + Override indentation rules implied by the language version + Override indentation rules implied by the language version + + Supported language versions: 支持的语言版本: @@ -717,6 +832,11 @@ “包管理”功能需要语言版本 5.0 或更高版本 + + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. + + Invalid interpolated string. This interpolated string expression fill is empty, an expression was expected. 内插字符串无效。此内插字符串表达式填充为空,应为表达式。 @@ -742,24 +862,19 @@ 在此处或之前开始的内插逐字字符串不完整 - - Unexpected token in type definition. Expected '=' after the type '{0}'. - 类型定义中出现意外标记。类型“{0}”后应为 "="。 - - Expected a pattern after this point 此点之后应有一个模式 - + Expecting expression - 应为表达式 + Expecting expression - + Expecting pattern - 预期模式 + Expecting pattern @@ -777,6 +892,16 @@ 运算符表达式不完整(示例: a^b)或限定类型调用(示例: ^T.Name) + + Missing keyword '{0}' + Missing keyword '{0}' + + + + Expecting member body + Expecting member body + + Missing union case name Missing union case name @@ -787,6 +912,11 @@ 此成员访问权限不明确。请在对象创建周围使用括号,例如 “(new SomeType(args)).MemberName” + + _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses. + _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses. + + Unexpected end of input in 'else if' or 'elif' branch of conditional expression. Expected 'elif <expr> then <expr>' or 'else if <expr> then <expr>'. 条件表达式的 "else if" 或 "elif" 分支中的输入意外结束。应为 "elif <expr> then <expr>" 或 "else if <expr> then <expr>"。 @@ -807,6 +937,11 @@ 不支持算法“{0}” + + Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} + Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} + + A constrained generic construct occured in the resumable code specification 可恢复代码规范中发生受约束的泛型构造 @@ -887,6 +1022,16 @@ 无法确定此脚本的 .NET SDK。如果脚本在使用 "global.json" 的目录中,请确保已安装相关的 .NET SDK。出现意外错误“{0}”。 + + (Suggested name) + (Suggested name) + + + + The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope. + The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope. + + This expression has type '{0}' and is only made compatible with type '{1}' through an ambiguous implicit conversion. Consider using an explicit call to 'op_Implicit'. The applicable implicit conversions are:{2} 此表达式的类型为“{0}”,仅可通过不明确的隐式转换使其与类型“{1}”兼容。请考虑使用显式调用“op_Implicit”。适用的隐式转换为: {2} @@ -902,24 +1047,54 @@ 字段“{0}”在此记录表达式中多次出现。 - - This is the wrong anonymous record. It should have the fields {0}. - 此匿名记录不正确。它应具有字段 {0}。 + + This anonymous record does not exactly match the expected shape. Add the missing fields {0} and remove the extra fields {1}. + 此匿名记录与预期的形状不完全匹配。请添加缺少的字段 {0} 并删除额外的字段 {1}。 - - This anonymous record does not have enough fields. Add the missing fields {0}. - 此匿名记录没有足够的字段。请添加缺少的字段 {0}。 + + Invalid Anonymous Record type declaration. + 匿名记录类型声明无效。 - - This anonymous record has too many fields. Remove the extra fields {0}. - 此匿名记录的字段太多。请删除额外的字段 {0}。 + + This anonymous record should have fields {0}; but here has fields {1}. + This anonymous record should have fields {0}; but here has fields {1}. - - Invalid Anonymous Record type declaration. - 匿名记录类型声明无效。 + + This anonymous record should have fields {0}; but here has field '{1}'. + This anonymous record should have fields {0}; but here has field '{1}'. + + + + This anonymous record is missing fields {0}. + This anonymous record is missing fields {0}. + + + + This anonymous record has extra fields. Remove fields {0}. + This anonymous record has extra fields. Remove fields {0}. + + + + This anonymous record should have field '{0}' but here has fields {1}. + This anonymous record should have field '{0}' but here has fields {1}. + + + + This anonymous record should have field '{0}' but here has field '{1}'. + This anonymous record should have field '{0}' but here has field '{1}'. + + + + This anonymous record is missing field '{0}'. + This anonymous record is missing field '{0}'. + + + + This anonymous record has an extra field. Remove field '{0}'. + This anonymous record has an extra field. Remove field '{0}'. @@ -972,6 +1147,11 @@ 此表达式使用隐式转换“{0}”将类型“{1}”转换为类型“{2}”。请参阅 https://aka.ms/fsharp-implicit-convs。可使用 '#nowarn \"3391\" 禁用此警告。 + + This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses. + This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses. + + Init-only property '{0}' cannot be set outside the initialization code. See https://aka.ms/fsharp-assigning-values-to-properties-at-initialization 不能在初始化代码外部设置仅限 init 的属性 "{0}"。请参阅 https://aka.ms/fsharp-assigning-values-to-properties-at-initialization @@ -1052,6 +1232,16 @@ 必须初始化以下必需属性: {0} + + The field '{0}' appears multiple times in this record expression or pattern + The field '{0}' appears multiple times in this record expression or pattern + + + + Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements. + Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements. + + Using methods with 'NoEagerConstraintApplicationAttribute' requires /langversion:6.0 or later 将方法与 “NoEagerConstraintApplicationAttribute” 配合使用需要 /langversion:6.0 或更高版本 @@ -1087,6 +1277,11 @@ 语法“expr1[expr2]”现在保留用于索引,用作参数时不明确。请参见 https://aka.ms/fsharp-index-notation。如果使用多个扩充参数调用函数, 请在它们之间添加空格,例如“someFunction expr1 [expr2]”。 + + This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c'). + This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c'). + + The syntax '(expr1)[expr2]' is ambiguous when used as an argument. See https://aka.ms/fsharp-index-notation. If you intend indexing or slicing then you must use '(expr1).[expr2]' in argument position. If calling a function with multiple curried arguments, add a space between them, e.g. 'someFunction (expr1) [expr2]'. 语法“(expr1)[expr2]”用作参数时不明确。请参阅 https://aka.ms/fsharp-index-notation。如果要索引或切片,则必须在参数位置使用“(expr1)[expr2]”。如果使用多个扩充参数调用函数,请在它们之间添加空格,例如“someFunction (expr1)[expr2]”。 @@ -1098,8 +1293,8 @@ - The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSource' and 'Bind' methods - 仅当计算表达式生成器定义了 "{0}" 方法或适当的 "MergeSource" 和 "Bind" 方法时,才可以使用 "let! ... and! ..." 构造 + The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods + The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods @@ -1137,6 +1332,11 @@ 无法调用 "{0}",它是仅限 init 属性的资源库,请改用对象初始化。请参阅 https://aka.ms/fsharp-assigning-values-to-properties-at-initialization + + Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead. + Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead. + + This expression implicitly converts type '{0}' to type '{1}'. See https://aka.ms/fsharp-implicit-convs. 此表达式将类型“{0}”隐式转换为类型“{1}”。请参阅 https://aka.ms/fsharp-implicit-convs。 @@ -1177,6 +1377,11 @@ 内插字符串无效。{0} + + Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b). + Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b). + + '{0}' is normally used as a type constraint in generic code, e.g. \"'T when ISomeInterface<'T>\" or \"let f (x: #ISomeInterface<_>)\". See https://aka.ms/fsharp-iwsams for guidance. You can disable this warning by using '#nowarn \"3536\"' or '--nowarn:3536'. "{0}" 通常用作泛型代码中的类型约束,例如 \"'T when ISomeInterface<'T>\" or \"let f (x: #ISomeInterface<_>)\"。有关指南,请参阅 https://aka.ms/fsharp-iwsams。可以使用 '#nowarn \"3536\"' 或 '--nowarn:3536' 禁用此警告。 @@ -1573,8 +1778,8 @@ - Unrecognized option: '{0}' - 无法识别的选项:“{0}” + Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options. + Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options. @@ -3228,8 +3433,8 @@ - Multiple accessibilities given for property getter or setter - 为属性 Getter 或 Setter 给定了多个可访问性 + When the visibility for a property is specified, setting the visibility of the set or get method is not allowed. + When the visibility for a property is specified, setting the visibility of the set or get method is not allowed. @@ -3692,11 +3897,6 @@ 此记录表达式或模式的字段标签和预期类型没有唯一确定相应的记录类型 - - The field '{0}' appears twice in this record expression or pattern - 字段“{0}”在此记录表达式或模式中出现了两次 - - Unknown union case 未知的联合用例 @@ -4002,11 +4202,6 @@ 这不是有效的模式 - - Character range matches have been removed in F#. Consider using a 'when' pattern guard instead. - 在 F# 中,已删除字符范围匹配。请考虑改用“when”模式保护。 - - Illegal pattern 非法模式 @@ -4833,8 +5028,8 @@ - Static value definitions may only be used in types with a primary constructor. Consider adding arguments to the type definition, e.g. 'type X(args) = ...'. - 静态值定义只能在具有主构造函数的类型中使用。请考虑向类型定义添加参数,例如“type X(args) = ...”。 + For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'. + For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'. @@ -5953,8 +6148,8 @@ - Possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this token further or using standard formatting conventions. - 缩进可能不正确: 此标记位于从位置 {0} 开始的上下文的右侧。请尝试进一步缩进此标记,或使用标准格式设置约定。 + Unexpected syntax or possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this further.\nTo continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7. + 缩进可能不正确: 此标记位于从位置 {0} 开始的上下文的右侧。请尝试进一步缩进此标记,或使用标准格式设置约定。 @@ -7668,8 +7863,8 @@ - Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is an array, the address of a field, the address of an array element or a string' - 无效的 "fixed" 使用。"fixed" 只能用在 "use x = fixed expr" 形式的声明中,其中表达式为数组、字段的地址、数组元素或字符串的地址 + Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is one of the following: an array, the address of an array element, a string, a byref, an inref, or a type implementing GetPinnableReference() + Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is one of the following: an array, the address of an array element, a string, a byref, an inref, or a type implementing GetPinnableReference() @@ -8102,11 +8297,6 @@ 此值不是一个函数,无法应用。您是否忘记结束某个声明? - - The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. - 签名“{0}”和实现“{1}”中的参数名称不匹配。将使用签名文件中的参数名称。在进行调试或分析时这可能会导致问题。 - - An error occurred while reading the F# metadata of assembly '{0}'. A reserved construct was utilized. You may need to upgrade your F# compiler or use an earlier version of the assembly that doesn't make use of a specific construct. 读取程序集“{0}”的 F# 元数据时出错。使用了保留的构造。可能需要升级 F# 编译器或使用不用特定构造的较早版本的程序集。 @@ -8242,14 +8432,9 @@ 两个匿名记录类型来自不同的程序集“{0}”和“{1}” - - This anonymous record does not exactly match the expected shape. Add the missing fields {0} and remove the extra fields {1}. - 此匿名记录与预期的形状不完全匹配。请添加缺少的字段 {0} 并删除额外的字段 {1}。 - - - Cannot call the byref extension method '{0}. The first parameter requires the value to be mutable or a non-readonly byref type. - 无法调用 byref 扩展方法 "{0}"。第一个参数要求该值是可变的或非只读的 byref 类型。 + Cannot call the byref extension method '{0}. 'this' parameter requires the value to be mutable or a non-readonly byref type. + 无法调用 byref 扩展方法 "{0}"。第一个参数要求该值是可变的或非只读的 byref 类型。 @@ -8338,8 +8523,8 @@ - Package manager key '{0}' was not registered in {1}. Currently registered: {2} - 未在 {1} 中注册包管理器密钥“{0}”。当前注册: {2} + Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager + Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager diff --git a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf index 105c38cd0b..60a8c88558 100644 --- a/src/fcs-fable/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf +++ b/src/fcs-fable/src/Compiler/xlf/FSComp.txt.zh-Hant.xlf @@ -2,6 +2,11 @@ + + Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended. + Interpolated string contains untyped identifiers. Adding typed format specifiers is recommended. + + All elements of an array must be implicitly convertible to the type of the first element, which here is a tuple of length {0} of type\n {1} \nThis element is a tuple of length {2} of type\n {3} \n 陣列的所有元素必須以隱含方式轉換成第一個元素的類型,這是類型為\n {1} \n的元組長度 {0}此元素是類型為\n {3} \n的元組長度{2} @@ -42,6 +47,11 @@ 如果類型同時使用 [<Sealed>] 和 [<AbstractClass>] 屬性,表示其為靜態。不允許具有引數的建構函式。 + + This expression is an anonymous record, use {{|...|}} instead of {{...}}. + This expression is an anonymous record, use {{|...|}} instead of {{...}}. + + Duplicate parameter. The parameter '{0}' has been used more that once in this method. 重複的參數。參數 '{0}' 在此方法中使用多次。 @@ -102,6 +112,11 @@ 如果類型同時使用 [<Sealed>] 和 [<AbstractClass>] 屬性,表示其為靜態。不允許執行個體成員。 + + The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way. + The member or function '{0}' has the 'TailCallAttribute' attribute, but is not being used in a tail recursive way. + + The 'AssemblyKeyNameAttribute' has been deprecated. Use 'AssemblyKeyFileAttribute' instead. 'AssemblyKeyNameAttribute' 已淘汰。請改用 'AssemblyKeyFileAttribute'。 @@ -157,6 +172,11 @@ 引數 '{0}' 不相符 + + The constraints 'unmanaged' and 'not struct' are inconsistent + The constraints 'unmanaged' and 'not struct' are inconsistent + + All branches of an 'if' expression must return values implicitly convertible to the type of the first branch, which here is a tuple of length {0} of type\n {1} \nThis branch returns a tuple of length {2} of type\n {3} \n 'if' 運算式的所有分支都傳回可隱含轉換為第一個分支的類型的值,這是類型為\n {1} \n的元組長度 {0}此分支傳回的是類型為\n {3} \n的元組長度 {2} @@ -177,6 +197,11 @@ 無法載入組件屬性 '{0}' 參考的設計工具組件 '{1}' 或其不存在。回報的例外狀況: {2} - {3} + + underscore dot shorthand for accessor only function + underscore dot shorthand for accessor only function + + additional type-directed conversions 其他類型導向轉換 @@ -207,6 +232,16 @@ 允許宣告類型、模組上的隱含擴充屬性 + + Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way. + Raises warnings if a member or function has the 'TailCall' attribute, but is not being used in a tail recursive way. + + + + Constraint intersection on flexible types + Constraint intersection on flexible types + + default interface member consumption 預設介面成員使用 @@ -252,6 +287,16 @@ 更多支援測量單位的類型 + + extended fixed bindings for byref and GetPinnableReference + extended fixed bindings for byref and GetPinnableReference + + + + Extended string interpolation similar to C# raw string literals. + Extended string interpolation similar to C# raw string literals. + + fixed-index slice 3d/4d 固定索引切割 3d/4d @@ -267,11 +312,21 @@ 隱含 yield + + Improved implied argument names + Improved implied argument names + + expr[idx] notation for indexing and slicing 用於編製索引和分割的 expr[idx] 註釋 + + Diagnostic 3559 (warn when obj inferred) at informational level, off by default + Diagnostic 3559 (warn when obj inferred) at informational level, off by default + + support for consuming init properties 支援使用 init 屬性 @@ -342,6 +397,11 @@ 套件管理 + + prefer String.GetPinnableReference in fixed bindings + prefer String.GetPinnableReference in fixed bindings + + binary formatting for integers 整數的二進位格式化 @@ -387,11 +447,21 @@ 單一底線模式 + + Allow static let bindings in union, record, struct, non-incremental-class types + Allow static let bindings in union, record, struct, non-incremental-class types + + Static members in interfaces 介面中的靜態成員 + + Raises errors on incorrect indentation, allows better recovery and analysis during editing + Raises errors on incorrect indentation, allows better recovery and analysis during editing + + string interpolation 字串內插補點 @@ -407,6 +477,11 @@ 支援循序運算式中的 try-with + + Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq) + Interop between C#'s and F#'s unmanaged generic constraint (emit additional modreq) + + Raises warnings when an copy-and-update record expression changes all fields of a record. 當複製和更新記錄運算式變更記錄的所有欄位時引發警告。 @@ -417,6 +492,16 @@ 當 'let inline ... =' 與 [<MethodImpl(MethodImplOptions.NoInlining)>] 屬性一起使用時引發警告。函數未內嵌。 + + Raises warnings when multiple record type matches were found during name resolution because of overlapping field names. + Raises warnings when multiple record type matches were found during name resolution because of overlapping field names. + + + + 'while!' expression + 'while!' expression + + wild card in for loop for 迴圈中的萬用字元 @@ -517,11 +602,21 @@ 用來檢查物件是否位於模式或綁定中的給定類型。 + + Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression. + Used in computation expressions to introduce a looping construct where the condition is the result of another computation expression. + + a byte string may not be interpolated 位元組字串不能是插補字串 + + Extended string interpolation is not supported in this version of F#. + Extended string interpolation is not supported in this version of F#. + + IF-FSHARP/IF-CAML regions are no longer supported 不再支援 IF-FSHARP/IF-CAML 區域 @@ -542,11 +637,26 @@ 插補字串無效。單引號或逐字字串常值不能用於單引號或逐字字串的插補運算式中。請考慮為內插補點運算式使用明確的 'let' 繫結,或使用三引號字串作為外部字串常值。 + + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content. + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive opening braces as content. + + + + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters. + The interpolated triple quoted string literal does not start with enough '$' characters to allow this many consecutive '%' characters. + + Invalid interpolated string. Triple quote string literals may not be used in interpolated expressions. Consider using an explicit 'let' binding for the interpolation expression. 插補字串無效。三引號字串常值不可用於插補運算式。請考慮為內插補點運算式使用明確的 'let' 繫結。 + + The interpolated string contains unmatched closing braces. + The interpolated string contains unmatched closing braces. + + All elements of a list must be implicitly convertible to the type of the first element, which here is a tuple of length {0} of type\n {1} \nThis element is a tuple of length {2} of type\n {3} \n 清單的所有元素必須以隱含方式轉換成第一個元素的類型,這是類型為\n {1} \n的元組長度 {0}此元素是類型為\n {3} \n的元組長度 {2} @@ -682,6 +792,11 @@ 包含 F# 介面資訊,預設值為檔案。發佈程式庫的基本功能。 + + Override indentation rules implied by the language version + Override indentation rules implied by the language version + + Supported language versions: 支援的語言版本: @@ -717,6 +832,11 @@ 「套件管理」功能需要語言版本 5.0 或更新版本 + + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. + Constraint intersection syntax may only be used with flexible types, e.g. '#IDisposable & #ISomeInterface'. + + Invalid interpolated string. This interpolated string expression fill is empty, an expression was expected. 插補字串無效。此插補字串運算式填滿為空白,必須有運算式。 @@ -742,24 +862,19 @@ 未完成的插補逐字字串於此處或之前開始 - - Unexpected token in type definition. Expected '=' after the type '{0}'. - 型別定義中出現非預期的權杖。類型 '{0}' 之後應該要有 '='。 - - Expected a pattern after this point 在這個點之後必須有模式 - + Expecting expression - 必須是運算式 + Expecting expression - + Expecting pattern - 必須是模式 + Expecting pattern @@ -777,6 +892,16 @@ 不完整的運算子運算式 (範例 a^b) 或限定類型調用 (範例: ^T.Name) + + Missing keyword '{0}' + Missing keyword '{0}' + + + + Expecting member body + Expecting member body + + Missing union case name Missing union case name @@ -787,6 +912,11 @@ 此成員存取不明確。請在物件建立前後加上括弧,例如「(new SomeType(args)).MemberName」 + + _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses. + _. shorthand syntax for lambda functions can only be used with atomic expressions. That means expressions with no whitespace unless enclosed in parentheses. + + Unexpected end of input in 'else if' or 'elif' branch of conditional expression. Expected 'elif <expr> then <expr>' or 'else if <expr> then <expr>'. 條件運算式的 'else if' 或 'elif' 分支中出現未預期的輸入結尾。 預期為 'elif <expr> then <expr>' 或 'else if <expr> then <expr>'. @@ -807,6 +937,11 @@ 不支援演算法 '{0}' + + Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} + Newly added pickle state cannot be used in FSharp.Core, since it must be working in older compilers+tooling as well. The time window is at least 3 years after feature introduction. Violation: {0} . Context: \n {1} + + A constrained generic construct occured in the resumable code specification 可繼續的程式碼規格中出現了限制式泛型建構 @@ -887,6 +1022,16 @@ 無法判斷這個指令碼的 .NET SDK。如果指令碼位於使用 'global.json' 的目錄中,請確認已安裝相關的 .NET SDK。未預期的錯誤 '{0}'。 + + (Suggested name) + (Suggested name) + + + + The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope. + The meaning of _ is ambiguous here. It cannot be used for a discarded variable and a function shorthand in the same scope. + + This expression has type '{0}' and is only made compatible with type '{1}' through an ambiguous implicit conversion. Consider using an explicit call to 'op_Implicit'. The applicable implicit conversions are:{2} 此運算式的類型為 '{0}',僅可透過不明確的隱含轉換使其與類型 '{1}' 相容。請考慮使用明確呼叫 'op_Implicit'。適用的隱含轉換為: {2} @@ -902,24 +1047,54 @@ 欄位 '{0}' 在這個記錄運算式中出現多次。 - - This is the wrong anonymous record. It should have the fields {0}. - 此為錯誤的匿名記錄。其應有欄位 {0}。 + + This anonymous record does not exactly match the expected shape. Add the missing fields {0} and remove the extra fields {1}. + 此匿名記錄與預期的圖形未完全相符。請新增缺少的欄位 {0},並移除額外的欄位 {1}。 - - This anonymous record does not have enough fields. Add the missing fields {0}. - 此匿名記錄沒有足夠的欄位。請新增缺少的欄位 {0}。 + + Invalid Anonymous Record type declaration. + 匿名記錄型別宣告無效。 - - This anonymous record has too many fields. Remove the extra fields {0}. - 此匿名記錄有太多欄位。請移除額外的欄位 {0}。 + + This anonymous record should have fields {0}; but here has fields {1}. + This anonymous record should have fields {0}; but here has fields {1}. - - Invalid Anonymous Record type declaration. - 匿名記錄型別宣告無效。 + + This anonymous record should have fields {0}; but here has field '{1}'. + This anonymous record should have fields {0}; but here has field '{1}'. + + + + This anonymous record is missing fields {0}. + This anonymous record is missing fields {0}. + + + + This anonymous record has extra fields. Remove fields {0}. + This anonymous record has extra fields. Remove fields {0}. + + + + This anonymous record should have field '{0}' but here has fields {1}. + This anonymous record should have field '{0}' but here has fields {1}. + + + + This anonymous record should have field '{0}' but here has field '{1}'. + This anonymous record should have field '{0}' but here has field '{1}'. + + + + This anonymous record is missing field '{0}'. + This anonymous record is missing field '{0}'. + + + + This anonymous record has an extra field. Remove field '{0}'. + This anonymous record has an extra field. Remove field '{0}'. @@ -972,6 +1147,11 @@ 此運算式使用隱含轉換 '{0}' 將類型 '{1}' 轉換為類型 '{2}'。請參閱 https://aka.ms/fsharp-implicit-convs。可使用 '#nowarn \"3391\" 停用此警告。 + + This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses. + This is a function definition that shadows a union case. If this is what you want, ignore or suppress this warning. If you want it to be a union case deconstruction, add parentheses. + + Init-only property '{0}' cannot be set outside the initialization code. See https://aka.ms/fsharp-assigning-values-to-properties-at-initialization 初始化程式碼之外不能設定僅初始化屬性 '{0}'。請參閱 https://aka.ms/fsharp-assigning-values-to-properties-at-initialization @@ -1052,6 +1232,16 @@ 下列必要的屬性必須初始化:{0} + + The field '{0}' appears multiple times in this record expression or pattern + The field '{0}' appears multiple times in this record expression or pattern + + + + Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements. + Multiple type matches were found:\n{0}\nThe type '{1}' was used. Due to the overlapping field names\n{2}\nconsider using type annotations or change the order of open statements. + + Using methods with 'NoEagerConstraintApplicationAttribute' requires /langversion:6.0 or later 使用具有 'NoEagerConstraintApplicationAttribute' 的方法需要 /langversion:6.0 或更新版本 @@ -1087,6 +1277,11 @@ 語法 'expr1[expr2]' 現已為編製索引保留,但用作引數時不明確。請參閱 https://aka.ms/fsharp-index-notation。如果要呼叫具有多個調用引數的函式,請在它們之間新增空格,例如 'someFunction expr1 [expr2]'。 + + This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c'). + This override takes a tuple instead of multiple arguments. Try to add an additional layer of parentheses at the method definition (e.g. 'member _.Foo((x, y))'), or remove parentheses at the abstract method declaration (e.g. 'abstract member Foo: 'a * 'b -> 'c'). + + The syntax '(expr1)[expr2]' is ambiguous when used as an argument. See https://aka.ms/fsharp-index-notation. If you intend indexing or slicing then you must use '(expr1).[expr2]' in argument position. If calling a function with multiple curried arguments, add a space between them, e.g. 'someFunction (expr1) [expr2]'. 語法 '(expr1)[expr2]' 用作引數時不明確。請參閱 https://aka.ms/fsharp-index-notation。如果您要編製索引或切割,則必須在引數位置使用 '(expr1).[expr2]'。如果要呼叫具有多個調用引數的函式,請在它們之間新增空格,例如 'someFunction (expr1) [expr2]'。 @@ -1098,8 +1293,8 @@ - The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSource' and 'Bind' methods - 只有在計算運算式產生器定義 '{0}' 方法或正確的 'MergeSource' 和 'Bind' 方法時,才可使用 'let! ... and! ...' 建構 + The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods + The 'let! ... and! ...' construct may only be used if the computation expression builder defines either a '{0}' method or appropriate 'MergeSources' and 'Bind' methods @@ -1137,6 +1332,11 @@ 無法呼叫 '{0}' - 僅初始化屬性的 setter,請改為使用物件初始化。請參閱 https://aka.ms/fsharp-assigning-values-to-properties-at-initialization + + Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead. + Static bindings cannot be added to extrinsic augmentations. Consider using a 'static member' instead. + + This expression implicitly converts type '{0}' to type '{1}'. See https://aka.ms/fsharp-implicit-convs. 此運算式將類型 '{0}' 隱含轉換為類型 '{1}'。請參閱 https://aka.ms/fsharp-implicit-convs。 @@ -1177,6 +1377,11 @@ 插補字串無效。{0} + + Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b). + Unexpected function type in union case field definition. If you intend the field to be a function, consider wrapping the function signature with parens, e.g. | Case of a -> b into | Case of (a -> b). + + '{0}' is normally used as a type constraint in generic code, e.g. \"'T when ISomeInterface<'T>\" or \"let f (x: #ISomeInterface<_>)\". See https://aka.ms/fsharp-iwsams for guidance. You can disable this warning by using '#nowarn \"3536\"' or '--nowarn:3536'. '{0}' 通常做為一般程式碼中的類型限制式,例如 \"'T when ISomeInterface<'T>\" 或 \"let f (x: #ISomeInterface<_>)\"。請參閱 https://aka.ms/fsharp-iwsams 以尋求指引。您可以使用 '#nowarn \"3536\"' 或 '--nowarn:3536' 來停用此警告。 @@ -1573,8 +1778,8 @@ - Unrecognized option: '{0}' - 選項無法辨認: '{0}' + Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options. + Unrecognized option: '{0}'. Use '--help' to learn about recognized command line options. @@ -3228,8 +3433,8 @@ - Multiple accessibilities given for property getter or setter - 為屬性 getter 或 setter 指定了多個存取範圍 + When the visibility for a property is specified, setting the visibility of the set or get method is not allowed. + When the visibility for a property is specified, setting the visibility of the set or get method is not allowed. @@ -3692,11 +3897,6 @@ 這個記錄運算式或模式的欄位標籤和預期類型無法唯一決定對應的記錄類型 - - The field '{0}' appears twice in this record expression or pattern - 欄位 '{0}' 在這個記錄運算式或模式中出現兩次 - - Unknown union case 未知的聯集 @@ -4002,11 +4202,6 @@ 這不是有效的模式 - - Character range matches have been removed in F#. Consider using a 'when' pattern guard instead. - 字元範圍比對已從 F# 中移除。請考慮改用 'when' 模式成立條件。 - - Illegal pattern 不合法的模式 @@ -4833,8 +5028,8 @@ - Static value definitions may only be used in types with a primary constructor. Consider adding arguments to the type definition, e.g. 'type X(args) = ...'. - 靜態值定義只能用於含有主要建構函式的類型中。請考慮在類型定義加入引數,例如 'type X(args) = ...'。 + For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'. + For F#7 and lower, static value definitions may only be used in types with a primary constructor ('type X(args) = ...'). To enable them in all other types, use language version 'preview'. @@ -5953,8 +6148,8 @@ - Possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this token further or using standard formatting conventions. - 縮排可能不正確: 這個語彙基元於內容的位置 {0} 處開始越位。請嘗試進一步縮排這個語彙基元,或使用標準的格式設定慣例。 + Unexpected syntax or possible incorrect indentation: this token is offside of context started at position {0}. Try indenting this further.\nTo continue using non-conforming indentation, pass the '--strict-indentation-' flag to the compiler, or set the language version to F# 7. + 縮排可能不正確: 這個語彙基元於內容的位置 {0} 處開始越位。請嘗試進一步縮排這個語彙基元,或使用標準的格式設定慣例。 @@ -7668,8 +7863,8 @@ - Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is an array, the address of a field, the address of an array element or a string' - 使用 'fixed' 無效。'fixed' 僅能用於格式為 'use x = fixed expr' 的宣告中,其中運算式為陣列、欄位的位址、陣列元素的位址或字串 + Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is one of the following: an array, the address of an array element, a string, a byref, an inref, or a type implementing GetPinnableReference() + Invalid use of 'fixed'. 'fixed' may only be used in a declaration of the form 'use x = fixed expr' where the expression is one of the following: an array, the address of an array element, a string, a byref, an inref, or a type implementing GetPinnableReference() @@ -8102,11 +8297,6 @@ 這個值不是函式,無法套用。您是不是忘記終止宣告了? - - The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. - 特徵標記 '{0}' 和實作 '{1}' 中的引數名稱不相符。將會使用特徵標記檔案中的引數名稱。這可能會在偵錯或分析時造成問題。 - - An error occurred while reading the F# metadata of assembly '{0}'. A reserved construct was utilized. You may need to upgrade your F# compiler or use an earlier version of the assembly that doesn't make use of a specific construct. 讀取組件 '{0}' 的 F# 中繼資料時發生錯誤。已使用保留的建構。建議您升級 F# 編譯器,或使用不會用特定建構的舊版組件。 @@ -8242,14 +8432,9 @@ 有兩個匿名的記錄類型來自不同的組件 '{0}' 和 '{1}' - - This anonymous record does not exactly match the expected shape. Add the missing fields {0} and remove the extra fields {1}. - 此匿名記錄與預期的圖形未完全相符。請新增缺少的欄位 {0},並移除額外的欄位 {1}。 - - - Cannot call the byref extension method '{0}. The first parameter requires the value to be mutable or a non-readonly byref type. - 無法呼叫 byref 擴充方法 '{0}。第一個參數需要值可變動,或為非唯讀 byref 類型。 + Cannot call the byref extension method '{0}. 'this' parameter requires the value to be mutable or a non-readonly byref type. + 無法呼叫 byref 擴充方法 '{0}。第一個參數需要值可變動,或為非唯讀 byref 類型。 @@ -8338,8 +8523,8 @@ - Package manager key '{0}' was not registered in {1}. Currently registered: {2} - 套件管理員金鑰 '{0}' 未在 {1} 中註冊。目前已註冊: {2} + Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager + Package manager key '{0}' was not registered in {1}. Currently registered: {2}. To learn more about extensions, visit: https://aka.ms/dotnetdepmanager diff --git a/src/fcs-fable/src/Compiler/xlf/FSStrings.cs.xlf b/src/fcs-fable/src/Compiler/xlf/FSStrings.cs.xlf index 7ebb3c64f7..dfd401a123 100644 --- a/src/fcs-fable/src/Compiler/xlf/FSStrings.cs.xlf +++ b/src/fcs-fable/src/Compiler/xlf/FSStrings.cs.xlf @@ -2,6 +2,11 @@ + + The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. + The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. + + Type mismatch. Expecting a tuple of length {0} of type\n {1} \nbut given a tuple of length {2} of type\n {3} {4}\n Neshoda typů Očekává se řazená kolekce členů o délce {0} typu\n {1} \nale odevzdala se řazená kolekce členů o délce {2} typu\n {3}{4}\n @@ -42,6 +47,11 @@ interpolovaný řetězec (část) + + keyword 'while!' + keyword 'while!' + + . See also {0}. . Viz taky {0}. diff --git a/src/fcs-fable/src/Compiler/xlf/FSStrings.de.xlf b/src/fcs-fable/src/Compiler/xlf/FSStrings.de.xlf index 69473239ef..4a475b7d99 100644 --- a/src/fcs-fable/src/Compiler/xlf/FSStrings.de.xlf +++ b/src/fcs-fable/src/Compiler/xlf/FSStrings.de.xlf @@ -2,6 +2,11 @@ + + The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. + The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. + + Type mismatch. Expecting a tuple of length {0} of type\n {1} \nbut given a tuple of length {2} of type\n {3} {4}\n Typenkonflikt. Es wurde ein Tupel der Länge {0} des Typs\n {1} \nerwartet, aber ein Tupel der Länge {2} des Typs\n {3}{4}\n angegeben. @@ -42,6 +47,11 @@ Interpolierte Zeichenfolge (Teil) + + keyword 'while!' + keyword 'while!' + + . See also {0}. . Siehe auch "{0}". diff --git a/src/fcs-fable/src/Compiler/xlf/FSStrings.es.xlf b/src/fcs-fable/src/Compiler/xlf/FSStrings.es.xlf index 2b06bc30aa..0cf35d6660 100644 --- a/src/fcs-fable/src/Compiler/xlf/FSStrings.es.xlf +++ b/src/fcs-fable/src/Compiler/xlf/FSStrings.es.xlf @@ -2,6 +2,11 @@ + + The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. + The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. + + Type mismatch. Expecting a tuple of length {0} of type\n {1} \nbut given a tuple of length {2} of type\n {3} {4}\n Error de coincidencia de tipos. Se espera una tupla de longitud {0} de tipo\n {1} \nperero se ha proporcionado una tupla de longitud {2} de tipo\n {3}{4}\n @@ -42,6 +47,11 @@ cadena interpolada (parte) + + keyword 'while!' + keyword 'while!' + + . See also {0}. . Vea también {0}. diff --git a/src/fcs-fable/src/Compiler/xlf/FSStrings.fr.xlf b/src/fcs-fable/src/Compiler/xlf/FSStrings.fr.xlf index cce4c1059b..7511927665 100644 --- a/src/fcs-fable/src/Compiler/xlf/FSStrings.fr.xlf +++ b/src/fcs-fable/src/Compiler/xlf/FSStrings.fr.xlf @@ -2,6 +2,11 @@ + + The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. + The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. + + Type mismatch. Expecting a tuple of length {0} of type\n {1} \nbut given a tuple of length {2} of type\n {3} {4}\n Incompatibilité de type. Tuple de longueur attendu {0} de type\n {1} \nmais tuple de longueur {2} de type\n {3}{4}\n @@ -42,6 +47,11 @@ chaîne interpolée (partie) + + keyword 'while!' + keyword 'while!' + + . See also {0}. . Voir aussi {0}. diff --git a/src/fcs-fable/src/Compiler/xlf/FSStrings.it.xlf b/src/fcs-fable/src/Compiler/xlf/FSStrings.it.xlf index f2f77ac5fe..c107a1b23a 100644 --- a/src/fcs-fable/src/Compiler/xlf/FSStrings.it.xlf +++ b/src/fcs-fable/src/Compiler/xlf/FSStrings.it.xlf @@ -2,6 +2,11 @@ + + The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. + The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. + + Type mismatch. Expecting a tuple of length {0} of type\n {1} \nbut given a tuple of length {2} of type\n {3} {4}\n Tipo non corrispondente. È prevista una tupla di lunghezza {0} di tipo\n {1} \n, ma è stata specificata una tupla di lunghezza {2} di tipo\n {3}{4}\n @@ -42,6 +47,11 @@ stringa interpolata (parte) + + keyword 'while!' + keyword 'while!' + + . See also {0}. . Vedere anche {0}. diff --git a/src/fcs-fable/src/Compiler/xlf/FSStrings.ja.xlf b/src/fcs-fable/src/Compiler/xlf/FSStrings.ja.xlf index fec45d4eb0..ab10c6411c 100644 --- a/src/fcs-fable/src/Compiler/xlf/FSStrings.ja.xlf +++ b/src/fcs-fable/src/Compiler/xlf/FSStrings.ja.xlf @@ -2,6 +2,11 @@ + + The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. + The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. + + Type mismatch. Expecting a tuple of length {0} of type\n {1} \nbut given a tuple of length {2} of type\n {3} {4}\n 型が一致しません。型の長さ {0} のタプルが必要です\n {1} \nただし、型の長さ {2} のタプルが指定された場合\n {3}{4}\n @@ -42,6 +47,11 @@ 補間された文字列 (部分) + + keyword 'while!' + keyword 'while!' + + . See also {0}. 。{0} も参照してください。 diff --git a/src/fcs-fable/src/Compiler/xlf/FSStrings.ko.xlf b/src/fcs-fable/src/Compiler/xlf/FSStrings.ko.xlf index c16c466ebc..90fa1ca997 100644 --- a/src/fcs-fable/src/Compiler/xlf/FSStrings.ko.xlf +++ b/src/fcs-fable/src/Compiler/xlf/FSStrings.ko.xlf @@ -2,6 +2,11 @@ + + The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. + The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. + + Type mismatch. Expecting a tuple of length {0} of type\n {1} \nbut given a tuple of length {2} of type\n {3} {4}\n 유형 불일치. 형식이 \n {1}이고 길이가 {0}인 튜플이 필요합니다. \n그러나 형식이 \n {3}이고 길이가 {2}인 튜플이 제공되었습니다.{4}\n @@ -42,6 +47,11 @@ 보간 문자열(부분) + + keyword 'while!' + keyword 'while!' + + . See also {0}. {0}도 참조하세요. diff --git a/src/fcs-fable/src/Compiler/xlf/FSStrings.pl.xlf b/src/fcs-fable/src/Compiler/xlf/FSStrings.pl.xlf index 385be4e2a2..ba1c73e306 100644 --- a/src/fcs-fable/src/Compiler/xlf/FSStrings.pl.xlf +++ b/src/fcs-fable/src/Compiler/xlf/FSStrings.pl.xlf @@ -2,6 +2,11 @@ + + The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. + The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. + + Type mismatch. Expecting a tuple of length {0} of type\n {1} \nbut given a tuple of length {2} of type\n {3} {4}\n Niezgodność. Oczekiwano krotki o długości {0} typu\n {1} \nale otrzymano krotkę o długości {2} typu\n {3}{4}\n @@ -42,6 +47,11 @@ ciąg interpolowany (część) + + keyword 'while!' + keyword 'while!' + + . See also {0}. . Zobacz też {0}. diff --git a/src/fcs-fable/src/Compiler/xlf/FSStrings.pt-BR.xlf b/src/fcs-fable/src/Compiler/xlf/FSStrings.pt-BR.xlf index 8fa1e1ee33..d4a5fe07d6 100644 --- a/src/fcs-fable/src/Compiler/xlf/FSStrings.pt-BR.xlf +++ b/src/fcs-fable/src/Compiler/xlf/FSStrings.pt-BR.xlf @@ -2,6 +2,11 @@ + + The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. + The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. + + Type mismatch. Expecting a tuple of length {0} of type\n {1} \nbut given a tuple of length {2} of type\n {3} {4}\n Tipo incompatível. Esperando uma tupla de comprimento {0} do tipo\n {1} \nmas recebeu uma tupla de comprimento {2} do tipo\n {3}{4}\n @@ -42,6 +47,11 @@ cadeia de caracteres interpolada (parte) + + keyword 'while!' + keyword 'while!' + + . See also {0}. . Consulte também {0}. diff --git a/src/fcs-fable/src/Compiler/xlf/FSStrings.ru.xlf b/src/fcs-fable/src/Compiler/xlf/FSStrings.ru.xlf index 27b87f0c6b..5a1bd97a58 100644 --- a/src/fcs-fable/src/Compiler/xlf/FSStrings.ru.xlf +++ b/src/fcs-fable/src/Compiler/xlf/FSStrings.ru.xlf @@ -2,6 +2,11 @@ + + The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. + The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. + + Type mismatch. Expecting a tuple of length {0} of type\n {1} \nbut given a tuple of length {2} of type\n {3} {4}\n Несоответствие типов. Ожидается кортеж длиной {0} типа\n {1}, \nно предоставлен кортеж длиной {2} типа\n {3}{4}\n @@ -42,6 +47,11 @@ интерполированная строка (часть) + + keyword 'while!' + keyword 'while!' + + . See also {0}. . См. также {0}. diff --git a/src/fcs-fable/src/Compiler/xlf/FSStrings.tr.xlf b/src/fcs-fable/src/Compiler/xlf/FSStrings.tr.xlf index fe1b018c46..d27bebc590 100644 --- a/src/fcs-fable/src/Compiler/xlf/FSStrings.tr.xlf +++ b/src/fcs-fable/src/Compiler/xlf/FSStrings.tr.xlf @@ -2,6 +2,11 @@ + + The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. + The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. + + Type mismatch. Expecting a tuple of length {0} of type\n {1} \nbut given a tuple of length {2} of type\n {3} {4}\n Tür uyuşmazlığı. {0} uzunluğunda türü\n {1} \nolan bir demet bekleniyordu ancak {2} uzunluğunda türü\n {3}{4}\nolan bir demet verildi @@ -42,6 +47,11 @@ düz metin arasına kod eklenmiş dize (parça) + + keyword 'while!' + keyword 'while!' + + . See also {0}. . Ayrıca bkz. {0}. diff --git a/src/fcs-fable/src/Compiler/xlf/FSStrings.zh-Hans.xlf b/src/fcs-fable/src/Compiler/xlf/FSStrings.zh-Hans.xlf index 89cac4d4d7..986736b401 100644 --- a/src/fcs-fable/src/Compiler/xlf/FSStrings.zh-Hans.xlf +++ b/src/fcs-fable/src/Compiler/xlf/FSStrings.zh-Hans.xlf @@ -2,6 +2,11 @@ + + The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. + The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. + + Type mismatch. Expecting a tuple of length {0} of type\n {1} \nbut given a tuple of length {2} of type\n {3} {4}\n 类型不匹配。应为长度为 {0} 的类型的元组\n {1} \n但提供了长度为 {2} 的类型的元组\n {3}{4}\n @@ -42,6 +47,11 @@ 内插字符串(部分) + + keyword 'while!' + keyword 'while!' + + . See also {0}. 。请参见 {0}。 diff --git a/src/fcs-fable/src/Compiler/xlf/FSStrings.zh-Hant.xlf b/src/fcs-fable/src/Compiler/xlf/FSStrings.zh-Hant.xlf index 4e60f07d0a..27727b0b03 100644 --- a/src/fcs-fable/src/Compiler/xlf/FSStrings.zh-Hant.xlf +++ b/src/fcs-fable/src/Compiler/xlf/FSStrings.zh-Hant.xlf @@ -2,6 +2,11 @@ + + The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. + The argument names in the signature '{0}' and implementation '{1}' do not match. The argument name from the signature file will be used. This may cause problems when debugging or profiling. + + Type mismatch. Expecting a tuple of length {0} of type\n {1} \nbut given a tuple of length {2} of type\n {3} {4}\n 類型不符。必須是類型為\n {1} \n 的元組長度 {0},但提供的是類型為\n {3}{4}\n 的元組長度 {2} @@ -42,6 +47,11 @@ 插補字串 (部分) + + keyword 'while!' + keyword 'while!' + + . See also {0}. 。請參閱 {0}。 diff --git a/src/fcs-fable/test/bench/fcs-fable-bench.fsproj b/src/fcs-fable/test/bench/fcs-fable-bench.fsproj index f9df9bdeba..a7ab44e1ac 100644 --- a/src/fcs-fable/test/bench/fcs-fable-bench.fsproj +++ b/src/fcs-fable/test/bench/fcs-fable-bench.fsproj @@ -2,7 +2,7 @@ Exe - net7.0 + net8.0 $(DefineConstants);DOTNET_FILE_SYSTEM @@ -19,9 +19,9 @@ - + - + diff --git a/src/fcs-fable/test/fcs-fable-test.fsproj b/src/fcs-fable/test/fcs-fable-test.fsproj index ac2f779897..bcc9b5414e 100644 --- a/src/fcs-fable/test/fcs-fable-test.fsproj +++ b/src/fcs-fable/test/fcs-fable-test.fsproj @@ -2,7 +2,7 @@ Exe - net7.0 + net8.0 $(DefineConstants);DOTNET_FILE_SYSTEM @@ -18,7 +18,7 @@ - +