From 8d3989f528a0c39df82101fe215170c27e37f601 Mon Sep 17 00:00:00 2001 From: Varun Gandhi Date: Wed, 18 Sep 2024 11:18:42 -0400 Subject: [PATCH] feat: Minimize allocations in SCIP symbol parsing. See PR for benchmarks. --- .github/workflows/golang.yml | 2 +- .tool-versions | 2 +- Development.md | 19 + bindings/go/scip/assertions.go | 9 + bindings/go/scip/assertions_noop.go | 6 + bindings/go/scip/internal/compat_test.go | 63 + .../go/scip/internal/old_symbol_parser.go | 239 +++ .../go/scip/internal/shared/sample_indexes.go | 37 + bindings/go/scip/internal/shared/shared.go | 17 + bindings/go/scip/scip.pb.go | 5 +- bindings/go/scip/sort.go | 3 +- bindings/go/scip/sort_test.go | 2 +- bindings/go/scip/speedtest/speedtest_main.go | 196 ++ bindings/go/scip/symbol.go | 269 +-- bindings/go/scip/symbol_formatter.go | 4 +- bindings/go/scip/symbol_parser.go | 586 ++++++ bindings/go/scip/symbol_test.go | 51 +- bindings/haskell/src/Proto/Scip.hs | 1770 ++++++++-------- bindings/rust/src/generated/scip.rs | 1811 +++++++++-------- dev/sample_indexes/.gitignore | 3 + dev/sample_indexes/indexes-metadata.json | 40 + docs/scip.md | 6 +- go.mod | 13 +- go.sum | 28 +- scip.proto | 2 + 25 files changed, 3136 insertions(+), 2047 deletions(-) create mode 100644 bindings/go/scip/assertions.go create mode 100644 bindings/go/scip/assertions_noop.go create mode 100644 bindings/go/scip/internal/compat_test.go create mode 100644 bindings/go/scip/internal/old_symbol_parser.go create mode 100644 bindings/go/scip/internal/shared/sample_indexes.go create mode 100644 bindings/go/scip/internal/shared/shared.go create mode 100644 bindings/go/scip/speedtest/speedtest_main.go create mode 100644 bindings/go/scip/symbol_parser.go create mode 100644 dev/sample_indexes/.gitignore create mode 100644 dev/sample_indexes/indexes-metadata.json diff --git a/.github/workflows/golang.yml b/.github/workflows/golang.yml index 9de5a038..19632ae2 100644 --- a/.github/workflows/golang.yml +++ b/.github/workflows/golang.yml @@ -18,4 +18,4 @@ jobs: - uses: ./.github/actions/asdf with: golang: true - - run: go test ./... -v + - run: go test ./... -v -tags asserts diff --git a/.tool-versions b/.tool-versions index 073ee1d7..04a11206 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,4 +1,4 @@ -golang 1.20.14 +golang 1.22.0 nodejs 16.20.2 shellcheck 0.7.1 yarn 1.22.22 diff --git a/Development.md b/Development.md index 61e72096..81262a19 100644 --- a/Development.md +++ b/Development.md @@ -3,6 +3,7 @@ - [Project structure](#project-structure) - [Code generation](#code-generation) - [Debugging](#debugging) +- [Benchmarking](#benchmarking) - [Testing and adding new SCIP semantics](#testing-and-adding-new-scip-semantics) - [Release a new version](#release-a-new-version) @@ -69,6 +70,24 @@ and is not recommended for use in other settings. scip lint /path/to/index.scip ``` +## Benchmarking + +For benchmarks, one can put test SCIP indexes under `dev/sample_indexes`. + +Sourcegraph teammates can download several large indexes +from this [Google drive folder](https://drive.google.com/drive/folders/1z62Se7eHaa5T89a16-y7s0Z1qbRY4VCg). + +After that you can run: + +```bash +go run ./bindings/go/scip/speedtest +``` + +to see the results. + +Make sure to share benchmark results when making changes to +the symbol parsing logic. + ## Testing and adding new SCIP semantics It is helpful to use reprolang to check the existing code navigation behavior, diff --git a/bindings/go/scip/assertions.go b/bindings/go/scip/assertions.go new file mode 100644 index 00000000..30bfce37 --- /dev/null +++ b/bindings/go/scip/assertions.go @@ -0,0 +1,9 @@ +//go:build asserts + +package scip + +func assert(cond bool, msg string) { + if !cond { + panic(msg) + } +} diff --git a/bindings/go/scip/assertions_noop.go b/bindings/go/scip/assertions_noop.go new file mode 100644 index 00000000..8c8f9c27 --- /dev/null +++ b/bindings/go/scip/assertions_noop.go @@ -0,0 +1,6 @@ +//go:build !asserts + +package scip + +// assert is a noop in release builds - the implementation is in assertions.go +func assert(cond bool, msg string) {} diff --git a/bindings/go/scip/internal/compat_test.go b/bindings/go/scip/internal/compat_test.go new file mode 100644 index 00000000..44ba5db7 --- /dev/null +++ b/bindings/go/scip/internal/compat_test.go @@ -0,0 +1,63 @@ +package internal + +import ( + "io" + "os" + "path/filepath" + "sync/atomic" + "testing" + + "github.com/sourcegraph/beaut" + "github.com/sourcegraph/beaut/lib/knownwf" + conciter "github.com/sourcegraph/conc/iter" + "github.com/sourcegraph/scip/bindings/go/scip" + "github.com/sourcegraph/scip/bindings/go/scip/internal/shared" + "github.com/stretchr/testify/require" + "google.golang.org/protobuf/proto" +) + +func TestParseCompat(t *testing.T) { + for _, path := range shared.SampleIndexes() { + t.Run(filepath.Base(path), func(t *testing.T) { + t.Parallel() + scipReader, err := os.Open(path) + require.Nil(t, err) + scipBytes, err := io.ReadAll(scipReader) + require.Nil(t, err) + scipIndex := scip.Index{} + require.NoError(t, proto.Unmarshal(scipBytes, &scipIndex)) + var total atomic.Int64 + conciter.ForEach(scipIndex.Documents, func(docPtr **scip.Document) { + document := *docPtr + if total.Load() > 1000*1000 { + return + } + total.Add(int64(len(document.Occurrences))) + var sym scip.Symbol + for i := 0; i < len(document.Occurrences); i++ { + occ := document.Occurrences[i] + old, err := ParsePartialSymbolV1ToBeDeleted(occ.Symbol, true) + require.NoError(t, err) + require.NotPanics(t, func() { + str := beaut.NewUTF8StringUnchecked(occ.Symbol, knownwf.UTF8DeserializedFromProtobufString) + err = scip.ParseSymbolUTF8With(str, scip.ParseSymbolOptions{ + IncludeDescriptors: true, + RecordOutput: &sym, + }) + }, "panic for symbol: %q", occ.Symbol) + require.NoError(t, err) + require.Equal(t, old.Scheme, sym.Scheme) + require.Equal(t, old.Package, sym.Package) + require.Equalf(t, len(old.Descriptors), len(sym.Descriptors), "symbol: %v, d1: %+v, d2: %+v", occ.Symbol, + old.Descriptors, sym.Descriptors) + for i, d := range old.Descriptors { + dnew := sym.Descriptors[i] + require.Equal(t, d.Name, dnew.Name, "symbol: %v", occ.Symbol) + require.Equal(t, d.Suffix, dnew.Suffix, "symbol: %v", occ.Symbol) + require.Equal(t, d.Disambiguator, dnew.Disambiguator, "symbol: %v", occ.Symbol) + } + } + }) + }) + } +} diff --git a/bindings/go/scip/internal/old_symbol_parser.go b/bindings/go/scip/internal/old_symbol_parser.go new file mode 100644 index 00000000..6d13894c --- /dev/null +++ b/bindings/go/scip/internal/old_symbol_parser.go @@ -0,0 +1,239 @@ +package internal + +import ( + "fmt" + "strings" + + "github.com/cockroachdb/errors" + "github.com/sourcegraph/scip/bindings/go/scip" + "github.com/sourcegraph/scip/bindings/go/scip/internal/shared" +) + +func tryParseLocalSymbol(symbol string) (string, error) { + if !strings.HasPrefix(symbol, "local ") { + return "", nil + } + suffix := symbol[6:] + if len(suffix) > 0 && shared.IsSimpleIdentifier(suffix) { + return suffix, nil + } + return "", errors.Newf("expected format 'local ' but got: %v", symbol) +} + +// ParsePartialSymbolV1ToBeDeleted parses an SCIP string into the Symbol message +// with the option to exclude the `.Descriptor` field. +// +// Nov 30 2024: This is currently only present for benchmarking + compatibility +// reasons. We can remove this in the future once we're confident that the new +// parser handles everything correctly. +func ParsePartialSymbolV1ToBeDeleted(symbol string, includeDescriptors bool) (*scip.Symbol, error) { + // TODO: Rip out this, and call + local, err := tryParseLocalSymbol(symbol) + if err != nil { + return nil, err + } + if local != "" { + return &scip.Symbol{ + Scheme: "local", + Descriptors: []*scip.Descriptor{ + {Name: local, Suffix: scip.Descriptor_Local}, + }, + }, nil + } + s := newSymbolParser(symbol) + scheme, err := s.acceptSpaceEscapedIdentifier("scheme") + if err != nil { + return nil, err + } + manager, err := s.acceptSpaceEscapedIdentifier("package manager") + if err != nil { + return nil, err + } + if manager == "." { + manager = "" + } + packageName, err := s.acceptSpaceEscapedIdentifier("package name") + if err != nil { + return nil, err + } + if packageName == "." { + packageName = "" + } + packageVersion, err := s.acceptSpaceEscapedIdentifier("package version") + if err != nil { + return nil, err + } + if packageVersion == "." { + packageVersion = "" + } + var descriptors []*scip.Descriptor + if includeDescriptors { + descriptors, err = s.parseDescriptors() + } + return &scip.Symbol{ + Scheme: scheme, + Package: &scip.Package{ + Manager: manager, + Name: packageName, + Version: packageVersion, + }, + Descriptors: descriptors, + }, err +} + +type symbolParser struct { + Symbol []rune + index int + SymbolString string +} + +func newSymbolParser(symbol string) *symbolParser { + return &symbolParser{ + SymbolString: symbol, + Symbol: []rune(symbol), + index: 0, + } +} + +func (s *symbolParser) error(message string) error { + return errors.Newf("%s\n%s\n%s^", message, s.SymbolString, strings.Repeat("_", s.index)) +} + +func (s *symbolParser) current() rune { + if s.index < len(s.Symbol) { + return s.Symbol[s.index] + } + return '\x00' +} + +func (s *symbolParser) peekNext() rune { + if s.index+1 < len(s.Symbol) { + return s.Symbol[s.index] + } + return 0 +} + +func (s *symbolParser) parseDescriptors() ([]*scip.Descriptor, error) { + var result []*scip.Descriptor + for s.index < len(s.Symbol) { + descriptor, err := s.parseDescriptor() + if err != nil { + return nil, err + } + result = append(result, descriptor) + } + return result, nil +} + +func (s *symbolParser) parseDescriptor() (*scip.Descriptor, error) { + start := s.index + switch s.peekNext() { + case '(': + s.index++ + name, err := s.acceptIdentifier("parameter name") + if err != nil { + return nil, err + } + return &scip.Descriptor{Name: name, Suffix: scip.Descriptor_Parameter}, s.acceptCharacter(')', "closing parameter name") + case '[': + s.index++ + name, err := s.acceptIdentifier("type parameter name") + if err != nil { + return nil, err + } + return &scip.Descriptor{Name: name, Suffix: scip.Descriptor_TypeParameter}, s.acceptCharacter(']', "closing type parameter name") + default: + name, err := s.acceptIdentifier("descriptor name") + if err != nil { + return nil, err + } + suffix := s.current() + s.index++ + switch suffix { + case '(': + disambiguator := "" + if s.peekNext() != ')' { + disambiguator, err = s.acceptIdentifier("method disambiguator") + if err != nil { + return nil, err + } + } + err = s.acceptCharacter(')', "closing method") + if err != nil { + return nil, err + } + return &scip.Descriptor{Name: name, Disambiguator: disambiguator, Suffix: scip.Descriptor_Method}, s.acceptCharacter('.', "closing method") + case '/': + return &scip.Descriptor{Name: name, Suffix: scip.Descriptor_Namespace}, nil + case '.': + return &scip.Descriptor{Name: name, Suffix: scip.Descriptor_Term}, nil + case '#': + return &scip.Descriptor{Name: name, Suffix: scip.Descriptor_Type}, nil + case ':': + return &scip.Descriptor{Name: name, Suffix: scip.Descriptor_Meta}, nil + case '!': + return &scip.Descriptor{Name: name, Suffix: scip.Descriptor_Macro}, nil + default: + } + } + + end := s.index + if s.index > len(s.Symbol) { + end = len(s.Symbol) + } + return nil, errors.Newf("unrecognized descriptor %q", string(s.Symbol[start:end])) +} + +func (s *symbolParser) acceptIdentifier(what string) (string, error) { + if s.current() == '`' { + s.index++ + return s.acceptBacktickEscapedIdentifier(what) + } + start := s.index + for s.index < len(s.Symbol) && shared.IsSimpleIdentifierCharacter(s.current()) { + s.index++ + } + if start == s.index { + return "", s.error("empty identifier") + } + return string(s.Symbol[start:s.index]), nil +} + +func (s *symbolParser) acceptSpaceEscapedIdentifier(what string) (string, error) { + return s.acceptEscapedIdentifier(what, ' ') +} + +func (s *symbolParser) acceptBacktickEscapedIdentifier(what string) (string, error) { + return s.acceptEscapedIdentifier(what, '`') +} + +func (s *symbolParser) acceptEscapedIdentifier(what string, escapeCharacter rune) (string, error) { + builder := strings.Builder{} + for s.index < len(s.Symbol) { + ch := s.current() + if ch == escapeCharacter { + s.index++ + if s.index >= len(s.Symbol) { + break + } + if s.current() == escapeCharacter { + // Escaped space character. + builder.WriteRune(ch) + } else { + return builder.String(), nil + } + } else { + builder.WriteRune(ch) + } + s.index++ + } + return "", s.error(fmt.Sprintf("reached end of symbol while parsing <%s>, expected a '%v' character", what, string(escapeCharacter))) +} + +func (s *symbolParser) acceptCharacter(r rune, what string) error { + if s.current() == r { + s.index++ + return nil + } + return s.error(fmt.Sprintf("expected '%v', obtained '%v', while parsing %v", string(r), string(s.current()), what)) +} diff --git a/bindings/go/scip/internal/shared/sample_indexes.go b/bindings/go/scip/internal/shared/sample_indexes.go new file mode 100644 index 00000000..a7f3ae95 --- /dev/null +++ b/bindings/go/scip/internal/shared/sample_indexes.go @@ -0,0 +1,37 @@ +package shared + +import ( + "fmt" + "os" + "path" + "path/filepath" + "slices" + "strings" +) + +// SampleIndexes returns a list of paths to SCIP indexes for testing/benchmarking. +func SampleIndexes() []string { + workDir, err := os.Getwd() + if err != nil { + panic(fmt.Sprintf("failed to get working directory: %v", err)) + } + components := strings.Split(workDir, "/") + idx := slices.Index(components, "scip") + if idx == -1 { + panic(fmt.Sprintf("failed to locate scip directory in working directory: %q", workDir)) + } + indexesDir := filepath.Join("/", filepath.Join(components[:idx+1]...), "dev", "sample_indexes") + dirEntries, err := os.ReadDir(indexesDir) + if err != nil { + wd, _ := os.Getwd() + panic(fmt.Sprintf("failed to locate %q: %v - not running benchmark proper directory? (working directory = %s)", + indexesDir, err.Error(), wd)) + } + out := []string{} + for _, entry := range dirEntries { + if strings.HasSuffix(entry.Name(), ".scip") { + out = append(out, path.Join(indexesDir, entry.Name())) + } + } + return out +} diff --git a/bindings/go/scip/internal/shared/shared.go b/bindings/go/scip/internal/shared/shared.go new file mode 100644 index 00000000..c6a0460d --- /dev/null +++ b/bindings/go/scip/internal/shared/shared.go @@ -0,0 +1,17 @@ +// Package shared has functions used both by the old parser and the new parser. +package shared + +func IsSimpleIdentifierCharacter(c rune) bool { + return c == '_' || c == '+' || c == '-' || c == '$' || ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || ('0' <= c && c <= '9') +} + +// IsSimpleIdentifier matches the definition of in scip.proto. +func IsSimpleIdentifier(s string) bool { + for _, c := range s { + if IsSimpleIdentifierCharacter(c) { + continue + } + return false + } + return true +} diff --git a/bindings/go/scip/scip.pb.go b/bindings/go/scip/scip.pb.go index 7637e303..bd2fa5b0 100644 --- a/bindings/go/scip/scip.pb.go +++ b/bindings/go/scip/scip.pb.go @@ -17,11 +17,10 @@ package scip import ( - reflect "reflect" - sync "sync" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) const ( diff --git a/bindings/go/scip/sort.go b/bindings/go/scip/sort.go index b18559cd..6ef135e6 100644 --- a/bindings/go/scip/sort.go +++ b/bindings/go/scip/sort.go @@ -1,10 +1,9 @@ package scip import ( + "slices" "sort" "strings" - - "golang.org/x/exp/slices" ) // FindSymbol returns the symbol with the given name in the given document. If there is no symbol by diff --git a/bindings/go/scip/sort_test.go b/bindings/go/scip/sort_test.go index e0b2c6e9..f441d333 100644 --- a/bindings/go/scip/sort_test.go +++ b/bindings/go/scip/sort_test.go @@ -1,11 +1,11 @@ package scip import ( + "slices" "testing" "github.com/google/go-cmp/cmp" "github.com/stretchr/testify/require" - "golang.org/x/exp/slices" "pgregory.net/rapid" ) diff --git a/bindings/go/scip/speedtest/speedtest_main.go b/bindings/go/scip/speedtest/speedtest_main.go new file mode 100644 index 00000000..ec372b81 --- /dev/null +++ b/bindings/go/scip/speedtest/speedtest_main.go @@ -0,0 +1,196 @@ +package main + +import ( + "fmt" + "io" + "os" + "runtime" + "runtime/debug" + "strings" + "time" + + "github.com/jedib0t/go-pretty/v6/table" + "github.com/jedib0t/go-pretty/v6/text" + "github.com/sourcegraph/beaut" + "github.com/sourcegraph/beaut/lib/knownwf" + "github.com/sourcegraph/scip/bindings/go/scip" + "github.com/sourcegraph/scip/bindings/go/scip/internal" + "github.com/sourcegraph/scip/bindings/go/scip/internal/shared" + "google.golang.org/protobuf/proto" +) + +// NOTE: We don't run this benchmark using the standard +// Go benchmarking tooling because that doesn't offer +// any control over the number of iterations performed. +func main() { + for _, path := range shared.SampleIndexes() { + benchmark(path) + } +} + +func benchmark(path string) { + scipReader, err := os.Open(path) + if err != nil { + panic(fmt.Sprintf("failed to open file %q: %v", path, err.Error())) + } + scipBytes, err := io.ReadAll(scipReader) + if err != nil { + panic(fmt.Sprintf("failed to read file %q: %v", path, err.Error())) + } + scipIndex := scip.Index{} + if err := proto.Unmarshal(scipBytes, &scipIndex); err != nil { + panic(fmt.Sprintf("failed to unmarshal index %q: %v", path, err.Error())) + } + allOccurrences := []*scip.Occurrence{} + for _, document := range scipIndex.Documents { + allOccurrences = append(allOccurrences, document.Occurrences...) + } + parserV1Benchmark := func(b *simpleBenchmark) { + for i := 0; i < b.N; i++ { + occ := allOccurrences[i] + _, err = internal.ParsePartialSymbolV1ToBeDeleted(occ.Symbol, true) + if err != nil { + panic(fmt.Sprintf("v1: index path: %v: error: %v", path, err)) + } + } + } + parserV2Benchmark := func(b *simpleBenchmark) { + for i := 0; i < b.N; i++ { + occ := allOccurrences[i] + str := beaut.NewUTF8StringUnchecked(occ.Symbol, knownwf.UTF8DeserializedFromProtobufString) + sym := scip.Symbol{} + err = scip.ParseSymbolUTF8With(str, scip.ParseSymbolOptions{IncludeDescriptors: true, RecordOutput: &sym}) + if err != nil { + panic(fmt.Sprintf("v2: index path: %v: error: %v", path, err)) + } + } + } + parserV2ValidateBenchmark := func(b *simpleBenchmark) { + for i := 0; i < b.N; i++ { + occ := allOccurrences[i] + str := beaut.NewUTF8StringUnchecked(occ.Symbol, knownwf.UTF8DeserializedFromProtobufString) + err = scip.ValidateSymbolUTF8(str) + if err != nil { + panic(fmt.Sprintf("v2: index path: %v: error: %v", path, err)) + } + } + } + sb := simpleBenchmark{MaxN: 100 * 1000} + v1Results := sb.run("Symbol parse (v1)", parserV1Benchmark) + v2Results := sb.run("Symbol parse (v2)", parserV2Benchmark) + v2ValidateResults := sb.run("Symbol validate (v2)", parserV2ValidateBenchmark) + + fmt.Printf("Benchmark for %q:\n%s\n", path, + sb.tabulate(v1Results, v2Results, v2ValidateResults)) +} + +func (sb *simpleBenchmark) tabulate(baseline benchmarkResult, otherResults ...benchmarkResult) string { + tw := table.NewWriter() + headers := []any{"Benchmark / Iterations"} + for n := 1000; n <= sb.MaxN; n = n * 10 { + headers = append(headers, n) + headers = append(headers, "Ratio") + } + tw.AppendHeader(headers) + allResults := append([]benchmarkResult{baseline}, otherResults...) + { + for i, res := range allResults { + row := []any{res.benchmarkName + " - Speed"} + rowAlign := []table.RowConfig{{AutoMergeAlign: text.AlignRight}} + for j, t := range res.timings { + row = append(row, fmt.Sprintf("%v/op", t.timePerOp())) + rowAlign = append(rowAlign, table.RowConfig{AutoMergeAlign: text.AlignRight}) + if i == 0 { + row = append(row, "-") + rowAlign = append(rowAlign, table.RowConfig{AutoMergeAlign: text.AlignCenter}) + } else { + ratio := float64(t.timePerOp()) / float64(allResults[0].timings[j].timePerOp()) + row = append(row, fmt.Sprintf("%.2fx", ratio)) + rowAlign = append(rowAlign, table.RowConfig{AutoMergeAlign: text.AlignRight}) + } + } + tw.AppendRow(row, rowAlign...) + } + } + { + for i, res := range otherResults { + row := []any{res.benchmarkName + " - Allocs"} + rowAlign := []table.RowConfig{{AutoMergeAlign: text.AlignRight}} + for j, h := range res.heapAllocs { + row = append(row, fmt.Sprintf("%dB/op", h.allocsPerOp())) + rowAlign = append(rowAlign, table.RowConfig{AutoMergeAlign: text.AlignRight}) + if i == 0 { + row = append(row, "-") + rowAlign = append(rowAlign, table.RowConfig{AutoMergeAlign: text.AlignCenter}) + } else { + ratio := float64(h.allocsPerOp()) / float64(allResults[0].heapAllocs[j].allocsPerOp()) + row = append(row, fmt.Sprintf("%.2fx", ratio)) + rowAlign = append(rowAlign, table.RowConfig{AutoMergeAlign: text.AlignRight}) + } + } + tw.AppendRow(row, rowAlign...) + } + } + return tw.Render() +} + +type simpleBenchmark struct { + N int + MaxN int +} + +type benchmarkResult struct { + benchmarkName string + timings []timing + heapAllocs []allocBytes +} + +func (r *benchmarkResult) String() string { + var sb strings.Builder + sb.WriteString(fmt.Sprintf("Benchmark %s:\n", r.benchmarkName)) + for _, timing := range r.timings { + sb.WriteString(fmt.Sprintf("\t%8d: %s/op\n", timing.N, time.Duration(int64(timing.totalTime)/int64(timing.N)))) + } + return sb.String() +} + +type timing struct { + N int + totalTime time.Duration +} + +type allocBytes struct { + N int + totalAlloc uint64 +} + +func (a allocBytes) allocsPerOp() uint64 { + return a.totalAlloc / uint64(a.N) +} + +func (t timing) timePerOp() time.Duration { + return time.Duration(int64(t.totalTime) / int64(t.N)) +} + +func (b *simpleBenchmark) run(name string, f func(*simpleBenchmark)) benchmarkResult { + var timings []timing + for n := 1000; n <= b.MaxN; n = n * 10 { + b.N = n + start := time.Now() + f(b) + delta := time.Now().Sub(start) + timings = append(timings, timing{N: n, totalTime: delta}) + } + old := debug.SetGCPercent(-1) + var allocs []allocBytes + for n := 1000; n <= b.MaxN; n = n * 10 { + runtime.GC() + var before, after runtime.MemStats + runtime.ReadMemStats(&before) + f(b) + runtime.ReadMemStats(&after) + allocs = append(allocs, allocBytes{N: n, totalAlloc: after.TotalAlloc - before.TotalAlloc}) + } + debug.SetGCPercent(old) + return benchmarkResult{name, timings, allocs} +} diff --git a/bindings/go/scip/symbol.go b/bindings/go/scip/symbol.go index 92ac6546..cc06f41c 100644 --- a/bindings/go/scip/symbol.go +++ b/bindings/go/scip/symbol.go @@ -1,10 +1,9 @@ package scip import ( - "fmt" "strings" - "github.com/cockroachdb/errors" + "github.com/sourcegraph/beaut" ) // IsGlobalSymbol returns true if the symbol is obviously not a local symbol. @@ -21,253 +20,55 @@ func IsLocalSymbol(symbol string) bool { return strings.HasPrefix(symbol, "local ") } -func isSimpleIdentifierCharacter(c rune) bool { - return c == '_' || c == '+' || c == '-' || c == '$' || ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || ('0' <= c && c <= '9') -} - -func isSimpleIdentifier(s string) bool { - for _, c := range s { - if isSimpleIdentifierCharacter(c) { - continue - } - return false - } - return true -} - -func tryParseLocalSymbol(symbol string) (string, error) { - if !strings.HasPrefix(symbol, "local ") { - return "", nil - } - suffix := symbol[6:] - if len(suffix) > 0 && isSimpleIdentifier(suffix) { - return suffix, nil - } - return "", errors.Newf("expected format 'local ' but got: %v", symbol) -} - // ParseSymbol parses an SCIP string into the Symbol message. +// +// Prefer using ParseSymbolUTF8 for strings already known to +// be valid UTF-8 encoded strings. For example, the Protobuf +// string type is guaranteed to be converted to a UTF-8 string +// in Go, you can avoid an extra UTF-8 validity check with +// this API. func ParseSymbol(symbol string) (*Symbol, error) { - return ParsePartialSymbol(symbol, true) -} - -// ParsePartialSymbol parses an SCIP string into the Symbol message -// with the option to exclude the `.Descriptor` field. -func ParsePartialSymbol(symbol string, includeDescriptors bool) (*Symbol, error) { - local, err := tryParseLocalSymbol(symbol) - if err != nil { - return nil, err - } - if local != "" { - return newLocalSymbol(local), nil - } - s := newSymbolParser(symbol) - scheme, err := s.acceptSpaceEscapedIdentifier("scheme") - if err != nil { - return nil, err - } - manager, err := s.acceptSpaceEscapedIdentifier("package manager") - if err != nil { - return nil, err - } - if manager == "." { - manager = "" - } - packageName, err := s.acceptSpaceEscapedIdentifier("package name") + s, err := beaut.NewUTF8String(symbol) if err != nil { return nil, err } - if packageName == "." { - packageName = "" - } - packageVersion, err := s.acceptSpaceEscapedIdentifier("package version") - if err != nil { - return nil, err - } - if packageVersion == "." { - packageVersion = "" - } - var descriptors []*Descriptor - if includeDescriptors { - descriptors, err = s.parseDescriptors() - } - return &Symbol{ - Scheme: scheme, - Package: &Package{ - Manager: manager, - Name: packageName, - Version: packageVersion, - }, - Descriptors: descriptors, - }, err + return ParseSymbolUTF8(s) } -func newLocalSymbol(id string) *Symbol { - return &Symbol{ - Scheme: "local", - Descriptors: []*Descriptor{ - {Name: id, Suffix: Descriptor_Local}, - }, - } -} - -type symbolParser struct { - Symbol []rune - index int - SymbolString string -} - -func newSymbolParser(symbol string) *symbolParser { - return &symbolParser{ - SymbolString: symbol, - Symbol: []rune(symbol), - index: 0, - } -} - -func (s *symbolParser) error(message string) error { - return errors.Newf("%s\n%s\n%s^", message, s.SymbolString, strings.Repeat("_", s.index)) -} - -func (s *symbolParser) current() rune { - if s.index < len(s.Symbol) { - return s.Symbol[s.index] - } - return '\x00' -} - -func (s *symbolParser) peekNext() rune { - if s.index+1 < len(s.Symbol) { - return s.Symbol[s.index] - } - return 0 -} - -func (s *symbolParser) parseDescriptors() ([]*Descriptor, error) { - var result []*Descriptor - for s.index < len(s.Symbol) { - descriptor, err := s.parseDescriptor() - if err != nil { - return nil, err - } - result = append(result, descriptor) - } - return result, nil -} - -func (s *symbolParser) parseDescriptor() (*Descriptor, error) { - start := s.index - switch s.peekNext() { - case '(': - s.index++ - name, err := s.acceptIdentifier("parameter name") - if err != nil { - return nil, err - } - return &Descriptor{Name: name, Suffix: Descriptor_Parameter}, s.acceptCharacter(')', "closing parameter name") - case '[': - s.index++ - name, err := s.acceptIdentifier("type parameter name") - if err != nil { - return nil, err - } - return &Descriptor{Name: name, Suffix: Descriptor_TypeParameter}, s.acceptCharacter(']', "closing type parameter name") - default: - name, err := s.acceptIdentifier("descriptor name") - if err != nil { - return nil, err - } - suffix := s.current() - s.index++ - switch suffix { - case '(': - disambiguator := "" - if s.peekNext() != ')' { - disambiguator, err = s.acceptIdentifier("method disambiguator") - if err != nil { - return nil, err - } - } - err = s.acceptCharacter(')', "closing method") - if err != nil { - return nil, err - } - return &Descriptor{Name: name, Disambiguator: disambiguator, Suffix: Descriptor_Method}, s.acceptCharacter('.', "closing method") - case '/': - return &Descriptor{Name: name, Suffix: Descriptor_Namespace}, nil - case '.': - return &Descriptor{Name: name, Suffix: Descriptor_Term}, nil - case '#': - return &Descriptor{Name: name, Suffix: Descriptor_Type}, nil - case ':': - return &Descriptor{Name: name, Suffix: Descriptor_Meta}, nil - case '!': - return &Descriptor{Name: name, Suffix: Descriptor_Macro}, nil - default: - } - } - - end := s.index - if s.index > len(s.Symbol) { - end = len(s.Symbol) - } - return nil, errors.Newf("unrecognized descriptor %q", string(s.Symbol[start:end])) -} - -func (s *symbolParser) acceptIdentifier(what string) (string, error) { - if s.current() == '`' { - s.index++ - return s.acceptBacktickEscapedIdentifier(what) - } - start := s.index - for s.index < len(s.Symbol) && isSimpleIdentifierCharacter(s.current()) { - s.index++ - } - if start == s.index { - return "", s.error("empty identifier") - } - return string(s.Symbol[start:s.index]), nil +// ParseSymbolUTF8 parses an SCIP string into the Symbol message. +// +// Unlike ParseSymbol, this skips UTF-8 validation. To customize +// parsing behavior, use ParseSymbolUTF8With. +func ParseSymbolUTF8(symbol beaut.UTF8String) (*Symbol, error) { + s := Symbol{} + err := ParseSymbolUTF8With(symbol, ParseSymbolOptions{IncludeDescriptors: true, RecordOutput: &s}) + return &s, err } -func (s *symbolParser) acceptSpaceEscapedIdentifier(what string) (string, error) { - return s.acceptEscapedIdentifier(what, ' ') -} +type emptySymbolError struct{} -func (s *symbolParser) acceptBacktickEscapedIdentifier(what string) (string, error) { - return s.acceptEscapedIdentifier(what, '`') +func (emptySymbolError) Error() string { + return "empty symbol" } -func (s *symbolParser) acceptEscapedIdentifier(what string, escapeCharacter rune) (string, error) { - builder := strings.Builder{} - for s.index < len(s.Symbol) { - ch := s.current() - if ch == escapeCharacter { - s.index++ - if s.index >= len(s.Symbol) { - break - } - if s.current() == escapeCharacter { - // Escaped space character. - builder.WriteRune(ch) - } else { - return builder.String(), nil - } - } else { - builder.WriteRune(ch) - } - s.index++ - } - return "", s.error(fmt.Sprintf("reached end of symbol while parsing <%s>, expected a '%v' character", what, string(escapeCharacter))) +type ParseSymbolOptions struct { + // IncludeDescriptors indicates whether the the descriptors in the symbol should also be + // parsed. This setting is only respected for global symbols. + IncludeDescriptors bool + // RecordOutput, if provided, is used to record the output of the symbol parser. + // + // Otherwise, only validation is performed without any extraneous heap + // allocations (except for optimization misses by the Go compiler). + RecordOutput *Symbol } -func (s *symbolParser) acceptCharacter(r rune, what string) error { - if s.current() == r { - s.index++ - return nil +func ParseSymbolUTF8With(symbol beaut.UTF8String, options ParseSymbolOptions) error { + if symbol.Len() == 0 { + return emptySymbolError{} } - return s.error(fmt.Sprintf("expected '%v', obtained '%v', while parsing %v", string(r), string(s.current()), what)) + return parseSymbolV2(symbol, options.IncludeDescriptors, options.RecordOutput) } -func (x *Package) ID() string { - return fmt.Sprintf("%s %s %s", x.Manager, x.Name, x.Version) +func ValidateSymbolUTF8(symbol beaut.UTF8String) error { + return ParseSymbolUTF8With(symbol, ParseSymbolOptions{IncludeDescriptors: true, RecordOutput: nil}) } diff --git a/bindings/go/scip/symbol_formatter.go b/bindings/go/scip/symbol_formatter.go index e78025e7..ad356d70 100644 --- a/bindings/go/scip/symbol_formatter.go +++ b/bindings/go/scip/symbol_formatter.go @@ -2,6 +2,8 @@ package scip import ( "strings" + + "github.com/sourcegraph/scip/bindings/go/scip/internal/shared" ) // SymbolFormatter configures how to format an SCIP symbol. @@ -139,7 +141,7 @@ func writeEscapedPackage(b *strings.Builder, name string) { func writeSuffixedDescriptor(b *strings.Builder, identifier string, suffixes ...rune) { escape := false for _, ch := range identifier { - if !isSimpleIdentifierCharacter(ch) { + if !shared.IsSimpleIdentifierCharacter(ch) { escape = true break } diff --git a/bindings/go/scip/symbol_parser.go b/bindings/go/scip/symbol_parser.go new file mode 100644 index 00000000..61621e80 --- /dev/null +++ b/bindings/go/scip/symbol_parser.go @@ -0,0 +1,586 @@ +package scip + +import ( + "fmt" + "strings" + "unicode" + "unsafe" + + "github.com/cockroachdb/errors" + "github.com/sourcegraph/beaut" + "github.com/sourcegraph/scip/bindings/go/scip/internal/shared" +) + +// stringWriter is a wrapper around a pair of (strings.Builder, *string) +// which can conditionally discard writes. +type stringWriter struct { + // builder is meant to be used for handling escapes, in which + // case we cannot get away with slicing the original string, + // and we need to allocate a new string. + builder strings.Builder + // finalCopySlot represents the final destination for the write. + // If nil, no writes are performed. + finalCopySlot *string +} + +// append appends the given string to the accumulated string. +func (w *stringWriter) append(s string) { + if w.finalCopySlot == nil { + return + } + w.builder.WriteString(s) +} + +// finish copies the accumulated string to the final destination, +// if present. +func (w *stringWriter) finish() { + if w.finalCopySlot == nil { + return + } + *w.finalCopySlot = w.builder.String() +} + +// writeFullAndFinish ignores any previous writes via append calls +// and writes the given string. +func (w *stringWriter) writeFullAndFinish(s string) { + if w.finalCopySlot == nil { + return + } + *w.finalCopySlot = s +} + +// normalize overwrites the string in the slot if it matches 'from'. +func (w *stringWriter) normalize(from string, to string) { + if w.finalCopySlot == nil || (*w.finalCopySlot != from) { + return + } + *w.finalCopySlot = to +} + +func (w *stringWriter) reset(newSlot *string) { + w.builder.Reset() + w.finalCopySlot = newSlot +} + +// parseSymbolV2 parses an SCIP string into the Symbol message +// with the option to exclude the `.Descriptor` field. +// +// Pre-condition: symbolUTF8 is non-empty. +func parseSymbolV2(symbolUTF8 beaut.UTF8String, includeDescriptors bool, out *Symbol) error { + symbol := symbolUTF8.RawValue() + isLocal, err := tryParseLocalSymbolV2(symbol, out) + if isLocal || err != nil { + return err + } + z := newSymbolParserV2(symbol) + var sw stringWriter + if out != nil { + sw.reset(&out.Scheme) + } + if err = z.acceptSpaceEscapedIdentifier(parseCtxScheme, &sw); err != nil { + return err + } + if out != nil { + if out.Package == nil { + out.Package = &Package{} + } + sw.reset(&out.Package.Manager) + } + if err := z.acceptSpaceEscapedIdentifier(parseCtxPackageManager, &sw); err != nil { + return err + } + sw.normalize(".", "") + if out != nil { + sw.reset(&out.Package.Name) + } + if err := z.acceptSpaceEscapedIdentifier(parseCtxPackageName, &sw); err != nil { + return err + } + sw.normalize(".", "") + if out != nil { + sw.reset(&out.Package.Version) + } + if err := z.acceptSpaceEscapedIdentifier(parseCtxPackageVersion, &sw); err != nil { + return err + } + sw.normalize(".", "") + + if includeDescriptors { + var dw descriptorsWriter + if out != nil { + dw.shouldWrite = true + dw.descriptors = out.Descriptors + } + if err := z.parseDescriptors(&dw); err != nil { + return err + } + if out != nil { + out.Descriptors = dw.validDescriptors() + } + } + return nil +} + +func tryParseLocalSymbolV2(s string, out *Symbol) (bool, error) { + suffix := strings.TrimPrefix(s, "local ") + if len(suffix) == len(s) { + return false, nil + } + if len(suffix) == 0 || !shared.IsSimpleIdentifier(suffix) { + return false, expectedSimpleIdentifierError{""} + } + if out != nil { + out.Scheme = "local" + // This is a bit unfortunate; we cannot avoid allocating another Package value + // in the next parsing call if the next Symbol received is not a local variable. + out.Package = nil + if len(out.Descriptors) == 0 { + out.Descriptors = []*Descriptor{{Name: suffix, Suffix: Descriptor_Local}} + } else { + d := out.Descriptors[0] + d.Name = suffix + d.Disambiguator = "" + d.Suffix = Descriptor_Local + out.Descriptors = out.Descriptors[:1] + } + } + return true, nil +} + +type expectedSimpleIdentifierError struct { + s string +} + +func (e expectedSimpleIdentifierError) Error() string { + return fmt.Sprintf("expected format 'local ' but got: %v", e.s) +} + +// descriptorsWriter encapsulates the logic for writing descriptors +// while handling the zero-write/validation-only case. +type descriptorsWriter struct { + // descriptors represents the descriptors that should be written to. + // Only count elements of this slice should be interpreted. + descriptors []*Descriptor + // tempStringWriter will discard writes if shouldWrite is false. + // Otherwise, it may be a name writer or a disambiguator writer. + tempStringWriter stringWriter + // throwawaySuffix is for the !shouldWrite case, where we still + // want to provide a uniform type for the caller to "write" the + // suffix to. If shouldWrite is true, then suffixes will be + // written to the ssoDescriptorList directly. + throwawaySuffix Descriptor_Suffix + count int32 + // shouldWrite controls if writes should be performed or discarded. + shouldWrite bool +} + +// prepareName appends a descriptor with the given suffix and an empty +// name and disambiguator, and returns a writer for the name. +// +// For writing the disambiguator, use getDisambiguatorForLast after +// calling prepare or prepareName. +// +// Pre-condition: Writes to a previously written writer from {prepare, +// prepareName, getDisambiguatorForLast} must be finished before calling +// any of these methods again. +func (dw *descriptorsWriter) prepareName(suffix Descriptor_Suffix) *stringWriter { + if dw.shouldWrite { + dw.tempStringWriter.builder.Reset() + dw.tempStringWriter.finalCopySlot, _ = dw.internalPrepareSlot(suffix) + } + return &dw.tempStringWriter +} + +// prepare is similar to prepareName, but allows delaying writing the suffix. +// +// Pre-condition: Writes to a previously written writer from {prepare, +// prepareName, getDisambiguatorForLast} must be finished before calling +// any of these methods again. +func (dw *descriptorsWriter) prepare() (*stringWriter, *Descriptor_Suffix) { + suffixPtr := &dw.throwawaySuffix + if dw.shouldWrite { + dw.tempStringWriter.builder.Reset() + dw.tempStringWriter.finalCopySlot, suffixPtr = dw.internalPrepareSlot(Descriptor_UnspecifiedSuffix) + } + return &dw.tempStringWriter, suffixPtr +} + +// getDisambiguatorForLast returns a writer for the disambiguator for the last +// descriptor that was inserted. +// +// Pre-condition: prepare or prepareName must have been called before this. +// +// Pre-condition: Writes to a previously written writer from {prepare, +// prepareName, getDisambiguatorForLast} must be finished before calling +// any of these methods again. +func (dw *descriptorsWriter) getDisambiguatorForLast() *stringWriter { + if dw.shouldWrite { + dw.tempStringWriter.builder.Reset() + dw.tempStringWriter.finalCopySlot = &dw.descriptors[dw.count-1].Disambiguator + return &dw.tempStringWriter + } + return &dw.tempStringWriter +} + +func unsafeTryGrowByOne[X any](xs []X) ([]X, bool) { + l := len(xs) + c := cap(xs) + if l == c { + return xs, false + } + ptr := unsafe.SliceData(xs) + // The second argument to Slice is interpreted as both length & capacity, + // so we first set the capacity and then modify the length by reslicing with + // [:l+1]. + return unsafe.Slice(ptr, c)[:l+1], true +} + +// internalPrepareSlot optionally grows the slice of descriptors, assigns the provided +// suffix to the last descriptor, and returns pointers to the 'Name' and +// 'Suffix' fields for overwriting. +// +// Generally, higher-level code should only call prepare or prepareName. +// +// Pre-condition: This should only be called in the shouldWrite case. +func (dw *descriptorsWriter) internalPrepareSlot(suffix Descriptor_Suffix) (*string, *Descriptor_Suffix) { + assert(dw.shouldWrite, "should call internalPrepareSlot in the shouldWrite case") + zeroLastSlot := func() { + lastPtr := &dw.descriptors[dw.count] + if last := *lastPtr; last == nil { + *lastPtr = &Descriptor{Suffix: suffix} + } else { + last.Name = "" + last.Suffix = suffix + last.Disambiguator = "" + } + } + if len(dw.descriptors) == int(dw.count) { + // attempt to reuse the backing slice's Descriptor if there is + // a non-nil pointer still available. + if got, ok := unsafeTryGrowByOne(dw.descriptors); ok { + dw.descriptors = got + zeroLastSlot() + } else { + dw.descriptors = append(dw.descriptors, &Descriptor{Suffix: suffix}) + } + } else { + zeroLastSlot() + } + elt := dw.descriptors[dw.count] + dw.count++ + nameSlot := &elt.Name + suffixSlot := &elt.Suffix + return nameSlot, suffixSlot +} + +func (dw *descriptorsWriter) validDescriptors() []*Descriptor { + return dw.descriptors[:dw.count] +} + +// symbolParserV2 parses symbols without allocating extra strings in the common +// case where all the data can be extracted by slicing the input string, +// and there are +type symbolParserV2 struct { + SymbolString string + byteIndex int + currentRune rune + bytesToNextRune int32 +} + +// Pre-condition: string is well-formed UTF-8 +// Pre-condition: byteIndex is in bounds +func findRuneAtIndex(s string, byteIndex int) (r rune, bytesRead int32) { + b1 := s[byteIndex] + if b1 < 0x80 { + return rune(b1), 1 + } + b2 := s[byteIndex+1] + if b1&0b11100000 == 0b11000000 { + return (int32(b1&0b00011111) << 6) | int32(b2&0b00111111), 2 + } + b3 := s[byteIndex+2] + if b1&0b11110000 == 0b11100000 { + return (int32(b1&0b00001111) << 12) | (int32(b2&0b00111111) << 6) | int32(b3&0b00111111), 3 + } + b4 := s[byteIndex+3] + return (int32(b1&0b00000111) << 18) | (int32(b2&0b00111111) << 12) | (int32(b3&0b00111111) << 6) | int32(b4&0b00111111), 4 +} + +// Pre-condition: string is well-formed UTF-8 +// Pre-condition: len(symbol) > 0 +func newSymbolParserV2(symbol string) symbolParserV2 { + r, bytesRead := findRuneAtIndex(symbol, 0) + return symbolParserV2{ + SymbolString: symbol, + byteIndex: 0, + currentRune: r, + bytesToNextRune: bytesRead, + } +} + +type errorCase int + +const ( + errorCaseEmptyIdent errorCase = iota + errorCaseByteNotFound +) + +// TODO: Enable https://github.com/nishanths/exhaustive in CI +type parseCtx int + +func (what parseCtx) String() string { + switch what { + case parseCtxParameterName: + return "parameter name" + case parseCtxClosingParameterName: + return "closing parameter name" + case parseCtxTypeParameterName: + return "type parameter name" + case parseCtxClosingTypeParameterName: + return "closing type parameter name" + case parseCtxDescriptorName: + return "descriptor name" + case parseCtxMethodDisambiguator: + return "method disambiguator" + case parseCtxClosingMethod: + return "closing method" + case parseCtxScheme: + return "scheme" + case parseCtxPackageManager: + return "package manager" + case parseCtxPackageName: + return "package name" + case parseCtxPackageVersion: + return "package version" + default: + return "unknown parseCtx" + } +} + +const ( + parseCtxParameterName parseCtx = iota + parseCtxClosingParameterName + parseCtxTypeParameterName + parseCtxClosingTypeParameterName + parseCtxDescriptorName + parseCtxMethodDisambiguator + parseCtxClosingMethod + parseCtxScheme + parseCtxPackageManager + parseCtxPackageName + parseCtxPackageVersion +) + +func (z *symbolParserV2) error(e errorCase, expectedByte byte, what parseCtx) error { + switch e { + case errorCaseEmptyIdent: + return errors.Newf("failed to parse: %q (context: %v)", z.SymbolString, what) + case errorCaseByteNotFound: + return errors.Newf("failed to parse: %q (expected byte: %c, context: %v)", z.SymbolString, rune(expectedByte), what) + default: + panic(fmt.Sprintf("unknown error case: %v", e)) + } +} + +func (z *symbolParserV2) peekNext() (rune, int32) { + if z.byteIndex+1 < len(z.SymbolString) { + return findRuneAtIndex(z.SymbolString, z.byteIndex+int(z.bytesToNextRune)) + } + return 0, 0 +} + +func (z *symbolParserV2) parseDescriptors(out *descriptorsWriter) error { + for z.byteIndex < len(z.SymbolString) { + if err := z.parseDescriptor(out); err != nil { + return err + } + } + return nil +} + +func (z *symbolParserV2) advance(nextRune rune, nextRuneByteLength int32) { + z.byteIndex += int(z.bytesToNextRune) + z.currentRune = nextRune + z.bytesToNextRune = nextRuneByteLength +} + +func (z *symbolParserV2) parseDescriptor(out *descriptorsWriter) error { + start := z.byteIndex + switch z.currentRune { + case '(': + z.advanceOneByte('(') + nameWriter := out.prepareName(Descriptor_Parameter) + if err := z.acceptIdentifier(parseCtxParameterName, nameWriter); err != nil { + return err + } + return z.acceptOneByte(')', parseCtxClosingParameterName) + case '[': + z.advanceOneByte('[') + nameWriter := out.prepareName(Descriptor_TypeParameter) + if err := z.acceptIdentifier(parseCtxTypeParameterName, nameWriter); err != nil { + return err + } + return z.acceptOneByte(']', parseCtxClosingTypeParameterName) + default: + nameWriter, descriptorPtr := out.prepare() + if err := z.acceptIdentifier(parseCtxDescriptorName, nameWriter); err != nil { + return err + } + suffixRune := z.currentRune + z.advanceRune() + switch suffixRune { + case '(': + *descriptorPtr = Descriptor_Method + if z.currentRune != ')' { + disambWriter := out.getDisambiguatorForLast() + if err := z.acceptIdentifier(parseCtxMethodDisambiguator, disambWriter); err != nil { + return err + } + } + if err := z.acceptOneByte(')', parseCtxClosingMethod); err != nil { + return err + } + return z.acceptOneByte('.', parseCtxClosingMethod) + case '/': + *descriptorPtr = Descriptor_Namespace + return nil + case '.': + *descriptorPtr = Descriptor_Term + return nil + case '#': + *descriptorPtr = Descriptor_Type + return nil + case ':': + *descriptorPtr = Descriptor_Meta + return nil + case '!': + *descriptorPtr = Descriptor_Macro + return nil + default: + } + } + + end := z.byteIndex + if z.byteIndex > len(z.SymbolString) { + end = len(z.SymbolString) + } + return unrecognizedDescriptorError{z.SymbolString[start:end]} +} + +type unrecognizedDescriptorError struct { + value string +} + +var _ error = unrecognizedDescriptorError{} + +func (e unrecognizedDescriptorError) Error() string { + return fmt.Sprintf("unrecognized descriptor %q", e.value) +} + +func isIdentifierCharacter(r rune) bool { + return unicode.IsLetter(r) || unicode.IsDigit(r) || r == '-' || r == '+' || r == '$' || r == '_' +} + +func (z *symbolParserV2) advanceOneByte(b byte) { + assert(z.currentRune == rune(b), "passed in byte does not match current rune") + nextRune, nextRuneByteLength := z.peekNext() + // CAUTION: z.byteIndex can become equal to len(z.SymbolString) here + z.byteIndex += 1 + z.currentRune = nextRune + z.bytesToNextRune = nextRuneByteLength +} + +func (z *symbolParserV2) advanceRune() { + nextRune, nextRuneByteLength := z.peekNext() + z.advance(nextRune, min(nextRuneByteLength, 1)) +} + +func (z *symbolParserV2) acceptOneByte(b byte, what parseCtx) error { + if z.currentRune == rune(b) { + z.advanceOneByte(b) + return nil + } + return z.error(errorCaseByteNotFound, b, what) +} + +func (z *symbolParserV2) acceptIdentifier(what parseCtx, sw *stringWriter) error { + if z.currentRune == '`' { + z.advanceOneByte('`') + return z.acceptBacktickEscapedIdentifier(what, sw) + } + start := z.byteIndex + slen := len(z.SymbolString) + for z.byteIndex < slen { + if !isIdentifierCharacter(z.currentRune) { + break + } + z.advanceRune() + } + if start == z.byteIndex { + return z.error(errorCaseEmptyIdent, 0, what) + } + sw.writeFullAndFinish(z.SymbolString[start:z.byteIndex]) + return nil +} + +func (z *symbolParserV2) acceptBacktickEscapedIdentifier(what parseCtx, sw *stringWriter) error { + return z.acceptTerminatedIdentifier(what, sw, '`') +} + +func (z *symbolParserV2) acceptSpaceEscapedIdentifier(what parseCtx, sw *stringWriter) error { + return z.acceptTerminatedIdentifier(what, sw, ' ') +} + +// acceptTerminatedIdentifier accepts an identifier that is terminated by 'terminator'. +// +// Consecutive occurrences of terminator are interpreted as a single literal character. +func (z *symbolParserV2) acceptTerminatedIdentifier(what parseCtx, sw *stringWriter, terminator byte) error { + slen := len(z.SymbolString) + terminatorRune := rune(terminator) + anchor := z.byteIndex + hasEscapedTerminator := false + for z.byteIndex < slen { + if z.currentRune != terminatorRune { + z.advanceRune() + continue + } + z.advanceOneByte(terminator) + if z.byteIndex == slen { + break + } + if z.currentRune == terminatorRune { + hasEscapedTerminator = true + // will include 1 copy of the terminator + sw.append(z.SymbolString[anchor:z.byteIndex]) + z.advanceOneByte(terminator) + anchor = z.byteIndex + continue + } + if hasEscapedTerminator { + // Append the rest to the builder and return + sw.append(z.SymbolString[anchor : z.byteIndex-1]) + sw.finish() + return nil + } + // In the non-escaped case, z.byteIndex is already 1 past the + // terminator, so do an extra -1 + sw.writeFullAndFinish(z.SymbolString[anchor : z.byteIndex-1]) + return nil + } + return endOfSymbolError{what, terminatorRune} +} + +type endOfSymbolError struct { + what parseCtx + expected rune +} + +var _ error = endOfSymbolError{} + +func (e endOfSymbolError) Error() string { + return fmt.Sprintf("reached end of symbol while parsing <%s>, expected a '%v' character", e.what, e.expected) +} + +func (x *Package) ID() string { + return fmt.Sprintf("%s %s %s", x.Manager, x.Name, x.Version) +} diff --git a/bindings/go/scip/symbol_test.go b/bindings/go/scip/symbol_test.go index 893d7294..b92b440b 100644 --- a/bindings/go/scip/symbol_test.go +++ b/bindings/go/scip/symbol_test.go @@ -13,7 +13,10 @@ func TestParseSymbol(t *testing.T) { Expected *Symbol } tests := []test{ - {Symbol: "local a", Expected: newLocalSymbol("a")}, + {Symbol: "local a", Expected: &Symbol{ + Scheme: "local", + Descriptors: []*Descriptor{{Name: "a", Suffix: Descriptor_Local}}, + }}, {Symbol: "a b c d method().", Expected: &Symbol{ Scheme: "a", Package: &Package{ @@ -70,12 +73,47 @@ func TestParseSymbol(t *testing.T) { }, }, }, + { + Symbol: "cxx . todo-pkg todo-version gfx/Rect#x(455f465bc33b4cdf).", + Expected: &Symbol{ + Scheme: "cxx", + Package: &Package{Name: "todo-pkg", Version: "todo-version"}, + Descriptors: []*Descriptor{ + {Name: "gfx", Suffix: Descriptor_Namespace}, + {Name: "Rect", Suffix: Descriptor_Type}, + {Name: "x", Disambiguator: "455f465bc33b4cdf", Suffix: Descriptor_Method}, + }, + }, + }, + { + Symbol: "cxx . . $ `/4398592474888995393/assert.h:92:11`!", + Expected: &Symbol{ + Scheme: "cxx", + Package: &Package{Manager: "", Name: "", Version: "$"}, + Descriptors: []*Descriptor{ + {Name: "/4398592474888995393/assert.h:92:11", Suffix: Descriptor_Macro}, + }, + }, + }, + { + Symbol: "cxx . . $ llvm/itanium_demangle/OutputBuffer#empty(50ce9a9e25b4a850).", + Expected: &Symbol{ + Scheme: "cxx", + Package: &Package{Manager: "", Name: "", Version: "$"}, + Descriptors: []*Descriptor{ + {Name: "llvm", Suffix: Descriptor_Namespace}, + {Name: "itanium_demangle", Suffix: Descriptor_Namespace}, + {Name: "OutputBuffer", Suffix: Descriptor_Type}, + {Name: "empty", Disambiguator: "50ce9a9e25b4a850", Suffix: Descriptor_Method}, + }, + }, + }, } for _, test := range tests { t.Run(test.Symbol, func(t *testing.T) { obtained, err := ParseSymbol(test.Symbol) require.Nil(t, err) - if diff := cmp.Diff(obtained.String(), test.Expected.String()); diff != "" { + if diff := cmp.Diff(test.Expected.String(), obtained.String()); diff != "" { t.Fatalf("unexpected response (-want +got):\n%s", diff) } }) @@ -93,9 +131,10 @@ func TestParseSymbolError(t *testing.T) { "local ", "local &&&", } { - - if _, err := ParseSymbol(symbolName); err == nil { - t.Fatalf("expected error from parsing %q", symbolName) - } + require.NotPanics(t, func() { + if _, err := ParseSymbol(symbolName); err == nil { + t.Fatalf("expected error from parsing %q", symbolName) + } + }, "panic when parsing %q", symbolName) } } diff --git a/bindings/haskell/src/Proto/Scip.hs b/bindings/haskell/src/Proto/Scip.hs index 93edca1e..b1979eec 100644 --- a/bindings/haskell/src/Proto/Scip.hs +++ b/bindings/haskell/src/Proto/Scip.hs @@ -6412,9 +6412,9 @@ packedFileDescriptor \\ETXXML\DLE\US\DC2\a\n\ \\ETXXSL\DLE \DC2\b\n\ \\EOTYAML\DLEJ\DC2\a\n\ - \\ETXZig\DLE&B/Z-github.aaakk.us.kg/sourcegraph/scip/bindings/go/scip/J\215\183\STX\n\ + \\ETXZig\DLE&B/Z-github.aaakk.us.kg/sourcegraph/scip/bindings/go/scip/J\206\184\STX\n\ \\a\DC2\ENQ\n\ - \\NUL\240\ACK\SOH\n\ + \\NUL\242\ACK\SOH\n\ \\130\EOT\n\ \\SOH\f\DC2\ETX\n\ \\NUL\DC22\247\ETX An index contains one or more pieces of information about a given piece of\n\ @@ -6856,7 +6856,7 @@ packedFileDescriptor \\r\n\ \\ENQ\EOT\ENQ\STX\STX\ETX\DC2\EOT\200\SOH\DC3\DC4\n\ \\f\n\ - \\STX\EOT\ACK\DC2\ACK\203\SOH\NUL\226\SOH\SOH\n\ + \\STX\EOT\ACK\DC2\ACK\203\SOH\NUL\228\SOH\SOH\n\ \\v\n\ \\ETX\EOT\ACK\SOH\DC2\EOT\203\SOH\b\DC2\n\ \\SO\n\ @@ -6962,8 +6962,10 @@ packedFileDescriptor \\ENQ\EOT\ACK\STX\SOH\SOH\DC2\EOT\224\SOH\t\SYN\n\ \\r\n\ \\ENQ\EOT\ACK\STX\SOH\ETX\DC2\EOT\224\SOH\EM\SUB\n\ - \\f\n\ - \\EOT\EOT\ACK\STX\STX\DC2\EOT\225\SOH\STX\DC4\n\ + \\130\SOH\n\ + \\EOT\EOT\ACK\STX\STX\DC2\EOT\225\SOH\STX\DC4\"t NOTE: If you add new fields here, make sure to update the prepareSlot()\n\ + \ function responsible for parsing symbols.\n\ + \\n\ \\r\n\ \\ENQ\EOT\ACK\STX\STX\ACK\DC2\EOT\225\SOH\STX\b\n\ \\r\n\ @@ -6971,23 +6973,23 @@ packedFileDescriptor \\r\n\ \\ENQ\EOT\ACK\STX\STX\ETX\DC2\EOT\225\SOH\DC2\DC3\n\ \\131\SOH\n\ - \\STX\EOT\a\DC2\ACK\230\SOH\NUL\182\ETX\SOH\SUBu SymbolInformation defines metadata about a symbol, such as the symbol's\n\ + \\STX\EOT\a\DC2\ACK\232\SOH\NUL\184\ETX\SOH\SUBu SymbolInformation defines metadata about a symbol, such as the symbol's\n\ \ docstring or what package it's defined it.\n\ \\n\ \\v\n\ - \\ETX\EOT\a\SOH\DC2\EOT\230\SOH\b\EM\n\ + \\ETX\EOT\a\SOH\DC2\EOT\232\SOH\b\EM\n\ \\160\SOH\n\ - \\EOT\EOT\a\STX\NUL\DC2\EOT\233\SOH\STX\DC4\SUB\145\SOH Identifier of this symbol, which can be referenced from `Occurence.symbol`.\n\ + \\EOT\EOT\a\STX\NUL\DC2\EOT\235\SOH\STX\DC4\SUB\145\SOH Identifier of this symbol, which can be referenced from `Occurence.symbol`.\n\ \ The string must be formatted according to the grammar in `Symbol`.\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\NUL\ENQ\DC2\EOT\233\SOH\STX\b\n\ + \\ENQ\EOT\a\STX\NUL\ENQ\DC2\EOT\235\SOH\STX\b\n\ \\r\n\ - \\ENQ\EOT\a\STX\NUL\SOH\DC2\EOT\233\SOH\t\SI\n\ + \\ENQ\EOT\a\STX\NUL\SOH\DC2\EOT\235\SOH\t\SI\n\ \\r\n\ - \\ENQ\EOT\a\STX\NUL\ETX\DC2\EOT\233\SOH\DC2\DC3\n\ + \\ENQ\EOT\a\STX\NUL\ETX\DC2\EOT\235\SOH\DC2\DC3\n\ \\180\ETX\n\ - \\EOT\EOT\a\STX\SOH\DC2\EOT\240\SOH\STX$\SUB\165\ETX (optional, but strongly recommended) The markdown-formatted documentation\n\ + \\EOT\EOT\a\STX\SOH\DC2\EOT\242\SOH\STX$\SUB\165\ETX (optional, but strongly recommended) The markdown-formatted documentation\n\ \ for this symbol. Use `SymbolInformation.signature_documentation` to\n\ \ document the method/class/type signature of this symbol.\n\ \ Due to historical reasons, indexers may include signature documentation in\n\ @@ -6995,39 +6997,39 @@ packedFileDescriptor \ include non-code documentation in this field, for example docstrings.\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\SOH\EOT\DC2\EOT\240\SOH\STX\n\ + \\ENQ\EOT\a\STX\SOH\EOT\DC2\EOT\242\SOH\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\SOH\ENQ\DC2\EOT\240\SOH\v\DC1\n\ + \\ENQ\EOT\a\STX\SOH\ENQ\DC2\EOT\242\SOH\v\DC1\n\ \\r\n\ - \\ENQ\EOT\a\STX\SOH\SOH\DC2\EOT\240\SOH\DC2\US\n\ + \\ENQ\EOT\a\STX\SOH\SOH\DC2\EOT\242\SOH\DC2\US\n\ \\r\n\ - \\ENQ\EOT\a\STX\SOH\ETX\DC2\EOT\240\SOH\"#\n\ + \\ENQ\EOT\a\STX\SOH\ETX\DC2\EOT\242\SOH\"#\n\ \^\n\ - \\EOT\EOT\a\STX\STX\DC2\EOT\242\SOH\STX*\SUBP (optional) Relationships to other symbols (e.g., implements, type definition).\n\ + \\EOT\EOT\a\STX\STX\DC2\EOT\244\SOH\STX*\SUBP (optional) Relationships to other symbols (e.g., implements, type definition).\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\STX\EOT\DC2\EOT\242\SOH\STX\n\ + \\ENQ\EOT\a\STX\STX\EOT\DC2\EOT\244\SOH\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\STX\ACK\DC2\EOT\242\SOH\v\ETB\n\ + \\ENQ\EOT\a\STX\STX\ACK\DC2\EOT\244\SOH\v\ETB\n\ \\r\n\ - \\ENQ\EOT\a\STX\STX\SOH\DC2\EOT\242\SOH\CAN%\n\ + \\ENQ\EOT\a\STX\STX\SOH\DC2\EOT\244\SOH\CAN%\n\ \\r\n\ - \\ENQ\EOT\a\STX\STX\ETX\DC2\EOT\242\SOH()\n\ + \\ENQ\EOT\a\STX\STX\ETX\DC2\EOT\244\SOH()\n\ \\164\SOH\n\ - \\EOT\EOT\a\STX\ETX\DC2\EOT\246\SOH\STX\DLE\SUB\149\SOH The kind of this symbol. Use this field instead of\n\ + \\EOT\EOT\a\STX\ETX\DC2\EOT\248\SOH\STX\DLE\SUB\149\SOH The kind of this symbol. Use this field instead of\n\ \ `SymbolDescriptor.Suffix` to determine whether something is, for example, a\n\ \ class or a method.\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\ETX\ACK\DC2\EOT\246\SOH\STX\ACK\n\ + \\ENQ\EOT\a\STX\ETX\ACK\DC2\EOT\248\SOH\STX\ACK\n\ \\r\n\ - \\ENQ\EOT\a\STX\ETX\SOH\DC2\EOT\246\SOH\a\v\n\ + \\ENQ\EOT\a\STX\ETX\SOH\DC2\EOT\248\SOH\a\v\n\ \\r\n\ - \\ENQ\EOT\a\STX\ETX\ETX\DC2\EOT\246\SOH\SO\SI\n\ + \\ENQ\EOT\a\STX\ETX\ETX\DC2\EOT\248\SOH\SO\SI\n\ \\245\ENQ\n\ - \\EOT\EOT\a\EOT\NUL\DC2\ACK\133\STX\STX\146\ETX\ETX\SUB\228\ENQ (optional) Kind represents the fine-grained category of a symbol, suitable for presenting\n\ + \\EOT\EOT\a\EOT\NUL\DC2\ACK\135\STX\STX\148\ETX\ETX\SUB\228\ENQ (optional) Kind represents the fine-grained category of a symbol, suitable for presenting\n\ \ information about the symbol's meaning in the language.\n\ \\n\ \ For example:\n\ @@ -7043,592 +7045,592 @@ packedFileDescriptor \ - If two symbols have different Suffixes, they should have different Kinds.\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\EOT\NUL\SOH\DC2\EOT\133\STX\a\v\n\ + \\ENQ\EOT\a\EOT\NUL\SOH\DC2\EOT\135\STX\a\v\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\NUL\DC2\EOT\134\STX\ACK\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STX\NUL\DC2\EOT\136\STX\ACK\SUB\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\NUL\SOH\DC2\EOT\134\STX\ACK\NAK\n\ + \\a\EOT\a\EOT\NUL\STX\NUL\SOH\DC2\EOT\136\STX\ACK\NAK\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\NUL\STX\DC2\EOT\134\STX\CAN\EM\n\ + \\a\EOT\a\EOT\NUL\STX\NUL\STX\DC2\EOT\136\STX\CAN\EM\n\ \R\n\ - \\ACK\EOT\a\EOT\NUL\STX\SOH\DC2\EOT\136\STX\ACK\SUB\SUBB A method which may or may not have a body. For Java, Kotlin etc.\n\ + \\ACK\EOT\a\EOT\NUL\STX\SOH\DC2\EOT\138\STX\ACK\SUB\SUBB A method which may or may not have a body. For Java, Kotlin etc.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\SOH\SOH\DC2\EOT\136\STX\ACK\DC4\n\ + \\a\EOT\a\EOT\NUL\STX\SOH\SOH\DC2\EOT\138\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\SOH\STX\DC2\EOT\136\STX\ETB\EM\n\ + \\a\EOT\a\EOT\NUL\STX\SOH\STX\DC2\EOT\138\STX\ETB\EM\n\ \*\n\ - \\ACK\EOT\a\EOT\NUL\STX\STX\DC2\EOT\138\STX\ACK\DC4\SUB\SUB For Ruby's attr_accessor\n\ + \\ACK\EOT\a\EOT\NUL\STX\STX\DC2\EOT\140\STX\ACK\DC4\SUB\SUB For Ruby's attr_accessor\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\STX\SOH\DC2\EOT\138\STX\ACK\SO\n\ + \\a\EOT\a\EOT\NUL\STX\STX\SOH\DC2\EOT\140\STX\ACK\SO\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\STX\STX\DC2\EOT\138\STX\DC1\DC3\n\ + \\a\EOT\a\EOT\NUL\STX\STX\STX\DC2\EOT\140\STX\DC1\DC3\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\ETX\DC2\EOT\139\STX\ACK\DLE\n\ + \\ACK\EOT\a\EOT\NUL\STX\ETX\DC2\EOT\141\STX\ACK\DLE\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\ETX\SOH\DC2\EOT\139\STX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STX\ETX\SOH\DC2\EOT\141\STX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\ETX\STX\DC2\EOT\139\STX\SO\SI\n\ + \\a\EOT\a\EOT\NUL\STX\ETX\STX\DC2\EOT\141\STX\SO\SI\n\ \\ESC\n\ - \\ACK\EOT\a\EOT\NUL\STX\EOT\DC2\EOT\141\STX\ACK\DC4\SUB\v For Alloy\n\ + \\ACK\EOT\a\EOT\NUL\STX\EOT\DC2\EOT\143\STX\ACK\DC4\SUB\v For Alloy\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\EOT\SOH\DC2\EOT\141\STX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STX\EOT\SOH\DC2\EOT\143\STX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\EOT\STX\DC2\EOT\141\STX\DC2\DC3\n\ + \\a\EOT\a\EOT\NUL\STX\EOT\STX\DC2\EOT\143\STX\DC2\DC3\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\ENQ\DC2\EOT\142\STX\ACK\EM\n\ + \\ACK\EOT\a\EOT\NUL\STX\ENQ\DC2\EOT\144\STX\ACK\EM\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\ENQ\SOH\DC2\EOT\142\STX\ACK\DC4\n\ + \\a\EOT\a\EOT\NUL\STX\ENQ\SOH\DC2\EOT\144\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\ENQ\STX\DC2\EOT\142\STX\ETB\CAN\n\ + \\a\EOT\a\EOT\NUL\STX\ENQ\STX\DC2\EOT\144\STX\ETB\CAN\n\ \\EM\n\ - \\ACK\EOT\a\EOT\NUL\STX\ACK\DC2\EOT\144\STX\ACK\DC4\SUB\t For C++\n\ + \\ACK\EOT\a\EOT\NUL\STX\ACK\DC2\EOT\146\STX\ACK\DC4\SUB\t For C++\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\ACK\SOH\DC2\EOT\144\STX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STX\ACK\SOH\DC2\EOT\146\STX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\ACK\STX\DC2\EOT\144\STX\DC2\DC3\n\ + \\a\EOT\a\EOT\NUL\STX\ACK\STX\DC2\EOT\146\STX\DC2\DC3\n\ \\SUB\n\ - \\ACK\EOT\a\EOT\NUL\STX\a\DC2\EOT\146\STX\ACK\DLE\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STX\a\DC2\EOT\148\STX\ACK\DLE\SUB\n\ \ For Lean\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\a\SOH\DC2\EOT\146\STX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STX\a\SOH\DC2\EOT\148\STX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\a\STX\DC2\EOT\146\STX\SO\SI\n\ + \\a\EOT\a\EOT\NUL\STX\a\STX\DC2\EOT\148\STX\SO\SI\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\b\DC2\EOT\147\STX\ACK\DC2\n\ + \\ACK\EOT\a\EOT\NUL\STX\b\DC2\EOT\149\STX\ACK\DC2\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\b\SOH\DC2\EOT\147\STX\ACK\r\n\ + \\a\EOT\a\EOT\NUL\STX\b\SOH\DC2\EOT\149\STX\ACK\r\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\b\STX\DC2\EOT\147\STX\DLE\DC1\n\ + \\a\EOT\a\EOT\NUL\STX\b\STX\DC2\EOT\149\STX\DLE\DC1\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\t\DC2\EOT\148\STX\ACK\DLE\n\ + \\ACK\EOT\a\EOT\NUL\STX\t\DC2\EOT\150\STX\ACK\DLE\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\t\SOH\DC2\EOT\148\STX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STX\t\SOH\DC2\EOT\150\STX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\t\STX\DC2\EOT\148\STX\SO\SI\n\ + \\a\EOT\a\EOT\NUL\STX\t\STX\DC2\EOT\150\STX\SO\SI\n\ \\SO\n\ \\ACK\EOT\a\EOT\NUL\STX\n\ - \\DC2\EOT\149\STX\ACK\DC3\n\ + \\DC2\EOT\151\STX\ACK\DC3\n\ \\SI\n\ \\a\EOT\a\EOT\NUL\STX\n\ - \\SOH\DC2\EOT\149\STX\ACK\SO\n\ + \\SOH\DC2\EOT\151\STX\ACK\SO\n\ \\SI\n\ \\a\EOT\a\EOT\NUL\STX\n\ - \\STX\DC2\EOT\149\STX\DC1\DC2\n\ + \\STX\DC2\EOT\151\STX\DC1\DC2\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\v\DC2\EOT\150\STX\ACK\SYN\n\ + \\ACK\EOT\a\EOT\NUL\STX\v\DC2\EOT\152\STX\ACK\SYN\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\v\SOH\DC2\EOT\150\STX\ACK\DC1\n\ + \\a\EOT\a\EOT\NUL\STX\v\SOH\DC2\EOT\152\STX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\v\STX\DC2\EOT\150\STX\DC4\NAK\n\ + \\a\EOT\a\EOT\NUL\STX\v\STX\DC2\EOT\152\STX\DC4\NAK\n\ \\RS\n\ - \\ACK\EOT\a\EOT\NUL\STX\f\DC2\EOT\152\STX\ACK\DC4\SUB\SO For Solidity\n\ + \\ACK\EOT\a\EOT\NUL\STX\f\DC2\EOT\154\STX\ACK\DC4\SUB\SO For Solidity\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\f\SOH\DC2\EOT\152\STX\ACK\SO\n\ + \\a\EOT\a\EOT\NUL\STX\f\SOH\DC2\EOT\154\STX\ACK\SO\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\f\STX\DC2\EOT\152\STX\DC1\DC3\n\ + \\a\EOT\a\EOT\NUL\STX\f\STX\DC2\EOT\154\STX\DC1\DC3\n\ \\GS\n\ - \\ACK\EOT\a\EOT\NUL\STX\r\DC2\EOT\154\STX\ACK\SYN\SUB\r For Haskell\n\ + \\ACK\EOT\a\EOT\NUL\STX\r\DC2\EOT\156\STX\ACK\SYN\SUB\r For Haskell\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\r\SOH\DC2\EOT\154\STX\ACK\DLE\n\ + \\a\EOT\a\EOT\NUL\STX\r\SOH\DC2\EOT\156\STX\ACK\DLE\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\r\STX\DC2\EOT\154\STX\DC3\NAK\n\ + \\a\EOT\a\EOT\NUL\STX\r\STX\DC2\EOT\156\STX\DC3\NAK\n\ \\US\n\ - \\ACK\EOT\a\EOT\NUL\STX\SO\DC2\EOT\156\STX\ACK\DC4\SUB\SI For C# and F#\n\ + \\ACK\EOT\a\EOT\NUL\STX\SO\DC2\EOT\158\STX\ACK\DC4\SUB\SI For C# and F#\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\SO\SOH\DC2\EOT\156\STX\ACK\SO\n\ + \\a\EOT\a\EOT\NUL\STX\SO\SOH\DC2\EOT\158\STX\ACK\SO\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\SO\STX\DC2\EOT\156\STX\DC1\DC3\n\ + \\a\EOT\a\EOT\NUL\STX\SO\STX\DC2\EOT\158\STX\DC1\DC3\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\SI\DC2\EOT\157\STX\ACK\DLE\n\ + \\ACK\EOT\a\EOT\NUL\STX\SI\DC2\EOT\159\STX\ACK\DLE\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\SI\SOH\DC2\EOT\157\STX\ACK\n\ + \\a\EOT\a\EOT\NUL\STX\SI\SOH\DC2\EOT\159\STX\ACK\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\SI\STX\DC2\EOT\157\STX\r\SI\n\ + \\a\EOT\a\EOT\NUL\STX\SI\STX\DC2\EOT\159\STX\r\SI\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\DLE\DC2\EOT\158\STX\ACK\SYN\n\ + \\ACK\EOT\a\EOT\NUL\STX\DLE\DC2\EOT\160\STX\ACK\SYN\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\DLE\SOH\DC2\EOT\158\STX\ACK\DLE\n\ + \\a\EOT\a\EOT\NUL\STX\DLE\SOH\DC2\EOT\160\STX\ACK\DLE\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\DLE\STX\DC2\EOT\158\STX\DC3\NAK\n\ + \\a\EOT\a\EOT\NUL\STX\DLE\STX\DC2\EOT\160\STX\DC3\NAK\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\DC1\DC2\EOT\159\STX\ACK\DC1\n\ + \\ACK\EOT\a\EOT\NUL\STX\DC1\DC2\EOT\161\STX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\DC1\SOH\DC2\EOT\159\STX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STX\DC1\SOH\DC2\EOT\161\STX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\DC1\STX\DC2\EOT\159\STX\SO\DLE\n\ + \\a\EOT\a\EOT\NUL\STX\DC1\STX\DC2\EOT\161\STX\SO\DLE\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\DC2\DC2\EOT\160\STX\ACK\DC1\n\ + \\ACK\EOT\a\EOT\NUL\STX\DC2\DC2\EOT\162\STX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\DC2\SOH\DC2\EOT\160\STX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STX\DC2\SOH\DC2\EOT\162\STX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\DC2\STX\DC2\EOT\160\STX\SO\DLE\n\ + \\a\EOT\a\EOT\NUL\STX\DC2\STX\DC2\EOT\162\STX\SO\DLE\n\ \\SUB\n\ - \\ACK\EOT\a\EOT\NUL\STX\DC3\DC2\EOT\162\STX\ACK\NAK\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STX\DC3\DC2\EOT\164\STX\ACK\NAK\SUB\n\ \ For Dart\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\DC3\SOH\DC2\EOT\162\STX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STX\DC3\SOH\DC2\EOT\164\STX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\DC3\STX\DC2\EOT\162\STX\DC2\DC4\n\ + \\a\EOT\a\EOT\NUL\STX\DC3\STX\DC2\EOT\164\STX\DC2\DC4\n\ \\ESC\n\ - \\ACK\EOT\a\EOT\NUL\STX\DC4\DC2\EOT\164\STX\ACK\DLE\SUB\v For Alloy\n\ + \\ACK\EOT\a\EOT\NUL\STX\DC4\DC2\EOT\166\STX\ACK\DLE\SUB\v For Alloy\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\DC4\SOH\DC2\EOT\164\STX\ACK\n\ + \\a\EOT\a\EOT\NUL\STX\DC4\SOH\DC2\EOT\166\STX\ACK\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\DC4\STX\DC2\EOT\164\STX\r\SI\n\ + \\a\EOT\a\EOT\NUL\STX\DC4\STX\DC2\EOT\166\STX\r\SI\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\NAK\DC2\EOT\165\STX\ACK\DC1\n\ + \\ACK\EOT\a\EOT\NUL\STX\NAK\DC2\EOT\167\STX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\NAK\SOH\DC2\EOT\165\STX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STX\NAK\SOH\DC2\EOT\167\STX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\NAK\STX\DC2\EOT\165\STX\SO\DLE\n\ + \\a\EOT\a\EOT\NUL\STX\NAK\STX\DC2\EOT\167\STX\SO\DLE\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\SYN\DC2\EOT\166\STX\ACK\DLE\n\ + \\ACK\EOT\a\EOT\NUL\STX\SYN\DC2\EOT\168\STX\ACK\DLE\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\SYN\SOH\DC2\EOT\166\STX\ACK\n\ + \\a\EOT\a\EOT\NUL\STX\SYN\SOH\DC2\EOT\168\STX\ACK\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\SYN\STX\DC2\EOT\166\STX\r\SI\n\ + \\a\EOT\a\EOT\NUL\STX\SYN\STX\DC2\EOT\168\STX\r\SI\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\ETB\DC2\EOT\167\STX\ACK\DC4\n\ + \\ACK\EOT\a\EOT\NUL\STX\ETB\DC2\EOT\169\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\ETB\SOH\DC2\EOT\167\STX\ACK\SO\n\ + \\a\EOT\a\EOT\NUL\STX\ETB\SOH\DC2\EOT\169\STX\ACK\SO\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\ETB\STX\DC2\EOT\167\STX\DC1\DC3\n\ + \\a\EOT\a\EOT\NUL\STX\ETB\STX\DC2\EOT\169\STX\DC1\DC3\n\ \;\n\ - \\ACK\EOT\a\EOT\NUL\STX\CAN\DC2\EOT\169\STX\ACK\DC2\SUB+ For 'get' in Swift, 'attr_reader' in Ruby\n\ + \\ACK\EOT\a\EOT\NUL\STX\CAN\DC2\EOT\171\STX\ACK\DC2\SUB+ For 'get' in Swift, 'attr_reader' in Ruby\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\CAN\SOH\DC2\EOT\169\STX\ACK\f\n\ + \\a\EOT\a\EOT\NUL\STX\CAN\SOH\DC2\EOT\171\STX\ACK\f\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\CAN\STX\DC2\EOT\169\STX\SI\DC1\n\ + \\a\EOT\a\EOT\NUL\STX\CAN\STX\DC2\EOT\171\STX\SI\DC1\n\ \\SUB\n\ - \\ACK\EOT\a\EOT\NUL\STX\EM\DC2\EOT\171\STX\ACK\DC3\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STX\EM\DC2\EOT\173\STX\ACK\DC3\SUB\n\ \ For Raku\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\EM\SOH\DC2\EOT\171\STX\ACK\r\n\ + \\a\EOT\a\EOT\NUL\STX\EM\SOH\DC2\EOT\173\STX\ACK\r\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\EM\STX\DC2\EOT\171\STX\DLE\DC2\n\ + \\a\EOT\a\EOT\NUL\STX\EM\STX\DC2\EOT\173\STX\DLE\DC2\n\ \)\n\ - \\ACK\EOT\a\EOT\NUL\STX\SUB\DC2\EOT\173\STX\ACK\DC4\SUB\EM For Purescript and Lean\n\ + \\ACK\EOT\a\EOT\NUL\STX\SUB\DC2\EOT\175\STX\ACK\DC4\SUB\EM For Purescript and Lean\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\SUB\SOH\DC2\EOT\173\STX\ACK\SO\n\ + \\a\EOT\a\EOT\NUL\STX\SUB\SOH\DC2\EOT\175\STX\ACK\SO\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\SUB\STX\DC2\EOT\173\STX\DC1\DC3\n\ + \\a\EOT\a\EOT\NUL\STX\SUB\STX\DC2\EOT\175\STX\DC1\DC3\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\ESC\DC2\EOT\174\STX\ACK\NAK\n\ + \\ACK\EOT\a\EOT\NUL\STX\ESC\DC2\EOT\176\STX\ACK\NAK\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\ESC\SOH\DC2\EOT\174\STX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STX\ESC\SOH\DC2\EOT\176\STX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\ESC\STX\DC2\EOT\174\STX\DC2\DC4\n\ + \\a\EOT\a\EOT\NUL\STX\ESC\STX\DC2\EOT\176\STX\DC2\DC4\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX\FS\DC2\EOT\175\STX\ACK\SI\n\ + \\ACK\EOT\a\EOT\NUL\STX\FS\DC2\EOT\177\STX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\FS\SOH\DC2\EOT\175\STX\ACK\t\n\ + \\a\EOT\a\EOT\NUL\STX\FS\SOH\DC2\EOT\177\STX\ACK\t\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\FS\STX\DC2\EOT\175\STX\f\SO\n\ + \\a\EOT\a\EOT\NUL\STX\FS\STX\DC2\EOT\177\STX\f\SO\n\ \\FS\n\ - \\ACK\EOT\a\EOT\NUL\STX\GS\DC2\EOT\177\STX\ACK\DLE\SUB\f For Racket\n\ + \\ACK\EOT\a\EOT\NUL\STX\GS\DC2\EOT\179\STX\ACK\DLE\SUB\f For Racket\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\GS\SOH\DC2\EOT\177\STX\ACK\n\ + \\a\EOT\a\EOT\NUL\STX\GS\SOH\DC2\EOT\179\STX\ACK\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\GS\STX\DC2\EOT\177\STX\r\SI\n\ + \\a\EOT\a\EOT\NUL\STX\GS\STX\DC2\EOT\179\STX\r\SI\n\ \\SUB\n\ - \\ACK\EOT\a\EOT\NUL\STX\RS\DC2\EOT\179\STX\ACK\DC1\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STX\RS\DC2\EOT\181\STX\ACK\DC1\SUB\n\ \ For Lean\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\RS\SOH\DC2\EOT\179\STX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STX\RS\SOH\DC2\EOT\181\STX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\RS\STX\DC2\EOT\179\STX\SO\DLE\n\ + \\a\EOT\a\EOT\NUL\STX\RS\STX\DC2\EOT\181\STX\SO\DLE\n\ \\RS\n\ - \\ACK\EOT\a\EOT\NUL\STX\US\DC2\EOT\181\STX\ACK\DC3\SUB\SO For solidity\n\ + \\ACK\EOT\a\EOT\NUL\STX\US\DC2\EOT\183\STX\ACK\DC3\SUB\SO For solidity\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\US\SOH\DC2\EOT\181\STX\ACK\r\n\ + \\a\EOT\a\EOT\NUL\STX\US\SOH\DC2\EOT\183\STX\ACK\r\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\US\STX\DC2\EOT\181\STX\DLE\DC2\n\ + \\a\EOT\a\EOT\NUL\STX\US\STX\DC2\EOT\183\STX\DLE\DC2\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX \DC2\EOT\182\STX\ACK\DC1\n\ + \\ACK\EOT\a\EOT\NUL\STX \DC2\EOT\184\STX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX \SOH\DC2\EOT\182\STX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STX \SOH\DC2\EOT\184\STX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX \STX\DC2\EOT\182\STX\SO\DLE\n\ + \\a\EOT\a\EOT\NUL\STX \STX\DC2\EOT\184\STX\SO\DLE\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX!\DC2\EOT\183\STX\ACK\DC2\n\ + \\ACK\EOT\a\EOT\NUL\STX!\DC2\EOT\185\STX\ACK\DC2\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX!\SOH\DC2\EOT\183\STX\ACK\f\n\ + \\a\EOT\a\EOT\NUL\STX!\SOH\DC2\EOT\185\STX\ACK\f\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX!\STX\DC2\EOT\183\STX\SI\DC1\n\ + \\a\EOT\a\EOT\NUL\STX!\STX\DC2\EOT\185\STX\SI\DC1\n\ \\SUB\n\ - \\ACK\EOT\a\EOT\NUL\STX\"\DC2\EOT\185\STX\ACK\ETB\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STX\"\DC2\EOT\187\STX\ACK\ETB\SUB\n\ \ For Ruby\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\"\SOH\DC2\EOT\185\STX\ACK\DC1\n\ + \\a\EOT\a\EOT\NUL\STX\"\SOH\DC2\EOT\187\STX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX\"\STX\DC2\EOT\185\STX\DC4\SYN\n\ + \\a\EOT\a\EOT\NUL\STX\"\STX\DC2\EOT\187\STX\DC4\SYN\n\ \\148\SOH\n\ - \\ACK\EOT\a\EOT\NUL\STX#\DC2\EOT\188\STX\ACK\SUB\SUB\131\SOH Analogous to 'ThisParameter' and 'SelfParameter', but for languages\n\ + \\ACK\EOT\a\EOT\NUL\STX#\DC2\EOT\190\STX\ACK\SUB\SUB\131\SOH Analogous to 'ThisParameter' and 'SelfParameter', but for languages\n\ \ like Go where the receiver doesn't have a conventional name.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX#\SOH\DC2\EOT\188\STX\ACK\DC4\n\ + \\a\EOT\a\EOT\NUL\STX#\SOH\DC2\EOT\190\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX#\STX\DC2\EOT\188\STX\ETB\EM\n\ + \\a\EOT\a\EOT\NUL\STX#\STX\DC2\EOT\190\STX\ETB\EM\n\ \8\n\ - \\ACK\EOT\a\EOT\NUL\STX$\DC2\EOT\190\STX\ACK\US\SUB( Analogous to 'AbstractMethod', for Go.\n\ + \\ACK\EOT\a\EOT\NUL\STX$\DC2\EOT\192\STX\ACK\US\SUB( Analogous to 'AbstractMethod', for Go.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX$\SOH\DC2\EOT\190\STX\ACK\EM\n\ + \\a\EOT\a\EOT\NUL\STX$\SOH\DC2\EOT\192\STX\ACK\EM\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX$\STX\DC2\EOT\190\STX\FS\RS\n\ + \\a\EOT\a\EOT\NUL\STX$\STX\DC2\EOT\192\STX\FS\RS\n\ \\RS\n\ - \\ACK\EOT\a\EOT\NUL\STX%\DC2\EOT\192\STX\ACK\DC3\SUB\SO For Protobuf\n\ + \\ACK\EOT\a\EOT\NUL\STX%\DC2\EOT\194\STX\ACK\DC3\SUB\SO For Protobuf\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX%\SOH\DC2\EOT\192\STX\ACK\r\n\ + \\a\EOT\a\EOT\NUL\STX%\SOH\DC2\EOT\194\STX\ACK\r\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX%\STX\DC2\EOT\192\STX\DLE\DC2\n\ + \\a\EOT\a\EOT\NUL\STX%\STX\DC2\EOT\194\STX\DLE\DC2\n\ \\SUB\n\ - \\ACK\EOT\a\EOT\NUL\STX&\DC2\EOT\194\STX\ACK\DC1\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STX&\DC2\EOT\196\STX\ACK\DC1\SUB\n\ \ For Dart\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX&\SOH\DC2\EOT\194\STX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STX&\SOH\DC2\EOT\196\STX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX&\STX\DC2\EOT\194\STX\SO\DLE\n\ + \\a\EOT\a\EOT\NUL\STX&\STX\DC2\EOT\196\STX\SO\DLE\n\ \\RS\n\ - \\ACK\EOT\a\EOT\NUL\STX'\DC2\EOT\196\STX\ACK\DC4\SUB\SO For Solidity\n\ + \\ACK\EOT\a\EOT\NUL\STX'\DC2\EOT\198\STX\ACK\DC4\SUB\SO For Solidity\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX'\SOH\DC2\EOT\196\STX\ACK\SO\n\ + \\a\EOT\a\EOT\NUL\STX'\SOH\DC2\EOT\198\STX\ACK\SO\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX'\STX\DC2\EOT\196\STX\DC1\DC3\n\ + \\a\EOT\a\EOT\NUL\STX'\STX\DC2\EOT\198\STX\DC1\DC3\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX(\DC2\EOT\197\STX\ACK\DC2\n\ + \\ACK\EOT\a\EOT\NUL\STX(\DC2\EOT\199\STX\ACK\DC2\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX(\SOH\DC2\EOT\197\STX\ACK\f\n\ + \\a\EOT\a\EOT\NUL\STX(\SOH\DC2\EOT\199\STX\ACK\f\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX(\STX\DC2\EOT\197\STX\SI\DC1\n\ + \\a\EOT\a\EOT\NUL\STX(\STX\DC2\EOT\199\STX\SI\DC1\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX)\DC2\EOT\198\STX\ACK\NAK\n\ + \\ACK\EOT\a\EOT\NUL\STX)\DC2\EOT\200\STX\ACK\NAK\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX)\SOH\DC2\EOT\198\STX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STX)\SOH\DC2\EOT\200\STX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX)\STX\DC2\EOT\198\STX\DC2\DC4\n\ + \\a\EOT\a\EOT\NUL\STX)\STX\DC2\EOT\200\STX\DC2\DC4\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX*\DC2\EOT\199\STX\ACK\DLE\n\ + \\ACK\EOT\a\EOT\NUL\STX*\DC2\EOT\201\STX\ACK\DLE\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX*\SOH\DC2\EOT\199\STX\ACK\n\ + \\a\EOT\a\EOT\NUL\STX*\SOH\DC2\EOT\201\STX\ACK\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX*\STX\DC2\EOT\199\STX\r\SI\n\ + \\a\EOT\a\EOT\NUL\STX*\STX\DC2\EOT\201\STX\r\SI\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX+\DC2\EOT\200\STX\ACK\DC2\n\ + \\ACK\EOT\a\EOT\NUL\STX+\DC2\EOT\202\STX\ACK\DC2\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX+\SOH\DC2\EOT\200\STX\ACK\f\n\ + \\a\EOT\a\EOT\NUL\STX+\SOH\DC2\EOT\202\STX\ACK\f\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX+\STX\DC2\EOT\200\STX\SI\DC1\n\ + \\a\EOT\a\EOT\NUL\STX+\STX\DC2\EOT\202\STX\SI\DC1\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX,\DC2\EOT\201\STX\ACK\DC2\n\ + \\ACK\EOT\a\EOT\NUL\STX,\DC2\EOT\203\STX\ACK\DC2\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX,\SOH\DC2\EOT\201\STX\ACK\f\n\ + \\a\EOT\a\EOT\NUL\STX,\SOH\DC2\EOT\203\STX\ACK\f\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX,\STX\DC2\EOT\201\STX\SI\DC1\n\ + \\a\EOT\a\EOT\NUL\STX,\STX\DC2\EOT\203\STX\SI\DC1\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX-\DC2\EOT\202\STX\ACK\DC4\n\ + \\ACK\EOT\a\EOT\NUL\STX-\DC2\EOT\204\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX-\SOH\DC2\EOT\202\STX\ACK\SO\n\ + \\a\EOT\a\EOT\NUL\STX-\SOH\DC2\EOT\204\STX\ACK\SO\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX-\STX\DC2\EOT\202\STX\DC1\DC3\n\ + \\a\EOT\a\EOT\NUL\STX-\STX\DC2\EOT\204\STX\DC1\DC3\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX.\DC2\EOT\203\STX\ACK\DC3\n\ + \\ACK\EOT\a\EOT\NUL\STX.\DC2\EOT\205\STX\ACK\DC3\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX.\SOH\DC2\EOT\203\STX\ACK\r\n\ + \\a\EOT\a\EOT\NUL\STX.\SOH\DC2\EOT\205\STX\ACK\r\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX.\STX\DC2\EOT\203\STX\DLE\DC2\n\ + \\a\EOT\a\EOT\NUL\STX.\STX\DC2\EOT\205\STX\DLE\DC2\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX/\DC2\EOT\204\STX\ACK\EM\n\ + \\ACK\EOT\a\EOT\NUL\STX/\DC2\EOT\206\STX\ACK\EM\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX/\SOH\DC2\EOT\204\STX\ACK\DC3\n\ + \\a\EOT\a\EOT\NUL\STX/\SOH\DC2\EOT\206\STX\ACK\DC3\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX/\STX\DC2\EOT\204\STX\SYN\CAN\n\ + \\a\EOT\a\EOT\NUL\STX/\STX\DC2\EOT\206\STX\SYN\CAN\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX0\DC2\EOT\205\STX\ACK\NAK\n\ + \\ACK\EOT\a\EOT\NUL\STX0\DC2\EOT\207\STX\ACK\NAK\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX0\SOH\DC2\EOT\205\STX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STX0\SOH\DC2\EOT\207\STX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX0\STX\DC2\EOT\205\STX\DC2\DC4\n\ + \\a\EOT\a\EOT\NUL\STX0\STX\DC2\EOT\207\STX\DC2\DC4\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX1\DC2\EOT\206\STX\ACK\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STX1\DC2\EOT\208\STX\ACK\SUB\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX1\SOH\DC2\EOT\206\STX\ACK\DC4\n\ + \\a\EOT\a\EOT\NUL\STX1\SOH\DC2\EOT\208\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX1\STX\DC2\EOT\206\STX\ETB\EM\n\ + \\a\EOT\a\EOT\NUL\STX1\STX\DC2\EOT\208\STX\ETB\EM\n\ \/\n\ - \\ACK\EOT\a\EOT\NUL\STX2\DC2\EOT\208\STX\ACK\DC3\SUB\US For Haskell's PatternSynonyms\n\ + \\ACK\EOT\a\EOT\NUL\STX2\DC2\EOT\210\STX\ACK\DC3\SUB\US For Haskell's PatternSynonyms\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX2\SOH\DC2\EOT\208\STX\ACK\r\n\ + \\a\EOT\a\EOT\NUL\STX2\SOH\DC2\EOT\210\STX\ACK\r\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX2\STX\DC2\EOT\208\STX\DLE\DC2\n\ + \\a\EOT\a\EOT\NUL\STX2\STX\DC2\EOT\210\STX\DLE\DC2\n\ \\ESC\n\ - \\ACK\EOT\a\EOT\NUL\STX3\DC2\EOT\210\STX\ACK\NAK\SUB\v For Alloy\n\ + \\ACK\EOT\a\EOT\NUL\STX3\DC2\EOT\212\STX\ACK\NAK\SUB\v For Alloy\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX3\SOH\DC2\EOT\210\STX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STX3\SOH\DC2\EOT\212\STX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX3\STX\DC2\EOT\210\STX\DC2\DC4\n\ + \\a\EOT\a\EOT\NUL\STX3\STX\DC2\EOT\212\STX\DC2\DC4\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STX4\DC2\EOT\211\STX\ACK\DC4\n\ + \\ACK\EOT\a\EOT\NUL\STX4\DC2\EOT\213\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX4\SOH\DC2\EOT\211\STX\ACK\SO\n\ + \\a\EOT\a\EOT\NUL\STX4\SOH\DC2\EOT\213\STX\ACK\SO\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX4\STX\DC2\EOT\211\STX\DC1\DC3\n\ + \\a\EOT\a\EOT\NUL\STX4\STX\DC2\EOT\213\STX\DC1\DC3\n\ \Q\n\ - \\ACK\EOT\a\EOT\NUL\STX5\DC2\EOT\213\STX\ACK\DC4\SUBA Analogous to 'Trait' and 'TypeClass', for Swift and Objective-C\n\ + \\ACK\EOT\a\EOT\NUL\STX5\DC2\EOT\215\STX\ACK\DC4\SUBA Analogous to 'Trait' and 'TypeClass', for Swift and Objective-C\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX5\SOH\DC2\EOT\213\STX\ACK\SO\n\ + \\a\EOT\a\EOT\NUL\STX5\SOH\DC2\EOT\215\STX\ACK\SO\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX5\STX\DC2\EOT\213\STX\DC1\DC3\n\ + \\a\EOT\a\EOT\NUL\STX5\STX\DC2\EOT\215\STX\DC1\DC3\n\ \K\n\ - \\ACK\EOT\a\EOT\NUL\STX6\DC2\EOT\215\STX\ACK\SUB\SUB; Analogous to 'AbstractMethod', for Swift and Objective-C.\n\ + \\ACK\EOT\a\EOT\NUL\STX6\DC2\EOT\217\STX\ACK\SUB\SUB; Analogous to 'AbstractMethod', for Swift and Objective-C.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX6\SOH\DC2\EOT\215\STX\ACK\DC4\n\ + \\a\EOT\a\EOT\NUL\STX6\SOH\DC2\EOT\217\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX6\STX\DC2\EOT\215\STX\ETB\EM\n\ + \\a\EOT\a\EOT\NUL\STX6\STX\DC2\EOT\217\STX\ETB\EM\n\ \9\n\ - \\ACK\EOT\a\EOT\NUL\STX7\DC2\EOT\217\STX\ACK\GS\SUB) Analogous to 'AbstractMethod', for C++.\n\ + \\ACK\EOT\a\EOT\NUL\STX7\DC2\EOT\219\STX\ACK\GS\SUB) Analogous to 'AbstractMethod', for C++.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX7\SOH\DC2\EOT\217\STX\ACK\ETB\n\ + \\a\EOT\a\EOT\NUL\STX7\SOH\DC2\EOT\219\STX\ACK\ETB\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX7\STX\DC2\EOT\217\STX\SUB\FS\n\ + \\a\EOT\a\EOT\NUL\STX7\STX\DC2\EOT\219\STX\SUB\FS\n\ \\GS\n\ - \\ACK\EOT\a\EOT\NUL\STX8\DC2\EOT\219\STX\ACK\ETB\SUB\r For Haskell\n\ + \\ACK\EOT\a\EOT\NUL\STX8\DC2\EOT\221\STX\ACK\ETB\SUB\r For Haskell\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX8\SOH\DC2\EOT\219\STX\ACK\DC1\n\ + \\a\EOT\a\EOT\NUL\STX8\SOH\DC2\EOT\221\STX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX8\STX\DC2\EOT\219\STX\DC4\SYN\n\ + \\a\EOT\a\EOT\NUL\STX8\STX\DC2\EOT\221\STX\DC4\SYN\n\ \4\n\ - \\ACK\EOT\a\EOT\NUL\STX9\DC2\EOT\221\STX\ACK\EM\SUB$ 'self' in Python, Rust, Swift etc.\n\ + \\ACK\EOT\a\EOT\NUL\STX9\DC2\EOT\223\STX\ACK\EM\SUB$ 'self' in Python, Rust, Swift etc.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX9\SOH\DC2\EOT\221\STX\ACK\DC3\n\ + \\a\EOT\a\EOT\NUL\STX9\SOH\DC2\EOT\223\STX\ACK\DC3\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX9\STX\DC2\EOT\221\STX\SYN\CAN\n\ + \\a\EOT\a\EOT\NUL\STX9\STX\DC2\EOT\223\STX\SYN\CAN\n\ \;\n\ - \\ACK\EOT\a\EOT\NUL\STX:\DC2\EOT\223\STX\ACK\DC2\SUB+ For 'set' in Swift, 'attr_writer' in Ruby\n\ + \\ACK\EOT\a\EOT\NUL\STX:\DC2\EOT\225\STX\ACK\DC2\SUB+ For 'set' in Swift, 'attr_writer' in Ruby\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX:\SOH\DC2\EOT\223\STX\ACK\f\n\ + \\a\EOT\a\EOT\NUL\STX:\SOH\DC2\EOT\225\STX\ACK\f\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX:\STX\DC2\EOT\223\STX\SI\DC1\n\ + \\a\EOT\a\EOT\NUL\STX:\STX\DC2\EOT\225\STX\SI\DC1\n\ \3\n\ - \\ACK\EOT\a\EOT\NUL\STX;\DC2\EOT\225\STX\ACK\NAK\SUB# For Alloy, analogous to 'Struct'.\n\ + \\ACK\EOT\a\EOT\NUL\STX;\DC2\EOT\227\STX\ACK\NAK\SUB# For Alloy, analogous to 'Struct'.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX;\SOH\DC2\EOT\225\STX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STX;\SOH\DC2\EOT\227\STX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX;\STX\DC2\EOT\225\STX\DC2\DC4\n\ + \\a\EOT\a\EOT\NUL\STX;\STX\DC2\EOT\227\STX\DC2\DC4\n\ \\SUB\n\ - \\ACK\EOT\a\EOT\NUL\STX<\DC2\EOT\227\STX\ACK\SUB\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STX<\DC2\EOT\229\STX\ACK\SUB\SUB\n\ \ For Ruby\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX<\SOH\DC2\EOT\227\STX\ACK\DC4\n\ + \\a\EOT\a\EOT\NUL\STX<\SOH\DC2\EOT\229\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX<\STX\DC2\EOT\227\STX\ETB\EM\n\ + \\a\EOT\a\EOT\NUL\STX<\STX\DC2\EOT\229\STX\ETB\EM\n\ \8\n\ - \\ACK\EOT\a\EOT\NUL\STX=\DC2\EOT\229\STX\ACK\ESC\SUB( Analogous to 'StaticMethod', for Ruby.\n\ + \\ACK\EOT\a\EOT\NUL\STX=\DC2\EOT\231\STX\ACK\ESC\SUB( Analogous to 'StaticMethod', for Ruby.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX=\SOH\DC2\EOT\229\STX\ACK\NAK\n\ + \\a\EOT\a\EOT\NUL\STX=\SOH\DC2\EOT\231\STX\ACK\NAK\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX=\STX\DC2\EOT\229\STX\CAN\SUB\n\ + \\a\EOT\a\EOT\NUL\STX=\STX\DC2\EOT\231\STX\CAN\SUB\n\ \5\n\ - \\ACK\EOT\a\EOT\NUL\STX>\DC2\EOT\231\STX\ACK\FS\SUB% Analogous to 'StaticField', for C++\n\ + \\ACK\EOT\a\EOT\NUL\STX>\DC2\EOT\233\STX\ACK\FS\SUB% Analogous to 'StaticField', for C++\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX>\SOH\DC2\EOT\231\STX\ACK\SYN\n\ + \\a\EOT\a\EOT\NUL\STX>\SOH\DC2\EOT\233\STX\ACK\SYN\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX>\STX\DC2\EOT\231\STX\EM\ESC\n\ + \\a\EOT\a\EOT\NUL\STX>\STX\DC2\EOT\233\STX\EM\ESC\n\ \\CAN\n\ - \\ACK\EOT\a\EOT\NUL\STX?\DC2\EOT\233\STX\ACK\ETB\SUB\b For C#\n\ + \\ACK\EOT\a\EOT\NUL\STX?\DC2\EOT\235\STX\ACK\ETB\SUB\b For C#\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX?\SOH\DC2\EOT\233\STX\ACK\DC1\n\ + \\a\EOT\a\EOT\NUL\STX?\SOH\DC2\EOT\235\STX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX?\STX\DC2\EOT\233\STX\DC4\SYN\n\ + \\a\EOT\a\EOT\NUL\STX?\STX\DC2\EOT\235\STX\DC4\SYN\n\ \\CAN\n\ - \\ACK\EOT\a\EOT\NUL\STX@\DC2\EOT\235\STX\ACK\ETB\SUB\b For C#\n\ + \\ACK\EOT\a\EOT\NUL\STX@\DC2\EOT\237\STX\ACK\ETB\SUB\b For C#\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX@\SOH\DC2\EOT\235\STX\ACK\DC1\n\ + \\a\EOT\a\EOT\NUL\STX@\SOH\DC2\EOT\237\STX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STX@\STX\DC2\EOT\235\STX\DC4\SYN\n\ + \\a\EOT\a\EOT\NUL\STX@\STX\DC2\EOT\237\STX\DC4\SYN\n\ \(\n\ - \\ACK\EOT\a\EOT\NUL\STXA\DC2\EOT\237\STX\ACK\CAN\SUB\CAN For Java, C#, C++ etc.\n\ + \\ACK\EOT\a\EOT\NUL\STXA\DC2\EOT\239\STX\ACK\CAN\SUB\CAN For Java, C#, C++ etc.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXA\SOH\DC2\EOT\237\STX\ACK\DC2\n\ + \\a\EOT\a\EOT\NUL\STXA\SOH\DC2\EOT\239\STX\ACK\DC2\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXA\STX\DC2\EOT\237\STX\NAK\ETB\n\ + \\a\EOT\a\EOT\NUL\STXA\STX\DC2\EOT\239\STX\NAK\ETB\n\ \)\n\ - \\ACK\EOT\a\EOT\NUL\STXB\DC2\EOT\239\STX\ACK\SUB\SUB\EM For C#, TypeScript etc.\n\ + \\ACK\EOT\a\EOT\NUL\STXB\DC2\EOT\241\STX\ACK\SUB\SUB\EM For C#, TypeScript etc.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXB\SOH\DC2\EOT\239\STX\ACK\DC4\n\ + \\a\EOT\a\EOT\NUL\STXB\SOH\DC2\EOT\241\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXB\STX\DC2\EOT\239\STX\ETB\EM\n\ + \\a\EOT\a\EOT\NUL\STXB\STX\DC2\EOT\241\STX\ETB\EM\n\ \\FS\n\ - \\ACK\EOT\a\EOT\NUL\STXC\DC2\EOT\241\STX\ACK\SUB\SUB\f For C, C++\n\ + \\ACK\EOT\a\EOT\NUL\STXC\DC2\EOT\243\STX\ACK\SUB\SUB\f For C, C++\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXC\SOH\DC2\EOT\241\STX\ACK\DC4\n\ + \\a\EOT\a\EOT\NUL\STXC\SOH\DC2\EOT\243\STX\ACK\DC4\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXC\STX\DC2\EOT\241\STX\ETB\EM\n\ + \\a\EOT\a\EOT\NUL\STXC\STX\DC2\EOT\243\STX\ETB\EM\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STXD\DC2\EOT\242\STX\ACK\DC2\n\ + \\ACK\EOT\a\EOT\NUL\STXD\DC2\EOT\244\STX\ACK\DC2\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXD\SOH\DC2\EOT\242\STX\ACK\f\n\ + \\a\EOT\a\EOT\NUL\STXD\SOH\DC2\EOT\244\STX\ACK\f\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXD\STX\DC2\EOT\242\STX\SI\DC1\n\ + \\a\EOT\a\EOT\NUL\STXD\STX\DC2\EOT\244\STX\SI\DC1\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STXE\DC2\EOT\243\STX\ACK\DC2\n\ + \\ACK\EOT\a\EOT\NUL\STXE\DC2\EOT\245\STX\ACK\DC2\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXE\SOH\DC2\EOT\243\STX\ACK\f\n\ + \\a\EOT\a\EOT\NUL\STXE\SOH\DC2\EOT\245\STX\ACK\f\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXE\STX\DC2\EOT\243\STX\SI\DC1\n\ + \\a\EOT\a\EOT\NUL\STXE\STX\DC2\EOT\245\STX\SI\DC1\n\ \\ESC\n\ - \\ACK\EOT\a\EOT\NUL\STXF\DC2\EOT\245\STX\ACK\NAK\SUB\v For Swift\n\ + \\ACK\EOT\a\EOT\NUL\STXF\DC2\EOT\247\STX\ACK\NAK\SUB\v For Swift\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXF\SOH\DC2\EOT\245\STX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STXF\SOH\DC2\EOT\247\STX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXF\STX\DC2\EOT\245\STX\DC2\DC4\n\ + \\a\EOT\a\EOT\NUL\STXF\STX\DC2\EOT\247\STX\DC2\DC4\n\ \\SUB\n\ - \\ACK\EOT\a\EOT\NUL\STXG\DC2\EOT\247\STX\ACK\DC2\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STXG\DC2\EOT\249\STX\ACK\DC2\SUB\n\ \ For Lean\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXG\SOH\DC2\EOT\247\STX\ACK\f\n\ + \\a\EOT\a\EOT\NUL\STXG\SOH\DC2\EOT\249\STX\ACK\f\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXG\STX\DC2\EOT\247\STX\SI\DC1\n\ + \\a\EOT\a\EOT\NUL\STXG\STX\DC2\EOT\249\STX\SI\DC1\n\ \\SUB\n\ - \\ACK\EOT\a\EOT\NUL\STXH\DC2\EOT\249\STX\ACK\DC3\SUB\n\ + \\ACK\EOT\a\EOT\NUL\STXH\DC2\EOT\251\STX\ACK\DC3\SUB\n\ \ For Lean\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXH\SOH\DC2\EOT\249\STX\ACK\r\n\ + \\a\EOT\a\EOT\NUL\STXH\SOH\DC2\EOT\251\STX\ACK\r\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXH\STX\DC2\EOT\249\STX\DLE\DC2\n\ + \\a\EOT\a\EOT\NUL\STXH\STX\DC2\EOT\251\STX\DLE\DC2\n\ \U\n\ - \\ACK\EOT\a\EOT\NUL\STXI\DC2\EOT\252\STX\ACK\EM\SUBE Method receiver for languages\n\ + \\ACK\EOT\a\EOT\NUL\STXI\DC2\EOT\254\STX\ACK\EM\SUBE Method receiver for languages\n\ \ 'this' in JavaScript, C++, Java etc.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXI\SOH\DC2\EOT\252\STX\ACK\DC3\n\ + \\a\EOT\a\EOT\NUL\STXI\SOH\DC2\EOT\254\STX\ACK\DC3\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXI\STX\DC2\EOT\252\STX\SYN\CAN\n\ + \\a\EOT\a\EOT\NUL\STXI\STX\DC2\EOT\254\STX\SYN\CAN\n\ \O\n\ - \\ACK\EOT\a\EOT\NUL\STXJ\DC2\EOT\254\STX\ACK\DC1\SUB? Analogous to 'Protocol' and 'TypeClass', for Rust, Scala etc.\n\ + \\ACK\EOT\a\EOT\NUL\STXJ\DC2\EOT\128\ETX\ACK\DC1\SUB? Analogous to 'Protocol' and 'TypeClass', for Rust, Scala etc.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXJ\SOH\DC2\EOT\254\STX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STXJ\SOH\DC2\EOT\128\ETX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXJ\STX\DC2\EOT\254\STX\SO\DLE\n\ + \\a\EOT\a\EOT\NUL\STXJ\STX\DC2\EOT\128\ETX\SO\DLE\n\ \E\n\ - \\ACK\EOT\a\EOT\NUL\STXK\DC2\EOT\128\ETX\ACK\ETB\SUB5 Analogous to 'AbstractMethod', for Rust, Scala etc.\n\ + \\ACK\EOT\a\EOT\NUL\STXK\DC2\EOT\130\ETX\ACK\ETB\SUB5 Analogous to 'AbstractMethod', for Rust, Scala etc.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXK\SOH\DC2\EOT\128\ETX\ACK\DC1\n\ + \\a\EOT\a\EOT\NUL\STXK\SOH\DC2\EOT\130\ETX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXK\STX\DC2\EOT\128\ETX\DC4\SYN\n\ + \\a\EOT\a\EOT\NUL\STXK\STX\DC2\EOT\130\ETX\DC4\SYN\n\ \\137\SOH\n\ - \\ACK\EOT\a\EOT\NUL\STXL\DC2\EOT\131\ETX\ACK\DLE\SUBy Data type definition for languages like OCaml which use `type`\n\ + \\ACK\EOT\a\EOT\NUL\STXL\DC2\EOT\133\ETX\ACK\DLE\SUBy Data type definition for languages like OCaml which use `type`\n\ \ rather than separate keywords like `struct` and `enum`.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXL\SOH\DC2\EOT\131\ETX\ACK\n\ + \\a\EOT\a\EOT\NUL\STXL\SOH\DC2\EOT\133\ETX\ACK\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXL\STX\DC2\EOT\131\ETX\r\SI\n\ + \\a\EOT\a\EOT\NUL\STXL\STX\DC2\EOT\133\ETX\r\SI\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STXM\DC2\EOT\132\ETX\ACK\NAK\n\ + \\ACK\EOT\a\EOT\NUL\STXM\DC2\EOT\134\ETX\ACK\NAK\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXM\SOH\DC2\EOT\132\ETX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STXM\SOH\DC2\EOT\134\ETX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXM\STX\DC2\EOT\132\ETX\DC2\DC4\n\ + \\a\EOT\a\EOT\NUL\STXM\STX\DC2\EOT\134\ETX\DC2\DC4\n\ \S\n\ - \\ACK\EOT\a\EOT\NUL\STXN\DC2\EOT\134\ETX\ACK\NAK\SUBC Analogous to 'Trait' and 'Protocol', for Haskell, Purescript etc.\n\ + \\ACK\EOT\a\EOT\NUL\STXN\DC2\EOT\136\ETX\ACK\NAK\SUBC Analogous to 'Trait' and 'Protocol', for Haskell, Purescript etc.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXN\SOH\DC2\EOT\134\ETX\ACK\SI\n\ + \\a\EOT\a\EOT\NUL\STXN\SOH\DC2\EOT\136\ETX\ACK\SI\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXN\STX\DC2\EOT\134\ETX\DC2\DC4\n\ + \\a\EOT\a\EOT\NUL\STXN\STX\DC2\EOT\136\ETX\DC2\DC4\n\ \M\n\ - \\ACK\EOT\a\EOT\NUL\STXO\DC2\EOT\136\ETX\ACK\ESC\SUB= Analogous to 'AbstractMethod', for Haskell, Purescript etc.\n\ + \\ACK\EOT\a\EOT\NUL\STXO\DC2\EOT\138\ETX\ACK\ESC\SUB= Analogous to 'AbstractMethod', for Haskell, Purescript etc.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXO\SOH\DC2\EOT\136\ETX\ACK\NAK\n\ + \\a\EOT\a\EOT\NUL\STXO\SOH\DC2\EOT\138\ETX\ACK\NAK\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXO\STX\DC2\EOT\136\ETX\CAN\SUB\n\ + \\a\EOT\a\EOT\NUL\STXO\STX\DC2\EOT\138\ETX\CAN\SUB\n\ \\GS\n\ - \\ACK\EOT\a\EOT\NUL\STXP\DC2\EOT\138\ETX\ACK\SYN\SUB\r For Haskell\n\ + \\ACK\EOT\a\EOT\NUL\STXP\DC2\EOT\140\ETX\ACK\SYN\SUB\r For Haskell\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXP\SOH\DC2\EOT\138\ETX\ACK\DLE\n\ + \\a\EOT\a\EOT\NUL\STXP\SOH\DC2\EOT\140\ETX\ACK\DLE\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXP\STX\DC2\EOT\138\ETX\DC3\NAK\n\ + \\a\EOT\a\EOT\NUL\STXP\STX\DC2\EOT\140\ETX\DC3\NAK\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STXQ\DC2\EOT\139\ETX\ACK\EM\n\ + \\ACK\EOT\a\EOT\NUL\STXQ\DC2\EOT\141\ETX\ACK\EM\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXQ\SOH\DC2\EOT\139\ETX\ACK\DC3\n\ + \\a\EOT\a\EOT\NUL\STXQ\SOH\DC2\EOT\141\ETX\ACK\DC3\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXQ\STX\DC2\EOT\139\ETX\SYN\CAN\n\ + \\a\EOT\a\EOT\NUL\STXQ\STX\DC2\EOT\141\ETX\SYN\CAN\n\ \(\n\ - \\ACK\EOT\a\EOT\NUL\STXR\DC2\EOT\141\ETX\ACK\DC1\SUB\CAN For C, C++, Capn Proto\n\ + \\ACK\EOT\a\EOT\NUL\STXR\DC2\EOT\143\ETX\ACK\DC1\SUB\CAN For C, C++, Capn Proto\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXR\SOH\DC2\EOT\141\ETX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STXR\SOH\DC2\EOT\143\ETX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXR\STX\DC2\EOT\141\ETX\SO\DLE\n\ + \\a\EOT\a\EOT\NUL\STXR\STX\DC2\EOT\143\ETX\SO\DLE\n\ \\SO\n\ - \\ACK\EOT\a\EOT\NUL\STXS\DC2\EOT\142\ETX\ACK\DC1\n\ + \\ACK\EOT\a\EOT\NUL\STXS\DC2\EOT\144\ETX\ACK\DC1\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXS\SOH\DC2\EOT\142\ETX\ACK\v\n\ + \\a\EOT\a\EOT\NUL\STXS\SOH\DC2\EOT\144\ETX\ACK\v\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXS\STX\DC2\EOT\142\ETX\SO\DLE\n\ + \\a\EOT\a\EOT\NUL\STXS\STX\DC2\EOT\144\ETX\SO\DLE\n\ \[\n\ - \\ACK\EOT\a\EOT\NUL\STXT\DC2\EOT\143\ETX\ACK\DC4\"K Next = 86;\n\ + \\ACK\EOT\a\EOT\NUL\STXT\DC2\EOT\145\ETX\ACK\DC4\"K Next = 86;\n\ \ Feel free to open a PR proposing new language-specific kinds.\n\ \\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXT\SOH\DC2\EOT\143\ETX\ACK\SO\n\ + \\a\EOT\a\EOT\NUL\STXT\SOH\DC2\EOT\145\ETX\ACK\SO\n\ \\SI\n\ - \\a\EOT\a\EOT\NUL\STXT\STX\DC2\EOT\143\ETX\DC1\DC3\n\ + \\a\EOT\a\EOT\NUL\STXT\STX\DC2\EOT\145\ETX\DC1\DC3\n\ \\243\ETX\n\ - \\EOT\EOT\a\STX\EOT\DC2\EOT\156\ETX\STX\SUB\SUB\228\ETX (optional) The name of this symbol as it should be displayed to the user.\n\ + \\EOT\EOT\a\STX\EOT\DC2\EOT\158\ETX\STX\SUB\SUB\228\ETX (optional) The name of this symbol as it should be displayed to the user.\n\ \ For example, the symbol \"com/example/MyClass#myMethod(+1).\" should have the\n\ \ display name \"myMethod\". The `symbol` field is not a reliable source of\n\ \ the display name for several reasons:\n\ @@ -7639,13 +7641,13 @@ packedFileDescriptor \ displayed to the user.\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\EOT\ENQ\DC2\EOT\156\ETX\STX\b\n\ + \\ENQ\EOT\a\STX\EOT\ENQ\DC2\EOT\158\ETX\STX\b\n\ \\r\n\ - \\ENQ\EOT\a\STX\EOT\SOH\DC2\EOT\156\ETX\t\NAK\n\ + \\ENQ\EOT\a\STX\EOT\SOH\DC2\EOT\158\ETX\t\NAK\n\ \\r\n\ - \\ENQ\EOT\a\STX\EOT\ETX\DC2\EOT\156\ETX\CAN\EM\n\ + \\ENQ\EOT\a\STX\EOT\ETX\DC2\EOT\158\ETX\CAN\EM\n\ \\196\ETX\n\ - \\EOT\EOT\a\STX\ENQ\DC2\EOT\163\ETX\STX'\SUB\181\ETX (optional) The signature of this symbol as it's displayed in API\n\ + \\EOT\EOT\a\STX\ENQ\DC2\EOT\165\ETX\STX'\SUB\181\ETX (optional) The signature of this symbol as it's displayed in API\n\ \ documentation or in hover tooltips. For example, a Java method that adds\n\ \ two numbers this would have `Document.language = \"java\"` and `Document.text\n\ \ = \"void add(int a, int b)\". The `language` and `text` fields are required\n\ @@ -7653,14 +7655,14 @@ packedFileDescriptor \ included to support hyperlinking referenced symbols in the signature.\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\ENQ\ACK\DC2\EOT\163\ETX\STX\n\ + \\ENQ\EOT\a\STX\ENQ\ACK\DC2\EOT\165\ETX\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\ENQ\SOH\DC2\EOT\163\ETX\v\"\n\ + \\ENQ\EOT\a\STX\ENQ\SOH\DC2\EOT\165\ETX\v\"\n\ \\r\n\ - \\ENQ\EOT\a\STX\ENQ\ETX\DC2\EOT\163\ETX%&\n\ + \\ENQ\EOT\a\STX\ENQ\ETX\DC2\EOT\165\ETX%&\n\ \\201\b\n\ - \\EOT\EOT\a\STX\ACK\DC2\EOT\181\ETX\STX\RS\SUB\186\b (optional) The enclosing symbol if this is a local symbol. For non-local\n\ + \\EOT\EOT\a\STX\ACK\DC2\EOT\183\ETX\STX\RS\SUB\186\b (optional) The enclosing symbol if this is a local symbol. For non-local\n\ \ symbols, the enclosing symbol should be parsed from the `symbol` field\n\ \ using the `Descriptor` grammar.\n\ \\n\ @@ -7679,25 +7681,25 @@ packedFileDescriptor \ symbol.\n\ \\n\ \\r\n\ - \\ENQ\EOT\a\STX\ACK\ENQ\DC2\EOT\181\ETX\STX\b\n\ + \\ENQ\EOT\a\STX\ACK\ENQ\DC2\EOT\183\ETX\STX\b\n\ \\r\n\ - \\ENQ\EOT\a\STX\ACK\SOH\DC2\EOT\181\ETX\t\EM\n\ + \\ENQ\EOT\a\STX\ACK\SOH\DC2\EOT\183\ETX\t\EM\n\ \\r\n\ - \\ENQ\EOT\a\STX\ACK\ETX\DC2\EOT\181\ETX\FS\GS\n\ + \\ENQ\EOT\a\STX\ACK\ETX\DC2\EOT\183\ETX\FS\GS\n\ \\f\n\ - \\STX\EOT\b\DC2\ACK\185\ETX\NUL\241\ETX\SOH\n\ + \\STX\EOT\b\DC2\ACK\187\ETX\NUL\243\ETX\SOH\n\ \\v\n\ - \\ETX\EOT\b\SOH\DC2\EOT\185\ETX\b\DC4\n\ + \\ETX\EOT\b\SOH\DC2\EOT\187\ETX\b\DC4\n\ \\f\n\ - \\EOT\EOT\b\STX\NUL\DC2\EOT\186\ETX\STX\DC4\n\ + \\EOT\EOT\b\STX\NUL\DC2\EOT\188\ETX\STX\DC4\n\ \\r\n\ - \\ENQ\EOT\b\STX\NUL\ENQ\DC2\EOT\186\ETX\STX\b\n\ + \\ENQ\EOT\b\STX\NUL\ENQ\DC2\EOT\188\ETX\STX\b\n\ \\r\n\ - \\ENQ\EOT\b\STX\NUL\SOH\DC2\EOT\186\ETX\t\SI\n\ + \\ENQ\EOT\b\STX\NUL\SOH\DC2\EOT\188\ETX\t\SI\n\ \\r\n\ - \\ENQ\EOT\b\STX\NUL\ETX\DC2\EOT\186\ETX\DC2\DC3\n\ + \\ENQ\EOT\b\STX\NUL\ETX\DC2\EOT\188\ETX\DC2\DC3\n\ \\222\b\n\ - \\EOT\EOT\b\STX\SOH\DC2\EOT\211\ETX\STX\CAN\SUB\207\b When resolving \"Find references\", this field documents what other symbols\n\ + \\EOT\EOT\b\STX\SOH\DC2\EOT\213\ETX\STX\CAN\SUB\207\b When resolving \"Find references\", this field documents what other symbols\n\ \ should be included together with this symbol. For example, consider the\n\ \ following TypeScript code that defines two symbols `Animal#sound()` and\n\ \ `Dog#sound()`:\n\ @@ -7723,13 +7725,13 @@ packedFileDescriptor \ `Animal#sound()` method as well.\n\ \\n\ \\r\n\ - \\ENQ\EOT\b\STX\SOH\ENQ\DC2\EOT\211\ETX\STX\ACK\n\ + \\ENQ\EOT\b\STX\SOH\ENQ\DC2\EOT\213\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\EOT\b\STX\SOH\SOH\DC2\EOT\211\ETX\a\DC3\n\ + \\ENQ\EOT\b\STX\SOH\SOH\DC2\EOT\213\ETX\a\DC3\n\ \\r\n\ - \\ENQ\EOT\b\STX\SOH\ETX\DC2\EOT\211\ETX\SYN\ETB\n\ + \\ENQ\EOT\b\STX\SOH\ETX\DC2\EOT\213\ETX\SYN\ETB\n\ \\238\ETX\n\ - \\EOT\EOT\b\STX\STX\DC2\EOT\220\ETX\STX\GS\SUB\223\ETX Similar to `is_reference` but for \"Find implementations\".\n\ + \\EOT\EOT\b\STX\STX\DC2\EOT\222\ETX\STX\GS\SUB\223\ETX Similar to `is_reference` but for \"Find implementations\".\n\ \ It's common for `is_implementation` and `is_reference` to both be true but\n\ \ it's not always the case.\n\ \ In the TypeScript example above, observe that `Dog#` has an\n\ @@ -7739,22 +7741,22 @@ packedFileDescriptor \ implementations\" on the \"Animal#\" symbol.\n\ \\n\ \\r\n\ - \\ENQ\EOT\b\STX\STX\ENQ\DC2\EOT\220\ETX\STX\ACK\n\ + \\ENQ\EOT\b\STX\STX\ENQ\DC2\EOT\222\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\EOT\b\STX\STX\SOH\DC2\EOT\220\ETX\a\CAN\n\ + \\ENQ\EOT\b\STX\STX\SOH\DC2\EOT\222\ETX\a\CAN\n\ \\r\n\ - \\ENQ\EOT\b\STX\STX\ETX\DC2\EOT\220\ETX\ESC\FS\n\ + \\ENQ\EOT\b\STX\STX\ETX\DC2\EOT\222\ETX\ESC\FS\n\ \P\n\ - \\EOT\EOT\b\STX\ETX\DC2\EOT\222\ETX\STX\RS\SUBB Similar to `references_symbols` but for \"Go to type definition\".\n\ + \\EOT\EOT\b\STX\ETX\DC2\EOT\224\ETX\STX\RS\SUBB Similar to `references_symbols` but for \"Go to type definition\".\n\ \\n\ \\r\n\ - \\ENQ\EOT\b\STX\ETX\ENQ\DC2\EOT\222\ETX\STX\ACK\n\ + \\ENQ\EOT\b\STX\ETX\ENQ\DC2\EOT\224\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\EOT\b\STX\ETX\SOH\DC2\EOT\222\ETX\a\EM\n\ + \\ENQ\EOT\b\STX\ETX\SOH\DC2\EOT\224\ETX\a\EM\n\ \\r\n\ - \\ENQ\EOT\b\STX\ETX\ETX\DC2\EOT\222\ETX\FS\GS\n\ + \\ENQ\EOT\b\STX\ETX\ETX\DC2\EOT\224\ETX\FS\GS\n\ \\167\a\n\ - \\EOT\EOT\b\STX\EOT\DC2\EOT\239\ETX\STX\EM\SUB\213\ACK Allows overriding the behavior of \"Go to definition\" and \"Find references\"\n\ + \\EOT\EOT\b\STX\EOT\DC2\EOT\241\ETX\STX\EM\SUB\213\ACK Allows overriding the behavior of \"Go to definition\" and \"Find references\"\n\ \ for symbols which do not have a definition of their own or could\n\ \ potentially have multiple definitions.\n\ \\n\ @@ -7773,387 +7775,387 @@ packedFileDescriptor \\"A Update registerInverseRelationships on adding a new field here.\n\ \\n\ \\r\n\ - \\ENQ\EOT\b\STX\EOT\ENQ\DC2\EOT\239\ETX\STX\ACK\n\ + \\ENQ\EOT\b\STX\EOT\ENQ\DC2\EOT\241\ETX\STX\ACK\n\ \\r\n\ - \\ENQ\EOT\b\STX\EOT\SOH\DC2\EOT\239\ETX\a\DC4\n\ + \\ENQ\EOT\b\STX\EOT\SOH\DC2\EOT\241\ETX\a\DC4\n\ \\r\n\ - \\ENQ\EOT\b\STX\EOT\ETX\DC2\EOT\239\ETX\ETB\CAN\n\ + \\ENQ\EOT\b\STX\EOT\ETX\DC2\EOT\241\ETX\ETB\CAN\n\ \\136\ETX\n\ - \\STX\ENQ\ETX\DC2\ACK\248\ETX\NUL\142\EOT\SOH\SUB\249\STX SymbolRole declares what \"role\" a symbol has in an occurrence. A role is\n\ + \\STX\ENQ\ETX\DC2\ACK\250\ETX\NUL\144\EOT\SOH\SUB\249\STX SymbolRole declares what \"role\" a symbol has in an occurrence. A role is\n\ \ encoded as a bitset where each bit represents a different role. For example,\n\ \ to determine if the `Import` role is set, test whether the second bit of the\n\ \ enum value is defined. In pseudocode, this can be implemented with the\n\ \ logic: `const isImportRole = (role.value & SymbolRole.Import.value) > 0`.\n\ \\n\ \\v\n\ - \\ETX\ENQ\ETX\SOH\DC2\EOT\248\ETX\ENQ\SI\n\ + \\ETX\ENQ\ETX\SOH\DC2\EOT\250\ETX\ENQ\SI\n\ \v\n\ - \\EOT\ENQ\ETX\STX\NUL\DC2\EOT\251\ETX\STX\FS\SUBh This case is not meant to be used; it only exists to avoid an error\n\ + \\EOT\ENQ\ETX\STX\NUL\DC2\EOT\253\ETX\STX\FS\SUBh This case is not meant to be used; it only exists to avoid an error\n\ \ from the Protobuf code generator.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\NUL\SOH\DC2\EOT\251\ETX\STX\ETB\n\ + \\ENQ\ENQ\ETX\STX\NUL\SOH\DC2\EOT\253\ETX\STX\ETB\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\NUL\STX\DC2\EOT\251\ETX\SUB\ESC\n\ + \\ENQ\ENQ\ETX\STX\NUL\STX\DC2\EOT\253\ETX\SUB\ESC\n\ \T\n\ - \\EOT\ENQ\ETX\STX\SOH\DC2\EOT\253\ETX\STX\DC3\SUBF Is the symbol defined here? If not, then this is a symbol reference.\n\ + \\EOT\ENQ\ETX\STX\SOH\DC2\EOT\255\ETX\STX\DC3\SUBF Is the symbol defined here? If not, then this is a symbol reference.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\SOH\SOH\DC2\EOT\253\ETX\STX\f\n\ + \\ENQ\ENQ\ETX\STX\SOH\SOH\DC2\EOT\255\ETX\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\SOH\STX\DC2\EOT\253\ETX\SI\DC2\n\ + \\ENQ\ENQ\ETX\STX\SOH\STX\DC2\EOT\255\ETX\SI\DC2\n\ \,\n\ - \\EOT\ENQ\ETX\STX\STX\DC2\EOT\255\ETX\STX\SI\SUB\RS Is the symbol imported here?\n\ + \\EOT\ENQ\ETX\STX\STX\DC2\EOT\129\EOT\STX\SI\SUB\RS Is the symbol imported here?\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\STX\SOH\DC2\EOT\255\ETX\STX\b\n\ + \\ENQ\ENQ\ETX\STX\STX\SOH\DC2\EOT\129\EOT\STX\b\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\STX\STX\DC2\EOT\255\ETX\v\SO\n\ + \\ENQ\ENQ\ETX\STX\STX\STX\DC2\EOT\129\EOT\v\SO\n\ \+\n\ - \\EOT\ENQ\ETX\STX\ETX\DC2\EOT\129\EOT\STX\DC4\SUB\GS Is the symbol written here?\n\ + \\EOT\ENQ\ETX\STX\ETX\DC2\EOT\131\EOT\STX\DC4\SUB\GS Is the symbol written here?\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ETX\SOH\DC2\EOT\129\EOT\STX\r\n\ + \\ENQ\ENQ\ETX\STX\ETX\SOH\DC2\EOT\131\EOT\STX\r\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ETX\STX\DC2\EOT\129\EOT\DLE\DC3\n\ + \\ENQ\ENQ\ETX\STX\ETX\STX\DC2\EOT\131\EOT\DLE\DC3\n\ \(\n\ - \\EOT\ENQ\ETX\STX\EOT\DC2\EOT\131\EOT\STX\DC3\SUB\SUB Is the symbol read here?\n\ + \\EOT\ENQ\ETX\STX\EOT\DC2\EOT\133\EOT\STX\DC3\SUB\SUB Is the symbol read here?\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\EOT\SOH\DC2\EOT\131\EOT\STX\f\n\ + \\ENQ\ENQ\ETX\STX\EOT\SOH\DC2\EOT\133\EOT\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\EOT\STX\DC2\EOT\131\EOT\SI\DC2\n\ + \\ENQ\ENQ\ETX\STX\EOT\STX\DC2\EOT\133\EOT\SI\DC2\n\ \0\n\ - \\EOT\ENQ\ETX\STX\ENQ\DC2\EOT\133\EOT\STX\DC3\SUB\" Is the symbol in generated code?\n\ + \\EOT\ENQ\ETX\STX\ENQ\DC2\EOT\135\EOT\STX\DC3\SUB\" Is the symbol in generated code?\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ENQ\SOH\DC2\EOT\133\EOT\STX\v\n\ + \\ENQ\ENQ\ETX\STX\ENQ\SOH\DC2\EOT\135\EOT\STX\v\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ENQ\STX\DC2\EOT\133\EOT\SO\DC2\n\ + \\ENQ\ENQ\ETX\STX\ENQ\STX\DC2\EOT\135\EOT\SO\DC2\n\ \+\n\ - \\EOT\ENQ\ETX\STX\ACK\DC2\EOT\135\EOT\STX\SO\SUB\GS Is the symbol in test code?\n\ + \\EOT\ENQ\ETX\STX\ACK\DC2\EOT\137\EOT\STX\SO\SUB\GS Is the symbol in test code?\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ACK\SOH\DC2\EOT\135\EOT\STX\ACK\n\ + \\ENQ\ENQ\ETX\STX\ACK\SOH\DC2\EOT\137\EOT\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\ACK\STX\DC2\EOT\135\EOT\t\r\n\ + \\ENQ\ENQ\ETX\STX\ACK\STX\DC2\EOT\137\EOT\t\r\n\ \\237\SOH\n\ - \\EOT\ENQ\ETX\STX\a\DC2\EOT\141\EOT\STX\ESC\SUB\222\SOH Is this a signature for a symbol that is defined elsewhere?\n\ + \\EOT\ENQ\ETX\STX\a\DC2\EOT\143\EOT\STX\ESC\SUB\222\SOH Is this a signature for a symbol that is defined elsewhere?\n\ \\n\ \ Applies to forward declarations for languages like C, C++\n\ \ and Objective-C, as well as `val` declarations in interface\n\ \ files in languages like SML and OCaml.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\a\SOH\DC2\EOT\141\EOT\STX\DC3\n\ + \\ENQ\ENQ\ETX\STX\a\SOH\DC2\EOT\143\EOT\STX\DC3\n\ \\r\n\ - \\ENQ\ENQ\ETX\STX\a\STX\DC2\EOT\141\EOT\SYN\SUB\n\ + \\ENQ\ENQ\ETX\STX\a\STX\DC2\EOT\143\EOT\SYN\SUB\n\ \\f\n\ - \\STX\ENQ\EOT\DC2\ACK\144\EOT\NUL\237\EOT\SOH\n\ + \\STX\ENQ\EOT\DC2\ACK\146\EOT\NUL\239\EOT\SOH\n\ \\v\n\ - \\ETX\ENQ\EOT\SOH\DC2\EOT\144\EOT\ENQ\SI\n\ + \\ETX\ENQ\EOT\SOH\DC2\EOT\146\EOT\ENQ\SI\n\ \\v\n\ - \\ETX\ENQ\EOT\ETX\DC2\EOT\145\EOT\STX\FS\n\ + \\ETX\ENQ\EOT\ETX\DC2\EOT\147\EOT\STX\FS\n\ \\f\n\ - \\EOT\ENQ\EOT\ETX\STX\DC2\EOT\145\EOT\STX\FS\n\ + \\EOT\ENQ\EOT\ETX\STX\DC2\EOT\147\EOT\STX\FS\n\ \\f\n\ - \\EOT\ENQ\EOT\STX\NUL\DC2\EOT\147\EOT\STX\FS\n\ + \\EOT\ENQ\EOT\STX\NUL\DC2\EOT\149\EOT\STX\FS\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\NUL\SOH\DC2\EOT\147\EOT\STX\ETB\n\ + \\ENQ\ENQ\EOT\STX\NUL\SOH\DC2\EOT\149\EOT\STX\ETB\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\NUL\STX\DC2\EOT\147\EOT\SUB\ESC\n\ + \\ENQ\ENQ\EOT\STX\NUL\STX\DC2\EOT\149\EOT\SUB\ESC\n\ \;\n\ - \\EOT\ENQ\EOT\STX\SOH\DC2\EOT\150\EOT\STX\SO\SUB- Comment, including comment markers and text\n\ + \\EOT\ENQ\EOT\STX\SOH\DC2\EOT\152\EOT\STX\SO\SUB- Comment, including comment markers and text\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SOH\SOH\DC2\EOT\150\EOT\STX\t\n\ + \\ENQ\ENQ\EOT\STX\SOH\SOH\DC2\EOT\152\EOT\STX\t\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SOH\STX\DC2\EOT\150\EOT\f\r\n\ + \\ENQ\ENQ\EOT\STX\SOH\STX\DC2\EOT\152\EOT\f\r\n\ \\ESC\n\ - \\EOT\ENQ\EOT\STX\STX\DC2\EOT\153\EOT\STX\ESC\SUB\r `;` `.` `,`\n\ + \\EOT\ENQ\EOT\STX\STX\DC2\EOT\155\EOT\STX\ESC\SUB\r `;` `.` `,`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\STX\SOH\DC2\EOT\153\EOT\STX\SYN\n\ + \\ENQ\ENQ\EOT\STX\STX\SOH\DC2\EOT\155\EOT\STX\SYN\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\STX\STX\DC2\EOT\153\EOT\EM\SUB\n\ + \\ENQ\ENQ\EOT\STX\STX\STX\DC2\EOT\155\EOT\EM\SUB\n\ \2\n\ - \\EOT\ENQ\EOT\STX\ETX\DC2\EOT\155\EOT\STX\EM\SUB$ (), {}, [] when used syntactically\n\ + \\EOT\ENQ\EOT\STX\ETX\DC2\EOT\157\EOT\STX\EM\SUB$ (), {}, [] when used syntactically\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ETX\SOH\DC2\EOT\155\EOT\STX\DC4\n\ + \\ENQ\ENQ\EOT\STX\ETX\SOH\DC2\EOT\157\EOT\STX\DC4\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ETX\STX\DC2\EOT\155\EOT\ETB\CAN\n\ + \\ENQ\ENQ\EOT\STX\ETX\STX\DC2\EOT\157\EOT\ETB\CAN\n\ \5\n\ - \\EOT\ENQ\EOT\STX\EOT\DC2\EOT\158\EOT\STX\SO\SUB' `if`, `else`, `return`, `class`, etc.\n\ + \\EOT\ENQ\EOT\STX\EOT\DC2\EOT\160\EOT\STX\SO\SUB' `if`, `else`, `return`, `class`, etc.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\EOT\SOH\DC2\EOT\158\EOT\STX\t\n\ + \\ENQ\ENQ\EOT\STX\EOT\SOH\DC2\EOT\160\EOT\STX\t\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\EOT\STX\DC2\EOT\158\EOT\f\r\n\ + \\ENQ\ENQ\EOT\STX\EOT\STX\DC2\EOT\160\EOT\f\r\n\ \\f\n\ - \\EOT\ENQ\EOT\STX\ENQ\DC2\EOT\159\EOT\STX*\n\ + \\EOT\ENQ\EOT\STX\ENQ\DC2\EOT\161\EOT\STX*\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ENQ\SOH\DC2\EOT\159\EOT\STX\DC3\n\ + \\ENQ\ENQ\EOT\STX\ENQ\SOH\DC2\EOT\161\EOT\STX\DC3\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ENQ\STX\DC2\EOT\159\EOT\SYN\ETB\n\ + \\ENQ\ENQ\EOT\STX\ENQ\STX\DC2\EOT\161\EOT\SYN\ETB\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ENQ\ETX\DC2\EOT\159\EOT\CAN)\n\ + \\ENQ\ENQ\EOT\STX\ENQ\ETX\DC2\EOT\161\EOT\CAN)\n\ \\SO\n\ - \\ACK\ENQ\EOT\STX\ENQ\ETX\SOH\DC2\EOT\159\EOT\EM(\n\ + \\ACK\ENQ\EOT\STX\ENQ\ETX\SOH\DC2\EOT\161\EOT\EM(\n\ \\RS\n\ - \\EOT\ENQ\EOT\STX\ACK\DC2\EOT\162\EOT\STX\EM\SUB\DLE `+`, `*`, etc.\n\ + \\EOT\ENQ\EOT\STX\ACK\DC2\EOT\164\EOT\STX\EM\SUB\DLE `+`, `*`, etc.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ACK\SOH\DC2\EOT\162\EOT\STX\DC4\n\ + \\ENQ\ENQ\EOT\STX\ACK\SOH\DC2\EOT\164\EOT\STX\DC4\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ACK\STX\DC2\EOT\162\EOT\ETB\CAN\n\ + \\ENQ\ENQ\EOT\STX\ACK\STX\DC2\EOT\164\EOT\ETB\CAN\n\ \X\n\ - \\EOT\ENQ\EOT\STX\a\DC2\EOT\165\EOT\STX\DC1\SUBJ non-specific catch-all for any identifier not better described elsewhere\n\ + \\EOT\ENQ\EOT\STX\a\DC2\EOT\167\EOT\STX\DC1\SUBJ non-specific catch-all for any identifier not better described elsewhere\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\a\SOH\DC2\EOT\165\EOT\STX\f\n\ + \\ENQ\ENQ\EOT\STX\a\SOH\DC2\EOT\167\EOT\STX\f\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\a\STX\DC2\EOT\165\EOT\SI\DLE\n\ + \\ENQ\ENQ\EOT\STX\a\STX\DC2\EOT\167\EOT\SI\DLE\n\ \N\n\ - \\EOT\ENQ\EOT\STX\b\DC2\EOT\167\EOT\STX\CAN\SUB@ Identifiers builtin to the language: `min`, `print` in Python.\n\ + \\EOT\ENQ\EOT\STX\b\DC2\EOT\169\EOT\STX\CAN\SUB@ Identifiers builtin to the language: `min`, `print` in Python.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\b\SOH\DC2\EOT\167\EOT\STX\DC3\n\ + \\ENQ\ENQ\EOT\STX\b\SOH\DC2\EOT\169\EOT\STX\DC3\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\b\STX\DC2\EOT\167\EOT\SYN\ETB\n\ + \\ENQ\ENQ\EOT\STX\b\STX\DC2\EOT\169\EOT\SYN\ETB\n\ \[\n\ - \\EOT\ENQ\EOT\STX\t\DC2\EOT\169\EOT\STX\NAK\SUBM Identifiers representing `null`-like values: `None` in Python, `nil` in Go.\n\ + \\EOT\ENQ\EOT\STX\t\DC2\EOT\171\EOT\STX\NAK\SUBM Identifiers representing `null`-like values: `None` in Python, `nil` in Go.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\t\SOH\DC2\EOT\169\EOT\STX\DLE\n\ + \\ENQ\ENQ\EOT\STX\t\SOH\DC2\EOT\171\EOT\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\t\STX\DC2\EOT\169\EOT\DC3\DC4\n\ + \\ENQ\ENQ\EOT\STX\t\STX\DC2\EOT\171\EOT\DC3\DC4\n\ \.\n\ \\EOT\ENQ\EOT\STX\n\ - \\DC2\EOT\171\EOT\STX\EM\SUB `xyz` in `const xyz = \"hello\"`\n\ + \\DC2\EOT\173\EOT\STX\EM\SUB `xyz` in `const xyz = \"hello\"`\n\ \\n\ \\r\n\ \\ENQ\ENQ\EOT\STX\n\ - \\SOH\DC2\EOT\171\EOT\STX\DC4\n\ + \\SOH\DC2\EOT\173\EOT\STX\DC4\n\ \\r\n\ \\ENQ\ENQ\EOT\STX\n\ - \\STX\DC2\EOT\171\EOT\ETB\CAN\n\ + \\STX\DC2\EOT\173\EOT\ETB\CAN\n\ \'\n\ - \\EOT\ENQ\EOT\STX\v\DC2\EOT\173\EOT\STX\US\SUB\EM `var X = \"hello\"` in Go\n\ + \\EOT\ENQ\EOT\STX\v\DC2\EOT\175\EOT\STX\US\SUB\EM `var X = \"hello\"` in Go\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\v\SOH\DC2\EOT\173\EOT\STX\EM\n\ + \\ENQ\ENQ\EOT\STX\v\SOH\DC2\EOT\175\EOT\STX\EM\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\v\STX\DC2\EOT\173\EOT\FS\RS\n\ + \\ENQ\ENQ\EOT\STX\v\STX\DC2\EOT\175\EOT\FS\RS\n\ \3\n\ - \\EOT\ENQ\EOT\STX\f\DC2\EOT\175\EOT\STX\ESC\SUB% Parameter definition and references\n\ + \\EOT\ENQ\EOT\STX\f\DC2\EOT\177\EOT\STX\ESC\SUB% Parameter definition and references\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\f\SOH\DC2\EOT\175\EOT\STX\NAK\n\ + \\ENQ\ENQ\EOT\STX\f\SOH\DC2\EOT\177\EOT\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\f\STX\DC2\EOT\175\EOT\CAN\SUB\n\ + \\ENQ\ENQ\EOT\STX\f\STX\DC2\EOT\177\EOT\CAN\SUB\n\ \X\n\ - \\EOT\ENQ\EOT\STX\r\DC2\EOT\177\EOT\STX\ETB\SUBJ Identifiers for variable definitions and references within a local scope\n\ + \\EOT\ENQ\EOT\STX\r\DC2\EOT\179\EOT\STX\ETB\SUBJ Identifiers for variable definitions and references within a local scope\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\r\SOH\DC2\EOT\177\EOT\STX\DC1\n\ + \\ENQ\ENQ\EOT\STX\r\SOH\DC2\EOT\179\EOT\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\r\STX\DC2\EOT\177\EOT\DC4\SYN\n\ + \\ENQ\ENQ\EOT\STX\r\STX\DC2\EOT\179\EOT\DC4\SYN\n\ \K\n\ - \\EOT\ENQ\EOT\STX\SO\DC2\EOT\179\EOT\STX\SUB\SUB= Identifiers that shadow other identifiers in an outer scope\n\ + \\EOT\ENQ\EOT\STX\SO\DC2\EOT\181\EOT\STX\SUB\SUB= Identifiers that shadow other identifiers in an outer scope\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SO\SOH\DC2\EOT\179\EOT\STX\DC4\n\ + \\ENQ\ENQ\EOT\STX\SO\SOH\DC2\EOT\181\EOT\STX\DC4\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SO\STX\DC2\EOT\179\EOT\ETB\EM\n\ + \\ENQ\ENQ\EOT\STX\SO\STX\DC2\EOT\181\EOT\ETB\EM\n\ \\205\SOH\n\ - \\EOT\ENQ\EOT\STX\SI\DC2\EOT\184\EOT\STX\ESC\SUB\190\SOH Identifier representing a unit of code abstraction and/or namespacing.\n\ + \\EOT\ENQ\EOT\STX\SI\DC2\EOT\186\EOT\STX\ESC\SUB\190\SOH Identifier representing a unit of code abstraction and/or namespacing.\n\ \\n\ \ NOTE: This corresponds to a package in Go and JVM languages,\n\ \ and a module in languages like Python and JavaScript.\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SI\SOH\DC2\EOT\184\EOT\STX\NAK\n\ + \\ENQ\ENQ\EOT\STX\SI\SOH\DC2\EOT\186\EOT\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SI\STX\DC2\EOT\184\EOT\CAN\SUB\n\ + \\ENQ\ENQ\EOT\STX\SI\STX\DC2\EOT\186\EOT\CAN\SUB\n\ \\f\n\ - \\EOT\ENQ\EOT\STX\DLE\DC2\EOT\185\EOT\STX*\n\ + \\EOT\ENQ\EOT\STX\DLE\DC2\EOT\187\EOT\STX*\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DLE\SOH\DC2\EOT\185\EOT\STX\DC2\n\ + \\ENQ\ENQ\EOT\STX\DLE\SOH\DC2\EOT\187\EOT\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DLE\STX\DC2\EOT\185\EOT\NAK\ETB\n\ + \\ENQ\ENQ\EOT\STX\DLE\STX\DC2\EOT\187\EOT\NAK\ETB\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DLE\ETX\DC2\EOT\185\EOT\CAN)\n\ + \\ENQ\ENQ\EOT\STX\DLE\ETX\DC2\EOT\187\EOT\CAN)\n\ \\SO\n\ - \\ACK\ENQ\EOT\STX\DLE\ETX\SOH\DC2\EOT\185\EOT\EM(\n\ + \\ACK\ENQ\EOT\STX\DLE\ETX\SOH\DC2\EOT\187\EOT\EM(\n\ \4\n\ - \\EOT\ENQ\EOT\STX\DC1\DC2\EOT\188\EOT\STX\SUB\SUB& Function references, including calls\n\ + \\EOT\ENQ\EOT\STX\DC1\DC2\EOT\190\EOT\STX\SUB\SUB& Function references, including calls\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC1\SOH\DC2\EOT\188\EOT\STX\DC4\n\ + \\ENQ\ENQ\EOT\STX\DC1\SOH\DC2\EOT\190\EOT\STX\DC4\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC1\STX\DC2\EOT\188\EOT\ETB\EM\n\ + \\ENQ\ENQ\EOT\STX\DC1\STX\DC2\EOT\190\EOT\ETB\EM\n\ \(\n\ - \\EOT\ENQ\EOT\STX\DC2\DC2\EOT\190\EOT\STX$\SUB\SUB Function definition only\n\ + \\EOT\ENQ\EOT\STX\DC2\DC2\EOT\192\EOT\STX$\SUB\SUB Function definition only\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC2\SOH\DC2\EOT\190\EOT\STX\RS\n\ + \\ENQ\ENQ\EOT\STX\DC2\SOH\DC2\EOT\192\EOT\STX\RS\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC2\STX\DC2\EOT\190\EOT!#\n\ + \\ENQ\ENQ\EOT\STX\DC2\STX\DC2\EOT\192\EOT!#\n\ \7\n\ - \\EOT\ENQ\EOT\STX\DC3\DC2\EOT\193\EOT\STX\ETB\SUB) Macro references, including invocations\n\ + \\EOT\ENQ\EOT\STX\DC3\DC2\EOT\195\EOT\STX\ETB\SUB) Macro references, including invocations\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC3\SOH\DC2\EOT\193\EOT\STX\DC1\n\ + \\ENQ\ENQ\EOT\STX\DC3\SOH\DC2\EOT\195\EOT\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC3\STX\DC2\EOT\193\EOT\DC4\SYN\n\ + \\ENQ\ENQ\EOT\STX\DC3\STX\DC2\EOT\195\EOT\DC4\SYN\n\ \%\n\ - \\EOT\ENQ\EOT\STX\DC4\DC2\EOT\195\EOT\STX!\SUB\ETB Macro definition only\n\ + \\EOT\ENQ\EOT\STX\DC4\DC2\EOT\197\EOT\STX!\SUB\ETB Macro definition only\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC4\SOH\DC2\EOT\195\EOT\STX\ESC\n\ + \\ENQ\ENQ\EOT\STX\DC4\SOH\DC2\EOT\197\EOT\STX\ESC\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\DC4\STX\DC2\EOT\195\EOT\RS \n\ + \\ENQ\ENQ\EOT\STX\DC4\STX\DC2\EOT\197\EOT\RS \n\ \!\n\ - \\EOT\ENQ\EOT\STX\NAK\DC2\EOT\198\EOT\STX\SYN\SUB\DC3 non-builtin types\n\ + \\EOT\ENQ\EOT\STX\NAK\DC2\EOT\200\EOT\STX\SYN\SUB\DC3 non-builtin types\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\NAK\SOH\DC2\EOT\198\EOT\STX\DLE\n\ + \\ENQ\ENQ\EOT\STX\NAK\SOH\DC2\EOT\200\EOT\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\NAK\STX\DC2\EOT\198\EOT\DC3\NAK\n\ + \\ENQ\ENQ\EOT\STX\NAK\STX\DC2\EOT\200\EOT\DC3\NAK\n\ \K\n\ - \\EOT\ENQ\EOT\STX\SYN\DC2\EOT\200\EOT\STX\GS\SUB= builtin types only, such as `str` for Python or `int` in Go\n\ + \\EOT\ENQ\EOT\STX\SYN\DC2\EOT\202\EOT\STX\GS\SUB= builtin types only, such as `str` for Python or `int` in Go\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SYN\SOH\DC2\EOT\200\EOT\STX\ETB\n\ + \\ENQ\ENQ\EOT\STX\SYN\SOH\DC2\EOT\202\EOT\STX\ETB\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SYN\STX\DC2\EOT\200\EOT\SUB\FS\n\ + \\ENQ\ENQ\EOT\STX\SYN\STX\DC2\EOT\202\EOT\SUB\FS\n\ \7\n\ - \\EOT\ENQ\EOT\STX\ETB\DC2\EOT\203\EOT\STX\ESC\SUB) Python decorators, c-like __attribute__\n\ + \\EOT\ENQ\EOT\STX\ETB\DC2\EOT\205\EOT\STX\ESC\SUB) Python decorators, c-like __attribute__\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ETB\SOH\DC2\EOT\203\EOT\STX\NAK\n\ + \\ENQ\ENQ\EOT\STX\ETB\SOH\DC2\EOT\205\EOT\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ETB\STX\DC2\EOT\203\EOT\CAN\SUB\n\ + \\ENQ\ENQ\EOT\STX\ETB\STX\DC2\EOT\205\EOT\CAN\SUB\n\ \\DC4\n\ - \\EOT\ENQ\EOT\STX\CAN\DC2\EOT\206\EOT\STX\DC3\SUB\ACK `\\b`\n\ + \\EOT\ENQ\EOT\STX\CAN\DC2\EOT\208\EOT\STX\DC3\SUB\ACK `\\b`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\CAN\SOH\DC2\EOT\206\EOT\STX\r\n\ + \\ENQ\ENQ\EOT\STX\CAN\SOH\DC2\EOT\208\EOT\STX\r\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\CAN\STX\DC2\EOT\206\EOT\DLE\DC2\n\ + \\ENQ\ENQ\EOT\STX\CAN\STX\DC2\EOT\208\EOT\DLE\DC2\n\ \\CAN\n\ - \\EOT\ENQ\EOT\STX\EM\DC2\EOT\208\EOT\STX\NAK\SUB\n\ + \\EOT\ENQ\EOT\STX\EM\DC2\EOT\210\EOT\STX\NAK\SUB\n\ \ `*`, `+`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\EM\SOH\DC2\EOT\208\EOT\STX\SI\n\ + \\ENQ\ENQ\EOT\STX\EM\SOH\DC2\EOT\210\EOT\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\EM\STX\DC2\EOT\208\EOT\DC2\DC4\n\ + \\ENQ\ENQ\EOT\STX\EM\STX\DC2\EOT\210\EOT\DC2\DC4\n\ \\DC3\n\ - \\EOT\ENQ\EOT\STX\SUB\DC2\EOT\210\EOT\STX\NAK\SUB\ENQ `.`\n\ + \\EOT\ENQ\EOT\STX\SUB\DC2\EOT\212\EOT\STX\NAK\SUB\ENQ `.`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SUB\SOH\DC2\EOT\210\EOT\STX\SI\n\ + \\ENQ\ENQ\EOT\STX\SUB\SOH\DC2\EOT\212\EOT\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\SUB\STX\DC2\EOT\210\EOT\DC2\DC4\n\ + \\ENQ\ENQ\EOT\STX\SUB\STX\DC2\EOT\212\EOT\DC2\DC4\n\ \\"\n\ - \\EOT\ENQ\EOT\STX\ESC\DC2\EOT\212\EOT\STX\SYN\SUB\DC4 `(`, `)`, `[`, `]`\n\ + \\EOT\ENQ\EOT\STX\ESC\DC2\EOT\214\EOT\STX\SYN\SUB\DC4 `(`, `)`, `[`, `]`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ESC\SOH\DC2\EOT\212\EOT\STX\DLE\n\ + \\ENQ\ENQ\EOT\STX\ESC\SOH\DC2\EOT\214\EOT\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\ESC\STX\DC2\EOT\212\EOT\DC3\NAK\n\ + \\ENQ\ENQ\EOT\STX\ESC\STX\DC2\EOT\214\EOT\DC3\NAK\n\ \\CAN\n\ - \\EOT\ENQ\EOT\STX\FS\DC2\EOT\214\EOT\STX\DC1\SUB\n\ + \\EOT\ENQ\EOT\STX\FS\DC2\EOT\216\EOT\STX\DC1\SUB\n\ \ `|`, `-`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\FS\SOH\DC2\EOT\214\EOT\STX\v\n\ + \\ENQ\ENQ\EOT\STX\FS\SOH\DC2\EOT\216\EOT\STX\v\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\FS\STX\DC2\EOT\214\EOT\SO\DLE\n\ + \\ENQ\ENQ\EOT\STX\FS\STX\DC2\EOT\216\EOT\SO\DLE\n\ \0\n\ - \\EOT\ENQ\EOT\STX\GS\DC2\EOT\217\EOT\STX\NAK\SUB\" Literal strings: \"Hello, world!\"\n\ + \\EOT\ENQ\EOT\STX\GS\DC2\EOT\219\EOT\STX\NAK\SUB\" Literal strings: \"Hello, world!\"\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\GS\SOH\DC2\EOT\217\EOT\STX\SI\n\ + \\ENQ\ENQ\EOT\STX\GS\SOH\DC2\EOT\219\EOT\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\GS\STX\DC2\EOT\217\EOT\DC2\DC4\n\ + \\ENQ\ENQ\EOT\STX\GS\STX\DC2\EOT\219\EOT\DC2\DC4\n\ \-\n\ - \\EOT\ENQ\EOT\STX\RS\DC2\EOT\219\EOT\STX\ESC\SUB\US non-regex escapes: \"\\t\", \"\\n\"\n\ + \\EOT\ENQ\EOT\STX\RS\DC2\EOT\221\EOT\STX\ESC\SUB\US non-regex escapes: \"\\t\", \"\\n\"\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\RS\SOH\DC2\EOT\219\EOT\STX\NAK\n\ + \\ENQ\ENQ\EOT\STX\RS\SOH\DC2\EOT\221\EOT\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\RS\STX\DC2\EOT\219\EOT\CAN\SUB\n\ + \\ENQ\ENQ\EOT\STX\RS\STX\DC2\EOT\221\EOT\CAN\SUB\n\ \_\n\ - \\EOT\ENQ\EOT\STX\US\DC2\EOT\221\EOT\STX\FS\SUBQ datetimes within strings, special words within a string, `{}` in format strings\n\ + \\EOT\ENQ\EOT\STX\US\DC2\EOT\223\EOT\STX\FS\SUBQ datetimes within strings, special words within a string, `{}` in format strings\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\US\SOH\DC2\EOT\221\EOT\STX\SYN\n\ + \\ENQ\ENQ\EOT\STX\US\SOH\DC2\EOT\223\EOT\STX\SYN\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\US\STX\DC2\EOT\221\EOT\EM\ESC\n\ + \\ENQ\ENQ\EOT\STX\US\STX\DC2\EOT\223\EOT\EM\ESC\n\ \G\n\ - \\EOT\ENQ\EOT\STX \DC2\EOT\223\EOT\STX\CAN\SUB9 \"key\" in { \"key\": \"value\" }, useful for example in JSON\n\ + \\EOT\ENQ\EOT\STX \DC2\EOT\225\EOT\STX\CAN\SUB9 \"key\" in { \"key\": \"value\" }, useful for example in JSON\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX \SOH\DC2\EOT\223\EOT\STX\DC2\n\ + \\ENQ\ENQ\EOT\STX \SOH\DC2\EOT\225\EOT\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX \STX\DC2\EOT\223\EOT\NAK\ETB\n\ + \\ENQ\ENQ\EOT\STX \STX\DC2\EOT\225\EOT\NAK\ETB\n\ \V\n\ - \\EOT\ENQ\EOT\STX!\DC2\EOT\225\EOT\STX\CAN\SUBH 'c' or similar, in languages that differentiate strings and characters\n\ + \\EOT\ENQ\EOT\STX!\DC2\EOT\227\EOT\STX\CAN\SUBH 'c' or similar, in languages that differentiate strings and characters\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX!\SOH\DC2\EOT\225\EOT\STX\DC2\n\ + \\ENQ\ENQ\EOT\STX!\SOH\DC2\EOT\227\EOT\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX!\STX\DC2\EOT\225\EOT\NAK\ETB\n\ + \\ENQ\ENQ\EOT\STX!\STX\DC2\EOT\227\EOT\NAK\ETB\n\ \9\n\ - \\EOT\ENQ\EOT\STX\"\DC2\EOT\227\EOT\STX\SYN\SUB+ Literal numbers, both floats and integers\n\ + \\EOT\ENQ\EOT\STX\"\DC2\EOT\229\EOT\STX\SYN\SUB+ Literal numbers, both floats and integers\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\"\SOH\DC2\EOT\227\EOT\STX\DLE\n\ + \\ENQ\ENQ\EOT\STX\"\SOH\DC2\EOT\229\EOT\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX\"\STX\DC2\EOT\227\EOT\DC3\NAK\n\ + \\ENQ\ENQ\EOT\STX\"\STX\DC2\EOT\229\EOT\DC3\NAK\n\ \\US\n\ - \\EOT\ENQ\EOT\STX#\DC2\EOT\229\EOT\STX\SYN\SUB\DC1 `true`, `false`\n\ + \\EOT\ENQ\EOT\STX#\DC2\EOT\231\EOT\STX\SYN\SUB\DC1 `true`, `false`\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX#\SOH\DC2\EOT\229\EOT\STX\DLE\n\ + \\ENQ\ENQ\EOT\STX#\SOH\DC2\EOT\231\EOT\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX#\STX\DC2\EOT\229\EOT\DC3\NAK\n\ + \\ENQ\ENQ\EOT\STX#\STX\DC2\EOT\231\EOT\DC3\NAK\n\ \&\n\ - \\EOT\ENQ\EOT\STX$\DC2\EOT\232\EOT\STX\v\SUB\CAN Used for XML-like tags\n\ + \\EOT\ENQ\EOT\STX$\DC2\EOT\234\EOT\STX\v\SUB\CAN Used for XML-like tags\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX$\SOH\DC2\EOT\232\EOT\STX\ENQ\n\ + \\ENQ\ENQ\EOT\STX$\SOH\DC2\EOT\234\EOT\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX$\STX\DC2\EOT\232\EOT\b\n\ + \\ENQ\ENQ\EOT\STX$\STX\DC2\EOT\234\EOT\b\n\ \\n\ \/\n\ - \\EOT\ENQ\EOT\STX%\DC2\EOT\234\EOT\STX\DC4\SUB! Attribute name in XML-like tags\n\ + \\EOT\ENQ\EOT\STX%\DC2\EOT\236\EOT\STX\DC4\SUB! Attribute name in XML-like tags\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX%\SOH\DC2\EOT\234\EOT\STX\SO\n\ + \\ENQ\ENQ\EOT\STX%\SOH\DC2\EOT\236\EOT\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX%\STX\DC2\EOT\234\EOT\DC1\DC3\n\ + \\ENQ\ENQ\EOT\STX%\STX\DC2\EOT\236\EOT\DC1\DC3\n\ \,\n\ - \\EOT\ENQ\EOT\STX&\DC2\EOT\236\EOT\STX\DC4\SUB\RS Delimiters for XML-like tags\n\ + \\EOT\ENQ\EOT\STX&\DC2\EOT\238\EOT\STX\DC4\SUB\RS Delimiters for XML-like tags\n\ \\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX&\SOH\DC2\EOT\236\EOT\STX\SO\n\ + \\ENQ\ENQ\EOT\STX&\SOH\DC2\EOT\238\EOT\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\EOT\STX&\STX\DC2\EOT\236\EOT\DC1\DC3\n\ + \\ENQ\ENQ\EOT\STX&\STX\DC2\EOT\238\EOT\DC1\DC3\n\ \\249\SOH\n\ - \\STX\EOT\t\DC2\ACK\244\EOT\NUL\213\ENQ\SOH\SUB\234\SOH Occurrence associates a source position with a symbol and/or highlighting\n\ + \\STX\EOT\t\DC2\ACK\246\EOT\NUL\215\ENQ\SOH\SUB\234\SOH Occurrence associates a source position with a symbol and/or highlighting\n\ \ information.\n\ \\n\ \ If possible, indexers should try to bundle logically related information\n\ \ across occurrences into a single occurrence to reduce payload sizes.\n\ \\n\ \\v\n\ - \\ETX\EOT\t\SOH\DC2\EOT\244\EOT\b\DC2\n\ + \\ETX\EOT\t\SOH\DC2\EOT\246\EOT\b\DC2\n\ \\232\b\n\ - \\EOT\EOT\t\STX\NUL\DC2\EOT\140\ENQ\STX\ESC\SUB\217\b Half-open [start, end) range of this occurrence. Must be exactly three or four\n\ + \\EOT\EOT\t\STX\NUL\DC2\EOT\142\ENQ\STX\ESC\SUB\217\b Half-open [start, end) range of this occurrence. Must be exactly three or four\n\ \ elements:\n\ \\n\ \ - Four elements: `[startLine, startCharacter, endLine, endCharacter]`\n\ @@ -8178,36 +8180,36 @@ packedFileDescriptor \ improvements make up for it.\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\NUL\EOT\DC2\EOT\140\ENQ\STX\n\ + \\ENQ\EOT\t\STX\NUL\EOT\DC2\EOT\142\ENQ\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\NUL\ENQ\DC2\EOT\140\ENQ\v\DLE\n\ + \\ENQ\EOT\t\STX\NUL\ENQ\DC2\EOT\142\ENQ\v\DLE\n\ \\r\n\ - \\ENQ\EOT\t\STX\NUL\SOH\DC2\EOT\140\ENQ\DC1\SYN\n\ + \\ENQ\EOT\t\STX\NUL\SOH\DC2\EOT\142\ENQ\DC1\SYN\n\ \\r\n\ - \\ENQ\EOT\t\STX\NUL\ETX\DC2\EOT\140\ENQ\EM\SUB\n\ + \\ENQ\EOT\t\STX\NUL\ETX\DC2\EOT\142\ENQ\EM\SUB\n\ \\138\SOH\n\ - \\EOT\EOT\t\STX\SOH\DC2\EOT\143\ENQ\STX\DC4\SUB| (optional) The symbol that appears at this position. See\n\ + \\EOT\EOT\t\STX\SOH\DC2\EOT\145\ENQ\STX\DC4\SUB| (optional) The symbol that appears at this position. See\n\ \ `SymbolInformation.symbol` for how to format symbols as strings.\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\SOH\ENQ\DC2\EOT\143\ENQ\STX\b\n\ + \\ENQ\EOT\t\STX\SOH\ENQ\DC2\EOT\145\ENQ\STX\b\n\ \\r\n\ - \\ENQ\EOT\t\STX\SOH\SOH\DC2\EOT\143\ENQ\t\SI\n\ + \\ENQ\EOT\t\STX\SOH\SOH\DC2\EOT\145\ENQ\t\SI\n\ \\r\n\ - \\ENQ\EOT\t\STX\SOH\ETX\DC2\EOT\143\ENQ\DC2\DC3\n\ + \\ENQ\EOT\t\STX\SOH\ETX\DC2\EOT\145\ENQ\DC2\DC3\n\ \\151\SOH\n\ - \\EOT\EOT\t\STX\STX\DC2\EOT\146\ENQ\STX\EM\SUB\136\SOH (optional) Bitset containing `SymbolRole`s in this occurrence.\n\ + \\EOT\EOT\t\STX\STX\DC2\EOT\148\ENQ\STX\EM\SUB\136\SOH (optional) Bitset containing `SymbolRole`s in this occurrence.\n\ \ See `SymbolRole`'s documentation for how to read and write this field.\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\STX\ENQ\DC2\EOT\146\ENQ\STX\a\n\ + \\ENQ\EOT\t\STX\STX\ENQ\DC2\EOT\148\ENQ\STX\a\n\ \\r\n\ - \\ENQ\EOT\t\STX\STX\SOH\DC2\EOT\146\ENQ\b\DC4\n\ + \\ENQ\EOT\t\STX\STX\SOH\DC2\EOT\148\ENQ\b\DC4\n\ \\r\n\ - \\ENQ\EOT\t\STX\STX\ETX\DC2\EOT\146\ENQ\ETB\CAN\n\ + \\ENQ\EOT\t\STX\STX\ETX\DC2\EOT\148\ENQ\ETB\CAN\n\ \\241\ETX\n\ - \\EOT\EOT\t\STX\ETX\DC2\EOT\155\ENQ\STX-\SUB\226\ETX (optional) CommonMark-formatted documentation for this specific range. If\n\ + \\EOT\EOT\t\STX\ETX\DC2\EOT\157\ENQ\STX-\SUB\226\ETX (optional) CommonMark-formatted documentation for this specific range. If\n\ \ empty, the `Symbol.documentation` field is used instead. One example\n\ \ where this field might be useful is when the symbol represents a generic\n\ \ function (with abstract type parameters such as `List`) and at this\n\ @@ -8217,37 +8219,37 @@ packedFileDescriptor \ which commonly allow for type-changing assignment.\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\ETX\EOT\DC2\EOT\155\ENQ\STX\n\ + \\ENQ\EOT\t\STX\ETX\EOT\DC2\EOT\157\ENQ\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\ETX\ENQ\DC2\EOT\155\ENQ\v\DC1\n\ + \\ENQ\EOT\t\STX\ETX\ENQ\DC2\EOT\157\ENQ\v\DC1\n\ \\r\n\ - \\ENQ\EOT\t\STX\ETX\SOH\DC2\EOT\155\ENQ\DC2(\n\ + \\ENQ\EOT\t\STX\ETX\SOH\DC2\EOT\157\ENQ\DC2(\n\ \\r\n\ - \\ENQ\EOT\t\STX\ETX\ETX\DC2\EOT\155\ENQ+,\n\ + \\ENQ\EOT\t\STX\ETX\ETX\DC2\EOT\157\ENQ+,\n\ \X\n\ - \\EOT\EOT\t\STX\EOT\DC2\EOT\157\ENQ\STX\GS\SUBJ (optional) What syntax highlighting class should be used for this range?\n\ + \\EOT\EOT\t\STX\EOT\DC2\EOT\159\ENQ\STX\GS\SUBJ (optional) What syntax highlighting class should be used for this range?\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\EOT\ACK\DC2\EOT\157\ENQ\STX\f\n\ + \\ENQ\EOT\t\STX\EOT\ACK\DC2\EOT\159\ENQ\STX\f\n\ \\r\n\ - \\ENQ\EOT\t\STX\EOT\SOH\DC2\EOT\157\ENQ\r\CAN\n\ + \\ENQ\EOT\t\STX\EOT\SOH\DC2\EOT\159\ENQ\r\CAN\n\ \\r\n\ - \\ENQ\EOT\t\STX\EOT\ETX\DC2\EOT\157\ENQ\ESC\FS\n\ + \\ENQ\EOT\t\STX\EOT\ETX\DC2\EOT\159\ENQ\ESC\FS\n\ \W\n\ - \\EOT\EOT\t\STX\ENQ\DC2\EOT\159\ENQ\STX&\SUBI (optional) Diagnostics that have been reported for this specific range.\n\ + \\EOT\EOT\t\STX\ENQ\DC2\EOT\161\ENQ\STX&\SUBI (optional) Diagnostics that have been reported for this specific range.\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\ENQ\EOT\DC2\EOT\159\ENQ\STX\n\ + \\ENQ\EOT\t\STX\ENQ\EOT\DC2\EOT\161\ENQ\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\ENQ\ACK\DC2\EOT\159\ENQ\v\NAK\n\ + \\ENQ\EOT\t\STX\ENQ\ACK\DC2\EOT\161\ENQ\v\NAK\n\ \\r\n\ - \\ENQ\EOT\t\STX\ENQ\SOH\DC2\EOT\159\ENQ\SYN!\n\ + \\ENQ\EOT\t\STX\ENQ\SOH\DC2\EOT\161\ENQ\SYN!\n\ \\r\n\ - \\ENQ\EOT\t\STX\ENQ\ETX\DC2\EOT\159\ENQ$%\n\ + \\ENQ\EOT\t\STX\ENQ\ETX\DC2\EOT\161\ENQ$%\n\ \\183\SO\n\ - \\EOT\EOT\t\STX\ACK\DC2\EOT\212\ENQ\STX%\SUB\168\SO (optional) Using the same encoding as the sibling `range` field, half-open\n\ + \\EOT\EOT\t\STX\ACK\DC2\EOT\214\ENQ\STX%\SUB\168\SO (optional) Using the same encoding as the sibling `range` field, half-open\n\ \ source range of the nearest non-trivial enclosing AST node. This range must\n\ \ enclose the `range` field. Example applications that make use of the\n\ \ enclosing_range field:\n\ @@ -8301,152 +8303,152 @@ packedFileDescriptor \ ```\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\ACK\EOT\DC2\EOT\212\ENQ\STX\n\ + \\ENQ\EOT\t\STX\ACK\EOT\DC2\EOT\214\ENQ\STX\n\ \\n\ \\r\n\ - \\ENQ\EOT\t\STX\ACK\ENQ\DC2\EOT\212\ENQ\v\DLE\n\ + \\ENQ\EOT\t\STX\ACK\ENQ\DC2\EOT\214\ENQ\v\DLE\n\ \\r\n\ - \\ENQ\EOT\t\STX\ACK\SOH\DC2\EOT\212\ENQ\DC1 \n\ + \\ENQ\EOT\t\STX\ACK\SOH\DC2\EOT\214\ENQ\DC1 \n\ \\r\n\ - \\ENQ\EOT\t\STX\ACK\ETX\DC2\EOT\212\ENQ#$\n\ + \\ENQ\EOT\t\STX\ACK\ETX\DC2\EOT\214\ENQ#$\n\ \w\n\ \\STX\EOT\n\ - \\DC2\ACK\217\ENQ\NUL\228\ENQ\SOH\SUBi Represents a diagnostic, such as a compiler error or warning, which should be\n\ + \\DC2\ACK\219\ENQ\NUL\230\ENQ\SOH\SUBi Represents a diagnostic, such as a compiler error or warning, which should be\n\ \ reported for a document.\n\ \\n\ \\v\n\ \\ETX\EOT\n\ - \\SOH\DC2\EOT\217\ENQ\b\DC2\n\ + \\SOH\DC2\EOT\219\ENQ\b\DC2\n\ \W\n\ \\EOT\EOT\n\ - \\STX\NUL\DC2\EOT\219\ENQ\STX\CAN\SUBI Should this diagnostic be reported as an error, warning, info, or hint?\n\ + \\STX\NUL\DC2\EOT\221\ENQ\STX\CAN\SUBI Should this diagnostic be reported as an error, warning, info, or hint?\n\ \\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\NUL\ACK\DC2\EOT\219\ENQ\STX\n\ + \\STX\NUL\ACK\DC2\EOT\221\ENQ\STX\n\ \\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\NUL\SOH\DC2\EOT\219\ENQ\v\DC3\n\ + \\STX\NUL\SOH\DC2\EOT\221\ENQ\v\DC3\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\NUL\ETX\DC2\EOT\219\ENQ\SYN\ETB\n\ + \\STX\NUL\ETX\DC2\EOT\221\ENQ\SYN\ETB\n\ \]\n\ \\EOT\EOT\n\ - \\STX\SOH\DC2\EOT\221\ENQ\STX\DC2\SUBO (optional) Code of this diagnostic, which might appear in the user interface.\n\ + \\STX\SOH\DC2\EOT\223\ENQ\STX\DC2\SUBO (optional) Code of this diagnostic, which might appear in the user interface.\n\ \\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\SOH\ENQ\DC2\EOT\221\ENQ\STX\b\n\ + \\STX\SOH\ENQ\DC2\EOT\223\ENQ\STX\b\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\SOH\SOH\DC2\EOT\221\ENQ\t\r\n\ + \\STX\SOH\SOH\DC2\EOT\223\ENQ\t\r\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\SOH\ETX\DC2\EOT\221\ENQ\DLE\DC1\n\ + \\STX\SOH\ETX\DC2\EOT\223\ENQ\DLE\DC1\n\ \+\n\ \\EOT\EOT\n\ - \\STX\STX\DC2\EOT\223\ENQ\STX\NAK\SUB\GS Message of this diagnostic.\n\ + \\STX\STX\DC2\EOT\225\ENQ\STX\NAK\SUB\GS Message of this diagnostic.\n\ \\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\STX\ENQ\DC2\EOT\223\ENQ\STX\b\n\ + \\STX\STX\ENQ\DC2\EOT\225\ENQ\STX\b\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\STX\SOH\DC2\EOT\223\ENQ\t\DLE\n\ + \\STX\STX\SOH\DC2\EOT\225\ENQ\t\DLE\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\STX\ETX\DC2\EOT\223\ENQ\DC3\DC4\n\ + \\STX\STX\ETX\DC2\EOT\225\ENQ\DC3\DC4\n\ \~\n\ \\EOT\EOT\n\ - \\STX\ETX\DC2\EOT\226\ENQ\STX\DC4\SUBp (optional) Human-readable string describing the source of this diagnostic, e.g.\n\ + \\STX\ETX\DC2\EOT\228\ENQ\STX\DC4\SUBp (optional) Human-readable string describing the source of this diagnostic, e.g.\n\ \ 'typescript' or 'super lint'.\n\ \\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\ETX\ENQ\DC2\EOT\226\ENQ\STX\b\n\ + \\STX\ETX\ENQ\DC2\EOT\228\ENQ\STX\b\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\ETX\SOH\DC2\EOT\226\ENQ\t\SI\n\ + \\STX\ETX\SOH\DC2\EOT\228\ENQ\t\SI\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\ETX\ETX\DC2\EOT\226\ENQ\DC2\DC3\n\ + \\STX\ETX\ETX\DC2\EOT\228\ENQ\DC2\DC3\n\ \\f\n\ \\EOT\EOT\n\ - \\STX\EOT\DC2\EOT\227\ENQ\STX\"\n\ + \\STX\EOT\DC2\EOT\229\ENQ\STX\"\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\EOT\EOT\DC2\EOT\227\ENQ\STX\n\ + \\STX\EOT\EOT\DC2\EOT\229\ENQ\STX\n\ \\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\EOT\ACK\DC2\EOT\227\ENQ\v\CAN\n\ + \\STX\EOT\ACK\DC2\EOT\229\ENQ\v\CAN\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\EOT\SOH\DC2\EOT\227\ENQ\EM\GS\n\ + \\STX\EOT\SOH\DC2\EOT\229\ENQ\EM\GS\n\ \\r\n\ \\ENQ\EOT\n\ - \\STX\EOT\ETX\DC2\EOT\227\ENQ !\n\ + \\STX\EOT\ETX\DC2\EOT\229\ENQ !\n\ \\f\n\ - \\STX\ENQ\ENQ\DC2\ACK\230\ENQ\NUL\236\ENQ\SOH\n\ + \\STX\ENQ\ENQ\DC2\ACK\232\ENQ\NUL\238\ENQ\SOH\n\ \\v\n\ - \\ETX\ENQ\ENQ\SOH\DC2\EOT\230\ENQ\ENQ\r\n\ + \\ETX\ENQ\ENQ\SOH\DC2\EOT\232\ENQ\ENQ\r\n\ \\f\n\ - \\EOT\ENQ\ENQ\STX\NUL\DC2\EOT\231\ENQ\STX\SUB\n\ + \\EOT\ENQ\ENQ\STX\NUL\DC2\EOT\233\ENQ\STX\SUB\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\NUL\SOH\DC2\EOT\231\ENQ\STX\NAK\n\ + \\ENQ\ENQ\ENQ\STX\NUL\SOH\DC2\EOT\233\ENQ\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\NUL\STX\DC2\EOT\231\ENQ\CAN\EM\n\ + \\ENQ\ENQ\ENQ\STX\NUL\STX\DC2\EOT\233\ENQ\CAN\EM\n\ \\f\n\ - \\EOT\ENQ\ENQ\STX\SOH\DC2\EOT\232\ENQ\STX\f\n\ + \\EOT\ENQ\ENQ\STX\SOH\DC2\EOT\234\ENQ\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\SOH\SOH\DC2\EOT\232\ENQ\STX\a\n\ + \\ENQ\ENQ\ENQ\STX\SOH\SOH\DC2\EOT\234\ENQ\STX\a\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\SOH\STX\DC2\EOT\232\ENQ\n\ + \\ENQ\ENQ\ENQ\STX\SOH\STX\DC2\EOT\234\ENQ\n\ \\v\n\ \\f\n\ - \\EOT\ENQ\ENQ\STX\STX\DC2\EOT\233\ENQ\STX\SO\n\ + \\EOT\ENQ\ENQ\STX\STX\DC2\EOT\235\ENQ\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\STX\SOH\DC2\EOT\233\ENQ\STX\t\n\ + \\ENQ\ENQ\ENQ\STX\STX\SOH\DC2\EOT\235\ENQ\STX\t\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\STX\STX\DC2\EOT\233\ENQ\f\r\n\ + \\ENQ\ENQ\ENQ\STX\STX\STX\DC2\EOT\235\ENQ\f\r\n\ \\f\n\ - \\EOT\ENQ\ENQ\STX\ETX\DC2\EOT\234\ENQ\STX\DC2\n\ + \\EOT\ENQ\ENQ\STX\ETX\DC2\EOT\236\ENQ\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\ETX\SOH\DC2\EOT\234\ENQ\STX\r\n\ + \\ENQ\ENQ\ENQ\STX\ETX\SOH\DC2\EOT\236\ENQ\STX\r\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\ETX\STX\DC2\EOT\234\ENQ\DLE\DC1\n\ + \\ENQ\ENQ\ENQ\STX\ETX\STX\DC2\EOT\236\ENQ\DLE\DC1\n\ \\f\n\ - \\EOT\ENQ\ENQ\STX\EOT\DC2\EOT\235\ENQ\STX\v\n\ + \\EOT\ENQ\ENQ\STX\EOT\DC2\EOT\237\ENQ\STX\v\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\EOT\SOH\DC2\EOT\235\ENQ\STX\ACK\n\ + \\ENQ\ENQ\ENQ\STX\EOT\SOH\DC2\EOT\237\ENQ\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\ENQ\STX\EOT\STX\DC2\EOT\235\ENQ\t\n\ + \\ENQ\ENQ\ENQ\STX\EOT\STX\DC2\EOT\237\ENQ\t\n\ \\n\ \\f\n\ - \\STX\ENQ\ACK\DC2\ACK\238\ENQ\NUL\242\ENQ\SOH\n\ + \\STX\ENQ\ACK\DC2\ACK\240\ENQ\NUL\244\ENQ\SOH\n\ \\v\n\ - \\ETX\ENQ\ACK\SOH\DC2\EOT\238\ENQ\ENQ\DC2\n\ + \\ETX\ENQ\ACK\SOH\DC2\EOT\240\ENQ\ENQ\DC2\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\NUL\DC2\EOT\239\ENQ\STX\US\n\ + \\EOT\ENQ\ACK\STX\NUL\DC2\EOT\241\ENQ\STX\US\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\NUL\SOH\DC2\EOT\239\ENQ\STX\SUB\n\ + \\ENQ\ENQ\ACK\STX\NUL\SOH\DC2\EOT\241\ENQ\STX\SUB\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\NUL\STX\DC2\EOT\239\ENQ\GS\RS\n\ + \\ENQ\ENQ\ACK\STX\NUL\STX\DC2\EOT\241\ENQ\GS\RS\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\SOH\DC2\EOT\240\ENQ\STX\DC2\n\ + \\EOT\ENQ\ACK\STX\SOH\DC2\EOT\242\ENQ\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\SOH\SOH\DC2\EOT\240\ENQ\STX\r\n\ + \\ENQ\ENQ\ACK\STX\SOH\SOH\DC2\EOT\242\ENQ\STX\r\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\SOH\STX\DC2\EOT\240\ENQ\DLE\DC1\n\ + \\ENQ\ENQ\ACK\STX\SOH\STX\DC2\EOT\242\ENQ\DLE\DC1\n\ \\f\n\ - \\EOT\ENQ\ACK\STX\STX\DC2\EOT\241\ENQ\STX\DC1\n\ + \\EOT\ENQ\ACK\STX\STX\DC2\EOT\243\ENQ\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\STX\SOH\DC2\EOT\241\ENQ\STX\f\n\ + \\ENQ\ENQ\ACK\STX\STX\SOH\DC2\EOT\243\ENQ\STX\f\n\ \\r\n\ - \\ENQ\ENQ\ACK\STX\STX\STX\DC2\EOT\241\ENQ\SI\DLE\n\ + \\ENQ\ENQ\ACK\STX\STX\STX\DC2\EOT\243\ENQ\SI\DLE\n\ \\208\ETX\n\ - \\STX\ENQ\a\DC2\ACK\250\ENQ\NUL\240\ACK\SOH\SUB\193\ETX Language standardises names of common programming languages that can be used\n\ + \\STX\ENQ\a\DC2\ACK\252\ENQ\NUL\242\ACK\SOH\SUB\193\ETX Language standardises names of common programming languages that can be used\n\ \ for the `Document.language` field. The primary purpose of this enum is to\n\ \ prevent a situation where we have a single programming language ends up with\n\ \ multiple string representations. For example, the C++ language uses the name\n\ @@ -8454,708 +8456,708 @@ packedFileDescriptor \ Feel free to send a pull-request to add missing programming languages.\n\ \\n\ \\v\n\ - \\ETX\ENQ\a\SOH\DC2\EOT\250\ENQ\ENQ\r\n\ + \\ETX\ENQ\a\SOH\DC2\EOT\252\ENQ\ENQ\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\NUL\DC2\EOT\251\ENQ\STX\SUB\n\ + \\EOT\ENQ\a\STX\NUL\DC2\EOT\253\ENQ\STX\SUB\n\ \\r\n\ - \\ENQ\ENQ\a\STX\NUL\SOH\DC2\EOT\251\ENQ\STX\NAK\n\ + \\ENQ\ENQ\a\STX\NUL\SOH\DC2\EOT\253\ENQ\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\NUL\STX\DC2\EOT\251\ENQ\CAN\EM\n\ + \\ENQ\ENQ\a\STX\NUL\STX\DC2\EOT\253\ENQ\CAN\EM\n\ \\f\n\ - \\EOT\ENQ\a\STX\SOH\DC2\EOT\252\ENQ\STX\f\n\ + \\EOT\ENQ\a\STX\SOH\DC2\EOT\254\ENQ\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SOH\SOH\DC2\EOT\252\ENQ\STX\ACK\n\ + \\ENQ\ENQ\a\STX\SOH\SOH\DC2\EOT\254\ENQ\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SOH\STX\DC2\EOT\252\ENQ\t\v\n\ + \\ENQ\ENQ\a\STX\SOH\STX\DC2\EOT\254\ENQ\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX\STX\DC2\EOT\253\ENQ\STX\f\n\ + \\EOT\ENQ\a\STX\STX\DC2\EOT\255\ENQ\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\STX\SOH\DC2\EOT\253\ENQ\STX\ACK\n\ + \\ENQ\ENQ\a\STX\STX\SOH\DC2\EOT\255\ENQ\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\STX\STX\DC2\EOT\253\ENQ\t\v\n\ + \\ENQ\ENQ\a\STX\STX\STX\DC2\EOT\255\ENQ\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX\ETX\DC2\EOT\254\ENQ\STX\v\n\ + \\EOT\ENQ\a\STX\ETX\DC2\EOT\128\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ETX\SOH\DC2\EOT\254\ENQ\STX\ENQ\n\ + \\ENQ\ENQ\a\STX\ETX\SOH\DC2\EOT\128\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ETX\STX\DC2\EOT\254\ENQ\b\n\ + \\ENQ\ENQ\a\STX\ETX\STX\DC2\EOT\128\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX\EOT\DC2\EOT\255\ENQ\STX\v\n\ + \\EOT\ENQ\a\STX\EOT\DC2\EOT\129\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX\EOT\SOH\DC2\EOT\255\ENQ\STX\ENQ\n\ + \\ENQ\ENQ\a\STX\EOT\SOH\DC2\EOT\129\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX\EOT\STX\DC2\EOT\255\ENQ\b\n\ + \\ENQ\ENQ\a\STX\EOT\STX\DC2\EOT\129\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX\ENQ\DC2\EOT\128\ACK\STX\f\n\ + \\EOT\ENQ\a\STX\ENQ\DC2\EOT\130\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ENQ\SOH\DC2\EOT\128\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX\ENQ\SOH\DC2\EOT\130\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ENQ\STX\DC2\EOT\128\ACK\t\v\n\ + \\ENQ\ENQ\a\STX\ENQ\STX\DC2\EOT\130\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX\ACK\DC2\EOT\129\ACK\STX\DLE\n\ + \\EOT\ENQ\a\STX\ACK\DC2\EOT\131\ACK\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ACK\SOH\DC2\EOT\129\ACK\STX\n\ + \\ENQ\ENQ\a\STX\ACK\SOH\DC2\EOT\131\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ACK\STX\DC2\EOT\129\ACK\r\SI\n\ + \\ENQ\ENQ\a\STX\ACK\STX\DC2\EOT\131\ACK\r\SI\n\ \\f\n\ - \\EOT\ENQ\a\STX\a\DC2\EOT\130\ACK\STX\DLE\n\ + \\EOT\ENQ\a\STX\a\DC2\EOT\132\ACK\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\a\STX\a\SOH\DC2\EOT\130\ACK\STX\n\ + \\ENQ\ENQ\a\STX\a\SOH\DC2\EOT\132\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX\a\STX\DC2\EOT\130\ACK\r\SI\n\ + \\ENQ\ENQ\a\STX\a\STX\DC2\EOT\132\ACK\r\SI\n\ \\f\n\ - \\EOT\ENQ\a\STX\b\DC2\EOT\131\ACK\STX\v\n\ + \\EOT\ENQ\a\STX\b\DC2\EOT\133\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX\b\SOH\DC2\EOT\131\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX\b\SOH\DC2\EOT\133\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX\b\STX\DC2\EOT\131\ACK\b\n\ + \\ENQ\ENQ\a\STX\b\STX\DC2\EOT\133\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX\t\DC2\EOT\132\ACK\STX\v\n\ + \\EOT\ENQ\a\STX\t\DC2\EOT\134\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX\t\SOH\DC2\EOT\132\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX\t\SOH\DC2\EOT\134\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX\t\STX\DC2\EOT\132\ACK\b\n\ + \\ENQ\ENQ\a\STX\t\STX\DC2\EOT\134\ACK\b\n\ \\n\ \\f\n\ \\EOT\ENQ\a\STX\n\ - \\DC2\EOT\133\ACK\STX\SO\n\ + \\DC2\EOT\135\ACK\STX\SO\n\ \\r\n\ \\ENQ\ENQ\a\STX\n\ - \\SOH\DC2\EOT\133\ACK\STX\b\n\ + \\SOH\DC2\EOT\135\ACK\STX\b\n\ \\r\n\ \\ENQ\ENQ\a\STX\n\ - \\STX\DC2\EOT\133\ACK\v\r\n\ + \\STX\DC2\EOT\135\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\v\DC2\EOT\134\ACK\STX\t\n\ + \\EOT\ENQ\a\STX\v\DC2\EOT\136\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STX\v\SOH\DC2\EOT\134\ACK\STX\ETX\n\ + \\ENQ\ENQ\a\STX\v\SOH\DC2\EOT\136\ACK\STX\ETX\n\ \\r\n\ - \\ENQ\ENQ\a\STX\v\STX\DC2\EOT\134\ACK\ACK\b\n\ + \\ENQ\ENQ\a\STX\v\STX\DC2\EOT\136\ACK\ACK\b\n\ \\f\n\ - \\EOT\ENQ\a\STX\f\DC2\EOT\135\ACK\STX\r\n\ + \\EOT\ENQ\a\STX\f\DC2\EOT\137\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX\f\SOH\DC2\EOT\135\ACK\STX\a\n\ + \\ENQ\ENQ\a\STX\f\SOH\DC2\EOT\137\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STX\f\STX\DC2\EOT\135\ACK\n\ + \\ENQ\ENQ\a\STX\f\STX\DC2\EOT\137\ACK\n\ \\f\n\ \H\n\ - \\EOT\ENQ\a\STX\r\DC2\EOT\136\ACK\STX\v\": C++ (the name \"CPP\" was chosen for consistency with LSP)\n\ + \\EOT\ENQ\a\STX\r\DC2\EOT\138\ACK\STX\v\": C++ (the name \"CPP\" was chosen for consistency with LSP)\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX\r\SOH\DC2\EOT\136\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX\r\SOH\DC2\EOT\138\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX\r\STX\DC2\EOT\136\ACK\b\n\ + \\ENQ\ENQ\a\STX\r\STX\DC2\EOT\138\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX\SO\DC2\EOT\137\ACK\STX\v\n\ + \\EOT\ENQ\a\STX\SO\DC2\EOT\139\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SO\SOH\DC2\EOT\137\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX\SO\SOH\DC2\EOT\139\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SO\STX\DC2\EOT\137\ACK\b\n\ + \\ENQ\ENQ\a\STX\SO\STX\DC2\EOT\139\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX\SI\DC2\EOT\138\ACK\STX\r\n\ + \\EOT\ENQ\a\STX\SI\DC2\EOT\140\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SI\SOH\DC2\EOT\138\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX\SI\SOH\DC2\EOT\140\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SI\STX\DC2\EOT\138\ACK\v\f\n\ + \\ENQ\ENQ\a\STX\SI\STX\DC2\EOT\140\ACK\v\f\n\ \\f\n\ - \\EOT\ENQ\a\STX\DLE\DC2\EOT\139\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX\DLE\DC2\EOT\141\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DLE\SOH\DC2\EOT\139\ACK\STX\t\n\ + \\ENQ\ENQ\a\STX\DLE\SOH\DC2\EOT\141\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DLE\STX\DC2\EOT\139\ACK\f\r\n\ + \\ENQ\ENQ\a\STX\DLE\STX\DC2\EOT\141\ACK\f\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\DC1\DC2\EOT\140\ACK\STX\DC4\n\ + \\EOT\ENQ\a\STX\DC1\DC2\EOT\142\ACK\STX\DC4\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC1\SOH\DC2\EOT\140\ACK\STX\SO\n\ + \\ENQ\ENQ\a\STX\DC1\SOH\DC2\EOT\142\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC1\STX\DC2\EOT\140\ACK\DC1\DC3\n\ + \\ENQ\ENQ\a\STX\DC1\STX\DC2\EOT\142\ACK\DC1\DC3\n\ \\f\n\ - \\EOT\ENQ\a\STX\DC2\DC2\EOT\141\ACK\STX\DC1\n\ + \\EOT\ENQ\a\STX\DC2\DC2\EOT\143\ACK\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC2\SOH\DC2\EOT\141\ACK\STX\f\n\ + \\ENQ\ENQ\a\STX\DC2\SOH\DC2\EOT\143\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC2\STX\DC2\EOT\141\ACK\SI\DLE\n\ + \\ENQ\ENQ\a\STX\DC2\STX\DC2\EOT\143\ACK\SI\DLE\n\ \\f\n\ - \\EOT\ENQ\a\STX\DC3\DC2\EOT\142\ACK\STX\v\n\ + \\EOT\ENQ\a\STX\DC3\DC2\EOT\144\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC3\SOH\DC2\EOT\142\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX\DC3\SOH\DC2\EOT\144\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC3\STX\DC2\EOT\142\ACK\b\n\ + \\ENQ\ENQ\a\STX\DC3\STX\DC2\EOT\144\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX\DC4\DC2\EOT\143\ACK\STX\f\n\ + \\EOT\ENQ\a\STX\DC4\DC2\EOT\145\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC4\SOH\DC2\EOT\143\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX\DC4\SOH\DC2\EOT\145\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\DC4\STX\DC2\EOT\143\ACK\t\v\n\ + \\ENQ\ENQ\a\STX\DC4\STX\DC2\EOT\145\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX\NAK\DC2\EOT\144\ACK\STX\v\n\ + \\EOT\ENQ\a\STX\NAK\DC2\EOT\146\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX\NAK\SOH\DC2\EOT\144\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX\NAK\SOH\DC2\EOT\146\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\NAK\STX\DC2\EOT\144\ACK\t\n\ + \\ENQ\ENQ\a\STX\NAK\STX\DC2\EOT\146\ACK\t\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX\SYN\DC2\EOT\145\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX\SYN\DC2\EOT\147\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SYN\SOH\DC2\EOT\145\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX\SYN\SOH\DC2\EOT\147\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SYN\STX\DC2\EOT\145\ACK\v\r\n\ + \\ENQ\ENQ\a\STX\SYN\STX\DC2\EOT\147\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\ETB\DC2\EOT\146\ACK\STX\f\n\ + \\EOT\ENQ\a\STX\ETB\DC2\EOT\148\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ETB\SOH\DC2\EOT\146\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX\ETB\SOH\DC2\EOT\148\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ETB\STX\DC2\EOT\146\ACK\t\v\n\ + \\ENQ\ENQ\a\STX\ETB\STX\DC2\EOT\148\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX\CAN\DC2\EOT\147\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STX\CAN\DC2\EOT\149\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STX\CAN\SOH\DC2\EOT\147\ACK\STX\f\n\ + \\ENQ\ENQ\a\STX\CAN\SOH\DC2\EOT\149\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\CAN\STX\DC2\EOT\147\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STX\CAN\STX\DC2\EOT\149\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STX\EM\DC2\EOT\148\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX\EM\DC2\EOT\150\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX\EM\SOH\DC2\EOT\148\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX\EM\SOH\DC2\EOT\150\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX\EM\STX\DC2\EOT\148\ACK\v\r\n\ + \\ENQ\ENQ\a\STX\EM\STX\DC2\EOT\150\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\SUB\DC2\EOT\149\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX\SUB\DC2\EOT\151\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SUB\SOH\DC2\EOT\149\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX\SUB\SOH\DC2\EOT\151\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX\SUB\STX\DC2\EOT\149\ACK\v\r\n\ + \\ENQ\ENQ\a\STX\SUB\STX\DC2\EOT\151\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\ESC\DC2\EOT\150\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX\ESC\DC2\EOT\152\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ESC\SOH\DC2\EOT\150\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX\ESC\SOH\DC2\EOT\152\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX\ESC\STX\DC2\EOT\150\ACK\v\r\n\ + \\ENQ\ENQ\a\STX\ESC\STX\DC2\EOT\152\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\FS\DC2\EOT\151\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX\FS\DC2\EOT\153\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX\FS\SOH\DC2\EOT\151\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX\FS\SOH\DC2\EOT\153\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX\FS\STX\DC2\EOT\151\ACK\v\r\n\ + \\ENQ\ENQ\a\STX\FS\STX\DC2\EOT\153\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\GS\DC2\EOT\152\ACK\STX\f\n\ + \\EOT\ENQ\a\STX\GS\DC2\EOT\154\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\GS\SOH\DC2\EOT\152\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX\GS\SOH\DC2\EOT\154\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\GS\STX\DC2\EOT\152\ACK\t\v\n\ + \\ENQ\ENQ\a\STX\GS\STX\DC2\EOT\154\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX\RS\DC2\EOT\153\ACK\STX\f\n\ + \\EOT\ENQ\a\STX\RS\DC2\EOT\155\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\RS\SOH\DC2\EOT\153\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX\RS\SOH\DC2\EOT\155\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX\RS\STX\DC2\EOT\153\ACK\t\v\n\ + \\ENQ\ENQ\a\STX\RS\STX\DC2\EOT\155\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX\US\DC2\EOT\154\ACK\STX\SI\n\ + \\EOT\ENQ\a\STX\US\DC2\EOT\156\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STX\US\SOH\DC2\EOT\154\ACK\STX\t\n\ + \\ENQ\ENQ\a\STX\US\SOH\DC2\EOT\156\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STX\US\STX\DC2\EOT\154\ACK\f\SO\n\ + \\ENQ\ENQ\a\STX\US\STX\DC2\EOT\156\ACK\f\SO\n\ \\f\n\ - \\EOT\ENQ\a\STX \DC2\EOT\155\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STX \DC2\EOT\157\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STX \SOH\DC2\EOT\155\ACK\STX\f\n\ + \\ENQ\ENQ\a\STX \SOH\DC2\EOT\157\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX \STX\DC2\EOT\155\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STX \STX\DC2\EOT\157\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STX!\DC2\EOT\156\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STX!\DC2\EOT\158\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STX!\SOH\DC2\EOT\156\ACK\STX\f\n\ + \\ENQ\ENQ\a\STX!\SOH\DC2\EOT\158\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX!\STX\DC2\EOT\156\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STX!\STX\DC2\EOT\158\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STX\"\DC2\EOT\157\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STX\"\DC2\EOT\159\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STX\"\SOH\DC2\EOT\157\ACK\STX\f\n\ + \\ENQ\ENQ\a\STX\"\SOH\DC2\EOT\159\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX\"\STX\DC2\EOT\157\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STX\"\STX\DC2\EOT\159\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STX#\DC2\EOT\158\ACK\STX\n\ + \\EOT\ENQ\a\STX#\DC2\EOT\160\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX#\SOH\DC2\EOT\158\ACK\STX\EOT\n\ + \\ENQ\ENQ\a\STX#\SOH\DC2\EOT\160\ACK\STX\EOT\n\ \\r\n\ - \\ENQ\ENQ\a\STX#\STX\DC2\EOT\158\ACK\a\t\n\ + \\ENQ\ENQ\a\STX#\STX\DC2\EOT\160\ACK\a\t\n\ \\f\n\ - \\EOT\ENQ\a\STX$\DC2\EOT\159\ACK\STX\SI\n\ + \\EOT\ENQ\a\STX$\DC2\EOT\161\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STX$\SOH\DC2\EOT\159\ACK\STX\t\n\ + \\ENQ\ENQ\a\STX$\SOH\DC2\EOT\161\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STX$\STX\DC2\EOT\159\ACK\f\SO\n\ + \\ENQ\ENQ\a\STX$\STX\DC2\EOT\161\ACK\f\SO\n\ \\f\n\ - \\EOT\ENQ\a\STX%\DC2\EOT\160\ACK\STX\r\n\ + \\EOT\ENQ\a\STX%\DC2\EOT\162\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX%\SOH\DC2\EOT\160\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX%\SOH\DC2\EOT\162\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX%\STX\DC2\EOT\160\ACK\v\f\n\ + \\ENQ\ENQ\a\STX%\STX\DC2\EOT\162\ACK\v\f\n\ \\f\n\ - \\EOT\ENQ\a\STX&\DC2\EOT\161\ACK\STX\f\n\ + \\EOT\ENQ\a\STX&\DC2\EOT\163\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX&\SOH\DC2\EOT\161\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX&\SOH\DC2\EOT\163\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX&\STX\DC2\EOT\161\ACK\t\v\n\ + \\ENQ\ENQ\a\STX&\STX\DC2\EOT\163\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX'\DC2\EOT\162\ACK\STX\f\n\ + \\EOT\ENQ\a\STX'\DC2\EOT\164\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX'\SOH\DC2\EOT\162\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX'\SOH\DC2\EOT\164\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX'\STX\DC2\EOT\162\ACK\t\v\n\ + \\ENQ\ENQ\a\STX'\STX\DC2\EOT\164\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX(\DC2\EOT\163\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STX(\DC2\EOT\165\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STX(\SOH\DC2\EOT\163\ACK\STX\f\n\ + \\ENQ\ENQ\a\STX(\SOH\DC2\EOT\165\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX(\STX\DC2\EOT\163\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STX(\STX\DC2\EOT\165\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STX)\DC2\EOT\164\ACK\STX\SI\n\ + \\EOT\ENQ\a\STX)\DC2\EOT\166\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STX)\SOH\DC2\EOT\164\ACK\STX\t\n\ + \\ENQ\ENQ\a\STX)\SOH\DC2\EOT\166\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STX)\STX\DC2\EOT\164\ACK\f\SO\n\ + \\ENQ\ENQ\a\STX)\STX\DC2\EOT\166\ACK\f\SO\n\ \\f\n\ - \\EOT\ENQ\a\STX*\DC2\EOT\165\ACK\STX\r\n\ + \\EOT\ENQ\a\STX*\DC2\EOT\167\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX*\SOH\DC2\EOT\165\ACK\STX\a\n\ + \\ENQ\ENQ\a\STX*\SOH\DC2\EOT\167\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STX*\STX\DC2\EOT\165\ACK\n\ + \\ENQ\ENQ\a\STX*\STX\DC2\EOT\167\ACK\n\ \\f\n\ \\f\n\ - \\EOT\ENQ\a\STX+\DC2\EOT\166\ACK\STX\v\n\ + \\EOT\ENQ\a\STX+\DC2\EOT\168\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX+\SOH\DC2\EOT\166\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX+\SOH\DC2\EOT\168\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX+\STX\DC2\EOT\166\ACK\b\n\ + \\ENQ\ENQ\a\STX+\STX\DC2\EOT\168\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX,\DC2\EOT\167\ACK\STX\t\n\ + \\EOT\ENQ\a\STX,\DC2\EOT\169\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STX,\SOH\DC2\EOT\167\ACK\STX\ETX\n\ + \\ENQ\ENQ\a\STX,\SOH\DC2\EOT\169\ACK\STX\ETX\n\ \\r\n\ - \\ENQ\ENQ\a\STX,\STX\DC2\EOT\167\ACK\ACK\b\n\ + \\ENQ\ENQ\a\STX,\STX\DC2\EOT\169\ACK\ACK\b\n\ \\f\n\ - \\EOT\ENQ\a\STX-\DC2\EOT\168\ACK\STX\f\n\ + \\EOT\ENQ\a\STX-\DC2\EOT\170\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX-\SOH\DC2\EOT\168\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX-\SOH\DC2\EOT\170\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX-\STX\DC2\EOT\168\ACK\t\v\n\ + \\ENQ\ENQ\a\STX-\STX\DC2\EOT\170\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX.\DC2\EOT\169\ACK\STX\v\n\ + \\EOT\ENQ\a\STX.\DC2\EOT\171\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX.\SOH\DC2\EOT\169\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX.\SOH\DC2\EOT\171\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX.\STX\DC2\EOT\169\ACK\t\n\ + \\ENQ\ENQ\a\STX.\STX\DC2\EOT\171\ACK\t\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX/\DC2\EOT\170\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STX/\DC2\EOT\172\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STX/\SOH\DC2\EOT\170\ACK\STX\f\n\ + \\ENQ\ENQ\a\STX/\SOH\DC2\EOT\172\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX/\STX\DC2\EOT\170\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STX/\STX\DC2\EOT\172\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STX0\DC2\EOT\171\ACK\STX\ETB\n\ + \\EOT\ENQ\a\STX0\DC2\EOT\173\ACK\STX\ETB\n\ \\r\n\ - \\ENQ\ENQ\a\STX0\SOH\DC2\EOT\171\ACK\STX\DC1\n\ + \\ENQ\ENQ\a\STX0\SOH\DC2\EOT\173\ACK\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\a\STX0\STX\DC2\EOT\171\ACK\DC4\SYN\n\ + \\ENQ\ENQ\a\STX0\STX\DC2\EOT\173\ACK\DC4\SYN\n\ \\f\n\ - \\EOT\ENQ\a\STX1\DC2\EOT\172\ACK\STX\SI\n\ + \\EOT\ENQ\a\STX1\DC2\EOT\174\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STX1\SOH\DC2\EOT\172\ACK\STX\t\n\ + \\ENQ\ENQ\a\STX1\SOH\DC2\EOT\174\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STX1\STX\DC2\EOT\172\ACK\f\SO\n\ + \\ENQ\ENQ\a\STX1\STX\DC2\EOT\174\ACK\f\SO\n\ \\f\n\ - \\EOT\ENQ\a\STX2\DC2\EOT\173\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX2\DC2\EOT\175\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX2\SOH\DC2\EOT\173\ACK\STX\a\n\ + \\ENQ\ENQ\a\STX2\SOH\DC2\EOT\175\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STX2\STX\DC2\EOT\173\ACK\v\r\n\ + \\ENQ\ENQ\a\STX2\STX\DC2\EOT\175\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STX3\DC2\EOT\174\ACK\STX\DC1\n\ + \\EOT\ENQ\a\STX3\DC2\EOT\176\ACK\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\a\STX3\SOH\DC2\EOT\174\ACK\STX\n\ + \\ENQ\ENQ\a\STX3\SOH\DC2\EOT\176\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX3\STX\DC2\EOT\174\ACK\r\DLE\n\ + \\ENQ\ENQ\a\STX3\STX\DC2\EOT\176\ACK\r\DLE\n\ \\f\n\ - \\EOT\ENQ\a\STX4\DC2\EOT\175\ACK\STX\r\n\ + \\EOT\ENQ\a\STX4\DC2\EOT\177\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX4\SOH\DC2\EOT\175\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX4\SOH\DC2\EOT\177\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX4\STX\DC2\EOT\175\ACK\v\f\n\ + \\ENQ\ENQ\a\STX4\STX\DC2\EOT\177\ACK\v\f\n\ \\f\n\ - \\EOT\ENQ\a\STX5\DC2\EOT\176\ACK\STX\r\n\ + \\EOT\ENQ\a\STX5\DC2\EOT\178\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX5\SOH\DC2\EOT\176\ACK\STX\a\n\ + \\ENQ\ENQ\a\STX5\SOH\DC2\EOT\178\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STX5\STX\DC2\EOT\176\ACK\n\ + \\ENQ\ENQ\a\STX5\STX\DC2\EOT\178\ACK\n\ \\f\n\ \\f\n\ - \\EOT\ENQ\a\STX6\DC2\EOT\177\ACK\STX\f\n\ + \\EOT\ENQ\a\STX6\DC2\EOT\179\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX6\SOH\DC2\EOT\177\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX6\SOH\DC2\EOT\179\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX6\STX\DC2\EOT\177\ACK\t\v\n\ + \\ENQ\ENQ\a\STX6\STX\DC2\EOT\179\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX7\DC2\EOT\178\ACK\STX\f\n\ + \\EOT\ENQ\a\STX7\DC2\EOT\180\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX7\SOH\DC2\EOT\178\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX7\SOH\DC2\EOT\180\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX7\STX\DC2\EOT\178\ACK\t\v\n\ + \\ENQ\ENQ\a\STX7\STX\DC2\EOT\180\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STX8\DC2\EOT\179\ACK\STX\v\n\ + \\EOT\ENQ\a\STX8\DC2\EOT\181\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX8\SOH\DC2\EOT\179\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX8\SOH\DC2\EOT\181\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX8\STX\DC2\EOT\179\ACK\b\n\ + \\ENQ\ENQ\a\STX8\STX\DC2\EOT\181\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX9\DC2\EOT\180\ACK\STX\r\n\ + \\EOT\ENQ\a\STX9\DC2\EOT\182\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX9\SOH\DC2\EOT\180\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX9\SOH\DC2\EOT\182\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX9\STX\DC2\EOT\180\ACK\t\f\n\ + \\ENQ\ENQ\a\STX9\STX\DC2\EOT\182\ACK\t\f\n\ \\f\n\ - \\EOT\ENQ\a\STX:\DC2\EOT\181\ACK\STX\DLE\n\ + \\EOT\ENQ\a\STX:\DC2\EOT\183\ACK\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\a\STX:\SOH\DC2\EOT\181\ACK\STX\n\ + \\ENQ\ENQ\a\STX:\SOH\DC2\EOT\183\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX:\STX\DC2\EOT\181\ACK\r\SI\n\ + \\ENQ\ENQ\a\STX:\STX\DC2\EOT\183\ACK\r\SI\n\ \\f\n\ - \\EOT\ENQ\a\STX;\DC2\EOT\182\ACK\STX\DLE\n\ + \\EOT\ENQ\a\STX;\DC2\EOT\184\ACK\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\a\STX;\SOH\DC2\EOT\182\ACK\STX\n\ + \\ENQ\ENQ\a\STX;\SOH\DC2\EOT\184\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX;\STX\DC2\EOT\182\ACK\r\SI\n\ + \\ENQ\ENQ\a\STX;\STX\DC2\EOT\184\ACK\r\SI\n\ \\f\n\ - \\EOT\ENQ\a\STX<\DC2\EOT\183\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX<\DC2\EOT\185\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX<\SOH\DC2\EOT\183\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX<\SOH\DC2\EOT\185\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX<\STX\DC2\EOT\183\ACK\v\r\n\ + \\ENQ\ENQ\a\STX<\STX\DC2\EOT\185\ACK\v\r\n\ \(\n\ - \\EOT\ENQ\a\STX=\DC2\EOT\184\ACK\STX\SI\"\SUB https://nickel-lang.org/\n\ + \\EOT\ENQ\a\STX=\DC2\EOT\186\ACK\STX\SI\"\SUB https://nickel-lang.org/\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX=\SOH\DC2\EOT\184\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX=\SOH\DC2\EOT\186\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX=\STX\DC2\EOT\184\ACK\v\SO\n\ + \\ENQ\ENQ\a\STX=\STX\DC2\EOT\186\ACK\v\SO\n\ \\f\n\ - \\EOT\ENQ\a\STX>\DC2\EOT\185\ACK\STX\v\n\ + \\EOT\ENQ\a\STX>\DC2\EOT\187\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STX>\SOH\DC2\EOT\185\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX>\SOH\DC2\EOT\187\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX>\STX\DC2\EOT\185\ACK\b\n\ + \\ENQ\ENQ\a\STX>\STX\DC2\EOT\187\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STX?\DC2\EOT\186\ACK\STX\r\n\ + \\EOT\ENQ\a\STX?\DC2\EOT\188\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX?\SOH\DC2\EOT\186\ACK\STX\a\n\ + \\ENQ\ENQ\a\STX?\SOH\DC2\EOT\188\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STX?\STX\DC2\EOT\186\ACK\n\ + \\ENQ\ENQ\a\STX?\STX\DC2\EOT\188\ACK\n\ \\f\n\ \\f\n\ - \\EOT\ENQ\a\STX@\DC2\EOT\187\ACK\STX\DC3\n\ + \\EOT\ENQ\a\STX@\DC2\EOT\189\ACK\STX\DC3\n\ \\r\n\ - \\ENQ\ENQ\a\STX@\SOH\DC2\EOT\187\ACK\STX\r\n\ + \\ENQ\ENQ\a\STX@\SOH\DC2\EOT\189\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STX@\STX\DC2\EOT\187\ACK\DLE\DC2\n\ + \\ENQ\ENQ\a\STX@\STX\DC2\EOT\189\ACK\DLE\DC2\n\ \\f\n\ - \\EOT\ENQ\a\STXA\DC2\EOT\188\ACK\STX\NAK\n\ + \\EOT\ENQ\a\STXA\DC2\EOT\190\ACK\STX\NAK\n\ \\r\n\ - \\ENQ\ENQ\a\STXA\SOH\DC2\EOT\188\ACK\STX\SI\n\ + \\ENQ\ENQ\a\STXA\SOH\DC2\EOT\190\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STXA\STX\DC2\EOT\188\ACK\DC2\DC4\n\ + \\ENQ\ENQ\a\STXA\STX\DC2\EOT\190\ACK\DC2\DC4\n\ \\f\n\ - \\EOT\ENQ\a\STXB\DC2\EOT\189\ACK\STX\SO\n\ + \\EOT\ENQ\a\STXB\DC2\EOT\191\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STXB\SOH\DC2\EOT\189\ACK\STX\b\n\ + \\ENQ\ENQ\a\STXB\SOH\DC2\EOT\191\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STXB\STX\DC2\EOT\189\ACK\v\r\n\ + \\ENQ\ENQ\a\STXB\STX\DC2\EOT\191\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STXC\DC2\EOT\190\ACK\STX\v\n\ + \\EOT\ENQ\a\STXC\DC2\EOT\192\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXC\SOH\DC2\EOT\190\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXC\SOH\DC2\EOT\192\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXC\STX\DC2\EOT\190\ACK\b\n\ + \\ENQ\ENQ\a\STXC\STX\DC2\EOT\192\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXD\DC2\EOT\191\ACK\STX\r\n\ + \\EOT\ENQ\a\STXD\DC2\EOT\193\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STXD\SOH\DC2\EOT\191\ACK\STX\a\n\ + \\ENQ\ENQ\a\STXD\SOH\DC2\EOT\193\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STXD\STX\DC2\EOT\191\ACK\n\ + \\ENQ\ENQ\a\STXD\STX\DC2\EOT\193\ACK\n\ \\f\n\ \\f\n\ - \\EOT\ENQ\a\STXE\DC2\EOT\192\ACK\STX\f\n\ + \\EOT\ENQ\a\STXE\DC2\EOT\194\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXE\SOH\DC2\EOT\192\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXE\SOH\DC2\EOT\194\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXE\STX\DC2\EOT\192\ACK\t\v\n\ + \\ENQ\ENQ\a\STXE\STX\DC2\EOT\194\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXF\DC2\EOT\193\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STXF\DC2\EOT\195\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STXF\SOH\DC2\EOT\193\ACK\STX\f\n\ + \\ENQ\ENQ\a\STXF\SOH\DC2\EOT\195\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXF\STX\DC2\EOT\193\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STXF\STX\DC2\EOT\195\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STXG\DC2\EOT\194\ACK\STX\SO\n\ + \\EOT\ENQ\a\STXG\DC2\EOT\196\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STXG\SOH\DC2\EOT\194\ACK\STX\b\n\ + \\ENQ\ENQ\a\STXG\SOH\DC2\EOT\196\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STXG\STX\DC2\EOT\194\ACK\v\r\n\ + \\ENQ\ENQ\a\STXG\STX\DC2\EOT\196\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STXH\DC2\EOT\195\ACK\STX\DC1\n\ + \\EOT\ENQ\a\STXH\DC2\EOT\197\ACK\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\a\STXH\SOH\DC2\EOT\195\ACK\STX\n\ + \\ENQ\ENQ\a\STXH\SOH\DC2\EOT\197\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STXH\STX\DC2\EOT\195\ACK\r\DLE\n\ + \\ENQ\ENQ\a\STXH\STX\DC2\EOT\197\ACK\r\DLE\n\ \\f\n\ - \\EOT\ENQ\a\STXI\DC2\EOT\196\ACK\STX\SO\n\ + \\EOT\ENQ\a\STXI\DC2\EOT\198\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STXI\SOH\DC2\EOT\196\ACK\STX\b\n\ + \\ENQ\ENQ\a\STXI\SOH\DC2\EOT\198\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STXI\STX\DC2\EOT\196\ACK\v\r\n\ + \\ENQ\ENQ\a\STXI\STX\DC2\EOT\198\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STXJ\DC2\EOT\197\ACK\STX\t\n\ + \\EOT\ENQ\a\STXJ\DC2\EOT\199\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STXJ\SOH\DC2\EOT\197\ACK\STX\ETX\n\ + \\ENQ\ENQ\a\STXJ\SOH\DC2\EOT\199\ACK\STX\ETX\n\ \\r\n\ - \\ENQ\ENQ\a\STXJ\STX\DC2\EOT\197\ACK\ACK\b\n\ + \\ENQ\ENQ\a\STXJ\STX\DC2\EOT\199\ACK\ACK\b\n\ \\f\n\ - \\EOT\ENQ\a\STXK\DC2\EOT\198\ACK\STX\SO\n\ + \\EOT\ENQ\a\STXK\DC2\EOT\200\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STXK\SOH\DC2\EOT\198\ACK\STX\b\n\ + \\ENQ\ENQ\a\STXK\SOH\DC2\EOT\200\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STXK\STX\DC2\EOT\198\ACK\v\r\n\ + \\ENQ\ENQ\a\STXK\STX\DC2\EOT\200\ACK\v\r\n\ \\f\n\ - \\EOT\ENQ\a\STXL\DC2\EOT\199\ACK\STX\f\n\ + \\EOT\ENQ\a\STXL\DC2\EOT\201\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXL\SOH\DC2\EOT\199\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXL\SOH\DC2\EOT\201\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXL\STX\DC2\EOT\199\ACK\t\v\n\ + \\ENQ\ENQ\a\STXL\STX\DC2\EOT\201\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXM\DC2\EOT\200\ACK\STX\r\n\ + \\EOT\ENQ\a\STXM\DC2\EOT\202\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STXM\SOH\DC2\EOT\200\ACK\STX\a\n\ + \\ENQ\ENQ\a\STXM\SOH\DC2\EOT\202\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STXM\STX\DC2\EOT\200\ACK\n\ + \\ENQ\ENQ\a\STXM\STX\DC2\EOT\202\ACK\n\ \\f\n\ \2\n\ - \\EOT\ENQ\a\STXN\DC2\EOT\201\ACK\STX\SO\"$ Internal language for testing SCIP\n\ + \\EOT\ENQ\a\STXN\DC2\EOT\203\ACK\STX\SO\"$ Internal language for testing SCIP\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STXN\SOH\DC2\EOT\201\ACK\STX\a\n\ + \\ENQ\ENQ\a\STXN\SOH\DC2\EOT\203\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STXN\STX\DC2\EOT\201\ACK\n\ + \\ENQ\ENQ\a\STXN\STX\DC2\EOT\203\ACK\n\ \\r\n\ \\f\n\ - \\EOT\ENQ\a\STXO\DC2\EOT\202\ACK\STX\f\n\ + \\EOT\ENQ\a\STXO\DC2\EOT\204\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXO\SOH\DC2\EOT\202\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXO\SOH\DC2\EOT\204\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXO\STX\DC2\EOT\202\ACK\t\v\n\ + \\ENQ\ENQ\a\STXO\STX\DC2\EOT\204\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXP\DC2\EOT\203\ACK\STX\f\n\ + \\EOT\ENQ\a\STXP\DC2\EOT\205\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXP\SOH\DC2\EOT\203\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXP\SOH\DC2\EOT\205\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXP\STX\DC2\EOT\203\ACK\t\v\n\ + \\ENQ\ENQ\a\STXP\STX\DC2\EOT\205\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXQ\DC2\EOT\204\ACK\STX\f\n\ + \\EOT\ENQ\a\STXQ\DC2\EOT\206\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXQ\SOH\DC2\EOT\204\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXQ\SOH\DC2\EOT\206\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXQ\STX\DC2\EOT\204\ACK\t\v\n\ + \\ENQ\ENQ\a\STXQ\STX\DC2\EOT\206\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXR\DC2\EOT\205\ACK\STX\v\n\ + \\EOT\ENQ\a\STXR\DC2\EOT\207\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXR\SOH\DC2\EOT\205\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXR\SOH\DC2\EOT\207\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXR\STX\DC2\EOT\205\ACK\b\n\ + \\ENQ\ENQ\a\STXR\STX\DC2\EOT\207\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXS\DC2\EOT\206\ACK\STX\f\n\ + \\EOT\ENQ\a\STXS\DC2\EOT\208\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXS\SOH\DC2\EOT\206\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXS\SOH\DC2\EOT\208\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXS\STX\DC2\EOT\206\ACK\t\v\n\ + \\ENQ\ENQ\a\STXS\STX\DC2\EOT\208\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXT\DC2\EOT\207\ACK\STX\v\n\ + \\EOT\ENQ\a\STXT\DC2\EOT\209\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXT\SOH\DC2\EOT\207\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXT\SOH\DC2\EOT\209\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXT\STX\DC2\EOT\207\ACK\b\n\ + \\ENQ\ENQ\a\STXT\STX\DC2\EOT\209\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXU\DC2\EOT\208\ACK\STX\v\n\ + \\EOT\ENQ\a\STXU\DC2\EOT\210\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXU\SOH\DC2\EOT\208\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXU\SOH\DC2\EOT\210\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXU\STX\DC2\EOT\208\ACK\b\n\ + \\ENQ\ENQ\a\STXU\STX\DC2\EOT\210\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXV\DC2\EOT\209\ACK\STX\f\n\ + \\EOT\ENQ\a\STXV\DC2\EOT\211\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXV\SOH\DC2\EOT\209\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXV\SOH\DC2\EOT\211\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXV\STX\DC2\EOT\209\ACK\t\v\n\ + \\ENQ\ENQ\a\STXV\STX\DC2\EOT\211\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXW\DC2\EOT\210\ACK\STX\f\n\ + \\EOT\ENQ\a\STXW\DC2\EOT\212\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXW\SOH\DC2\EOT\210\ACK\STX\a\n\ + \\ENQ\ENQ\a\STXW\SOH\DC2\EOT\212\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STXW\STX\DC2\EOT\210\ACK\n\ + \\ENQ\ENQ\a\STXW\STX\DC2\EOT\212\ACK\n\ \\v\n\ \\f\n\ - \\EOT\ENQ\a\STXX\DC2\EOT\211\ACK\STX\SO\n\ + \\EOT\ENQ\a\STXX\DC2\EOT\213\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STXX\SOH\DC2\EOT\211\ACK\STX\b\n\ + \\ENQ\ENQ\a\STXX\SOH\DC2\EOT\213\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STXX\STX\DC2\EOT\211\ACK\v\r\n\ + \\ENQ\ENQ\a\STXX\STX\DC2\EOT\213\ACK\v\r\n\ \\DC4\n\ - \\EOT\ENQ\a\STXY\DC2\EOT\212\ACK\STX\DC3\"\ACK Bash\n\ + \\EOT\ENQ\a\STXY\DC2\EOT\214\ACK\STX\DC3\"\ACK Bash\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STXY\SOH\DC2\EOT\212\ACK\STX\r\n\ + \\ENQ\ENQ\a\STXY\SOH\DC2\EOT\214\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STXY\STX\DC2\EOT\212\ACK\DLE\DC2\n\ + \\ENQ\ENQ\a\STXY\STX\DC2\EOT\214\ACK\DLE\DC2\n\ \\f\n\ - \\EOT\ENQ\a\STXZ\DC2\EOT\213\ACK\STX\SI\n\ + \\EOT\ENQ\a\STXZ\DC2\EOT\215\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STXZ\SOH\DC2\EOT\213\ACK\STX\t\n\ + \\ENQ\ENQ\a\STXZ\SOH\DC2\EOT\215\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STXZ\STX\DC2\EOT\213\ACK\f\SO\n\ + \\ENQ\ENQ\a\STXZ\STX\DC2\EOT\215\ACK\f\SO\n\ \\f\n\ - \\EOT\ENQ\a\STX[\DC2\EOT\214\ACK\STX\SO\n\ + \\EOT\ENQ\a\STX[\DC2\EOT\216\ACK\STX\SO\n\ \\r\n\ - \\ENQ\ENQ\a\STX[\SOH\DC2\EOT\214\ACK\STX\a\n\ + \\ENQ\ENQ\a\STX[\SOH\DC2\EOT\216\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STX[\STX\DC2\EOT\214\ACK\n\ + \\ENQ\ENQ\a\STX[\STX\DC2\EOT\216\ACK\n\ \\r\n\ \\f\n\ - \\EOT\ENQ\a\STX\\\DC2\EOT\215\ACK\STX\DLE\n\ + \\EOT\ENQ\a\STX\\\DC2\EOT\217\ACK\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\a\STX\\\SOH\DC2\EOT\215\ACK\STX\n\ + \\ENQ\ENQ\a\STX\\\SOH\DC2\EOT\217\ACK\STX\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STX\\\STX\DC2\EOT\215\ACK\r\SI\n\ + \\ENQ\ENQ\a\STX\\\STX\DC2\EOT\217\ACK\r\SI\n\ \\f\n\ - \\EOT\ENQ\a\STX]\DC2\EOT\216\ACK\STX\SI\n\ + \\EOT\ENQ\a\STX]\DC2\EOT\218\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STX]\SOH\DC2\EOT\216\ACK\STX\b\n\ + \\ENQ\ENQ\a\STX]\SOH\DC2\EOT\218\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STX]\STX\DC2\EOT\216\ACK\v\SO\n\ + \\ENQ\ENQ\a\STX]\STX\DC2\EOT\218\ACK\v\SO\n\ \\f\n\ - \\EOT\ENQ\a\STX^\DC2\EOT\217\ACK\STX\f\n\ + \\EOT\ENQ\a\STX^\DC2\EOT\219\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX^\SOH\DC2\EOT\217\ACK\STX\a\n\ + \\ENQ\ENQ\a\STX^\SOH\DC2\EOT\219\ACK\STX\a\n\ \\r\n\ - \\ENQ\ENQ\a\STX^\STX\DC2\EOT\217\ACK\n\ + \\ENQ\ENQ\a\STX^\STX\DC2\EOT\219\ACK\n\ \\v\n\ \\f\n\ - \\EOT\ENQ\a\STX_\DC2\EOT\218\ACK\STX\f\n\ + \\EOT\ENQ\a\STX_\DC2\EOT\220\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX_\SOH\DC2\EOT\218\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STX_\SOH\DC2\EOT\220\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STX_\STX\DC2\EOT\218\ACK\b\v\n\ + \\ENQ\ENQ\a\STX_\STX\DC2\EOT\220\ACK\b\v\n\ \\f\n\ - \\EOT\ENQ\a\STX`\DC2\EOT\219\ACK\STX\f\n\ + \\EOT\ENQ\a\STX`\DC2\EOT\221\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STX`\SOH\DC2\EOT\219\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STX`\SOH\DC2\EOT\221\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STX`\STX\DC2\EOT\219\ACK\t\v\n\ + \\ENQ\ENQ\a\STX`\STX\DC2\EOT\221\ACK\t\v\n\ \\f\n\ - \\EOT\ENQ\a\STXa\DC2\EOT\220\ACK\STX\v\n\ + \\EOT\ENQ\a\STXa\DC2\EOT\222\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXa\SOH\DC2\EOT\220\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXa\SOH\DC2\EOT\222\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXa\STX\DC2\EOT\220\ACK\b\n\ + \\ENQ\ENQ\a\STXa\STX\DC2\EOT\222\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXb\DC2\EOT\221\ACK\STX\SI\n\ + \\EOT\ENQ\a\STXb\DC2\EOT\223\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STXb\SOH\DC2\EOT\221\ACK\STX\b\n\ + \\ENQ\ENQ\a\STXb\SOH\DC2\EOT\223\ACK\STX\b\n\ \\r\n\ - \\ENQ\ENQ\a\STXb\STX\DC2\EOT\221\ACK\v\SO\n\ + \\ENQ\ENQ\a\STXb\STX\DC2\EOT\223\ACK\v\SO\n\ \\f\n\ - \\EOT\ENQ\a\STXc\DC2\EOT\222\ACK\STX\DC2\n\ + \\EOT\ENQ\a\STXc\DC2\EOT\224\ACK\STX\DC2\n\ \\r\n\ - \\ENQ\ENQ\a\STXc\SOH\DC2\EOT\222\ACK\STX\f\n\ + \\ENQ\ENQ\a\STXc\SOH\DC2\EOT\224\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXc\STX\DC2\EOT\222\ACK\SI\DC1\n\ + \\ENQ\ENQ\a\STXc\STX\DC2\EOT\224\ACK\SI\DC1\n\ \\f\n\ - \\EOT\ENQ\a\STXd\DC2\EOT\223\ACK\STX\ETB\n\ + \\EOT\ENQ\a\STXd\DC2\EOT\225\ACK\STX\ETB\n\ \\r\n\ - \\ENQ\ENQ\a\STXd\SOH\DC2\EOT\223\ACK\STX\DC1\n\ + \\ENQ\ENQ\a\STXd\SOH\DC2\EOT\225\ACK\STX\DC1\n\ \\r\n\ - \\ENQ\ENQ\a\STXd\STX\DC2\EOT\223\ACK\DC4\SYN\n\ + \\ENQ\ENQ\a\STXd\STX\DC2\EOT\225\ACK\DC4\SYN\n\ \\f\n\ - \\EOT\ENQ\a\STXe\DC2\EOT\224\ACK\STX\DLE\n\ + \\EOT\ENQ\a\STXe\DC2\EOT\226\ACK\STX\DLE\n\ \\r\n\ - \\ENQ\ENQ\a\STXe\SOH\DC2\EOT\224\ACK\STX\t\n\ + \\ENQ\ENQ\a\STXe\SOH\DC2\EOT\226\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STXe\STX\DC2\EOT\224\ACK\f\SI\n\ + \\ENQ\ENQ\a\STXe\STX\DC2\EOT\226\ACK\f\SI\n\ \\f\n\ - \\EOT\ENQ\a\STXf\DC2\EOT\225\ACK\STX\r\n\ + \\EOT\ENQ\a\STXf\DC2\EOT\227\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STXf\SOH\DC2\EOT\225\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXf\SOH\DC2\EOT\227\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXf\STX\DC2\EOT\225\ACK\t\f\n\ + \\ENQ\ENQ\a\STXf\STX\DC2\EOT\227\ACK\t\f\n\ \\f\n\ - \\EOT\ENQ\a\STXg\DC2\EOT\226\ACK\STX\DC3\n\ + \\EOT\ENQ\a\STXg\DC2\EOT\228\ACK\STX\DC3\n\ \\r\n\ - \\ENQ\ENQ\a\STXg\SOH\DC2\EOT\226\ACK\STX\r\n\ + \\ENQ\ENQ\a\STXg\SOH\DC2\EOT\228\ACK\STX\r\n\ \\r\n\ - \\ENQ\ENQ\a\STXg\STX\DC2\EOT\226\ACK\DLE\DC2\n\ + \\ENQ\ENQ\a\STXg\STX\DC2\EOT\228\ACK\DLE\DC2\n\ \\f\n\ - \\EOT\ENQ\a\STXh\DC2\EOT\227\ACK\STX\v\n\ + \\EOT\ENQ\a\STXh\DC2\EOT\229\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXh\SOH\DC2\EOT\227\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXh\SOH\DC2\EOT\229\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXh\STX\DC2\EOT\227\ACK\b\n\ + \\ENQ\ENQ\a\STXh\STX\DC2\EOT\229\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXi\DC2\EOT\228\ACK\STX\SI\n\ + \\EOT\ENQ\a\STXi\DC2\EOT\230\ACK\STX\SI\n\ \\r\n\ - \\ENQ\ENQ\a\STXi\SOH\DC2\EOT\228\ACK\STX\t\n\ + \\ENQ\ENQ\a\STXi\SOH\DC2\EOT\230\ACK\STX\t\n\ \\r\n\ - \\ENQ\ENQ\a\STXi\STX\DC2\EOT\228\ACK\f\SO\n\ + \\ENQ\ENQ\a\STXi\STX\DC2\EOT\230\ACK\f\SO\n\ \\f\n\ - \\EOT\ENQ\a\STXj\DC2\EOT\229\ACK\STX\v\n\ + \\EOT\ENQ\a\STXj\DC2\EOT\231\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXj\SOH\DC2\EOT\229\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXj\SOH\DC2\EOT\231\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXj\STX\DC2\EOT\229\ACK\b\n\ + \\ENQ\ENQ\a\STXj\STX\DC2\EOT\231\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXk\DC2\EOT\230\ACK\STX\v\n\ + \\EOT\ENQ\a\STXk\DC2\EOT\232\ACK\STX\v\n\ \\r\n\ - \\ENQ\ENQ\a\STXk\SOH\DC2\EOT\230\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXk\SOH\DC2\EOT\232\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXk\STX\DC2\EOT\230\ACK\b\n\ + \\ENQ\ENQ\a\STXk\STX\DC2\EOT\232\ACK\b\n\ \\n\ \\f\n\ - \\EOT\ENQ\a\STXl\DC2\EOT\231\ACK\STX\f\n\ + \\EOT\ENQ\a\STXl\DC2\EOT\233\ACK\STX\f\n\ \\r\n\ - \\ENQ\ENQ\a\STXl\SOH\DC2\EOT\231\ACK\STX\ACK\n\ + \\ENQ\ENQ\a\STXl\SOH\DC2\EOT\233\ACK\STX\ACK\n\ \\r\n\ - \\ENQ\ENQ\a\STXl\STX\DC2\EOT\231\ACK\t\v\n\ + \\ENQ\ENQ\a\STXl\STX\DC2\EOT\233\ACK\t\v\n\ \\147\ETX\n\ - \\EOT\ENQ\a\STXm\DC2\EOT\232\ACK\STX\v\"\132\ETX NextLanguage = 111;\n\ + \\EOT\ENQ\a\STXm\DC2\EOT\234\ACK\STX\v\"\132\ETX NextLanguage = 111;\n\ \ Steps add a new language:\n\ \ 1. Copy-paste the \"NextLanguage = N\" line above\n\ \ 2. Increment \"NextLanguage = N\" to \"NextLanguage = N+1\"\n\ @@ -9164,7 +9166,7 @@ packedFileDescriptor \ 5. (optional) Add a brief comment behind the language if the name is not self-explanatory\n\ \\n\ \\r\n\ - \\ENQ\ENQ\a\STXm\SOH\DC2\EOT\232\ACK\STX\ENQ\n\ + \\ENQ\ENQ\a\STXm\SOH\DC2\EOT\234\ACK\STX\ENQ\n\ \\r\n\ - \\ENQ\ENQ\a\STXm\STX\DC2\EOT\232\ACK\b\n\ + \\ENQ\ENQ\a\STXm\STX\DC2\EOT\234\ACK\b\n\ \b\ACKproto3" \ No newline at end of file diff --git a/bindings/rust/src/generated/scip.rs b/bindings/rust/src/generated/scip.rs index 19eb8ba0..3e98c1bc 100644 --- a/bindings/rust/src/generated/scip.rs +++ b/bindings/rust/src/generated/scip.rs @@ -4664,8 +4664,8 @@ static file_descriptor_proto_data: &'static [u8] = b"\ g\x10h\x12\x08\n\x04VHDL\x10i\x12\x0f\n\x0bVisualBasic\x10?\x12\x07\n\ \x03Vue\x10\x19\x12\x0b\n\x07Wolfram\x105\x12\x07\n\x03XML\x10\x1f\x12\ \x07\n\x03XSL\x10\x20\x12\x08\n\x04YAML\x10J\x12\x07\n\x03Zig\x10&B/Z-gi\ - thub.com/sourcegraph/scip/bindings/go/scip/J\xd7\xb7\x02\n\x07\x12\x05\n\ - \0\xf0\x06\x01\n\x82\x04\n\x01\x0c\x12\x03\n\0\x122\xf7\x03\x20An\x20ind\ + thub.com/sourcegraph/scip/bindings/go/scip/J\xce\xb8\x02\n\x07\x12\x05\n\ + \0\xf2\x06\x01\n\x82\x04\n\x01\x0c\x12\x03\n\0\x122\xf7\x03\x20An\x20ind\ ex\x20contains\x20one\x20or\x20more\x20pieces\x20of\x20information\x20ab\ out\x20a\x20given\x20piece\x20of\n\x20source\x20code\x20or\x20software\ \x20artifact.\x20Complementary\x20information\x20can\x20be\x20merged\n\ @@ -4926,7 +4926,7 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x10\x11\n\x0c\n\x04\x04\x05\x02\x02\x12\x04\xc8\x01\x02\x15\n\r\n\x05\ \x04\x05\x02\x02\x05\x12\x04\xc8\x01\x02\x08\n\r\n\x05\x04\x05\x02\x02\ \x01\x12\x04\xc8\x01\t\x10\n\r\n\x05\x04\x05\x02\x02\x03\x12\x04\xc8\x01\ - \x13\x14\n\x0c\n\x02\x04\x06\x12\x06\xcb\x01\0\xe2\x01\x01\n\x0b\n\x03\ + \x13\x14\n\x0c\n\x02\x04\x06\x12\x06\xcb\x01\0\xe4\x01\x01\n\x0b\n\x03\ \x04\x06\x01\x12\x04\xcb\x01\x08\x12\n\x0e\n\x04\x04\x06\x04\0\x12\x06\ \xcc\x01\x02\xde\x01\x03\n\r\n\x05\x04\x06\x04\0\x01\x12\x04\xcc\x01\x07\ \r\n\r\n\x05\x04\x06\x04\0\x03\x12\x04\xcd\x01\x04\x1e\n\x0e\n\x06\x04\ @@ -4969,605 +4969,608 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x12\x04\xdf\x01\x10\x11\n\x0c\n\x04\x04\x06\x02\x01\x12\x04\xe0\x01\x02\ \x1b\n\r\n\x05\x04\x06\x02\x01\x05\x12\x04\xe0\x01\x02\x08\n\r\n\x05\x04\ \x06\x02\x01\x01\x12\x04\xe0\x01\t\x16\n\r\n\x05\x04\x06\x02\x01\x03\x12\ - \x04\xe0\x01\x19\x1a\n\x0c\n\x04\x04\x06\x02\x02\x12\x04\xe1\x01\x02\x14\ - \n\r\n\x05\x04\x06\x02\x02\x06\x12\x04\xe1\x01\x02\x08\n\r\n\x05\x04\x06\ - \x02\x02\x01\x12\x04\xe1\x01\t\x0f\n\r\n\x05\x04\x06\x02\x02\x03\x12\x04\ - \xe1\x01\x12\x13\n\x83\x01\n\x02\x04\x07\x12\x06\xe6\x01\0\xb6\x03\x01\ - \x1au\x20SymbolInformation\x20defines\x20metadata\x20about\x20a\x20symbo\ - l,\x20such\x20as\x20the\x20symbol's\n\x20docstring\x20or\x20what\x20pack\ - age\x20it's\x20defined\x20it.\n\n\x0b\n\x03\x04\x07\x01\x12\x04\xe6\x01\ - \x08\x19\n\xa0\x01\n\x04\x04\x07\x02\0\x12\x04\xe9\x01\x02\x14\x1a\x91\ - \x01\x20Identifier\x20of\x20this\x20symbol,\x20which\x20can\x20be\x20ref\ - erenced\x20from\x20`Occurence.symbol`.\n\x20The\x20string\x20must\x20be\ - \x20formatted\x20according\x20to\x20the\x20grammar\x20in\x20`Symbol`.\n\ - \n\r\n\x05\x04\x07\x02\0\x05\x12\x04\xe9\x01\x02\x08\n\r\n\x05\x04\x07\ - \x02\0\x01\x12\x04\xe9\x01\t\x0f\n\r\n\x05\x04\x07\x02\0\x03\x12\x04\xe9\ - \x01\x12\x13\n\xb4\x03\n\x04\x04\x07\x02\x01\x12\x04\xf0\x01\x02$\x1a\ - \xa5\x03\x20(optional,\x20but\x20strongly\x20recommended)\x20The\x20mark\ - down-formatted\x20documentation\n\x20for\x20this\x20symbol.\x20Use\x20`S\ - ymbolInformation.signature_documentation`\x20to\n\x20document\x20the\x20\ - method/class/type\x20signature\x20of\x20this\x20symbol.\n\x20Due\x20to\ - \x20historical\x20reasons,\x20indexers\x20may\x20include\x20signature\ - \x20documentation\x20in\n\x20this\x20field\x20by\x20rendering\x20markdow\ - n\x20code\x20blocks.\x20New\x20indexers\x20should\x20only\n\x20include\ - \x20non-code\x20documentation\x20in\x20this\x20field,\x20for\x20example\ - \x20docstrings.\n\n\r\n\x05\x04\x07\x02\x01\x04\x12\x04\xf0\x01\x02\n\n\ - \r\n\x05\x04\x07\x02\x01\x05\x12\x04\xf0\x01\x0b\x11\n\r\n\x05\x04\x07\ - \x02\x01\x01\x12\x04\xf0\x01\x12\x1f\n\r\n\x05\x04\x07\x02\x01\x03\x12\ - \x04\xf0\x01\"#\n^\n\x04\x04\x07\x02\x02\x12\x04\xf2\x01\x02*\x1aP\x20(o\ - ptional)\x20Relationships\x20to\x20other\x20symbols\x20(e.g.,\x20impleme\ - nts,\x20type\x20definition).\n\n\r\n\x05\x04\x07\x02\x02\x04\x12\x04\xf2\ - \x01\x02\n\n\r\n\x05\x04\x07\x02\x02\x06\x12\x04\xf2\x01\x0b\x17\n\r\n\ - \x05\x04\x07\x02\x02\x01\x12\x04\xf2\x01\x18%\n\r\n\x05\x04\x07\x02\x02\ - \x03\x12\x04\xf2\x01()\n\xa4\x01\n\x04\x04\x07\x02\x03\x12\x04\xf6\x01\ - \x02\x10\x1a\x95\x01\x20The\x20kind\x20of\x20this\x20symbol.\x20Use\x20t\ - his\x20field\x20instead\x20of\n\x20`SymbolDescriptor.Suffix`\x20to\x20de\ - termine\x20whether\x20something\x20is,\x20for\x20example,\x20a\n\x20clas\ - s\x20or\x20a\x20method.\n\n\r\n\x05\x04\x07\x02\x03\x06\x12\x04\xf6\x01\ - \x02\x06\n\r\n\x05\x04\x07\x02\x03\x01\x12\x04\xf6\x01\x07\x0b\n\r\n\x05\ - \x04\x07\x02\x03\x03\x12\x04\xf6\x01\x0e\x0f\n\xf5\x05\n\x04\x04\x07\x04\ - \0\x12\x06\x85\x02\x02\x92\x03\x03\x1a\xe4\x05\x20(optional)\x20Kind\x20\ - represents\x20the\x20fine-grained\x20category\x20of\x20a\x20symbol,\x20s\ - uitable\x20for\x20presenting\n\x20information\x20about\x20the\x20symbol'\ - s\x20meaning\x20in\x20the\x20language.\n\n\x20For\x20example:\n\x20-\x20\ - A\x20Java\x20method\x20would\x20have\x20the\x20kind\x20`Method`\x20while\ - \x20a\x20Go\x20function\x20would\n\x20\x20\x20have\x20the\x20kind\x20`Fu\ - nction`,\x20even\x20if\x20the\x20symbols\x20for\x20these\x20use\x20the\ - \x20same\n\x20\x20\x20syntax\x20for\x20the\x20descriptor\x20`SymbolDescr\ - iptor.Suffix.Method`.\n\x20-\x20A\x20Go\x20struct\x20has\x20the\x20symbo\ - l\x20kind\x20`Struct`\x20while\x20a\x20Java\x20class\x20has\n\x20\x20\ - \x20the\x20symbol\x20kind\x20`Class`\x20even\x20if\x20they\x20both\x20ha\ - ve\x20the\x20same\x20descriptor:\n\x20\x20\x20`SymbolDescriptor.Suffix.T\ - ype`.\n\n\x20Since\x20Kind\x20is\x20more\x20fine-grained\x20than\x20Suff\ - ix:\n\x20-\x20If\x20two\x20symbols\x20have\x20the\x20same\x20Kind,\x20th\ - ey\x20should\x20share\x20the\x20same\x20Suffix.\n\x20-\x20If\x20two\x20s\ - ymbols\x20have\x20different\x20Suffixes,\x20they\x20should\x20have\x20di\ - fferent\x20Kinds.\n\n\r\n\x05\x04\x07\x04\0\x01\x12\x04\x85\x02\x07\x0b\ - \n\x0e\n\x06\x04\x07\x04\0\x02\0\x12\x04\x86\x02\x06\x1a\n\x0f\n\x07\x04\ - \x07\x04\0\x02\0\x01\x12\x04\x86\x02\x06\x15\n\x0f\n\x07\x04\x07\x04\0\ - \x02\0\x02\x12\x04\x86\x02\x18\x19\nR\n\x06\x04\x07\x04\0\x02\x01\x12\ - \x04\x88\x02\x06\x1a\x1aB\x20A\x20method\x20which\x20may\x20or\x20may\ - \x20not\x20have\x20a\x20body.\x20For\x20Java,\x20Kotlin\x20etc.\n\n\x0f\ - \n\x07\x04\x07\x04\0\x02\x01\x01\x12\x04\x88\x02\x06\x14\n\x0f\n\x07\x04\ - \x07\x04\0\x02\x01\x02\x12\x04\x88\x02\x17\x19\n*\n\x06\x04\x07\x04\0\ - \x02\x02\x12\x04\x8a\x02\x06\x14\x1a\x1a\x20For\x20Ruby's\x20attr_access\ - or\n\n\x0f\n\x07\x04\x07\x04\0\x02\x02\x01\x12\x04\x8a\x02\x06\x0e\n\x0f\ - \n\x07\x04\x07\x04\0\x02\x02\x02\x12\x04\x8a\x02\x11\x13\n\x0e\n\x06\x04\ - \x07\x04\0\x02\x03\x12\x04\x8b\x02\x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02\ - \x03\x01\x12\x04\x8b\x02\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x03\x02\ - \x12\x04\x8b\x02\x0e\x0f\n\x1b\n\x06\x04\x07\x04\0\x02\x04\x12\x04\x8d\ - \x02\x06\x14\x1a\x0b\x20For\x20Alloy\n\n\x0f\n\x07\x04\x07\x04\0\x02\x04\ - \x01\x12\x04\x8d\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02\x04\x02\x12\ - \x04\x8d\x02\x12\x13\n\x0e\n\x06\x04\x07\x04\0\x02\x05\x12\x04\x8e\x02\ - \x06\x19\n\x0f\n\x07\x04\x07\x04\0\x02\x05\x01\x12\x04\x8e\x02\x06\x14\n\ - \x0f\n\x07\x04\x07\x04\0\x02\x05\x02\x12\x04\x8e\x02\x17\x18\n\x19\n\x06\ - \x04\x07\x04\0\x02\x06\x12\x04\x90\x02\x06\x14\x1a\t\x20For\x20C++\n\n\ - \x0f\n\x07\x04\x07\x04\0\x02\x06\x01\x12\x04\x90\x02\x06\x0f\n\x0f\n\x07\ - \x04\x07\x04\0\x02\x06\x02\x12\x04\x90\x02\x12\x13\n\x1a\n\x06\x04\x07\ - \x04\0\x02\x07\x12\x04\x92\x02\x06\x10\x1a\n\x20For\x20Lean\n\n\x0f\n\ - \x07\x04\x07\x04\0\x02\x07\x01\x12\x04\x92\x02\x06\x0b\n\x0f\n\x07\x04\ - \x07\x04\0\x02\x07\x02\x12\x04\x92\x02\x0e\x0f\n\x0e\n\x06\x04\x07\x04\0\ - \x02\x08\x12\x04\x93\x02\x06\x12\n\x0f\n\x07\x04\x07\x04\0\x02\x08\x01\ - \x12\x04\x93\x02\x06\r\n\x0f\n\x07\x04\x07\x04\0\x02\x08\x02\x12\x04\x93\ - \x02\x10\x11\n\x0e\n\x06\x04\x07\x04\0\x02\t\x12\x04\x94\x02\x06\x10\n\ - \x0f\n\x07\x04\x07\x04\0\x02\t\x01\x12\x04\x94\x02\x06\x0b\n\x0f\n\x07\ - \x04\x07\x04\0\x02\t\x02\x12\x04\x94\x02\x0e\x0f\n\x0e\n\x06\x04\x07\x04\ - \0\x02\n\x12\x04\x95\x02\x06\x13\n\x0f\n\x07\x04\x07\x04\0\x02\n\x01\x12\ - \x04\x95\x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02\n\x02\x12\x04\x95\x02\ - \x11\x12\n\x0e\n\x06\x04\x07\x04\0\x02\x0b\x12\x04\x96\x02\x06\x16\n\x0f\ - \n\x07\x04\x07\x04\0\x02\x0b\x01\x12\x04\x96\x02\x06\x11\n\x0f\n\x07\x04\ - \x07\x04\0\x02\x0b\x02\x12\x04\x96\x02\x14\x15\n\x1e\n\x06\x04\x07\x04\0\ - \x02\x0c\x12\x04\x98\x02\x06\x14\x1a\x0e\x20For\x20Solidity\n\n\x0f\n\ - \x07\x04\x07\x04\0\x02\x0c\x01\x12\x04\x98\x02\x06\x0e\n\x0f\n\x07\x04\ - \x07\x04\0\x02\x0c\x02\x12\x04\x98\x02\x11\x13\n\x1d\n\x06\x04\x07\x04\0\ - \x02\r\x12\x04\x9a\x02\x06\x16\x1a\r\x20For\x20Haskell\n\n\x0f\n\x07\x04\ - \x07\x04\0\x02\r\x01\x12\x04\x9a\x02\x06\x10\n\x0f\n\x07\x04\x07\x04\0\ - \x02\r\x02\x12\x04\x9a\x02\x13\x15\n\x1f\n\x06\x04\x07\x04\0\x02\x0e\x12\ - \x04\x9c\x02\x06\x14\x1a\x0f\x20For\x20C#\x20and\x20F#\n\n\x0f\n\x07\x04\ - \x07\x04\0\x02\x0e\x01\x12\x04\x9c\x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\ - \x02\x0e\x02\x12\x04\x9c\x02\x11\x13\n\x0e\n\x06\x04\x07\x04\0\x02\x0f\ - \x12\x04\x9d\x02\x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02\x0f\x01\x12\x04\ - \x9d\x02\x06\n\n\x0f\n\x07\x04\x07\x04\0\x02\x0f\x02\x12\x04\x9d\x02\r\ - \x0f\n\x0e\n\x06\x04\x07\x04\0\x02\x10\x12\x04\x9e\x02\x06\x16\n\x0f\n\ - \x07\x04\x07\x04\0\x02\x10\x01\x12\x04\x9e\x02\x06\x10\n\x0f\n\x07\x04\ - \x07\x04\0\x02\x10\x02\x12\x04\x9e\x02\x13\x15\n\x0e\n\x06\x04\x07\x04\0\ - \x02\x11\x12\x04\x9f\x02\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02\x11\x01\ - \x12\x04\x9f\x02\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x11\x02\x12\x04\ - \x9f\x02\x0e\x10\n\x0e\n\x06\x04\x07\x04\0\x02\x12\x12\x04\xa0\x02\x06\ - \x11\n\x0f\n\x07\x04\x07\x04\0\x02\x12\x01\x12\x04\xa0\x02\x06\x0b\n\x0f\ - \n\x07\x04\x07\x04\0\x02\x12\x02\x12\x04\xa0\x02\x0e\x10\n\x1a\n\x06\x04\ - \x07\x04\0\x02\x13\x12\x04\xa2\x02\x06\x15\x1a\n\x20For\x20Dart\n\n\x0f\ - \n\x07\x04\x07\x04\0\x02\x13\x01\x12\x04\xa2\x02\x06\x0f\n\x0f\n\x07\x04\ - \x07\x04\0\x02\x13\x02\x12\x04\xa2\x02\x12\x14\n\x1b\n\x06\x04\x07\x04\0\ - \x02\x14\x12\x04\xa4\x02\x06\x10\x1a\x0b\x20For\x20Alloy\n\n\x0f\n\x07\ - \x04\x07\x04\0\x02\x14\x01\x12\x04\xa4\x02\x06\n\n\x0f\n\x07\x04\x07\x04\ - \0\x02\x14\x02\x12\x04\xa4\x02\r\x0f\n\x0e\n\x06\x04\x07\x04\0\x02\x15\ - \x12\x04\xa5\x02\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02\x15\x01\x12\x04\ - \xa5\x02\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x15\x02\x12\x04\xa5\x02\ - \x0e\x10\n\x0e\n\x06\x04\x07\x04\0\x02\x16\x12\x04\xa6\x02\x06\x10\n\x0f\ - \n\x07\x04\x07\x04\0\x02\x16\x01\x12\x04\xa6\x02\x06\n\n\x0f\n\x07\x04\ - \x07\x04\0\x02\x16\x02\x12\x04\xa6\x02\r\x0f\n\x0e\n\x06\x04\x07\x04\0\ - \x02\x17\x12\x04\xa7\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x02\x17\x01\ - \x12\x04\xa7\x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02\x17\x02\x12\x04\ - \xa7\x02\x11\x13\n;\n\x06\x04\x07\x04\0\x02\x18\x12\x04\xa9\x02\x06\x12\ - \x1a+\x20For\x20'get'\x20in\x20Swift,\x20'attr_reader'\x20in\x20Ruby\n\n\ - \x0f\n\x07\x04\x07\x04\0\x02\x18\x01\x12\x04\xa9\x02\x06\x0c\n\x0f\n\x07\ - \x04\x07\x04\0\x02\x18\x02\x12\x04\xa9\x02\x0f\x11\n\x1a\n\x06\x04\x07\ - \x04\0\x02\x19\x12\x04\xab\x02\x06\x13\x1a\n\x20For\x20Raku\n\n\x0f\n\ - \x07\x04\x07\x04\0\x02\x19\x01\x12\x04\xab\x02\x06\r\n\x0f\n\x07\x04\x07\ - \x04\0\x02\x19\x02\x12\x04\xab\x02\x10\x12\n)\n\x06\x04\x07\x04\0\x02\ - \x1a\x12\x04\xad\x02\x06\x14\x1a\x19\x20For\x20Purescript\x20and\x20Lean\ - \n\n\x0f\n\x07\x04\x07\x04\0\x02\x1a\x01\x12\x04\xad\x02\x06\x0e\n\x0f\n\ - \x07\x04\x07\x04\0\x02\x1a\x02\x12\x04\xad\x02\x11\x13\n\x0e\n\x06\x04\ - \x07\x04\0\x02\x1b\x12\x04\xae\x02\x06\x15\n\x0f\n\x07\x04\x07\x04\0\x02\ - \x1b\x01\x12\x04\xae\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02\x1b\x02\ - \x12\x04\xae\x02\x12\x14\n\x0e\n\x06\x04\x07\x04\0\x02\x1c\x12\x04\xaf\ - \x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02\x1c\x01\x12\x04\xaf\x02\x06\t\ - \n\x0f\n\x07\x04\x07\x04\0\x02\x1c\x02\x12\x04\xaf\x02\x0c\x0e\n\x1c\n\ - \x06\x04\x07\x04\0\x02\x1d\x12\x04\xb1\x02\x06\x10\x1a\x0c\x20For\x20Rac\ - ket\n\n\x0f\n\x07\x04\x07\x04\0\x02\x1d\x01\x12\x04\xb1\x02\x06\n\n\x0f\ - \n\x07\x04\x07\x04\0\x02\x1d\x02\x12\x04\xb1\x02\r\x0f\n\x1a\n\x06\x04\ - \x07\x04\0\x02\x1e\x12\x04\xb3\x02\x06\x11\x1a\n\x20For\x20Lean\n\n\x0f\ - \n\x07\x04\x07\x04\0\x02\x1e\x01\x12\x04\xb3\x02\x06\x0b\n\x0f\n\x07\x04\ - \x07\x04\0\x02\x1e\x02\x12\x04\xb3\x02\x0e\x10\n\x1e\n\x06\x04\x07\x04\0\ - \x02\x1f\x12\x04\xb5\x02\x06\x13\x1a\x0e\x20For\x20solidity\n\n\x0f\n\ - \x07\x04\x07\x04\0\x02\x1f\x01\x12\x04\xb5\x02\x06\r\n\x0f\n\x07\x04\x07\ - \x04\0\x02\x1f\x02\x12\x04\xb5\x02\x10\x12\n\x0e\n\x06\x04\x07\x04\0\x02\ - \x20\x12\x04\xb6\x02\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02\x20\x01\x12\ - \x04\xb6\x02\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x20\x02\x12\x04\xb6\ - \x02\x0e\x10\n\x0e\n\x06\x04\x07\x04\0\x02!\x12\x04\xb7\x02\x06\x12\n\ - \x0f\n\x07\x04\x07\x04\0\x02!\x01\x12\x04\xb7\x02\x06\x0c\n\x0f\n\x07\ - \x04\x07\x04\0\x02!\x02\x12\x04\xb7\x02\x0f\x11\n\x1a\n\x06\x04\x07\x04\ - \0\x02\"\x12\x04\xb9\x02\x06\x17\x1a\n\x20For\x20Ruby\n\n\x0f\n\x07\x04\ - \x07\x04\0\x02\"\x01\x12\x04\xb9\x02\x06\x11\n\x0f\n\x07\x04\x07\x04\0\ - \x02\"\x02\x12\x04\xb9\x02\x14\x16\n\x94\x01\n\x06\x04\x07\x04\0\x02#\ - \x12\x04\xbc\x02\x06\x1a\x1a\x83\x01\x20Analogous\x20to\x20'ThisParamete\ - r'\x20and\x20'SelfParameter',\x20but\x20for\x20languages\n\x20like\x20Go\ - \x20where\x20the\x20receiver\x20doesn't\x20have\x20a\x20conventional\x20\ - name.\n\n\x0f\n\x07\x04\x07\x04\0\x02#\x01\x12\x04\xbc\x02\x06\x14\n\x0f\ - \n\x07\x04\x07\x04\0\x02#\x02\x12\x04\xbc\x02\x17\x19\n8\n\x06\x04\x07\ - \x04\0\x02$\x12\x04\xbe\x02\x06\x1f\x1a(\x20Analogous\x20to\x20'Abstract\ - Method',\x20for\x20Go.\n\n\x0f\n\x07\x04\x07\x04\0\x02$\x01\x12\x04\xbe\ - \x02\x06\x19\n\x0f\n\x07\x04\x07\x04\0\x02$\x02\x12\x04\xbe\x02\x1c\x1e\ - \n\x1e\n\x06\x04\x07\x04\0\x02%\x12\x04\xc0\x02\x06\x13\x1a\x0e\x20For\ - \x20Protobuf\n\n\x0f\n\x07\x04\x07\x04\0\x02%\x01\x12\x04\xc0\x02\x06\r\ - \n\x0f\n\x07\x04\x07\x04\0\x02%\x02\x12\x04\xc0\x02\x10\x12\n\x1a\n\x06\ - \x04\x07\x04\0\x02&\x12\x04\xc2\x02\x06\x11\x1a\n\x20For\x20Dart\n\n\x0f\ - \n\x07\x04\x07\x04\0\x02&\x01\x12\x04\xc2\x02\x06\x0b\n\x0f\n\x07\x04\ - \x07\x04\0\x02&\x02\x12\x04\xc2\x02\x0e\x10\n\x1e\n\x06\x04\x07\x04\0\ - \x02'\x12\x04\xc4\x02\x06\x14\x1a\x0e\x20For\x20Solidity\n\n\x0f\n\x07\ - \x04\x07\x04\0\x02'\x01\x12\x04\xc4\x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\ - \0\x02'\x02\x12\x04\xc4\x02\x11\x13\n\x0e\n\x06\x04\x07\x04\0\x02(\x12\ - \x04\xc5\x02\x06\x12\n\x0f\n\x07\x04\x07\x04\0\x02(\x01\x12\x04\xc5\x02\ - \x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02(\x02\x12\x04\xc5\x02\x0f\x11\n\ - \x0e\n\x06\x04\x07\x04\0\x02)\x12\x04\xc6\x02\x06\x15\n\x0f\n\x07\x04\ - \x07\x04\0\x02)\x01\x12\x04\xc6\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\ - \x02)\x02\x12\x04\xc6\x02\x12\x14\n\x0e\n\x06\x04\x07\x04\0\x02*\x12\x04\ - \xc7\x02\x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02*\x01\x12\x04\xc7\x02\x06\ - \n\n\x0f\n\x07\x04\x07\x04\0\x02*\x02\x12\x04\xc7\x02\r\x0f\n\x0e\n\x06\ - \x04\x07\x04\0\x02+\x12\x04\xc8\x02\x06\x12\n\x0f\n\x07\x04\x07\x04\0\ - \x02+\x01\x12\x04\xc8\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02+\x02\x12\ - \x04\xc8\x02\x0f\x11\n\x0e\n\x06\x04\x07\x04\0\x02,\x12\x04\xc9\x02\x06\ - \x12\n\x0f\n\x07\x04\x07\x04\0\x02,\x01\x12\x04\xc9\x02\x06\x0c\n\x0f\n\ - \x07\x04\x07\x04\0\x02,\x02\x12\x04\xc9\x02\x0f\x11\n\x0e\n\x06\x04\x07\ - \x04\0\x02-\x12\x04\xca\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x02-\x01\ - \x12\x04\xca\x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02-\x02\x12\x04\xca\ - \x02\x11\x13\n\x0e\n\x06\x04\x07\x04\0\x02.\x12\x04\xcb\x02\x06\x13\n\ - \x0f\n\x07\x04\x07\x04\0\x02.\x01\x12\x04\xcb\x02\x06\r\n\x0f\n\x07\x04\ - \x07\x04\0\x02.\x02\x12\x04\xcb\x02\x10\x12\n\x0e\n\x06\x04\x07\x04\0\ - \x02/\x12\x04\xcc\x02\x06\x19\n\x0f\n\x07\x04\x07\x04\0\x02/\x01\x12\x04\ - \xcc\x02\x06\x13\n\x0f\n\x07\x04\x07\x04\0\x02/\x02\x12\x04\xcc\x02\x16\ - \x18\n\x0e\n\x06\x04\x07\x04\0\x020\x12\x04\xcd\x02\x06\x15\n\x0f\n\x07\ - \x04\x07\x04\0\x020\x01\x12\x04\xcd\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\ - \0\x020\x02\x12\x04\xcd\x02\x12\x14\n\x0e\n\x06\x04\x07\x04\0\x021\x12\ - \x04\xce\x02\x06\x1a\n\x0f\n\x07\x04\x07\x04\0\x021\x01\x12\x04\xce\x02\ - \x06\x14\n\x0f\n\x07\x04\x07\x04\0\x021\x02\x12\x04\xce\x02\x17\x19\n/\n\ - \x06\x04\x07\x04\0\x022\x12\x04\xd0\x02\x06\x13\x1a\x1f\x20For\x20Haskel\ - l's\x20PatternSynonyms\n\n\x0f\n\x07\x04\x07\x04\0\x022\x01\x12\x04\xd0\ - \x02\x06\r\n\x0f\n\x07\x04\x07\x04\0\x022\x02\x12\x04\xd0\x02\x10\x12\n\ - \x1b\n\x06\x04\x07\x04\0\x023\x12\x04\xd2\x02\x06\x15\x1a\x0b\x20For\x20\ - Alloy\n\n\x0f\n\x07\x04\x07\x04\0\x023\x01\x12\x04\xd2\x02\x06\x0f\n\x0f\ - \n\x07\x04\x07\x04\0\x023\x02\x12\x04\xd2\x02\x12\x14\n\x0e\n\x06\x04\ - \x07\x04\0\x024\x12\x04\xd3\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x024\ - \x01\x12\x04\xd3\x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x024\x02\x12\x04\ - \xd3\x02\x11\x13\nQ\n\x06\x04\x07\x04\0\x025\x12\x04\xd5\x02\x06\x14\x1a\ - A\x20Analogous\x20to\x20'Trait'\x20and\x20'TypeClass',\x20for\x20Swift\ - \x20and\x20Objective-C\n\n\x0f\n\x07\x04\x07\x04\0\x025\x01\x12\x04\xd5\ - \x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x025\x02\x12\x04\xd5\x02\x11\x13\ - \nK\n\x06\x04\x07\x04\0\x026\x12\x04\xd7\x02\x06\x1a\x1a;\x20Analogous\ - \x20to\x20'AbstractMethod',\x20for\x20Swift\x20and\x20Objective-C.\n\n\ - \x0f\n\x07\x04\x07\x04\0\x026\x01\x12\x04\xd7\x02\x06\x14\n\x0f\n\x07\ - \x04\x07\x04\0\x026\x02\x12\x04\xd7\x02\x17\x19\n9\n\x06\x04\x07\x04\0\ - \x027\x12\x04\xd9\x02\x06\x1d\x1a)\x20Analogous\x20to\x20'AbstractMethod\ - ',\x20for\x20C++.\n\n\x0f\n\x07\x04\x07\x04\0\x027\x01\x12\x04\xd9\x02\ - \x06\x17\n\x0f\n\x07\x04\x07\x04\0\x027\x02\x12\x04\xd9\x02\x1a\x1c\n\ - \x1d\n\x06\x04\x07\x04\0\x028\x12\x04\xdb\x02\x06\x17\x1a\r\x20For\x20Ha\ - skell\n\n\x0f\n\x07\x04\x07\x04\0\x028\x01\x12\x04\xdb\x02\x06\x11\n\x0f\ - \n\x07\x04\x07\x04\0\x028\x02\x12\x04\xdb\x02\x14\x16\n4\n\x06\x04\x07\ - \x04\0\x029\x12\x04\xdd\x02\x06\x19\x1a$\x20'self'\x20in\x20Python,\x20R\ - ust,\x20Swift\x20etc.\n\n\x0f\n\x07\x04\x07\x04\0\x029\x01\x12\x04\xdd\ - \x02\x06\x13\n\x0f\n\x07\x04\x07\x04\0\x029\x02\x12\x04\xdd\x02\x16\x18\ - \n;\n\x06\x04\x07\x04\0\x02:\x12\x04\xdf\x02\x06\x12\x1a+\x20For\x20'set\ - '\x20in\x20Swift,\x20'attr_writer'\x20in\x20Ruby\n\n\x0f\n\x07\x04\x07\ - \x04\0\x02:\x01\x12\x04\xdf\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02:\ - \x02\x12\x04\xdf\x02\x0f\x11\n3\n\x06\x04\x07\x04\0\x02;\x12\x04\xe1\x02\ - \x06\x15\x1a#\x20For\x20Alloy,\x20analogous\x20to\x20'Struct'.\n\n\x0f\n\ - \x07\x04\x07\x04\0\x02;\x01\x12\x04\xe1\x02\x06\x0f\n\x0f\n\x07\x04\x07\ - \x04\0\x02;\x02\x12\x04\xe1\x02\x12\x14\n\x1a\n\x06\x04\x07\x04\0\x02<\ - \x12\x04\xe3\x02\x06\x1a\x1a\n\x20For\x20Ruby\n\n\x0f\n\x07\x04\x07\x04\ - \0\x02<\x01\x12\x04\xe3\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x02<\x02\ - \x12\x04\xe3\x02\x17\x19\n8\n\x06\x04\x07\x04\0\x02=\x12\x04\xe5\x02\x06\ - \x1b\x1a(\x20Analogous\x20to\x20'StaticMethod',\x20for\x20Ruby.\n\n\x0f\ - \n\x07\x04\x07\x04\0\x02=\x01\x12\x04\xe5\x02\x06\x15\n\x0f\n\x07\x04\ - \x07\x04\0\x02=\x02\x12\x04\xe5\x02\x18\x1a\n5\n\x06\x04\x07\x04\0\x02>\ - \x12\x04\xe7\x02\x06\x1c\x1a%\x20Analogous\x20to\x20'StaticField',\x20fo\ - r\x20C++\n\n\x0f\n\x07\x04\x07\x04\0\x02>\x01\x12\x04\xe7\x02\x06\x16\n\ - \x0f\n\x07\x04\x07\x04\0\x02>\x02\x12\x04\xe7\x02\x19\x1b\n\x18\n\x06\ - \x04\x07\x04\0\x02?\x12\x04\xe9\x02\x06\x17\x1a\x08\x20For\x20C#\n\n\x0f\ - \n\x07\x04\x07\x04\0\x02?\x01\x12\x04\xe9\x02\x06\x11\n\x0f\n\x07\x04\ - \x07\x04\0\x02?\x02\x12\x04\xe9\x02\x14\x16\n\x18\n\x06\x04\x07\x04\0\ - \x02@\x12\x04\xeb\x02\x06\x17\x1a\x08\x20For\x20C#\n\n\x0f\n\x07\x04\x07\ - \x04\0\x02@\x01\x12\x04\xeb\x02\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02@\ - \x02\x12\x04\xeb\x02\x14\x16\n(\n\x06\x04\x07\x04\0\x02A\x12\x04\xed\x02\ - \x06\x18\x1a\x18\x20For\x20Java,\x20C#,\x20C++\x20etc.\n\n\x0f\n\x07\x04\ - \x07\x04\0\x02A\x01\x12\x04\xed\x02\x06\x12\n\x0f\n\x07\x04\x07\x04\0\ - \x02A\x02\x12\x04\xed\x02\x15\x17\n)\n\x06\x04\x07\x04\0\x02B\x12\x04\ - \xef\x02\x06\x1a\x1a\x19\x20For\x20C#,\x20TypeScript\x20etc.\n\n\x0f\n\ - \x07\x04\x07\x04\0\x02B\x01\x12\x04\xef\x02\x06\x14\n\x0f\n\x07\x04\x07\ - \x04\0\x02B\x02\x12\x04\xef\x02\x17\x19\n\x1c\n\x06\x04\x07\x04\0\x02C\ - \x12\x04\xf1\x02\x06\x1a\x1a\x0c\x20For\x20C,\x20C++\n\n\x0f\n\x07\x04\ - \x07\x04\0\x02C\x01\x12\x04\xf1\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\ - \x02C\x02\x12\x04\xf1\x02\x17\x19\n\x0e\n\x06\x04\x07\x04\0\x02D\x12\x04\ - \xf2\x02\x06\x12\n\x0f\n\x07\x04\x07\x04\0\x02D\x01\x12\x04\xf2\x02\x06\ - \x0c\n\x0f\n\x07\x04\x07\x04\0\x02D\x02\x12\x04\xf2\x02\x0f\x11\n\x0e\n\ - \x06\x04\x07\x04\0\x02E\x12\x04\xf3\x02\x06\x12\n\x0f\n\x07\x04\x07\x04\ - \0\x02E\x01\x12\x04\xf3\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02E\x02\ - \x12\x04\xf3\x02\x0f\x11\n\x1b\n\x06\x04\x07\x04\0\x02F\x12\x04\xf5\x02\ - \x06\x15\x1a\x0b\x20For\x20Swift\n\n\x0f\n\x07\x04\x07\x04\0\x02F\x01\ - \x12\x04\xf5\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02F\x02\x12\x04\xf5\ - \x02\x12\x14\n\x1a\n\x06\x04\x07\x04\0\x02G\x12\x04\xf7\x02\x06\x12\x1a\ - \n\x20For\x20Lean\n\n\x0f\n\x07\x04\x07\x04\0\x02G\x01\x12\x04\xf7\x02\ - \x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02G\x02\x12\x04\xf7\x02\x0f\x11\n\ - \x1a\n\x06\x04\x07\x04\0\x02H\x12\x04\xf9\x02\x06\x13\x1a\n\x20For\x20Le\ - an\n\n\x0f\n\x07\x04\x07\x04\0\x02H\x01\x12\x04\xf9\x02\x06\r\n\x0f\n\ - \x07\x04\x07\x04\0\x02H\x02\x12\x04\xf9\x02\x10\x12\nU\n\x06\x04\x07\x04\ - \0\x02I\x12\x04\xfc\x02\x06\x19\x1aE\x20Method\x20receiver\x20for\x20lan\ - guages\n\x20'this'\x20in\x20JavaScript,\x20C++,\x20Java\x20etc.\n\n\x0f\ - \n\x07\x04\x07\x04\0\x02I\x01\x12\x04\xfc\x02\x06\x13\n\x0f\n\x07\x04\ - \x07\x04\0\x02I\x02\x12\x04\xfc\x02\x16\x18\nO\n\x06\x04\x07\x04\0\x02J\ - \x12\x04\xfe\x02\x06\x11\x1a?\x20Analogous\x20to\x20'Protocol'\x20and\ - \x20'TypeClass',\x20for\x20Rust,\x20Scala\x20etc.\n\n\x0f\n\x07\x04\x07\ - \x04\0\x02J\x01\x12\x04\xfe\x02\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02J\ - \x02\x12\x04\xfe\x02\x0e\x10\nE\n\x06\x04\x07\x04\0\x02K\x12\x04\x80\x03\ - \x06\x17\x1a5\x20Analogous\x20to\x20'AbstractMethod',\x20for\x20Rust,\ - \x20Scala\x20etc.\n\n\x0f\n\x07\x04\x07\x04\0\x02K\x01\x12\x04\x80\x03\ - \x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02K\x02\x12\x04\x80\x03\x14\x16\n\ - \x89\x01\n\x06\x04\x07\x04\0\x02L\x12\x04\x83\x03\x06\x10\x1ay\x20Data\ - \x20type\x20definition\x20for\x20languages\x20like\x20OCaml\x20which\x20\ - use\x20`type`\n\x20rather\x20than\x20separate\x20keywords\x20like\x20`st\ - ruct`\x20and\x20`enum`.\n\n\x0f\n\x07\x04\x07\x04\0\x02L\x01\x12\x04\x83\ - \x03\x06\n\n\x0f\n\x07\x04\x07\x04\0\x02L\x02\x12\x04\x83\x03\r\x0f\n\ - \x0e\n\x06\x04\x07\x04\0\x02M\x12\x04\x84\x03\x06\x15\n\x0f\n\x07\x04\ - \x07\x04\0\x02M\x01\x12\x04\x84\x03\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\ - \x02M\x02\x12\x04\x84\x03\x12\x14\nS\n\x06\x04\x07\x04\0\x02N\x12\x04\ - \x86\x03\x06\x15\x1aC\x20Analogous\x20to\x20'Trait'\x20and\x20'Protocol'\ - ,\x20for\x20Haskell,\x20Purescript\x20etc.\n\n\x0f\n\x07\x04\x07\x04\0\ - \x02N\x01\x12\x04\x86\x03\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02N\x02\x12\ - \x04\x86\x03\x12\x14\nM\n\x06\x04\x07\x04\0\x02O\x12\x04\x88\x03\x06\x1b\ - \x1a=\x20Analogous\x20to\x20'AbstractMethod',\x20for\x20Haskell,\x20Pure\ - script\x20etc.\n\n\x0f\n\x07\x04\x07\x04\0\x02O\x01\x12\x04\x88\x03\x06\ - \x15\n\x0f\n\x07\x04\x07\x04\0\x02O\x02\x12\x04\x88\x03\x18\x1a\n\x1d\n\ - \x06\x04\x07\x04\0\x02P\x12\x04\x8a\x03\x06\x16\x1a\r\x20For\x20Haskell\ - \n\n\x0f\n\x07\x04\x07\x04\0\x02P\x01\x12\x04\x8a\x03\x06\x10\n\x0f\n\ - \x07\x04\x07\x04\0\x02P\x02\x12\x04\x8a\x03\x13\x15\n\x0e\n\x06\x04\x07\ - \x04\0\x02Q\x12\x04\x8b\x03\x06\x19\n\x0f\n\x07\x04\x07\x04\0\x02Q\x01\ - \x12\x04\x8b\x03\x06\x13\n\x0f\n\x07\x04\x07\x04\0\x02Q\x02\x12\x04\x8b\ - \x03\x16\x18\n(\n\x06\x04\x07\x04\0\x02R\x12\x04\x8d\x03\x06\x11\x1a\x18\ - \x20For\x20C,\x20C++,\x20Capn\x20Proto\n\n\x0f\n\x07\x04\x07\x04\0\x02R\ - \x01\x12\x04\x8d\x03\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02R\x02\x12\x04\ - \x8d\x03\x0e\x10\n\x0e\n\x06\x04\x07\x04\0\x02S\x12\x04\x8e\x03\x06\x11\ - \n\x0f\n\x07\x04\x07\x04\0\x02S\x01\x12\x04\x8e\x03\x06\x0b\n\x0f\n\x07\ - \x04\x07\x04\0\x02S\x02\x12\x04\x8e\x03\x0e\x10\n[\n\x06\x04\x07\x04\0\ - \x02T\x12\x04\x8f\x03\x06\x14\"K\x20Next\x20=\x2086;\n\x20Feel\x20free\ - \x20to\x20open\x20a\x20PR\x20proposing\x20new\x20language-specific\x20ki\ - nds.\n\n\x0f\n\x07\x04\x07\x04\0\x02T\x01\x12\x04\x8f\x03\x06\x0e\n\x0f\ - \n\x07\x04\x07\x04\0\x02T\x02\x12\x04\x8f\x03\x11\x13\n\xf3\x03\n\x04\ - \x04\x07\x02\x04\x12\x04\x9c\x03\x02\x1a\x1a\xe4\x03\x20(optional)\x20Th\ - e\x20name\x20of\x20this\x20symbol\x20as\x20it\x20should\x20be\x20display\ - ed\x20to\x20the\x20user.\n\x20For\x20example,\x20the\x20symbol\x20\"com/\ - example/MyClass#myMethod(+1).\"\x20should\x20have\x20the\n\x20display\ - \x20name\x20\"myMethod\".\x20The\x20`symbol`\x20field\x20is\x20not\x20a\ - \x20reliable\x20source\x20of\n\x20the\x20display\x20name\x20for\x20sever\ - al\x20reasons:\n\n\x20-\x20Local\x20symbols\x20don't\x20encode\x20the\ - \x20name.\n\x20-\x20Some\x20languages\x20have\x20case-insensitive\x20nam\ - es,\x20so\x20the\x20symbol\x20is\x20all-lowercase.\n\x20-\x20The\x20symb\ - ol\x20may\x20encode\x20names\x20with\x20special\x20characters\x20that\ - \x20should\x20not\x20be\n\x20\x20\x20displayed\x20to\x20the\x20user.\n\n\ - \r\n\x05\x04\x07\x02\x04\x05\x12\x04\x9c\x03\x02\x08\n\r\n\x05\x04\x07\ - \x02\x04\x01\x12\x04\x9c\x03\t\x15\n\r\n\x05\x04\x07\x02\x04\x03\x12\x04\ - \x9c\x03\x18\x19\n\xc4\x03\n\x04\x04\x07\x02\x05\x12\x04\xa3\x03\x02'\ - \x1a\xb5\x03\x20(optional)\x20The\x20signature\x20of\x20this\x20symbol\ - \x20as\x20it's\x20displayed\x20in\x20API\n\x20documentation\x20or\x20in\ - \x20hover\x20tooltips.\x20For\x20example,\x20a\x20Java\x20method\x20that\ - \x20adds\n\x20two\x20numbers\x20this\x20would\x20have\x20`Document.langu\ - age\x20=\x20\"java\"`\x20and\x20`Document.text\n\x20=\x20\"void\x20add(i\ - nt\x20a,\x20int\x20b)\".\x20The\x20`language`\x20and\x20`text`\x20fields\ - \x20are\x20required\n\x20while\x20other\x20fields\x20such\x20as\x20`Docu\ - mentation.occurrences`\x20can\x20be\x20optionally\n\x20included\x20to\ - \x20support\x20hyperlinking\x20referenced\x20symbols\x20in\x20the\x20sig\ - nature.\n\n\r\n\x05\x04\x07\x02\x05\x06\x12\x04\xa3\x03\x02\n\n\r\n\x05\ - \x04\x07\x02\x05\x01\x12\x04\xa3\x03\x0b\"\n\r\n\x05\x04\x07\x02\x05\x03\ - \x12\x04\xa3\x03%&\n\xc9\x08\n\x04\x04\x07\x02\x06\x12\x04\xb5\x03\x02\ - \x1e\x1a\xba\x08\x20(optional)\x20The\x20enclosing\x20symbol\x20if\x20th\ - is\x20is\x20a\x20local\x20symbol.\x20\x20For\x20non-local\n\x20symbols,\ - \x20the\x20enclosing\x20symbol\x20should\x20be\x20parsed\x20from\x20the\ - \x20`symbol`\x20field\n\x20using\x20the\x20`Descriptor`\x20grammar.\n\n\ - \x20The\x20primary\x20use-case\x20for\x20this\x20field\x20is\x20to\x20al\ - low\x20local\x20symbol\x20to\x20be\x20displayed\n\x20in\x20a\x20symbol\ - \x20hierarchy\x20for\x20API\x20documentation.\x20It's\x20OK\x20to\x20lea\ - ve\x20this\x20field\n\x20empty\x20for\x20local\x20variables\x20since\x20\ - local\x20variables\x20usually\x20don't\x20belong\x20in\x20API\n\x20docum\ - entation.\x20However,\x20in\x20the\x20situation\x20that\x20you\x20wish\ - \x20to\x20include\x20a\x20local\n\x20symbol\x20in\x20the\x20hierarchy,\ - \x20then\x20you\x20can\x20use\x20`enclosing_symbol`\x20to\x20locate\x20t\ - he\n\x20\"parent\"\x20or\x20\"owner\"\x20of\x20this\x20local\x20symbol.\ - \x20For\x20example,\x20a\x20Java\x20indexer\x20may\n\x20choose\x20to\x20\ - use\x20local\x20symbols\x20for\x20private\x20class\x20fields\x20while\ - \x20providing\x20an\n\x20`enclosing_symbol`\x20to\x20reference\x20the\ - \x20enclosing\x20class\x20to\x20allow\x20the\x20field\x20to\n\x20be\x20p\ - art\x20of\x20the\x20class\x20documentation\x20hierarchy.\x20From\x20the\ - \x20perspective\x20of\x20an\n\x20author\x20of\x20an\x20indexer,\x20the\ - \x20decision\x20to\x20use\x20a\x20local\x20symbol\x20or\x20global\x20sym\ - bol\n\x20should\x20exclusively\x20be\x20determined\x20whether\x20the\x20\ - local\x20symbol\x20is\x20accessible\n\x20outside\x20the\x20document,\x20\ - not\x20by\x20the\x20capability\x20to\x20find\x20the\x20enclosing\n\x20sy\ - mbol.\n\n\r\n\x05\x04\x07\x02\x06\x05\x12\x04\xb5\x03\x02\x08\n\r\n\x05\ - \x04\x07\x02\x06\x01\x12\x04\xb5\x03\t\x19\n\r\n\x05\x04\x07\x02\x06\x03\ - \x12\x04\xb5\x03\x1c\x1d\n\x0c\n\x02\x04\x08\x12\x06\xb9\x03\0\xf1\x03\ - \x01\n\x0b\n\x03\x04\x08\x01\x12\x04\xb9\x03\x08\x14\n\x0c\n\x04\x04\x08\ - \x02\0\x12\x04\xba\x03\x02\x14\n\r\n\x05\x04\x08\x02\0\x05\x12\x04\xba\ - \x03\x02\x08\n\r\n\x05\x04\x08\x02\0\x01\x12\x04\xba\x03\t\x0f\n\r\n\x05\ - \x04\x08\x02\0\x03\x12\x04\xba\x03\x12\x13\n\xde\x08\n\x04\x04\x08\x02\ - \x01\x12\x04\xd3\x03\x02\x18\x1a\xcf\x08\x20When\x20resolving\x20\"Find\ - \x20references\",\x20this\x20field\x20documents\x20what\x20other\x20symb\ - ols\n\x20should\x20be\x20included\x20together\x20with\x20this\x20symbol.\ - \x20For\x20example,\x20consider\x20the\n\x20following\x20TypeScript\x20c\ - ode\x20that\x20defines\x20two\x20symbols\x20`Animal#sound()`\x20and\n\ - \x20`Dog#sound()`:\n\x20```ts\n\x20interface\x20Animal\x20{\n\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20^^^^^^\x20definition\x20Animal#\n\ - \x20\x20\x20sound():\x20string\n\x20\x20\x20^^^^^\x20definition\x20Anima\ - l#sound()\n\x20}\n\x20class\x20Dog\x20implements\x20Animal\x20{\n\x20\ - \x20\x20\x20\x20\x20\x20^^^\x20definition\x20Dog#,\x20relationships\x20=\ - \x20[{symbol:\x20\"Animal#\",\x20is_implementation:\x20true}]\n\x20\x20\ - \x20public\x20sound():\x20string\x20{\x20return\x20\"woof\"\x20}\n\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20^^^^^\x20definition\x20Dog#sound(),\ - \x20references_symbols\x20=\x20Animal#sound(),\x20relationships\x20=\x20\ - [{symbol:\x20\"Animal#sound()\",\x20is_implementation:true,\x20is_refere\ - nce:\x20true}]\n\x20}\n\x20const\x20animal:\x20Animal\x20=\x20new\x20Dog\ - ()\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^^^^^^\ - \x20reference\x20Animal#\n\x20console.log(animal.sound())\n\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^^^^\ - ^\x20reference\x20Animal#sound()\n\x20```\n\x20Doing\x20\"Find\x20refere\ - nces\"\x20on\x20the\x20symbol\x20`Animal#sound()`\x20should\x20return\n\ - \x20references\x20to\x20the\x20`Dog#sound()`\x20method\x20as\x20well.\ - \x20Vice-versa,\x20doing\x20\"Find\n\x20references\"\x20on\x20the\x20`Do\ - g#sound()`\x20method\x20should\x20include\x20references\x20to\x20the\n\ - \x20`Animal#sound()`\x20method\x20as\x20well.\n\n\r\n\x05\x04\x08\x02\ - \x01\x05\x12\x04\xd3\x03\x02\x06\n\r\n\x05\x04\x08\x02\x01\x01\x12\x04\ - \xd3\x03\x07\x13\n\r\n\x05\x04\x08\x02\x01\x03\x12\x04\xd3\x03\x16\x17\n\ - \xee\x03\n\x04\x04\x08\x02\x02\x12\x04\xdc\x03\x02\x1d\x1a\xdf\x03\x20Si\ - milar\x20to\x20`is_reference`\x20but\x20for\x20\"Find\x20implementations\ - \".\n\x20It's\x20common\x20for\x20`is_implementation`\x20and\x20`is_refe\ - rence`\x20to\x20both\x20be\x20true\x20but\n\x20it's\x20not\x20always\x20\ - the\x20case.\n\x20In\x20the\x20TypeScript\x20example\x20above,\x20observ\ - e\x20that\x20`Dog#`\x20has\x20an\n\x20`is_implementation`\x20relationshi\ - p\x20with\x20`\"Animal#\"`\x20but\x20not\x20`is_reference`.\n\x20This\ - \x20is\x20because\x20\"Find\x20references\"\x20on\x20the\x20\"Animal#\"\ - \x20symbol\x20should\x20not\x20return\n\x20\"Dog#\".\x20We\x20only\x20wa\ - nt\x20\"Dog#\"\x20to\x20return\x20as\x20a\x20result\x20for\x20\"Find\n\ - \x20implementations\"\x20on\x20the\x20\"Animal#\"\x20symbol.\n\n\r\n\x05\ - \x04\x08\x02\x02\x05\x12\x04\xdc\x03\x02\x06\n\r\n\x05\x04\x08\x02\x02\ - \x01\x12\x04\xdc\x03\x07\x18\n\r\n\x05\x04\x08\x02\x02\x03\x12\x04\xdc\ - \x03\x1b\x1c\nP\n\x04\x04\x08\x02\x03\x12\x04\xde\x03\x02\x1e\x1aB\x20Si\ - milar\x20to\x20`references_symbols`\x20but\x20for\x20\"Go\x20to\x20type\ - \x20definition\".\n\n\r\n\x05\x04\x08\x02\x03\x05\x12\x04\xde\x03\x02\ - \x06\n\r\n\x05\x04\x08\x02\x03\x01\x12\x04\xde\x03\x07\x19\n\r\n\x05\x04\ - \x08\x02\x03\x03\x12\x04\xde\x03\x1c\x1d\n\xa7\x07\n\x04\x04\x08\x02\x04\ - \x12\x04\xef\x03\x02\x19\x1a\xd5\x06\x20Allows\x20overriding\x20the\x20b\ - ehavior\x20of\x20\"Go\x20to\x20definition\"\x20and\x20\"Find\x20referenc\ - es\"\n\x20for\x20symbols\x20which\x20do\x20not\x20have\x20a\x20definitio\ - n\x20of\x20their\x20own\x20or\x20could\n\x20potentially\x20have\x20multi\ - ple\x20definitions.\n\n\x20For\x20example,\x20in\x20a\x20language\x20wit\ - h\x20single\x20inheritance\x20and\x20no\x20field\x20overriding,\n\x20inh\ - erited\x20fields\x20can\x20reuse\x20the\x20same\x20symbol\x20as\x20the\ - \x20ancestor\x20which\x20declares\n\x20the\x20field.\x20In\x20such\x20a\ - \x20situation,\x20is_definition\x20is\x20not\x20needed.\n\n\x20On\x20the\ - \x20other\x20hand,\x20in\x20languages\x20with\x20single\x20inheritance\ - \x20and\x20some\x20form\n\x20of\x20mixins,\x20you\x20can\x20use\x20is_de\ - finition\x20to\x20relate\x20the\x20symbol\x20to\x20the\n\x20matching\x20\ - symbol\x20in\x20ancestor\x20classes,\x20and\x20is_reference\x20to\x20rel\ - ate\x20the\n\x20symbol\x20to\x20the\x20matching\x20symbol\x20in\x20mixin\ - s.\n\n\x20NOTE:\x20At\x20the\x20moment,\x20due\x20to\x20limitations\x20o\ - f\x20the\x20SCIP\x20to\x20LSIF\x20conversion,\n\x20only\x20global\x20sym\ - bols\x20in\x20an\x20index\x20are\x20allowed\x20to\x20use\x20is_definitio\ - n.\n\x20The\x20relationship\x20may\x20not\x20get\x20recorded\x20if\x20ei\ - ther\x20symbol\x20is\x20local.\n\"A\x20Update\x20registerInverseRelation\ - ships\x20on\x20adding\x20a\x20new\x20field\x20here.\n\n\r\n\x05\x04\x08\ - \x02\x04\x05\x12\x04\xef\x03\x02\x06\n\r\n\x05\x04\x08\x02\x04\x01\x12\ - \x04\xef\x03\x07\x14\n\r\n\x05\x04\x08\x02\x04\x03\x12\x04\xef\x03\x17\ - \x18\n\x88\x03\n\x02\x05\x03\x12\x06\xf8\x03\0\x8e\x04\x01\x1a\xf9\x02\ - \x20SymbolRole\x20declares\x20what\x20\"role\"\x20a\x20symbol\x20has\x20\ - in\x20an\x20occurrence.\x20A\x20role\x20is\n\x20encoded\x20as\x20a\x20bi\ - tset\x20where\x20each\x20bit\x20represents\x20a\x20different\x20role.\ - \x20For\x20example,\n\x20to\x20determine\x20if\x20the\x20`Import`\x20rol\ - e\x20is\x20set,\x20test\x20whether\x20the\x20second\x20bit\x20of\x20the\ - \n\x20enum\x20value\x20is\x20defined.\x20In\x20pseudocode,\x20this\x20ca\ - n\x20be\x20implemented\x20with\x20the\n\x20logic:\x20`const\x20isImportR\ - ole\x20=\x20(role.value\x20&\x20SymbolRole.Import.value)\x20>\x200`.\n\n\ - \x0b\n\x03\x05\x03\x01\x12\x04\xf8\x03\x05\x0f\nv\n\x04\x05\x03\x02\0\ - \x12\x04\xfb\x03\x02\x1c\x1ah\x20This\x20case\x20is\x20not\x20meant\x20t\ - o\x20be\x20used;\x20it\x20only\x20exists\x20to\x20avoid\x20an\x20error\n\ - \x20from\x20the\x20Protobuf\x20code\x20generator.\n\n\r\n\x05\x05\x03\ - \x02\0\x01\x12\x04\xfb\x03\x02\x17\n\r\n\x05\x05\x03\x02\0\x02\x12\x04\ - \xfb\x03\x1a\x1b\nT\n\x04\x05\x03\x02\x01\x12\x04\xfd\x03\x02\x13\x1aF\ - \x20Is\x20the\x20symbol\x20defined\x20here?\x20If\x20not,\x20then\x20thi\ - s\x20is\x20a\x20symbol\x20reference.\n\n\r\n\x05\x05\x03\x02\x01\x01\x12\ - \x04\xfd\x03\x02\x0c\n\r\n\x05\x05\x03\x02\x01\x02\x12\x04\xfd\x03\x0f\ - \x12\n,\n\x04\x05\x03\x02\x02\x12\x04\xff\x03\x02\x0f\x1a\x1e\x20Is\x20t\ - he\x20symbol\x20imported\x20here?\n\n\r\n\x05\x05\x03\x02\x02\x01\x12\ - \x04\xff\x03\x02\x08\n\r\n\x05\x05\x03\x02\x02\x02\x12\x04\xff\x03\x0b\ - \x0e\n+\n\x04\x05\x03\x02\x03\x12\x04\x81\x04\x02\x14\x1a\x1d\x20Is\x20t\ - he\x20symbol\x20written\x20here?\n\n\r\n\x05\x05\x03\x02\x03\x01\x12\x04\ - \x81\x04\x02\r\n\r\n\x05\x05\x03\x02\x03\x02\x12\x04\x81\x04\x10\x13\n(\ - \n\x04\x05\x03\x02\x04\x12\x04\x83\x04\x02\x13\x1a\x1a\x20Is\x20the\x20s\ - ymbol\x20read\x20here?\n\n\r\n\x05\x05\x03\x02\x04\x01\x12\x04\x83\x04\ - \x02\x0c\n\r\n\x05\x05\x03\x02\x04\x02\x12\x04\x83\x04\x0f\x12\n0\n\x04\ - \x05\x03\x02\x05\x12\x04\x85\x04\x02\x13\x1a\"\x20Is\x20the\x20symbol\ - \x20in\x20generated\x20code?\n\n\r\n\x05\x05\x03\x02\x05\x01\x12\x04\x85\ - \x04\x02\x0b\n\r\n\x05\x05\x03\x02\x05\x02\x12\x04\x85\x04\x0e\x12\n+\n\ - \x04\x05\x03\x02\x06\x12\x04\x87\x04\x02\x0e\x1a\x1d\x20Is\x20the\x20sym\ - bol\x20in\x20test\x20code?\n\n\r\n\x05\x05\x03\x02\x06\x01\x12\x04\x87\ - \x04\x02\x06\n\r\n\x05\x05\x03\x02\x06\x02\x12\x04\x87\x04\t\r\n\xed\x01\ - \n\x04\x05\x03\x02\x07\x12\x04\x8d\x04\x02\x1b\x1a\xde\x01\x20Is\x20this\ - \x20a\x20signature\x20for\x20a\x20symbol\x20that\x20is\x20defined\x20els\ - ewhere?\n\n\x20Applies\x20to\x20forward\x20declarations\x20for\x20langua\ - ges\x20like\x20C,\x20C++\n\x20and\x20Objective-C,\x20as\x20well\x20as\ - \x20`val`\x20declarations\x20in\x20interface\n\x20files\x20in\x20languag\ - es\x20like\x20SML\x20and\x20OCaml.\n\n\r\n\x05\x05\x03\x02\x07\x01\x12\ - \x04\x8d\x04\x02\x13\n\r\n\x05\x05\x03\x02\x07\x02\x12\x04\x8d\x04\x16\ - \x1a\n\x0c\n\x02\x05\x04\x12\x06\x90\x04\0\xed\x04\x01\n\x0b\n\x03\x05\ - \x04\x01\x12\x04\x90\x04\x05\x0f\n\x0b\n\x03\x05\x04\x03\x12\x04\x91\x04\ - \x02\x1c\n\x0c\n\x04\x05\x04\x03\x02\x12\x04\x91\x04\x02\x1c\n\x0c\n\x04\ - \x05\x04\x02\0\x12\x04\x93\x04\x02\x1c\n\r\n\x05\x05\x04\x02\0\x01\x12\ - \x04\x93\x04\x02\x17\n\r\n\x05\x05\x04\x02\0\x02\x12\x04\x93\x04\x1a\x1b\ - \n;\n\x04\x05\x04\x02\x01\x12\x04\x96\x04\x02\x0e\x1a-\x20Comment,\x20in\ - cluding\x20comment\x20markers\x20and\x20text\n\n\r\n\x05\x05\x04\x02\x01\ - \x01\x12\x04\x96\x04\x02\t\n\r\n\x05\x05\x04\x02\x01\x02\x12\x04\x96\x04\ - \x0c\r\n\x1b\n\x04\x05\x04\x02\x02\x12\x04\x99\x04\x02\x1b\x1a\r\x20`;`\ - \x20`.`\x20`,`\n\n\r\n\x05\x05\x04\x02\x02\x01\x12\x04\x99\x04\x02\x16\n\ - \r\n\x05\x05\x04\x02\x02\x02\x12\x04\x99\x04\x19\x1a\n2\n\x04\x05\x04\ - \x02\x03\x12\x04\x9b\x04\x02\x19\x1a$\x20(),\x20{},\x20[]\x20when\x20use\ - d\x20syntactically\n\n\r\n\x05\x05\x04\x02\x03\x01\x12\x04\x9b\x04\x02\ - \x14\n\r\n\x05\x05\x04\x02\x03\x02\x12\x04\x9b\x04\x17\x18\n5\n\x04\x05\ - \x04\x02\x04\x12\x04\x9e\x04\x02\x0e\x1a'\x20`if`,\x20`else`,\x20`return\ - `,\x20`class`,\x20etc.\n\n\r\n\x05\x05\x04\x02\x04\x01\x12\x04\x9e\x04\ - \x02\t\n\r\n\x05\x05\x04\x02\x04\x02\x12\x04\x9e\x04\x0c\r\n\x0c\n\x04\ - \x05\x04\x02\x05\x12\x04\x9f\x04\x02*\n\r\n\x05\x05\x04\x02\x05\x01\x12\ - \x04\x9f\x04\x02\x13\n\r\n\x05\x05\x04\x02\x05\x02\x12\x04\x9f\x04\x16\ - \x17\n\r\n\x05\x05\x04\x02\x05\x03\x12\x04\x9f\x04\x18)\n\x0e\n\x06\x05\ - \x04\x02\x05\x03\x01\x12\x04\x9f\x04\x19(\n\x1e\n\x04\x05\x04\x02\x06\ - \x12\x04\xa2\x04\x02\x19\x1a\x10\x20`+`,\x20`*`,\x20etc.\n\n\r\n\x05\x05\ - \x04\x02\x06\x01\x12\x04\xa2\x04\x02\x14\n\r\n\x05\x05\x04\x02\x06\x02\ - \x12\x04\xa2\x04\x17\x18\nX\n\x04\x05\x04\x02\x07\x12\x04\xa5\x04\x02\ - \x11\x1aJ\x20non-specific\x20catch-all\x20for\x20any\x20identifier\x20no\ - t\x20better\x20described\x20elsewhere\n\n\r\n\x05\x05\x04\x02\x07\x01\ - \x12\x04\xa5\x04\x02\x0c\n\r\n\x05\x05\x04\x02\x07\x02\x12\x04\xa5\x04\ - \x0f\x10\nN\n\x04\x05\x04\x02\x08\x12\x04\xa7\x04\x02\x18\x1a@\x20Identi\ - fiers\x20builtin\x20to\x20the\x20language:\x20`min`,\x20`print`\x20in\ - \x20Python.\n\n\r\n\x05\x05\x04\x02\x08\x01\x12\x04\xa7\x04\x02\x13\n\r\ - \n\x05\x05\x04\x02\x08\x02\x12\x04\xa7\x04\x16\x17\n[\n\x04\x05\x04\x02\ - \t\x12\x04\xa9\x04\x02\x15\x1aM\x20Identifiers\x20representing\x20`null`\ - -like\x20values:\x20`None`\x20in\x20Python,\x20`nil`\x20in\x20Go.\n\n\r\ - \n\x05\x05\x04\x02\t\x01\x12\x04\xa9\x04\x02\x10\n\r\n\x05\x05\x04\x02\t\ - \x02\x12\x04\xa9\x04\x13\x14\n.\n\x04\x05\x04\x02\n\x12\x04\xab\x04\x02\ - \x19\x1a\x20\x20`xyz`\x20in\x20`const\x20xyz\x20=\x20\"hello\"`\n\n\r\n\ - \x05\x05\x04\x02\n\x01\x12\x04\xab\x04\x02\x14\n\r\n\x05\x05\x04\x02\n\ - \x02\x12\x04\xab\x04\x17\x18\n'\n\x04\x05\x04\x02\x0b\x12\x04\xad\x04\ - \x02\x1f\x1a\x19\x20`var\x20X\x20=\x20\"hello\"`\x20in\x20Go\n\n\r\n\x05\ - \x05\x04\x02\x0b\x01\x12\x04\xad\x04\x02\x19\n\r\n\x05\x05\x04\x02\x0b\ - \x02\x12\x04\xad\x04\x1c\x1e\n3\n\x04\x05\x04\x02\x0c\x12\x04\xaf\x04\ - \x02\x1b\x1a%\x20Parameter\x20definition\x20and\x20references\n\n\r\n\ - \x05\x05\x04\x02\x0c\x01\x12\x04\xaf\x04\x02\x15\n\r\n\x05\x05\x04\x02\ - \x0c\x02\x12\x04\xaf\x04\x18\x1a\nX\n\x04\x05\x04\x02\r\x12\x04\xb1\x04\ - \x02\x17\x1aJ\x20Identifiers\x20for\x20variable\x20definitions\x20and\ - \x20references\x20within\x20a\x20local\x20scope\n\n\r\n\x05\x05\x04\x02\ - \r\x01\x12\x04\xb1\x04\x02\x11\n\r\n\x05\x05\x04\x02\r\x02\x12\x04\xb1\ - \x04\x14\x16\nK\n\x04\x05\x04\x02\x0e\x12\x04\xb3\x04\x02\x1a\x1a=\x20Id\ - entifiers\x20that\x20shadow\x20other\x20identifiers\x20in\x20an\x20outer\ - \x20scope\n\n\r\n\x05\x05\x04\x02\x0e\x01\x12\x04\xb3\x04\x02\x14\n\r\n\ - \x05\x05\x04\x02\x0e\x02\x12\x04\xb3\x04\x17\x19\n\xcd\x01\n\x04\x05\x04\ - \x02\x0f\x12\x04\xb8\x04\x02\x1b\x1a\xbe\x01\x20Identifier\x20representi\ - ng\x20a\x20unit\x20of\x20code\x20abstraction\x20and/or\x20namespacing.\n\ - \n\x20NOTE:\x20This\x20corresponds\x20to\x20a\x20package\x20in\x20Go\x20\ - and\x20JVM\x20languages,\n\x20and\x20a\x20module\x20in\x20languages\x20l\ - ike\x20Python\x20and\x20JavaScript.\n\n\r\n\x05\x05\x04\x02\x0f\x01\x12\ - \x04\xb8\x04\x02\x15\n\r\n\x05\x05\x04\x02\x0f\x02\x12\x04\xb8\x04\x18\ - \x1a\n\x0c\n\x04\x05\x04\x02\x10\x12\x04\xb9\x04\x02*\n\r\n\x05\x05\x04\ - \x02\x10\x01\x12\x04\xb9\x04\x02\x12\n\r\n\x05\x05\x04\x02\x10\x02\x12\ - \x04\xb9\x04\x15\x17\n\r\n\x05\x05\x04\x02\x10\x03\x12\x04\xb9\x04\x18)\ - \n\x0e\n\x06\x05\x04\x02\x10\x03\x01\x12\x04\xb9\x04\x19(\n4\n\x04\x05\ - \x04\x02\x11\x12\x04\xbc\x04\x02\x1a\x1a&\x20Function\x20references,\x20\ - including\x20calls\n\n\r\n\x05\x05\x04\x02\x11\x01\x12\x04\xbc\x04\x02\ - \x14\n\r\n\x05\x05\x04\x02\x11\x02\x12\x04\xbc\x04\x17\x19\n(\n\x04\x05\ - \x04\x02\x12\x12\x04\xbe\x04\x02$\x1a\x1a\x20Function\x20definition\x20o\ - nly\n\n\r\n\x05\x05\x04\x02\x12\x01\x12\x04\xbe\x04\x02\x1e\n\r\n\x05\ - \x05\x04\x02\x12\x02\x12\x04\xbe\x04!#\n7\n\x04\x05\x04\x02\x13\x12\x04\ - \xc1\x04\x02\x17\x1a)\x20Macro\x20references,\x20including\x20invocation\ - s\n\n\r\n\x05\x05\x04\x02\x13\x01\x12\x04\xc1\x04\x02\x11\n\r\n\x05\x05\ - \x04\x02\x13\x02\x12\x04\xc1\x04\x14\x16\n%\n\x04\x05\x04\x02\x14\x12\ - \x04\xc3\x04\x02!\x1a\x17\x20Macro\x20definition\x20only\n\n\r\n\x05\x05\ - \x04\x02\x14\x01\x12\x04\xc3\x04\x02\x1b\n\r\n\x05\x05\x04\x02\x14\x02\ - \x12\x04\xc3\x04\x1e\x20\n!\n\x04\x05\x04\x02\x15\x12\x04\xc6\x04\x02\ - \x16\x1a\x13\x20non-builtin\x20types\n\n\r\n\x05\x05\x04\x02\x15\x01\x12\ - \x04\xc6\x04\x02\x10\n\r\n\x05\x05\x04\x02\x15\x02\x12\x04\xc6\x04\x13\ - \x15\nK\n\x04\x05\x04\x02\x16\x12\x04\xc8\x04\x02\x1d\x1a=\x20builtin\ - \x20types\x20only,\x20such\x20as\x20`str`\x20for\x20Python\x20or\x20`int\ - `\x20in\x20Go\n\n\r\n\x05\x05\x04\x02\x16\x01\x12\x04\xc8\x04\x02\x17\n\ - \r\n\x05\x05\x04\x02\x16\x02\x12\x04\xc8\x04\x1a\x1c\n7\n\x04\x05\x04\ - \x02\x17\x12\x04\xcb\x04\x02\x1b\x1a)\x20Python\x20decorators,\x20c-like\ - \x20__attribute__\n\n\r\n\x05\x05\x04\x02\x17\x01\x12\x04\xcb\x04\x02\ - \x15\n\r\n\x05\x05\x04\x02\x17\x02\x12\x04\xcb\x04\x18\x1a\n\x14\n\x04\ - \x05\x04\x02\x18\x12\x04\xce\x04\x02\x13\x1a\x06\x20`\\b`\n\n\r\n\x05\ - \x05\x04\x02\x18\x01\x12\x04\xce\x04\x02\r\n\r\n\x05\x05\x04\x02\x18\x02\ - \x12\x04\xce\x04\x10\x12\n\x18\n\x04\x05\x04\x02\x19\x12\x04\xd0\x04\x02\ - \x15\x1a\n\x20`*`,\x20`+`\n\n\r\n\x05\x05\x04\x02\x19\x01\x12\x04\xd0\ - \x04\x02\x0f\n\r\n\x05\x05\x04\x02\x19\x02\x12\x04\xd0\x04\x12\x14\n\x13\ - \n\x04\x05\x04\x02\x1a\x12\x04\xd2\x04\x02\x15\x1a\x05\x20`.`\n\n\r\n\ - \x05\x05\x04\x02\x1a\x01\x12\x04\xd2\x04\x02\x0f\n\r\n\x05\x05\x04\x02\ - \x1a\x02\x12\x04\xd2\x04\x12\x14\n\"\n\x04\x05\x04\x02\x1b\x12\x04\xd4\ - \x04\x02\x16\x1a\x14\x20`(`,\x20`)`,\x20`[`,\x20`]`\n\n\r\n\x05\x05\x04\ - \x02\x1b\x01\x12\x04\xd4\x04\x02\x10\n\r\n\x05\x05\x04\x02\x1b\x02\x12\ - \x04\xd4\x04\x13\x15\n\x18\n\x04\x05\x04\x02\x1c\x12\x04\xd6\x04\x02\x11\ - \x1a\n\x20`|`,\x20`-`\n\n\r\n\x05\x05\x04\x02\x1c\x01\x12\x04\xd6\x04\ - \x02\x0b\n\r\n\x05\x05\x04\x02\x1c\x02\x12\x04\xd6\x04\x0e\x10\n0\n\x04\ - \x05\x04\x02\x1d\x12\x04\xd9\x04\x02\x15\x1a\"\x20Literal\x20strings:\ - \x20\"Hello,\x20world!\"\n\n\r\n\x05\x05\x04\x02\x1d\x01\x12\x04\xd9\x04\ - \x02\x0f\n\r\n\x05\x05\x04\x02\x1d\x02\x12\x04\xd9\x04\x12\x14\n-\n\x04\ - \x05\x04\x02\x1e\x12\x04\xdb\x04\x02\x1b\x1a\x1f\x20non-regex\x20escapes\ - :\x20\"\\t\",\x20\"\\n\"\n\n\r\n\x05\x05\x04\x02\x1e\x01\x12\x04\xdb\x04\ - \x02\x15\n\r\n\x05\x05\x04\x02\x1e\x02\x12\x04\xdb\x04\x18\x1a\n_\n\x04\ - \x05\x04\x02\x1f\x12\x04\xdd\x04\x02\x1c\x1aQ\x20datetimes\x20within\x20\ - strings,\x20special\x20words\x20within\x20a\x20string,\x20`{}`\x20in\x20\ - format\x20strings\n\n\r\n\x05\x05\x04\x02\x1f\x01\x12\x04\xdd\x04\x02\ - \x16\n\r\n\x05\x05\x04\x02\x1f\x02\x12\x04\xdd\x04\x19\x1b\nG\n\x04\x05\ - \x04\x02\x20\x12\x04\xdf\x04\x02\x18\x1a9\x20\"key\"\x20in\x20{\x20\"key\ - \":\x20\"value\"\x20},\x20useful\x20for\x20example\x20in\x20JSON\n\n\r\n\ - \x05\x05\x04\x02\x20\x01\x12\x04\xdf\x04\x02\x12\n\r\n\x05\x05\x04\x02\ - \x20\x02\x12\x04\xdf\x04\x15\x17\nV\n\x04\x05\x04\x02!\x12\x04\xe1\x04\ - \x02\x18\x1aH\x20'c'\x20or\x20similar,\x20in\x20languages\x20that\x20dif\ - ferentiate\x20strings\x20and\x20characters\n\n\r\n\x05\x05\x04\x02!\x01\ - \x12\x04\xe1\x04\x02\x12\n\r\n\x05\x05\x04\x02!\x02\x12\x04\xe1\x04\x15\ - \x17\n9\n\x04\x05\x04\x02\"\x12\x04\xe3\x04\x02\x16\x1a+\x20Literal\x20n\ - umbers,\x20both\x20floats\x20and\x20integers\n\n\r\n\x05\x05\x04\x02\"\ - \x01\x12\x04\xe3\x04\x02\x10\n\r\n\x05\x05\x04\x02\"\x02\x12\x04\xe3\x04\ - \x13\x15\n\x1f\n\x04\x05\x04\x02#\x12\x04\xe5\x04\x02\x16\x1a\x11\x20`tr\ - ue`,\x20`false`\n\n\r\n\x05\x05\x04\x02#\x01\x12\x04\xe5\x04\x02\x10\n\r\ - \n\x05\x05\x04\x02#\x02\x12\x04\xe5\x04\x13\x15\n&\n\x04\x05\x04\x02$\ - \x12\x04\xe8\x04\x02\x0b\x1a\x18\x20Used\x20for\x20XML-like\x20tags\n\n\ - \r\n\x05\x05\x04\x02$\x01\x12\x04\xe8\x04\x02\x05\n\r\n\x05\x05\x04\x02$\ - \x02\x12\x04\xe8\x04\x08\n\n/\n\x04\x05\x04\x02%\x12\x04\xea\x04\x02\x14\ - \x1a!\x20Attribute\x20name\x20in\x20XML-like\x20tags\n\n\r\n\x05\x05\x04\ - \x02%\x01\x12\x04\xea\x04\x02\x0e\n\r\n\x05\x05\x04\x02%\x02\x12\x04\xea\ - \x04\x11\x13\n,\n\x04\x05\x04\x02&\x12\x04\xec\x04\x02\x14\x1a\x1e\x20De\ - limiters\x20for\x20XML-like\x20tags\n\n\r\n\x05\x05\x04\x02&\x01\x12\x04\ - \xec\x04\x02\x0e\n\r\n\x05\x05\x04\x02&\x02\x12\x04\xec\x04\x11\x13\n\ - \xf9\x01\n\x02\x04\t\x12\x06\xf4\x04\0\xd5\x05\x01\x1a\xea\x01\x20Occurr\ - ence\x20associates\x20a\x20source\x20position\x20with\x20a\x20symbol\x20\ - and/or\x20highlighting\n\x20information.\n\n\x20If\x20possible,\x20index\ - ers\x20should\x20try\x20to\x20bundle\x20logically\x20related\x20informat\ - ion\n\x20across\x20occurrences\x20into\x20a\x20single\x20occurrence\x20t\ - o\x20reduce\x20payload\x20sizes.\n\n\x0b\n\x03\x04\t\x01\x12\x04\xf4\x04\ - \x08\x12\n\xe8\x08\n\x04\x04\t\x02\0\x12\x04\x8c\x05\x02\x1b\x1a\xd9\x08\ + \x04\xe0\x01\x19\x1a\n\x82\x01\n\x04\x04\x06\x02\x02\x12\x04\xe1\x01\x02\ + \x14\"t\x20NOTE:\x20If\x20you\x20add\x20new\x20fields\x20here,\x20make\ + \x20sure\x20to\x20update\x20the\x20prepareSlot()\n\x20function\x20respon\ + sible\x20for\x20parsing\x20symbols.\n\n\r\n\x05\x04\x06\x02\x02\x06\x12\ + \x04\xe1\x01\x02\x08\n\r\n\x05\x04\x06\x02\x02\x01\x12\x04\xe1\x01\t\x0f\ + \n\r\n\x05\x04\x06\x02\x02\x03\x12\x04\xe1\x01\x12\x13\n\x83\x01\n\x02\ + \x04\x07\x12\x06\xe8\x01\0\xb8\x03\x01\x1au\x20SymbolInformation\x20defi\ + nes\x20metadata\x20about\x20a\x20symbol,\x20such\x20as\x20the\x20symbol'\ + s\n\x20docstring\x20or\x20what\x20package\x20it's\x20defined\x20it.\n\n\ + \x0b\n\x03\x04\x07\x01\x12\x04\xe8\x01\x08\x19\n\xa0\x01\n\x04\x04\x07\ + \x02\0\x12\x04\xeb\x01\x02\x14\x1a\x91\x01\x20Identifier\x20of\x20this\ + \x20symbol,\x20which\x20can\x20be\x20referenced\x20from\x20`Occurence.sy\ + mbol`.\n\x20The\x20string\x20must\x20be\x20formatted\x20according\x20to\ + \x20the\x20grammar\x20in\x20`Symbol`.\n\n\r\n\x05\x04\x07\x02\0\x05\x12\ + \x04\xeb\x01\x02\x08\n\r\n\x05\x04\x07\x02\0\x01\x12\x04\xeb\x01\t\x0f\n\ + \r\n\x05\x04\x07\x02\0\x03\x12\x04\xeb\x01\x12\x13\n\xb4\x03\n\x04\x04\ + \x07\x02\x01\x12\x04\xf2\x01\x02$\x1a\xa5\x03\x20(optional,\x20but\x20st\ + rongly\x20recommended)\x20The\x20markdown-formatted\x20documentation\n\ + \x20for\x20this\x20symbol.\x20Use\x20`SymbolInformation.signature_docume\ + ntation`\x20to\n\x20document\x20the\x20method/class/type\x20signature\ + \x20of\x20this\x20symbol.\n\x20Due\x20to\x20historical\x20reasons,\x20in\ + dexers\x20may\x20include\x20signature\x20documentation\x20in\n\x20this\ + \x20field\x20by\x20rendering\x20markdown\x20code\x20blocks.\x20New\x20in\ + dexers\x20should\x20only\n\x20include\x20non-code\x20documentation\x20in\ + \x20this\x20field,\x20for\x20example\x20docstrings.\n\n\r\n\x05\x04\x07\ + \x02\x01\x04\x12\x04\xf2\x01\x02\n\n\r\n\x05\x04\x07\x02\x01\x05\x12\x04\ + \xf2\x01\x0b\x11\n\r\n\x05\x04\x07\x02\x01\x01\x12\x04\xf2\x01\x12\x1f\n\ + \r\n\x05\x04\x07\x02\x01\x03\x12\x04\xf2\x01\"#\n^\n\x04\x04\x07\x02\x02\ + \x12\x04\xf4\x01\x02*\x1aP\x20(optional)\x20Relationships\x20to\x20other\ + \x20symbols\x20(e.g.,\x20implements,\x20type\x20definition).\n\n\r\n\x05\ + \x04\x07\x02\x02\x04\x12\x04\xf4\x01\x02\n\n\r\n\x05\x04\x07\x02\x02\x06\ + \x12\x04\xf4\x01\x0b\x17\n\r\n\x05\x04\x07\x02\x02\x01\x12\x04\xf4\x01\ + \x18%\n\r\n\x05\x04\x07\x02\x02\x03\x12\x04\xf4\x01()\n\xa4\x01\n\x04\ + \x04\x07\x02\x03\x12\x04\xf8\x01\x02\x10\x1a\x95\x01\x20The\x20kind\x20o\ + f\x20this\x20symbol.\x20Use\x20this\x20field\x20instead\x20of\n\x20`Symb\ + olDescriptor.Suffix`\x20to\x20determine\x20whether\x20something\x20is,\ + \x20for\x20example,\x20a\n\x20class\x20or\x20a\x20method.\n\n\r\n\x05\ + \x04\x07\x02\x03\x06\x12\x04\xf8\x01\x02\x06\n\r\n\x05\x04\x07\x02\x03\ + \x01\x12\x04\xf8\x01\x07\x0b\n\r\n\x05\x04\x07\x02\x03\x03\x12\x04\xf8\ + \x01\x0e\x0f\n\xf5\x05\n\x04\x04\x07\x04\0\x12\x06\x87\x02\x02\x94\x03\ + \x03\x1a\xe4\x05\x20(optional)\x20Kind\x20represents\x20the\x20fine-grai\ + ned\x20category\x20of\x20a\x20symbol,\x20suitable\x20for\x20presenting\n\ + \x20information\x20about\x20the\x20symbol's\x20meaning\x20in\x20the\x20l\ + anguage.\n\n\x20For\x20example:\n\x20-\x20A\x20Java\x20method\x20would\ + \x20have\x20the\x20kind\x20`Method`\x20while\x20a\x20Go\x20function\x20w\ + ould\n\x20\x20\x20have\x20the\x20kind\x20`Function`,\x20even\x20if\x20th\ + e\x20symbols\x20for\x20these\x20use\x20the\x20same\n\x20\x20\x20syntax\ + \x20for\x20the\x20descriptor\x20`SymbolDescriptor.Suffix.Method`.\n\x20-\ + \x20A\x20Go\x20struct\x20has\x20the\x20symbol\x20kind\x20`Struct`\x20whi\ + le\x20a\x20Java\x20class\x20has\n\x20\x20\x20the\x20symbol\x20kind\x20`C\ + lass`\x20even\x20if\x20they\x20both\x20have\x20the\x20same\x20descriptor\ + :\n\x20\x20\x20`SymbolDescriptor.Suffix.Type`.\n\n\x20Since\x20Kind\x20i\ + s\x20more\x20fine-grained\x20than\x20Suffix:\n\x20-\x20If\x20two\x20symb\ + ols\x20have\x20the\x20same\x20Kind,\x20they\x20should\x20share\x20the\ + \x20same\x20Suffix.\n\x20-\x20If\x20two\x20symbols\x20have\x20different\ + \x20Suffixes,\x20they\x20should\x20have\x20different\x20Kinds.\n\n\r\n\ + \x05\x04\x07\x04\0\x01\x12\x04\x87\x02\x07\x0b\n\x0e\n\x06\x04\x07\x04\0\ + \x02\0\x12\x04\x88\x02\x06\x1a\n\x0f\n\x07\x04\x07\x04\0\x02\0\x01\x12\ + \x04\x88\x02\x06\x15\n\x0f\n\x07\x04\x07\x04\0\x02\0\x02\x12\x04\x88\x02\ + \x18\x19\nR\n\x06\x04\x07\x04\0\x02\x01\x12\x04\x8a\x02\x06\x1a\x1aB\x20\ + A\x20method\x20which\x20may\x20or\x20may\x20not\x20have\x20a\x20body.\ + \x20For\x20Java,\x20Kotlin\x20etc.\n\n\x0f\n\x07\x04\x07\x04\0\x02\x01\ + \x01\x12\x04\x8a\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x02\x01\x02\x12\ + \x04\x8a\x02\x17\x19\n*\n\x06\x04\x07\x04\0\x02\x02\x12\x04\x8c\x02\x06\ + \x14\x1a\x1a\x20For\x20Ruby's\x20attr_accessor\n\n\x0f\n\x07\x04\x07\x04\ + \0\x02\x02\x01\x12\x04\x8c\x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02\x02\ + \x02\x12\x04\x8c\x02\x11\x13\n\x0e\n\x06\x04\x07\x04\0\x02\x03\x12\x04\ + \x8d\x02\x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02\x03\x01\x12\x04\x8d\x02\ + \x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x03\x02\x12\x04\x8d\x02\x0e\x0f\n\ + \x1b\n\x06\x04\x07\x04\0\x02\x04\x12\x04\x8f\x02\x06\x14\x1a\x0b\x20For\ + \x20Alloy\n\n\x0f\n\x07\x04\x07\x04\0\x02\x04\x01\x12\x04\x8f\x02\x06\ + \x0f\n\x0f\n\x07\x04\x07\x04\0\x02\x04\x02\x12\x04\x8f\x02\x12\x13\n\x0e\ + \n\x06\x04\x07\x04\0\x02\x05\x12\x04\x90\x02\x06\x19\n\x0f\n\x07\x04\x07\ + \x04\0\x02\x05\x01\x12\x04\x90\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x02\ + \x05\x02\x12\x04\x90\x02\x17\x18\n\x19\n\x06\x04\x07\x04\0\x02\x06\x12\ + \x04\x92\x02\x06\x14\x1a\t\x20For\x20C++\n\n\x0f\n\x07\x04\x07\x04\0\x02\ + \x06\x01\x12\x04\x92\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02\x06\x02\ + \x12\x04\x92\x02\x12\x13\n\x1a\n\x06\x04\x07\x04\0\x02\x07\x12\x04\x94\ + \x02\x06\x10\x1a\n\x20For\x20Lean\n\n\x0f\n\x07\x04\x07\x04\0\x02\x07\ + \x01\x12\x04\x94\x02\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x07\x02\x12\ + \x04\x94\x02\x0e\x0f\n\x0e\n\x06\x04\x07\x04\0\x02\x08\x12\x04\x95\x02\ + \x06\x12\n\x0f\n\x07\x04\x07\x04\0\x02\x08\x01\x12\x04\x95\x02\x06\r\n\ + \x0f\n\x07\x04\x07\x04\0\x02\x08\x02\x12\x04\x95\x02\x10\x11\n\x0e\n\x06\ + \x04\x07\x04\0\x02\t\x12\x04\x96\x02\x06\x10\n\x0f\n\x07\x04\x07\x04\0\ + \x02\t\x01\x12\x04\x96\x02\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\t\x02\ + \x12\x04\x96\x02\x0e\x0f\n\x0e\n\x06\x04\x07\x04\0\x02\n\x12\x04\x97\x02\ + \x06\x13\n\x0f\n\x07\x04\x07\x04\0\x02\n\x01\x12\x04\x97\x02\x06\x0e\n\ + \x0f\n\x07\x04\x07\x04\0\x02\n\x02\x12\x04\x97\x02\x11\x12\n\x0e\n\x06\ + \x04\x07\x04\0\x02\x0b\x12\x04\x98\x02\x06\x16\n\x0f\n\x07\x04\x07\x04\0\ + \x02\x0b\x01\x12\x04\x98\x02\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02\x0b\ + \x02\x12\x04\x98\x02\x14\x15\n\x1e\n\x06\x04\x07\x04\0\x02\x0c\x12\x04\ + \x9a\x02\x06\x14\x1a\x0e\x20For\x20Solidity\n\n\x0f\n\x07\x04\x07\x04\0\ + \x02\x0c\x01\x12\x04\x9a\x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02\x0c\ + \x02\x12\x04\x9a\x02\x11\x13\n\x1d\n\x06\x04\x07\x04\0\x02\r\x12\x04\x9c\ + \x02\x06\x16\x1a\r\x20For\x20Haskell\n\n\x0f\n\x07\x04\x07\x04\0\x02\r\ + \x01\x12\x04\x9c\x02\x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02\r\x02\x12\x04\ + \x9c\x02\x13\x15\n\x1f\n\x06\x04\x07\x04\0\x02\x0e\x12\x04\x9e\x02\x06\ + \x14\x1a\x0f\x20For\x20C#\x20and\x20F#\n\n\x0f\n\x07\x04\x07\x04\0\x02\ + \x0e\x01\x12\x04\x9e\x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02\x0e\x02\ + \x12\x04\x9e\x02\x11\x13\n\x0e\n\x06\x04\x07\x04\0\x02\x0f\x12\x04\x9f\ + \x02\x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02\x0f\x01\x12\x04\x9f\x02\x06\n\ + \n\x0f\n\x07\x04\x07\x04\0\x02\x0f\x02\x12\x04\x9f\x02\r\x0f\n\x0e\n\x06\ + \x04\x07\x04\0\x02\x10\x12\x04\xa0\x02\x06\x16\n\x0f\n\x07\x04\x07\x04\0\ + \x02\x10\x01\x12\x04\xa0\x02\x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02\x10\ + \x02\x12\x04\xa0\x02\x13\x15\n\x0e\n\x06\x04\x07\x04\0\x02\x11\x12\x04\ + \xa1\x02\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02\x11\x01\x12\x04\xa1\x02\ + \x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x11\x02\x12\x04\xa1\x02\x0e\x10\n\ + \x0e\n\x06\x04\x07\x04\0\x02\x12\x12\x04\xa2\x02\x06\x11\n\x0f\n\x07\x04\ + \x07\x04\0\x02\x12\x01\x12\x04\xa2\x02\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\ + \x02\x12\x02\x12\x04\xa2\x02\x0e\x10\n\x1a\n\x06\x04\x07\x04\0\x02\x13\ + \x12\x04\xa4\x02\x06\x15\x1a\n\x20For\x20Dart\n\n\x0f\n\x07\x04\x07\x04\ + \0\x02\x13\x01\x12\x04\xa4\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02\x13\ + \x02\x12\x04\xa4\x02\x12\x14\n\x1b\n\x06\x04\x07\x04\0\x02\x14\x12\x04\ + \xa6\x02\x06\x10\x1a\x0b\x20For\x20Alloy\n\n\x0f\n\x07\x04\x07\x04\0\x02\ + \x14\x01\x12\x04\xa6\x02\x06\n\n\x0f\n\x07\x04\x07\x04\0\x02\x14\x02\x12\ + \x04\xa6\x02\r\x0f\n\x0e\n\x06\x04\x07\x04\0\x02\x15\x12\x04\xa7\x02\x06\ + \x11\n\x0f\n\x07\x04\x07\x04\0\x02\x15\x01\x12\x04\xa7\x02\x06\x0b\n\x0f\ + \n\x07\x04\x07\x04\0\x02\x15\x02\x12\x04\xa7\x02\x0e\x10\n\x0e\n\x06\x04\ + \x07\x04\0\x02\x16\x12\x04\xa8\x02\x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02\ + \x16\x01\x12\x04\xa8\x02\x06\n\n\x0f\n\x07\x04\x07\x04\0\x02\x16\x02\x12\ + \x04\xa8\x02\r\x0f\n\x0e\n\x06\x04\x07\x04\0\x02\x17\x12\x04\xa9\x02\x06\ + \x14\n\x0f\n\x07\x04\x07\x04\0\x02\x17\x01\x12\x04\xa9\x02\x06\x0e\n\x0f\ + \n\x07\x04\x07\x04\0\x02\x17\x02\x12\x04\xa9\x02\x11\x13\n;\n\x06\x04\ + \x07\x04\0\x02\x18\x12\x04\xab\x02\x06\x12\x1a+\x20For\x20'get'\x20in\ + \x20Swift,\x20'attr_reader'\x20in\x20Ruby\n\n\x0f\n\x07\x04\x07\x04\0\ + \x02\x18\x01\x12\x04\xab\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02\x18\ + \x02\x12\x04\xab\x02\x0f\x11\n\x1a\n\x06\x04\x07\x04\0\x02\x19\x12\x04\ + \xad\x02\x06\x13\x1a\n\x20For\x20Raku\n\n\x0f\n\x07\x04\x07\x04\0\x02\ + \x19\x01\x12\x04\xad\x02\x06\r\n\x0f\n\x07\x04\x07\x04\0\x02\x19\x02\x12\ + \x04\xad\x02\x10\x12\n)\n\x06\x04\x07\x04\0\x02\x1a\x12\x04\xaf\x02\x06\ + \x14\x1a\x19\x20For\x20Purescript\x20and\x20Lean\n\n\x0f\n\x07\x04\x07\ + \x04\0\x02\x1a\x01\x12\x04\xaf\x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02\ + \x1a\x02\x12\x04\xaf\x02\x11\x13\n\x0e\n\x06\x04\x07\x04\0\x02\x1b\x12\ + \x04\xb0\x02\x06\x15\n\x0f\n\x07\x04\x07\x04\0\x02\x1b\x01\x12\x04\xb0\ + \x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02\x1b\x02\x12\x04\xb0\x02\x12\ + \x14\n\x0e\n\x06\x04\x07\x04\0\x02\x1c\x12\x04\xb1\x02\x06\x0f\n\x0f\n\ + \x07\x04\x07\x04\0\x02\x1c\x01\x12\x04\xb1\x02\x06\t\n\x0f\n\x07\x04\x07\ + \x04\0\x02\x1c\x02\x12\x04\xb1\x02\x0c\x0e\n\x1c\n\x06\x04\x07\x04\0\x02\ + \x1d\x12\x04\xb3\x02\x06\x10\x1a\x0c\x20For\x20Racket\n\n\x0f\n\x07\x04\ + \x07\x04\0\x02\x1d\x01\x12\x04\xb3\x02\x06\n\n\x0f\n\x07\x04\x07\x04\0\ + \x02\x1d\x02\x12\x04\xb3\x02\r\x0f\n\x1a\n\x06\x04\x07\x04\0\x02\x1e\x12\ + \x04\xb5\x02\x06\x11\x1a\n\x20For\x20Lean\n\n\x0f\n\x07\x04\x07\x04\0\ + \x02\x1e\x01\x12\x04\xb5\x02\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x1e\ + \x02\x12\x04\xb5\x02\x0e\x10\n\x1e\n\x06\x04\x07\x04\0\x02\x1f\x12\x04\ + \xb7\x02\x06\x13\x1a\x0e\x20For\x20solidity\n\n\x0f\n\x07\x04\x07\x04\0\ + \x02\x1f\x01\x12\x04\xb7\x02\x06\r\n\x0f\n\x07\x04\x07\x04\0\x02\x1f\x02\ + \x12\x04\xb7\x02\x10\x12\n\x0e\n\x06\x04\x07\x04\0\x02\x20\x12\x04\xb8\ + \x02\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02\x20\x01\x12\x04\xb8\x02\x06\ + \x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x20\x02\x12\x04\xb8\x02\x0e\x10\n\x0e\ + \n\x06\x04\x07\x04\0\x02!\x12\x04\xb9\x02\x06\x12\n\x0f\n\x07\x04\x07\ + \x04\0\x02!\x01\x12\x04\xb9\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02!\ + \x02\x12\x04\xb9\x02\x0f\x11\n\x1a\n\x06\x04\x07\x04\0\x02\"\x12\x04\xbb\ + \x02\x06\x17\x1a\n\x20For\x20Ruby\n\n\x0f\n\x07\x04\x07\x04\0\x02\"\x01\ + \x12\x04\xbb\x02\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02\"\x02\x12\x04\xbb\ + \x02\x14\x16\n\x94\x01\n\x06\x04\x07\x04\0\x02#\x12\x04\xbe\x02\x06\x1a\ + \x1a\x83\x01\x20Analogous\x20to\x20'ThisParameter'\x20and\x20'SelfParame\ + ter',\x20but\x20for\x20languages\n\x20like\x20Go\x20where\x20the\x20rece\ + iver\x20doesn't\x20have\x20a\x20conventional\x20name.\n\n\x0f\n\x07\x04\ + \x07\x04\0\x02#\x01\x12\x04\xbe\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\ + \x02#\x02\x12\x04\xbe\x02\x17\x19\n8\n\x06\x04\x07\x04\0\x02$\x12\x04\ + \xc0\x02\x06\x1f\x1a(\x20Analogous\x20to\x20'AbstractMethod',\x20for\x20\ + Go.\n\n\x0f\n\x07\x04\x07\x04\0\x02$\x01\x12\x04\xc0\x02\x06\x19\n\x0f\n\ + \x07\x04\x07\x04\0\x02$\x02\x12\x04\xc0\x02\x1c\x1e\n\x1e\n\x06\x04\x07\ + \x04\0\x02%\x12\x04\xc2\x02\x06\x13\x1a\x0e\x20For\x20Protobuf\n\n\x0f\n\ + \x07\x04\x07\x04\0\x02%\x01\x12\x04\xc2\x02\x06\r\n\x0f\n\x07\x04\x07\ + \x04\0\x02%\x02\x12\x04\xc2\x02\x10\x12\n\x1a\n\x06\x04\x07\x04\0\x02&\ + \x12\x04\xc4\x02\x06\x11\x1a\n\x20For\x20Dart\n\n\x0f\n\x07\x04\x07\x04\ + \0\x02&\x01\x12\x04\xc4\x02\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02&\x02\ + \x12\x04\xc4\x02\x0e\x10\n\x1e\n\x06\x04\x07\x04\0\x02'\x12\x04\xc6\x02\ + \x06\x14\x1a\x0e\x20For\x20Solidity\n\n\x0f\n\x07\x04\x07\x04\0\x02'\x01\ + \x12\x04\xc6\x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02'\x02\x12\x04\xc6\ + \x02\x11\x13\n\x0e\n\x06\x04\x07\x04\0\x02(\x12\x04\xc7\x02\x06\x12\n\ + \x0f\n\x07\x04\x07\x04\0\x02(\x01\x12\x04\xc7\x02\x06\x0c\n\x0f\n\x07\ + \x04\x07\x04\0\x02(\x02\x12\x04\xc7\x02\x0f\x11\n\x0e\n\x06\x04\x07\x04\ + \0\x02)\x12\x04\xc8\x02\x06\x15\n\x0f\n\x07\x04\x07\x04\0\x02)\x01\x12\ + \x04\xc8\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02)\x02\x12\x04\xc8\x02\ + \x12\x14\n\x0e\n\x06\x04\x07\x04\0\x02*\x12\x04\xc9\x02\x06\x10\n\x0f\n\ + \x07\x04\x07\x04\0\x02*\x01\x12\x04\xc9\x02\x06\n\n\x0f\n\x07\x04\x07\ + \x04\0\x02*\x02\x12\x04\xc9\x02\r\x0f\n\x0e\n\x06\x04\x07\x04\0\x02+\x12\ + \x04\xca\x02\x06\x12\n\x0f\n\x07\x04\x07\x04\0\x02+\x01\x12\x04\xca\x02\ + \x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02+\x02\x12\x04\xca\x02\x0f\x11\n\ + \x0e\n\x06\x04\x07\x04\0\x02,\x12\x04\xcb\x02\x06\x12\n\x0f\n\x07\x04\ + \x07\x04\0\x02,\x01\x12\x04\xcb\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\ + \x02,\x02\x12\x04\xcb\x02\x0f\x11\n\x0e\n\x06\x04\x07\x04\0\x02-\x12\x04\ + \xcc\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x02-\x01\x12\x04\xcc\x02\x06\ + \x0e\n\x0f\n\x07\x04\x07\x04\0\x02-\x02\x12\x04\xcc\x02\x11\x13\n\x0e\n\ + \x06\x04\x07\x04\0\x02.\x12\x04\xcd\x02\x06\x13\n\x0f\n\x07\x04\x07\x04\ + \0\x02.\x01\x12\x04\xcd\x02\x06\r\n\x0f\n\x07\x04\x07\x04\0\x02.\x02\x12\ + \x04\xcd\x02\x10\x12\n\x0e\n\x06\x04\x07\x04\0\x02/\x12\x04\xce\x02\x06\ + \x19\n\x0f\n\x07\x04\x07\x04\0\x02/\x01\x12\x04\xce\x02\x06\x13\n\x0f\n\ + \x07\x04\x07\x04\0\x02/\x02\x12\x04\xce\x02\x16\x18\n\x0e\n\x06\x04\x07\ + \x04\0\x020\x12\x04\xcf\x02\x06\x15\n\x0f\n\x07\x04\x07\x04\0\x020\x01\ + \x12\x04\xcf\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x020\x02\x12\x04\xcf\ + \x02\x12\x14\n\x0e\n\x06\x04\x07\x04\0\x021\x12\x04\xd0\x02\x06\x1a\n\ + \x0f\n\x07\x04\x07\x04\0\x021\x01\x12\x04\xd0\x02\x06\x14\n\x0f\n\x07\ + \x04\x07\x04\0\x021\x02\x12\x04\xd0\x02\x17\x19\n/\n\x06\x04\x07\x04\0\ + \x022\x12\x04\xd2\x02\x06\x13\x1a\x1f\x20For\x20Haskell's\x20PatternSyno\ + nyms\n\n\x0f\n\x07\x04\x07\x04\0\x022\x01\x12\x04\xd2\x02\x06\r\n\x0f\n\ + \x07\x04\x07\x04\0\x022\x02\x12\x04\xd2\x02\x10\x12\n\x1b\n\x06\x04\x07\ + \x04\0\x023\x12\x04\xd4\x02\x06\x15\x1a\x0b\x20For\x20Alloy\n\n\x0f\n\ + \x07\x04\x07\x04\0\x023\x01\x12\x04\xd4\x02\x06\x0f\n\x0f\n\x07\x04\x07\ + \x04\0\x023\x02\x12\x04\xd4\x02\x12\x14\n\x0e\n\x06\x04\x07\x04\0\x024\ + \x12\x04\xd5\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x024\x01\x12\x04\xd5\ + \x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x024\x02\x12\x04\xd5\x02\x11\x13\ + \nQ\n\x06\x04\x07\x04\0\x025\x12\x04\xd7\x02\x06\x14\x1aA\x20Analogous\ + \x20to\x20'Trait'\x20and\x20'TypeClass',\x20for\x20Swift\x20and\x20Objec\ + tive-C\n\n\x0f\n\x07\x04\x07\x04\0\x025\x01\x12\x04\xd7\x02\x06\x0e\n\ + \x0f\n\x07\x04\x07\x04\0\x025\x02\x12\x04\xd7\x02\x11\x13\nK\n\x06\x04\ + \x07\x04\0\x026\x12\x04\xd9\x02\x06\x1a\x1a;\x20Analogous\x20to\x20'Abst\ + ractMethod',\x20for\x20Swift\x20and\x20Objective-C.\n\n\x0f\n\x07\x04\ + \x07\x04\0\x026\x01\x12\x04\xd9\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\ + \x026\x02\x12\x04\xd9\x02\x17\x19\n9\n\x06\x04\x07\x04\0\x027\x12\x04\ + \xdb\x02\x06\x1d\x1a)\x20Analogous\x20to\x20'AbstractMethod',\x20for\x20\ + C++.\n\n\x0f\n\x07\x04\x07\x04\0\x027\x01\x12\x04\xdb\x02\x06\x17\n\x0f\ + \n\x07\x04\x07\x04\0\x027\x02\x12\x04\xdb\x02\x1a\x1c\n\x1d\n\x06\x04\ + \x07\x04\0\x028\x12\x04\xdd\x02\x06\x17\x1a\r\x20For\x20Haskell\n\n\x0f\ + \n\x07\x04\x07\x04\0\x028\x01\x12\x04\xdd\x02\x06\x11\n\x0f\n\x07\x04\ + \x07\x04\0\x028\x02\x12\x04\xdd\x02\x14\x16\n4\n\x06\x04\x07\x04\0\x029\ + \x12\x04\xdf\x02\x06\x19\x1a$\x20'self'\x20in\x20Python,\x20Rust,\x20Swi\ + ft\x20etc.\n\n\x0f\n\x07\x04\x07\x04\0\x029\x01\x12\x04\xdf\x02\x06\x13\ + \n\x0f\n\x07\x04\x07\x04\0\x029\x02\x12\x04\xdf\x02\x16\x18\n;\n\x06\x04\ + \x07\x04\0\x02:\x12\x04\xe1\x02\x06\x12\x1a+\x20For\x20'set'\x20in\x20Sw\ + ift,\x20'attr_writer'\x20in\x20Ruby\n\n\x0f\n\x07\x04\x07\x04\0\x02:\x01\ + \x12\x04\xe1\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02:\x02\x12\x04\xe1\ + \x02\x0f\x11\n3\n\x06\x04\x07\x04\0\x02;\x12\x04\xe3\x02\x06\x15\x1a#\ + \x20For\x20Alloy,\x20analogous\x20to\x20'Struct'.\n\n\x0f\n\x07\x04\x07\ + \x04\0\x02;\x01\x12\x04\xe3\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02;\ + \x02\x12\x04\xe3\x02\x12\x14\n\x1a\n\x06\x04\x07\x04\0\x02<\x12\x04\xe5\ + \x02\x06\x1a\x1a\n\x20For\x20Ruby\n\n\x0f\n\x07\x04\x07\x04\0\x02<\x01\ + \x12\x04\xe5\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x02<\x02\x12\x04\xe5\ + \x02\x17\x19\n8\n\x06\x04\x07\x04\0\x02=\x12\x04\xe7\x02\x06\x1b\x1a(\ + \x20Analogous\x20to\x20'StaticMethod',\x20for\x20Ruby.\n\n\x0f\n\x07\x04\ + \x07\x04\0\x02=\x01\x12\x04\xe7\x02\x06\x15\n\x0f\n\x07\x04\x07\x04\0\ + \x02=\x02\x12\x04\xe7\x02\x18\x1a\n5\n\x06\x04\x07\x04\0\x02>\x12\x04\ + \xe9\x02\x06\x1c\x1a%\x20Analogous\x20to\x20'StaticField',\x20for\x20C++\ + \n\n\x0f\n\x07\x04\x07\x04\0\x02>\x01\x12\x04\xe9\x02\x06\x16\n\x0f\n\ + \x07\x04\x07\x04\0\x02>\x02\x12\x04\xe9\x02\x19\x1b\n\x18\n\x06\x04\x07\ + \x04\0\x02?\x12\x04\xeb\x02\x06\x17\x1a\x08\x20For\x20C#\n\n\x0f\n\x07\ + \x04\x07\x04\0\x02?\x01\x12\x04\xeb\x02\x06\x11\n\x0f\n\x07\x04\x07\x04\ + \0\x02?\x02\x12\x04\xeb\x02\x14\x16\n\x18\n\x06\x04\x07\x04\0\x02@\x12\ + \x04\xed\x02\x06\x17\x1a\x08\x20For\x20C#\n\n\x0f\n\x07\x04\x07\x04\0\ + \x02@\x01\x12\x04\xed\x02\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02@\x02\x12\ + \x04\xed\x02\x14\x16\n(\n\x06\x04\x07\x04\0\x02A\x12\x04\xef\x02\x06\x18\ + \x1a\x18\x20For\x20Java,\x20C#,\x20C++\x20etc.\n\n\x0f\n\x07\x04\x07\x04\ + \0\x02A\x01\x12\x04\xef\x02\x06\x12\n\x0f\n\x07\x04\x07\x04\0\x02A\x02\ + \x12\x04\xef\x02\x15\x17\n)\n\x06\x04\x07\x04\0\x02B\x12\x04\xf1\x02\x06\ + \x1a\x1a\x19\x20For\x20C#,\x20TypeScript\x20etc.\n\n\x0f\n\x07\x04\x07\ + \x04\0\x02B\x01\x12\x04\xf1\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x02B\ + \x02\x12\x04\xf1\x02\x17\x19\n\x1c\n\x06\x04\x07\x04\0\x02C\x12\x04\xf3\ + \x02\x06\x1a\x1a\x0c\x20For\x20C,\x20C++\n\n\x0f\n\x07\x04\x07\x04\0\x02\ + C\x01\x12\x04\xf3\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x02C\x02\x12\x04\ + \xf3\x02\x17\x19\n\x0e\n\x06\x04\x07\x04\0\x02D\x12\x04\xf4\x02\x06\x12\ + \n\x0f\n\x07\x04\x07\x04\0\x02D\x01\x12\x04\xf4\x02\x06\x0c\n\x0f\n\x07\ + \x04\x07\x04\0\x02D\x02\x12\x04\xf4\x02\x0f\x11\n\x0e\n\x06\x04\x07\x04\ + \0\x02E\x12\x04\xf5\x02\x06\x12\n\x0f\n\x07\x04\x07\x04\0\x02E\x01\x12\ + \x04\xf5\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02E\x02\x12\x04\xf5\x02\ + \x0f\x11\n\x1b\n\x06\x04\x07\x04\0\x02F\x12\x04\xf7\x02\x06\x15\x1a\x0b\ + \x20For\x20Swift\n\n\x0f\n\x07\x04\x07\x04\0\x02F\x01\x12\x04\xf7\x02\ + \x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02F\x02\x12\x04\xf7\x02\x12\x14\n\ + \x1a\n\x06\x04\x07\x04\0\x02G\x12\x04\xf9\x02\x06\x12\x1a\n\x20For\x20Le\ + an\n\n\x0f\n\x07\x04\x07\x04\0\x02G\x01\x12\x04\xf9\x02\x06\x0c\n\x0f\n\ + \x07\x04\x07\x04\0\x02G\x02\x12\x04\xf9\x02\x0f\x11\n\x1a\n\x06\x04\x07\ + \x04\0\x02H\x12\x04\xfb\x02\x06\x13\x1a\n\x20For\x20Lean\n\n\x0f\n\x07\ + \x04\x07\x04\0\x02H\x01\x12\x04\xfb\x02\x06\r\n\x0f\n\x07\x04\x07\x04\0\ + \x02H\x02\x12\x04\xfb\x02\x10\x12\nU\n\x06\x04\x07\x04\0\x02I\x12\x04\ + \xfe\x02\x06\x19\x1aE\x20Method\x20receiver\x20for\x20languages\n\x20'th\ + is'\x20in\x20JavaScript,\x20C++,\x20Java\x20etc.\n\n\x0f\n\x07\x04\x07\ + \x04\0\x02I\x01\x12\x04\xfe\x02\x06\x13\n\x0f\n\x07\x04\x07\x04\0\x02I\ + \x02\x12\x04\xfe\x02\x16\x18\nO\n\x06\x04\x07\x04\0\x02J\x12\x04\x80\x03\ + \x06\x11\x1a?\x20Analogous\x20to\x20'Protocol'\x20and\x20'TypeClass',\ + \x20for\x20Rust,\x20Scala\x20etc.\n\n\x0f\n\x07\x04\x07\x04\0\x02J\x01\ + \x12\x04\x80\x03\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02J\x02\x12\x04\x80\ + \x03\x0e\x10\nE\n\x06\x04\x07\x04\0\x02K\x12\x04\x82\x03\x06\x17\x1a5\ + \x20Analogous\x20to\x20'AbstractMethod',\x20for\x20Rust,\x20Scala\x20etc\ + .\n\n\x0f\n\x07\x04\x07\x04\0\x02K\x01\x12\x04\x82\x03\x06\x11\n\x0f\n\ + \x07\x04\x07\x04\0\x02K\x02\x12\x04\x82\x03\x14\x16\n\x89\x01\n\x06\x04\ + \x07\x04\0\x02L\x12\x04\x85\x03\x06\x10\x1ay\x20Data\x20type\x20definiti\ + on\x20for\x20languages\x20like\x20OCaml\x20which\x20use\x20`type`\n\x20r\ + ather\x20than\x20separate\x20keywords\x20like\x20`struct`\x20and\x20`enu\ + m`.\n\n\x0f\n\x07\x04\x07\x04\0\x02L\x01\x12\x04\x85\x03\x06\n\n\x0f\n\ + \x07\x04\x07\x04\0\x02L\x02\x12\x04\x85\x03\r\x0f\n\x0e\n\x06\x04\x07\ + \x04\0\x02M\x12\x04\x86\x03\x06\x15\n\x0f\n\x07\x04\x07\x04\0\x02M\x01\ + \x12\x04\x86\x03\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02M\x02\x12\x04\x86\ + \x03\x12\x14\nS\n\x06\x04\x07\x04\0\x02N\x12\x04\x88\x03\x06\x15\x1aC\ + \x20Analogous\x20to\x20'Trait'\x20and\x20'Protocol',\x20for\x20Haskell,\ + \x20Purescript\x20etc.\n\n\x0f\n\x07\x04\x07\x04\0\x02N\x01\x12\x04\x88\ + \x03\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02N\x02\x12\x04\x88\x03\x12\x14\ + \nM\n\x06\x04\x07\x04\0\x02O\x12\x04\x8a\x03\x06\x1b\x1a=\x20Analogous\ + \x20to\x20'AbstractMethod',\x20for\x20Haskell,\x20Purescript\x20etc.\n\n\ + \x0f\n\x07\x04\x07\x04\0\x02O\x01\x12\x04\x8a\x03\x06\x15\n\x0f\n\x07\ + \x04\x07\x04\0\x02O\x02\x12\x04\x8a\x03\x18\x1a\n\x1d\n\x06\x04\x07\x04\ + \0\x02P\x12\x04\x8c\x03\x06\x16\x1a\r\x20For\x20Haskell\n\n\x0f\n\x07\ + \x04\x07\x04\0\x02P\x01\x12\x04\x8c\x03\x06\x10\n\x0f\n\x07\x04\x07\x04\ + \0\x02P\x02\x12\x04\x8c\x03\x13\x15\n\x0e\n\x06\x04\x07\x04\0\x02Q\x12\ + \x04\x8d\x03\x06\x19\n\x0f\n\x07\x04\x07\x04\0\x02Q\x01\x12\x04\x8d\x03\ + \x06\x13\n\x0f\n\x07\x04\x07\x04\0\x02Q\x02\x12\x04\x8d\x03\x16\x18\n(\n\ + \x06\x04\x07\x04\0\x02R\x12\x04\x8f\x03\x06\x11\x1a\x18\x20For\x20C,\x20\ + C++,\x20Capn\x20Proto\n\n\x0f\n\x07\x04\x07\x04\0\x02R\x01\x12\x04\x8f\ + \x03\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02R\x02\x12\x04\x8f\x03\x0e\x10\ + \n\x0e\n\x06\x04\x07\x04\0\x02S\x12\x04\x90\x03\x06\x11\n\x0f\n\x07\x04\ + \x07\x04\0\x02S\x01\x12\x04\x90\x03\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\ + \x02S\x02\x12\x04\x90\x03\x0e\x10\n[\n\x06\x04\x07\x04\0\x02T\x12\x04\ + \x91\x03\x06\x14\"K\x20Next\x20=\x2086;\n\x20Feel\x20free\x20to\x20open\ + \x20a\x20PR\x20proposing\x20new\x20language-specific\x20kinds.\n\n\x0f\n\ + \x07\x04\x07\x04\0\x02T\x01\x12\x04\x91\x03\x06\x0e\n\x0f\n\x07\x04\x07\ + \x04\0\x02T\x02\x12\x04\x91\x03\x11\x13\n\xf3\x03\n\x04\x04\x07\x02\x04\ + \x12\x04\x9e\x03\x02\x1a\x1a\xe4\x03\x20(optional)\x20The\x20name\x20of\ + \x20this\x20symbol\x20as\x20it\x20should\x20be\x20displayed\x20to\x20the\ + \x20user.\n\x20For\x20example,\x20the\x20symbol\x20\"com/example/MyClass\ + #myMethod(+1).\"\x20should\x20have\x20the\n\x20display\x20name\x20\"myMe\ + thod\".\x20The\x20`symbol`\x20field\x20is\x20not\x20a\x20reliable\x20sou\ + rce\x20of\n\x20the\x20display\x20name\x20for\x20several\x20reasons:\n\n\ + \x20-\x20Local\x20symbols\x20don't\x20encode\x20the\x20name.\n\x20-\x20S\ + ome\x20languages\x20have\x20case-insensitive\x20names,\x20so\x20the\x20s\ + ymbol\x20is\x20all-lowercase.\n\x20-\x20The\x20symbol\x20may\x20encode\ + \x20names\x20with\x20special\x20characters\x20that\x20should\x20not\x20b\ + e\n\x20\x20\x20displayed\x20to\x20the\x20user.\n\n\r\n\x05\x04\x07\x02\ + \x04\x05\x12\x04\x9e\x03\x02\x08\n\r\n\x05\x04\x07\x02\x04\x01\x12\x04\ + \x9e\x03\t\x15\n\r\n\x05\x04\x07\x02\x04\x03\x12\x04\x9e\x03\x18\x19\n\ + \xc4\x03\n\x04\x04\x07\x02\x05\x12\x04\xa5\x03\x02'\x1a\xb5\x03\x20(opti\ + onal)\x20The\x20signature\x20of\x20this\x20symbol\x20as\x20it's\x20displ\ + ayed\x20in\x20API\n\x20documentation\x20or\x20in\x20hover\x20tooltips.\ + \x20For\x20example,\x20a\x20Java\x20method\x20that\x20adds\n\x20two\x20n\ + umbers\x20this\x20would\x20have\x20`Document.language\x20=\x20\"java\"`\ + \x20and\x20`Document.text\n\x20=\x20\"void\x20add(int\x20a,\x20int\x20b)\ + \".\x20The\x20`language`\x20and\x20`text`\x20fields\x20are\x20required\n\ + \x20while\x20other\x20fields\x20such\x20as\x20`Documentation.occurrences\ + `\x20can\x20be\x20optionally\n\x20included\x20to\x20support\x20hyperlink\ + ing\x20referenced\x20symbols\x20in\x20the\x20signature.\n\n\r\n\x05\x04\ + \x07\x02\x05\x06\x12\x04\xa5\x03\x02\n\n\r\n\x05\x04\x07\x02\x05\x01\x12\ + \x04\xa5\x03\x0b\"\n\r\n\x05\x04\x07\x02\x05\x03\x12\x04\xa5\x03%&\n\xc9\ + \x08\n\x04\x04\x07\x02\x06\x12\x04\xb7\x03\x02\x1e\x1a\xba\x08\x20(optio\ + nal)\x20The\x20enclosing\x20symbol\x20if\x20this\x20is\x20a\x20local\x20\ + symbol.\x20\x20For\x20non-local\n\x20symbols,\x20the\x20enclosing\x20sym\ + bol\x20should\x20be\x20parsed\x20from\x20the\x20`symbol`\x20field\n\x20u\ + sing\x20the\x20`Descriptor`\x20grammar.\n\n\x20The\x20primary\x20use-cas\ + e\x20for\x20this\x20field\x20is\x20to\x20allow\x20local\x20symbol\x20to\ + \x20be\x20displayed\n\x20in\x20a\x20symbol\x20hierarchy\x20for\x20API\ + \x20documentation.\x20It's\x20OK\x20to\x20leave\x20this\x20field\n\x20em\ + pty\x20for\x20local\x20variables\x20since\x20local\x20variables\x20usual\ + ly\x20don't\x20belong\x20in\x20API\n\x20documentation.\x20However,\x20in\ + \x20the\x20situation\x20that\x20you\x20wish\x20to\x20include\x20a\x20loc\ + al\n\x20symbol\x20in\x20the\x20hierarchy,\x20then\x20you\x20can\x20use\ + \x20`enclosing_symbol`\x20to\x20locate\x20the\n\x20\"parent\"\x20or\x20\ + \"owner\"\x20of\x20this\x20local\x20symbol.\x20For\x20example,\x20a\x20J\ + ava\x20indexer\x20may\n\x20choose\x20to\x20use\x20local\x20symbols\x20fo\ + r\x20private\x20class\x20fields\x20while\x20providing\x20an\n\x20`enclos\ + ing_symbol`\x20to\x20reference\x20the\x20enclosing\x20class\x20to\x20all\ + ow\x20the\x20field\x20to\n\x20be\x20part\x20of\x20the\x20class\x20docume\ + ntation\x20hierarchy.\x20From\x20the\x20perspective\x20of\x20an\n\x20aut\ + hor\x20of\x20an\x20indexer,\x20the\x20decision\x20to\x20use\x20a\x20loca\ + l\x20symbol\x20or\x20global\x20symbol\n\x20should\x20exclusively\x20be\ + \x20determined\x20whether\x20the\x20local\x20symbol\x20is\x20accessible\ + \n\x20outside\x20the\x20document,\x20not\x20by\x20the\x20capability\x20t\ + o\x20find\x20the\x20enclosing\n\x20symbol.\n\n\r\n\x05\x04\x07\x02\x06\ + \x05\x12\x04\xb7\x03\x02\x08\n\r\n\x05\x04\x07\x02\x06\x01\x12\x04\xb7\ + \x03\t\x19\n\r\n\x05\x04\x07\x02\x06\x03\x12\x04\xb7\x03\x1c\x1d\n\x0c\n\ + \x02\x04\x08\x12\x06\xbb\x03\0\xf3\x03\x01\n\x0b\n\x03\x04\x08\x01\x12\ + \x04\xbb\x03\x08\x14\n\x0c\n\x04\x04\x08\x02\0\x12\x04\xbc\x03\x02\x14\n\ + \r\n\x05\x04\x08\x02\0\x05\x12\x04\xbc\x03\x02\x08\n\r\n\x05\x04\x08\x02\ + \0\x01\x12\x04\xbc\x03\t\x0f\n\r\n\x05\x04\x08\x02\0\x03\x12\x04\xbc\x03\ + \x12\x13\n\xde\x08\n\x04\x04\x08\x02\x01\x12\x04\xd5\x03\x02\x18\x1a\xcf\ + \x08\x20When\x20resolving\x20\"Find\x20references\",\x20this\x20field\ + \x20documents\x20what\x20other\x20symbols\n\x20should\x20be\x20included\ + \x20together\x20with\x20this\x20symbol.\x20For\x20example,\x20consider\ + \x20the\n\x20following\x20TypeScript\x20code\x20that\x20defines\x20two\ + \x20symbols\x20`Animal#sound()`\x20and\n\x20`Dog#sound()`:\n\x20```ts\n\ + \x20interface\x20Animal\x20{\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20^^^^^^\x20definition\x20Animal#\n\x20\x20\x20sound():\x20string\n\ + \x20\x20\x20^^^^^\x20definition\x20Animal#sound()\n\x20}\n\x20class\x20D\ + og\x20implements\x20Animal\x20{\n\x20\x20\x20\x20\x20\x20\x20^^^\x20defi\ + nition\x20Dog#,\x20relationships\x20=\x20[{symbol:\x20\"Animal#\",\x20is\ + _implementation:\x20true}]\n\x20\x20\x20public\x20sound():\x20string\x20\ + {\x20return\x20\"woof\"\x20}\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^^\ + ^^^\x20definition\x20Dog#sound(),\x20references_symbols\x20=\x20Animal#s\ + ound(),\x20relationships\x20=\x20[{symbol:\x20\"Animal#sound()\",\x20is_\ + implementation:true,\x20is_reference:\x20true}]\n\x20}\n\x20const\x20ani\ + mal:\x20Animal\x20=\x20new\x20Dog()\n\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20^^^^^^\x20reference\x20Animal#\n\x20console.\ + log(animal.sound())\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20^^^^^\x20reference\x20Animal#sound()\n\ + \x20```\n\x20Doing\x20\"Find\x20references\"\x20on\x20the\x20symbol\x20`\ + Animal#sound()`\x20should\x20return\n\x20references\x20to\x20the\x20`Dog\ + #sound()`\x20method\x20as\x20well.\x20Vice-versa,\x20doing\x20\"Find\n\ + \x20references\"\x20on\x20the\x20`Dog#sound()`\x20method\x20should\x20in\ + clude\x20references\x20to\x20the\n\x20`Animal#sound()`\x20method\x20as\ + \x20well.\n\n\r\n\x05\x04\x08\x02\x01\x05\x12\x04\xd5\x03\x02\x06\n\r\n\ + \x05\x04\x08\x02\x01\x01\x12\x04\xd5\x03\x07\x13\n\r\n\x05\x04\x08\x02\ + \x01\x03\x12\x04\xd5\x03\x16\x17\n\xee\x03\n\x04\x04\x08\x02\x02\x12\x04\ + \xde\x03\x02\x1d\x1a\xdf\x03\x20Similar\x20to\x20`is_reference`\x20but\ + \x20for\x20\"Find\x20implementations\".\n\x20It's\x20common\x20for\x20`i\ + s_implementation`\x20and\x20`is_reference`\x20to\x20both\x20be\x20true\ + \x20but\n\x20it's\x20not\x20always\x20the\x20case.\n\x20In\x20the\x20Typ\ + eScript\x20example\x20above,\x20observe\x20that\x20`Dog#`\x20has\x20an\n\ + \x20`is_implementation`\x20relationship\x20with\x20`\"Animal#\"`\x20but\ + \x20not\x20`is_reference`.\n\x20This\x20is\x20because\x20\"Find\x20refer\ + ences\"\x20on\x20the\x20\"Animal#\"\x20symbol\x20should\x20not\x20return\ + \n\x20\"Dog#\".\x20We\x20only\x20want\x20\"Dog#\"\x20to\x20return\x20as\ + \x20a\x20result\x20for\x20\"Find\n\x20implementations\"\x20on\x20the\x20\ + \"Animal#\"\x20symbol.\n\n\r\n\x05\x04\x08\x02\x02\x05\x12\x04\xde\x03\ + \x02\x06\n\r\n\x05\x04\x08\x02\x02\x01\x12\x04\xde\x03\x07\x18\n\r\n\x05\ + \x04\x08\x02\x02\x03\x12\x04\xde\x03\x1b\x1c\nP\n\x04\x04\x08\x02\x03\ + \x12\x04\xe0\x03\x02\x1e\x1aB\x20Similar\x20to\x20`references_symbols`\ + \x20but\x20for\x20\"Go\x20to\x20type\x20definition\".\n\n\r\n\x05\x04\ + \x08\x02\x03\x05\x12\x04\xe0\x03\x02\x06\n\r\n\x05\x04\x08\x02\x03\x01\ + \x12\x04\xe0\x03\x07\x19\n\r\n\x05\x04\x08\x02\x03\x03\x12\x04\xe0\x03\ + \x1c\x1d\n\xa7\x07\n\x04\x04\x08\x02\x04\x12\x04\xf1\x03\x02\x19\x1a\xd5\ + \x06\x20Allows\x20overriding\x20the\x20behavior\x20of\x20\"Go\x20to\x20d\ + efinition\"\x20and\x20\"Find\x20references\"\n\x20for\x20symbols\x20whic\ + h\x20do\x20not\x20have\x20a\x20definition\x20of\x20their\x20own\x20or\ + \x20could\n\x20potentially\x20have\x20multiple\x20definitions.\n\n\x20Fo\ + r\x20example,\x20in\x20a\x20language\x20with\x20single\x20inheritance\ + \x20and\x20no\x20field\x20overriding,\n\x20inherited\x20fields\x20can\ + \x20reuse\x20the\x20same\x20symbol\x20as\x20the\x20ancestor\x20which\x20\ + declares\n\x20the\x20field.\x20In\x20such\x20a\x20situation,\x20is_defin\ + ition\x20is\x20not\x20needed.\n\n\x20On\x20the\x20other\x20hand,\x20in\ + \x20languages\x20with\x20single\x20inheritance\x20and\x20some\x20form\n\ + \x20of\x20mixins,\x20you\x20can\x20use\x20is_definition\x20to\x20relate\ + \x20the\x20symbol\x20to\x20the\n\x20matching\x20symbol\x20in\x20ancestor\ + \x20classes,\x20and\x20is_reference\x20to\x20relate\x20the\n\x20symbol\ + \x20to\x20the\x20matching\x20symbol\x20in\x20mixins.\n\n\x20NOTE:\x20At\ + \x20the\x20moment,\x20due\x20to\x20limitations\x20of\x20the\x20SCIP\x20t\ + o\x20LSIF\x20conversion,\n\x20only\x20global\x20symbols\x20in\x20an\x20i\ + ndex\x20are\x20allowed\x20to\x20use\x20is_definition.\n\x20The\x20relati\ + onship\x20may\x20not\x20get\x20recorded\x20if\x20either\x20symbol\x20is\ + \x20local.\n\"A\x20Update\x20registerInverseRelationships\x20on\x20addin\ + g\x20a\x20new\x20field\x20here.\n\n\r\n\x05\x04\x08\x02\x04\x05\x12\x04\ + \xf1\x03\x02\x06\n\r\n\x05\x04\x08\x02\x04\x01\x12\x04\xf1\x03\x07\x14\n\ + \r\n\x05\x04\x08\x02\x04\x03\x12\x04\xf1\x03\x17\x18\n\x88\x03\n\x02\x05\ + \x03\x12\x06\xfa\x03\0\x90\x04\x01\x1a\xf9\x02\x20SymbolRole\x20declares\ + \x20what\x20\"role\"\x20a\x20symbol\x20has\x20in\x20an\x20occurrence.\ + \x20A\x20role\x20is\n\x20encoded\x20as\x20a\x20bitset\x20where\x20each\ + \x20bit\x20represents\x20a\x20different\x20role.\x20For\x20example,\n\ + \x20to\x20determine\x20if\x20the\x20`Import`\x20role\x20is\x20set,\x20te\ + st\x20whether\x20the\x20second\x20bit\x20of\x20the\n\x20enum\x20value\ + \x20is\x20defined.\x20In\x20pseudocode,\x20this\x20can\x20be\x20implemen\ + ted\x20with\x20the\n\x20logic:\x20`const\x20isImportRole\x20=\x20(role.v\ + alue\x20&\x20SymbolRole.Import.value)\x20>\x200`.\n\n\x0b\n\x03\x05\x03\ + \x01\x12\x04\xfa\x03\x05\x0f\nv\n\x04\x05\x03\x02\0\x12\x04\xfd\x03\x02\ + \x1c\x1ah\x20This\x20case\x20is\x20not\x20meant\x20to\x20be\x20used;\x20\ + it\x20only\x20exists\x20to\x20avoid\x20an\x20error\n\x20from\x20the\x20P\ + rotobuf\x20code\x20generator.\n\n\r\n\x05\x05\x03\x02\0\x01\x12\x04\xfd\ + \x03\x02\x17\n\r\n\x05\x05\x03\x02\0\x02\x12\x04\xfd\x03\x1a\x1b\nT\n\ + \x04\x05\x03\x02\x01\x12\x04\xff\x03\x02\x13\x1aF\x20Is\x20the\x20symbol\ + \x20defined\x20here?\x20If\x20not,\x20then\x20this\x20is\x20a\x20symbol\ + \x20reference.\n\n\r\n\x05\x05\x03\x02\x01\x01\x12\x04\xff\x03\x02\x0c\n\ + \r\n\x05\x05\x03\x02\x01\x02\x12\x04\xff\x03\x0f\x12\n,\n\x04\x05\x03\ + \x02\x02\x12\x04\x81\x04\x02\x0f\x1a\x1e\x20Is\x20the\x20symbol\x20impor\ + ted\x20here?\n\n\r\n\x05\x05\x03\x02\x02\x01\x12\x04\x81\x04\x02\x08\n\r\ + \n\x05\x05\x03\x02\x02\x02\x12\x04\x81\x04\x0b\x0e\n+\n\x04\x05\x03\x02\ + \x03\x12\x04\x83\x04\x02\x14\x1a\x1d\x20Is\x20the\x20symbol\x20written\ + \x20here?\n\n\r\n\x05\x05\x03\x02\x03\x01\x12\x04\x83\x04\x02\r\n\r\n\ + \x05\x05\x03\x02\x03\x02\x12\x04\x83\x04\x10\x13\n(\n\x04\x05\x03\x02\ + \x04\x12\x04\x85\x04\x02\x13\x1a\x1a\x20Is\x20the\x20symbol\x20read\x20h\ + ere?\n\n\r\n\x05\x05\x03\x02\x04\x01\x12\x04\x85\x04\x02\x0c\n\r\n\x05\ + \x05\x03\x02\x04\x02\x12\x04\x85\x04\x0f\x12\n0\n\x04\x05\x03\x02\x05\ + \x12\x04\x87\x04\x02\x13\x1a\"\x20Is\x20the\x20symbol\x20in\x20generated\ + \x20code?\n\n\r\n\x05\x05\x03\x02\x05\x01\x12\x04\x87\x04\x02\x0b\n\r\n\ + \x05\x05\x03\x02\x05\x02\x12\x04\x87\x04\x0e\x12\n+\n\x04\x05\x03\x02\ + \x06\x12\x04\x89\x04\x02\x0e\x1a\x1d\x20Is\x20the\x20symbol\x20in\x20tes\ + t\x20code?\n\n\r\n\x05\x05\x03\x02\x06\x01\x12\x04\x89\x04\x02\x06\n\r\n\ + \x05\x05\x03\x02\x06\x02\x12\x04\x89\x04\t\r\n\xed\x01\n\x04\x05\x03\x02\ + \x07\x12\x04\x8f\x04\x02\x1b\x1a\xde\x01\x20Is\x20this\x20a\x20signature\ + \x20for\x20a\x20symbol\x20that\x20is\x20defined\x20elsewhere?\n\n\x20App\ + lies\x20to\x20forward\x20declarations\x20for\x20languages\x20like\x20C,\ + \x20C++\n\x20and\x20Objective-C,\x20as\x20well\x20as\x20`val`\x20declara\ + tions\x20in\x20interface\n\x20files\x20in\x20languages\x20like\x20SML\ + \x20and\x20OCaml.\n\n\r\n\x05\x05\x03\x02\x07\x01\x12\x04\x8f\x04\x02\ + \x13\n\r\n\x05\x05\x03\x02\x07\x02\x12\x04\x8f\x04\x16\x1a\n\x0c\n\x02\ + \x05\x04\x12\x06\x92\x04\0\xef\x04\x01\n\x0b\n\x03\x05\x04\x01\x12\x04\ + \x92\x04\x05\x0f\n\x0b\n\x03\x05\x04\x03\x12\x04\x93\x04\x02\x1c\n\x0c\n\ + \x04\x05\x04\x03\x02\x12\x04\x93\x04\x02\x1c\n\x0c\n\x04\x05\x04\x02\0\ + \x12\x04\x95\x04\x02\x1c\n\r\n\x05\x05\x04\x02\0\x01\x12\x04\x95\x04\x02\ + \x17\n\r\n\x05\x05\x04\x02\0\x02\x12\x04\x95\x04\x1a\x1b\n;\n\x04\x05\ + \x04\x02\x01\x12\x04\x98\x04\x02\x0e\x1a-\x20Comment,\x20including\x20co\ + mment\x20markers\x20and\x20text\n\n\r\n\x05\x05\x04\x02\x01\x01\x12\x04\ + \x98\x04\x02\t\n\r\n\x05\x05\x04\x02\x01\x02\x12\x04\x98\x04\x0c\r\n\x1b\ + \n\x04\x05\x04\x02\x02\x12\x04\x9b\x04\x02\x1b\x1a\r\x20`;`\x20`.`\x20`,\ + `\n\n\r\n\x05\x05\x04\x02\x02\x01\x12\x04\x9b\x04\x02\x16\n\r\n\x05\x05\ + \x04\x02\x02\x02\x12\x04\x9b\x04\x19\x1a\n2\n\x04\x05\x04\x02\x03\x12\ + \x04\x9d\x04\x02\x19\x1a$\x20(),\x20{},\x20[]\x20when\x20used\x20syntact\ + ically\n\n\r\n\x05\x05\x04\x02\x03\x01\x12\x04\x9d\x04\x02\x14\n\r\n\x05\ + \x05\x04\x02\x03\x02\x12\x04\x9d\x04\x17\x18\n5\n\x04\x05\x04\x02\x04\ + \x12\x04\xa0\x04\x02\x0e\x1a'\x20`if`,\x20`else`,\x20`return`,\x20`class\ + `,\x20etc.\n\n\r\n\x05\x05\x04\x02\x04\x01\x12\x04\xa0\x04\x02\t\n\r\n\ + \x05\x05\x04\x02\x04\x02\x12\x04\xa0\x04\x0c\r\n\x0c\n\x04\x05\x04\x02\ + \x05\x12\x04\xa1\x04\x02*\n\r\n\x05\x05\x04\x02\x05\x01\x12\x04\xa1\x04\ + \x02\x13\n\r\n\x05\x05\x04\x02\x05\x02\x12\x04\xa1\x04\x16\x17\n\r\n\x05\ + \x05\x04\x02\x05\x03\x12\x04\xa1\x04\x18)\n\x0e\n\x06\x05\x04\x02\x05\ + \x03\x01\x12\x04\xa1\x04\x19(\n\x1e\n\x04\x05\x04\x02\x06\x12\x04\xa4\ + \x04\x02\x19\x1a\x10\x20`+`,\x20`*`,\x20etc.\n\n\r\n\x05\x05\x04\x02\x06\ + \x01\x12\x04\xa4\x04\x02\x14\n\r\n\x05\x05\x04\x02\x06\x02\x12\x04\xa4\ + \x04\x17\x18\nX\n\x04\x05\x04\x02\x07\x12\x04\xa7\x04\x02\x11\x1aJ\x20no\ + n-specific\x20catch-all\x20for\x20any\x20identifier\x20not\x20better\x20\ + described\x20elsewhere\n\n\r\n\x05\x05\x04\x02\x07\x01\x12\x04\xa7\x04\ + \x02\x0c\n\r\n\x05\x05\x04\x02\x07\x02\x12\x04\xa7\x04\x0f\x10\nN\n\x04\ + \x05\x04\x02\x08\x12\x04\xa9\x04\x02\x18\x1a@\x20Identifiers\x20builtin\ + \x20to\x20the\x20language:\x20`min`,\x20`print`\x20in\x20Python.\n\n\r\n\ + \x05\x05\x04\x02\x08\x01\x12\x04\xa9\x04\x02\x13\n\r\n\x05\x05\x04\x02\ + \x08\x02\x12\x04\xa9\x04\x16\x17\n[\n\x04\x05\x04\x02\t\x12\x04\xab\x04\ + \x02\x15\x1aM\x20Identifiers\x20representing\x20`null`-like\x20values:\ + \x20`None`\x20in\x20Python,\x20`nil`\x20in\x20Go.\n\n\r\n\x05\x05\x04\ + \x02\t\x01\x12\x04\xab\x04\x02\x10\n\r\n\x05\x05\x04\x02\t\x02\x12\x04\ + \xab\x04\x13\x14\n.\n\x04\x05\x04\x02\n\x12\x04\xad\x04\x02\x19\x1a\x20\ + \x20`xyz`\x20in\x20`const\x20xyz\x20=\x20\"hello\"`\n\n\r\n\x05\x05\x04\ + \x02\n\x01\x12\x04\xad\x04\x02\x14\n\r\n\x05\x05\x04\x02\n\x02\x12\x04\ + \xad\x04\x17\x18\n'\n\x04\x05\x04\x02\x0b\x12\x04\xaf\x04\x02\x1f\x1a\ + \x19\x20`var\x20X\x20=\x20\"hello\"`\x20in\x20Go\n\n\r\n\x05\x05\x04\x02\ + \x0b\x01\x12\x04\xaf\x04\x02\x19\n\r\n\x05\x05\x04\x02\x0b\x02\x12\x04\ + \xaf\x04\x1c\x1e\n3\n\x04\x05\x04\x02\x0c\x12\x04\xb1\x04\x02\x1b\x1a%\ + \x20Parameter\x20definition\x20and\x20references\n\n\r\n\x05\x05\x04\x02\ + \x0c\x01\x12\x04\xb1\x04\x02\x15\n\r\n\x05\x05\x04\x02\x0c\x02\x12\x04\ + \xb1\x04\x18\x1a\nX\n\x04\x05\x04\x02\r\x12\x04\xb3\x04\x02\x17\x1aJ\x20\ + Identifiers\x20for\x20variable\x20definitions\x20and\x20references\x20wi\ + thin\x20a\x20local\x20scope\n\n\r\n\x05\x05\x04\x02\r\x01\x12\x04\xb3\ + \x04\x02\x11\n\r\n\x05\x05\x04\x02\r\x02\x12\x04\xb3\x04\x14\x16\nK\n\ + \x04\x05\x04\x02\x0e\x12\x04\xb5\x04\x02\x1a\x1a=\x20Identifiers\x20that\ + \x20shadow\x20other\x20identifiers\x20in\x20an\x20outer\x20scope\n\n\r\n\ + \x05\x05\x04\x02\x0e\x01\x12\x04\xb5\x04\x02\x14\n\r\n\x05\x05\x04\x02\ + \x0e\x02\x12\x04\xb5\x04\x17\x19\n\xcd\x01\n\x04\x05\x04\x02\x0f\x12\x04\ + \xba\x04\x02\x1b\x1a\xbe\x01\x20Identifier\x20representing\x20a\x20unit\ + \x20of\x20code\x20abstraction\x20and/or\x20namespacing.\n\n\x20NOTE:\x20\ + This\x20corresponds\x20to\x20a\x20package\x20in\x20Go\x20and\x20JVM\x20l\ + anguages,\n\x20and\x20a\x20module\x20in\x20languages\x20like\x20Python\ + \x20and\x20JavaScript.\n\n\r\n\x05\x05\x04\x02\x0f\x01\x12\x04\xba\x04\ + \x02\x15\n\r\n\x05\x05\x04\x02\x0f\x02\x12\x04\xba\x04\x18\x1a\n\x0c\n\ + \x04\x05\x04\x02\x10\x12\x04\xbb\x04\x02*\n\r\n\x05\x05\x04\x02\x10\x01\ + \x12\x04\xbb\x04\x02\x12\n\r\n\x05\x05\x04\x02\x10\x02\x12\x04\xbb\x04\ + \x15\x17\n\r\n\x05\x05\x04\x02\x10\x03\x12\x04\xbb\x04\x18)\n\x0e\n\x06\ + \x05\x04\x02\x10\x03\x01\x12\x04\xbb\x04\x19(\n4\n\x04\x05\x04\x02\x11\ + \x12\x04\xbe\x04\x02\x1a\x1a&\x20Function\x20references,\x20including\ + \x20calls\n\n\r\n\x05\x05\x04\x02\x11\x01\x12\x04\xbe\x04\x02\x14\n\r\n\ + \x05\x05\x04\x02\x11\x02\x12\x04\xbe\x04\x17\x19\n(\n\x04\x05\x04\x02\ + \x12\x12\x04\xc0\x04\x02$\x1a\x1a\x20Function\x20definition\x20only\n\n\ + \r\n\x05\x05\x04\x02\x12\x01\x12\x04\xc0\x04\x02\x1e\n\r\n\x05\x05\x04\ + \x02\x12\x02\x12\x04\xc0\x04!#\n7\n\x04\x05\x04\x02\x13\x12\x04\xc3\x04\ + \x02\x17\x1a)\x20Macro\x20references,\x20including\x20invocations\n\n\r\ + \n\x05\x05\x04\x02\x13\x01\x12\x04\xc3\x04\x02\x11\n\r\n\x05\x05\x04\x02\ + \x13\x02\x12\x04\xc3\x04\x14\x16\n%\n\x04\x05\x04\x02\x14\x12\x04\xc5\ + \x04\x02!\x1a\x17\x20Macro\x20definition\x20only\n\n\r\n\x05\x05\x04\x02\ + \x14\x01\x12\x04\xc5\x04\x02\x1b\n\r\n\x05\x05\x04\x02\x14\x02\x12\x04\ + \xc5\x04\x1e\x20\n!\n\x04\x05\x04\x02\x15\x12\x04\xc8\x04\x02\x16\x1a\ + \x13\x20non-builtin\x20types\n\n\r\n\x05\x05\x04\x02\x15\x01\x12\x04\xc8\ + \x04\x02\x10\n\r\n\x05\x05\x04\x02\x15\x02\x12\x04\xc8\x04\x13\x15\nK\n\ + \x04\x05\x04\x02\x16\x12\x04\xca\x04\x02\x1d\x1a=\x20builtin\x20types\ + \x20only,\x20such\x20as\x20`str`\x20for\x20Python\x20or\x20`int`\x20in\ + \x20Go\n\n\r\n\x05\x05\x04\x02\x16\x01\x12\x04\xca\x04\x02\x17\n\r\n\x05\ + \x05\x04\x02\x16\x02\x12\x04\xca\x04\x1a\x1c\n7\n\x04\x05\x04\x02\x17\ + \x12\x04\xcd\x04\x02\x1b\x1a)\x20Python\x20decorators,\x20c-like\x20__at\ + tribute__\n\n\r\n\x05\x05\x04\x02\x17\x01\x12\x04\xcd\x04\x02\x15\n\r\n\ + \x05\x05\x04\x02\x17\x02\x12\x04\xcd\x04\x18\x1a\n\x14\n\x04\x05\x04\x02\ + \x18\x12\x04\xd0\x04\x02\x13\x1a\x06\x20`\\b`\n\n\r\n\x05\x05\x04\x02\ + \x18\x01\x12\x04\xd0\x04\x02\r\n\r\n\x05\x05\x04\x02\x18\x02\x12\x04\xd0\ + \x04\x10\x12\n\x18\n\x04\x05\x04\x02\x19\x12\x04\xd2\x04\x02\x15\x1a\n\ + \x20`*`,\x20`+`\n\n\r\n\x05\x05\x04\x02\x19\x01\x12\x04\xd2\x04\x02\x0f\ + \n\r\n\x05\x05\x04\x02\x19\x02\x12\x04\xd2\x04\x12\x14\n\x13\n\x04\x05\ + \x04\x02\x1a\x12\x04\xd4\x04\x02\x15\x1a\x05\x20`.`\n\n\r\n\x05\x05\x04\ + \x02\x1a\x01\x12\x04\xd4\x04\x02\x0f\n\r\n\x05\x05\x04\x02\x1a\x02\x12\ + \x04\xd4\x04\x12\x14\n\"\n\x04\x05\x04\x02\x1b\x12\x04\xd6\x04\x02\x16\ + \x1a\x14\x20`(`,\x20`)`,\x20`[`,\x20`]`\n\n\r\n\x05\x05\x04\x02\x1b\x01\ + \x12\x04\xd6\x04\x02\x10\n\r\n\x05\x05\x04\x02\x1b\x02\x12\x04\xd6\x04\ + \x13\x15\n\x18\n\x04\x05\x04\x02\x1c\x12\x04\xd8\x04\x02\x11\x1a\n\x20`|\ + `,\x20`-`\n\n\r\n\x05\x05\x04\x02\x1c\x01\x12\x04\xd8\x04\x02\x0b\n\r\n\ + \x05\x05\x04\x02\x1c\x02\x12\x04\xd8\x04\x0e\x10\n0\n\x04\x05\x04\x02\ + \x1d\x12\x04\xdb\x04\x02\x15\x1a\"\x20Literal\x20strings:\x20\"Hello,\ + \x20world!\"\n\n\r\n\x05\x05\x04\x02\x1d\x01\x12\x04\xdb\x04\x02\x0f\n\r\ + \n\x05\x05\x04\x02\x1d\x02\x12\x04\xdb\x04\x12\x14\n-\n\x04\x05\x04\x02\ + \x1e\x12\x04\xdd\x04\x02\x1b\x1a\x1f\x20non-regex\x20escapes:\x20\"\\t\"\ + ,\x20\"\\n\"\n\n\r\n\x05\x05\x04\x02\x1e\x01\x12\x04\xdd\x04\x02\x15\n\r\ + \n\x05\x05\x04\x02\x1e\x02\x12\x04\xdd\x04\x18\x1a\n_\n\x04\x05\x04\x02\ + \x1f\x12\x04\xdf\x04\x02\x1c\x1aQ\x20datetimes\x20within\x20strings,\x20\ + special\x20words\x20within\x20a\x20string,\x20`{}`\x20in\x20format\x20st\ + rings\n\n\r\n\x05\x05\x04\x02\x1f\x01\x12\x04\xdf\x04\x02\x16\n\r\n\x05\ + \x05\x04\x02\x1f\x02\x12\x04\xdf\x04\x19\x1b\nG\n\x04\x05\x04\x02\x20\ + \x12\x04\xe1\x04\x02\x18\x1a9\x20\"key\"\x20in\x20{\x20\"key\":\x20\"val\ + ue\"\x20},\x20useful\x20for\x20example\x20in\x20JSON\n\n\r\n\x05\x05\x04\ + \x02\x20\x01\x12\x04\xe1\x04\x02\x12\n\r\n\x05\x05\x04\x02\x20\x02\x12\ + \x04\xe1\x04\x15\x17\nV\n\x04\x05\x04\x02!\x12\x04\xe3\x04\x02\x18\x1aH\ + \x20'c'\x20or\x20similar,\x20in\x20languages\x20that\x20differentiate\ + \x20strings\x20and\x20characters\n\n\r\n\x05\x05\x04\x02!\x01\x12\x04\ + \xe3\x04\x02\x12\n\r\n\x05\x05\x04\x02!\x02\x12\x04\xe3\x04\x15\x17\n9\n\ + \x04\x05\x04\x02\"\x12\x04\xe5\x04\x02\x16\x1a+\x20Literal\x20numbers,\ + \x20both\x20floats\x20and\x20integers\n\n\r\n\x05\x05\x04\x02\"\x01\x12\ + \x04\xe5\x04\x02\x10\n\r\n\x05\x05\x04\x02\"\x02\x12\x04\xe5\x04\x13\x15\ + \n\x1f\n\x04\x05\x04\x02#\x12\x04\xe7\x04\x02\x16\x1a\x11\x20`true`,\x20\ + `false`\n\n\r\n\x05\x05\x04\x02#\x01\x12\x04\xe7\x04\x02\x10\n\r\n\x05\ + \x05\x04\x02#\x02\x12\x04\xe7\x04\x13\x15\n&\n\x04\x05\x04\x02$\x12\x04\ + \xea\x04\x02\x0b\x1a\x18\x20Used\x20for\x20XML-like\x20tags\n\n\r\n\x05\ + \x05\x04\x02$\x01\x12\x04\xea\x04\x02\x05\n\r\n\x05\x05\x04\x02$\x02\x12\ + \x04\xea\x04\x08\n\n/\n\x04\x05\x04\x02%\x12\x04\xec\x04\x02\x14\x1a!\ + \x20Attribute\x20name\x20in\x20XML-like\x20tags\n\n\r\n\x05\x05\x04\x02%\ + \x01\x12\x04\xec\x04\x02\x0e\n\r\n\x05\x05\x04\x02%\x02\x12\x04\xec\x04\ + \x11\x13\n,\n\x04\x05\x04\x02&\x12\x04\xee\x04\x02\x14\x1a\x1e\x20Delimi\ + ters\x20for\x20XML-like\x20tags\n\n\r\n\x05\x05\x04\x02&\x01\x12\x04\xee\ + \x04\x02\x0e\n\r\n\x05\x05\x04\x02&\x02\x12\x04\xee\x04\x11\x13\n\xf9\ + \x01\n\x02\x04\t\x12\x06\xf6\x04\0\xd7\x05\x01\x1a\xea\x01\x20Occurrence\ + \x20associates\x20a\x20source\x20position\x20with\x20a\x20symbol\x20and/\ + or\x20highlighting\n\x20information.\n\n\x20If\x20possible,\x20indexers\ + \x20should\x20try\x20to\x20bundle\x20logically\x20related\x20information\ + \n\x20across\x20occurrences\x20into\x20a\x20single\x20occurrence\x20to\ + \x20reduce\x20payload\x20sizes.\n\n\x0b\n\x03\x04\t\x01\x12\x04\xf6\x04\ + \x08\x12\n\xe8\x08\n\x04\x04\t\x02\0\x12\x04\x8e\x05\x02\x1b\x1a\xd9\x08\ \x20Half-open\x20[start,\x20end)\x20range\x20of\x20this\x20occurrence.\ \x20Must\x20be\x20exactly\x20three\x20or\x20four\n\x20elements:\n\n\x20-\ \x20Four\x20elements:\x20`[startLine,\x20startCharacter,\x20endLine,\x20\ @@ -5591,21 +5594,21 @@ static file_descriptor_proto_data: &'static [u8] = b"\ ncoding\x20is\x20admittedly\x20more\x20embarrassing\x20to\n\x20work\x20w\ ith\x20in\x20some\x20programming\x20languages\x20but\x20we\x20hope\x20th\ e\x20performance\n\x20improvements\x20make\x20up\x20for\x20it.\n\n\r\n\ - \x05\x04\t\x02\0\x04\x12\x04\x8c\x05\x02\n\n\r\n\x05\x04\t\x02\0\x05\x12\ - \x04\x8c\x05\x0b\x10\n\r\n\x05\x04\t\x02\0\x01\x12\x04\x8c\x05\x11\x16\n\ - \r\n\x05\x04\t\x02\0\x03\x12\x04\x8c\x05\x19\x1a\n\x8a\x01\n\x04\x04\t\ - \x02\x01\x12\x04\x8f\x05\x02\x14\x1a|\x20(optional)\x20The\x20symbol\x20\ + \x05\x04\t\x02\0\x04\x12\x04\x8e\x05\x02\n\n\r\n\x05\x04\t\x02\0\x05\x12\ + \x04\x8e\x05\x0b\x10\n\r\n\x05\x04\t\x02\0\x01\x12\x04\x8e\x05\x11\x16\n\ + \r\n\x05\x04\t\x02\0\x03\x12\x04\x8e\x05\x19\x1a\n\x8a\x01\n\x04\x04\t\ + \x02\x01\x12\x04\x91\x05\x02\x14\x1a|\x20(optional)\x20The\x20symbol\x20\ that\x20appears\x20at\x20this\x20position.\x20See\n\x20`SymbolInformatio\ n.symbol`\x20for\x20how\x20to\x20format\x20symbols\x20as\x20strings.\n\n\ - \r\n\x05\x04\t\x02\x01\x05\x12\x04\x8f\x05\x02\x08\n\r\n\x05\x04\t\x02\ - \x01\x01\x12\x04\x8f\x05\t\x0f\n\r\n\x05\x04\t\x02\x01\x03\x12\x04\x8f\ - \x05\x12\x13\n\x97\x01\n\x04\x04\t\x02\x02\x12\x04\x92\x05\x02\x19\x1a\ + \r\n\x05\x04\t\x02\x01\x05\x12\x04\x91\x05\x02\x08\n\r\n\x05\x04\t\x02\ + \x01\x01\x12\x04\x91\x05\t\x0f\n\r\n\x05\x04\t\x02\x01\x03\x12\x04\x91\ + \x05\x12\x13\n\x97\x01\n\x04\x04\t\x02\x02\x12\x04\x94\x05\x02\x19\x1a\ \x88\x01\x20(optional)\x20Bitset\x20containing\x20`SymbolRole`s\x20in\ \x20this\x20occurrence.\n\x20See\x20`SymbolRole`'s\x20documentation\x20f\ or\x20how\x20to\x20read\x20and\x20write\x20this\x20field.\n\n\r\n\x05\ - \x04\t\x02\x02\x05\x12\x04\x92\x05\x02\x07\n\r\n\x05\x04\t\x02\x02\x01\ - \x12\x04\x92\x05\x08\x14\n\r\n\x05\x04\t\x02\x02\x03\x12\x04\x92\x05\x17\ - \x18\n\xf1\x03\n\x04\x04\t\x02\x03\x12\x04\x9b\x05\x02-\x1a\xe2\x03\x20(\ + \x04\t\x02\x02\x05\x12\x04\x94\x05\x02\x07\n\r\n\x05\x04\t\x02\x02\x01\ + \x12\x04\x94\x05\x08\x14\n\r\n\x05\x04\t\x02\x02\x03\x12\x04\x94\x05\x17\ + \x18\n\xf1\x03\n\x04\x04\t\x02\x03\x12\x04\x9d\x05\x02-\x1a\xe2\x03\x20(\ optional)\x20CommonMark-formatted\x20documentation\x20for\x20this\x20spe\ cific\x20range.\x20If\n\x20empty,\x20the\x20`Symbol.documentation`\x20fi\ eld\x20is\x20used\x20instead.\x20One\x20example\n\x20where\x20this\x20fi\ @@ -5616,19 +5619,19 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \n\x20This\x20field\x20can\x20also\x20be\x20used\x20for\x20dynamically\ \x20or\x20gradually\x20typed\x20languages,\n\x20which\x20commonly\x20all\ ow\x20for\x20type-changing\x20assignment.\n\n\r\n\x05\x04\t\x02\x03\x04\ - \x12\x04\x9b\x05\x02\n\n\r\n\x05\x04\t\x02\x03\x05\x12\x04\x9b\x05\x0b\ - \x11\n\r\n\x05\x04\t\x02\x03\x01\x12\x04\x9b\x05\x12(\n\r\n\x05\x04\t\ - \x02\x03\x03\x12\x04\x9b\x05+,\nX\n\x04\x04\t\x02\x04\x12\x04\x9d\x05\ + \x12\x04\x9d\x05\x02\n\n\r\n\x05\x04\t\x02\x03\x05\x12\x04\x9d\x05\x0b\ + \x11\n\r\n\x05\x04\t\x02\x03\x01\x12\x04\x9d\x05\x12(\n\r\n\x05\x04\t\ + \x02\x03\x03\x12\x04\x9d\x05+,\nX\n\x04\x04\t\x02\x04\x12\x04\x9f\x05\ \x02\x1d\x1aJ\x20(optional)\x20What\x20syntax\x20highlighting\x20class\ \x20should\x20be\x20used\x20for\x20this\x20range?\n\n\r\n\x05\x04\t\x02\ - \x04\x06\x12\x04\x9d\x05\x02\x0c\n\r\n\x05\x04\t\x02\x04\x01\x12\x04\x9d\ - \x05\r\x18\n\r\n\x05\x04\t\x02\x04\x03\x12\x04\x9d\x05\x1b\x1c\nW\n\x04\ - \x04\t\x02\x05\x12\x04\x9f\x05\x02&\x1aI\x20(optional)\x20Diagnostics\ + \x04\x06\x12\x04\x9f\x05\x02\x0c\n\r\n\x05\x04\t\x02\x04\x01\x12\x04\x9f\ + \x05\r\x18\n\r\n\x05\x04\t\x02\x04\x03\x12\x04\x9f\x05\x1b\x1c\nW\n\x04\ + \x04\t\x02\x05\x12\x04\xa1\x05\x02&\x1aI\x20(optional)\x20Diagnostics\ \x20that\x20have\x20been\x20reported\x20for\x20this\x20specific\x20range\ - .\n\n\r\n\x05\x04\t\x02\x05\x04\x12\x04\x9f\x05\x02\n\n\r\n\x05\x04\t\ - \x02\x05\x06\x12\x04\x9f\x05\x0b\x15\n\r\n\x05\x04\t\x02\x05\x01\x12\x04\ - \x9f\x05\x16!\n\r\n\x05\x04\t\x02\x05\x03\x12\x04\x9f\x05$%\n\xb7\x0e\n\ - \x04\x04\t\x02\x06\x12\x04\xd4\x05\x02%\x1a\xa8\x0e\x20(optional)\x20Usi\ + .\n\n\r\n\x05\x04\t\x02\x05\x04\x12\x04\xa1\x05\x02\n\n\r\n\x05\x04\t\ + \x02\x05\x06\x12\x04\xa1\x05\x0b\x15\n\r\n\x05\x04\t\x02\x05\x01\x12\x04\ + \xa1\x05\x16!\n\r\n\x05\x04\t\x02\x05\x03\x12\x04\xa1\x05$%\n\xb7\x0e\n\ + \x04\x04\t\x02\x06\x12\x04\xd6\x05\x02%\x1a\xa8\x0e\x20(optional)\x20Usi\ ng\x20the\x20same\x20encoding\x20as\x20the\x20sibling\x20`range`\x20fiel\ d,\x20half-open\n\x20source\x20range\x20of\x20the\x20nearest\x20non-triv\ ial\x20enclosing\x20AST\x20node.\x20This\x20range\x20must\n\x20enclose\ @@ -5675,55 +5678,55 @@ static file_descriptor_proto_data: &'static [u8] = b"\ nclosing_range\n\x20const\x20b\x20=\x20a.b(41).f(42).g(43)\n\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^\x20ran\ ge\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^^^^^^^^^^^^^\x20enclosi\ - ng_range\n\x20```\n\n\r\n\x05\x04\t\x02\x06\x04\x12\x04\xd4\x05\x02\n\n\ - \r\n\x05\x04\t\x02\x06\x05\x12\x04\xd4\x05\x0b\x10\n\r\n\x05\x04\t\x02\ - \x06\x01\x12\x04\xd4\x05\x11\x20\n\r\n\x05\x04\t\x02\x06\x03\x12\x04\xd4\ - \x05#$\nw\n\x02\x04\n\x12\x06\xd9\x05\0\xe4\x05\x01\x1ai\x20Represents\ + ng_range\n\x20```\n\n\r\n\x05\x04\t\x02\x06\x04\x12\x04\xd6\x05\x02\n\n\ + \r\n\x05\x04\t\x02\x06\x05\x12\x04\xd6\x05\x0b\x10\n\r\n\x05\x04\t\x02\ + \x06\x01\x12\x04\xd6\x05\x11\x20\n\r\n\x05\x04\t\x02\x06\x03\x12\x04\xd6\ + \x05#$\nw\n\x02\x04\n\x12\x06\xdb\x05\0\xe6\x05\x01\x1ai\x20Represents\ \x20a\x20diagnostic,\x20such\x20as\x20a\x20compiler\x20error\x20or\x20wa\ rning,\x20which\x20should\x20be\n\x20reported\x20for\x20a\x20document.\n\ - \n\x0b\n\x03\x04\n\x01\x12\x04\xd9\x05\x08\x12\nW\n\x04\x04\n\x02\0\x12\ - \x04\xdb\x05\x02\x18\x1aI\x20Should\x20this\x20diagnostic\x20be\x20repor\ + \n\x0b\n\x03\x04\n\x01\x12\x04\xdb\x05\x08\x12\nW\n\x04\x04\n\x02\0\x12\ + \x04\xdd\x05\x02\x18\x1aI\x20Should\x20this\x20diagnostic\x20be\x20repor\ ted\x20as\x20an\x20error,\x20warning,\x20info,\x20or\x20hint?\n\n\r\n\ - \x05\x04\n\x02\0\x06\x12\x04\xdb\x05\x02\n\n\r\n\x05\x04\n\x02\0\x01\x12\ - \x04\xdb\x05\x0b\x13\n\r\n\x05\x04\n\x02\0\x03\x12\x04\xdb\x05\x16\x17\n\ - ]\n\x04\x04\n\x02\x01\x12\x04\xdd\x05\x02\x12\x1aO\x20(optional)\x20Code\ + \x05\x04\n\x02\0\x06\x12\x04\xdd\x05\x02\n\n\r\n\x05\x04\n\x02\0\x01\x12\ + \x04\xdd\x05\x0b\x13\n\r\n\x05\x04\n\x02\0\x03\x12\x04\xdd\x05\x16\x17\n\ + ]\n\x04\x04\n\x02\x01\x12\x04\xdf\x05\x02\x12\x1aO\x20(optional)\x20Code\ \x20of\x20this\x20diagnostic,\x20which\x20might\x20appear\x20in\x20the\ - \x20user\x20interface.\n\n\r\n\x05\x04\n\x02\x01\x05\x12\x04\xdd\x05\x02\ - \x08\n\r\n\x05\x04\n\x02\x01\x01\x12\x04\xdd\x05\t\r\n\r\n\x05\x04\n\x02\ - \x01\x03\x12\x04\xdd\x05\x10\x11\n+\n\x04\x04\n\x02\x02\x12\x04\xdf\x05\ + \x20user\x20interface.\n\n\r\n\x05\x04\n\x02\x01\x05\x12\x04\xdf\x05\x02\ + \x08\n\r\n\x05\x04\n\x02\x01\x01\x12\x04\xdf\x05\t\r\n\r\n\x05\x04\n\x02\ + \x01\x03\x12\x04\xdf\x05\x10\x11\n+\n\x04\x04\n\x02\x02\x12\x04\xe1\x05\ \x02\x15\x1a\x1d\x20Message\x20of\x20this\x20diagnostic.\n\n\r\n\x05\x04\ - \n\x02\x02\x05\x12\x04\xdf\x05\x02\x08\n\r\n\x05\x04\n\x02\x02\x01\x12\ - \x04\xdf\x05\t\x10\n\r\n\x05\x04\n\x02\x02\x03\x12\x04\xdf\x05\x13\x14\n\ - ~\n\x04\x04\n\x02\x03\x12\x04\xe2\x05\x02\x14\x1ap\x20(optional)\x20Huma\ + \n\x02\x02\x05\x12\x04\xe1\x05\x02\x08\n\r\n\x05\x04\n\x02\x02\x01\x12\ + \x04\xe1\x05\t\x10\n\r\n\x05\x04\n\x02\x02\x03\x12\x04\xe1\x05\x13\x14\n\ + ~\n\x04\x04\n\x02\x03\x12\x04\xe4\x05\x02\x14\x1ap\x20(optional)\x20Huma\ n-readable\x20string\x20describing\x20the\x20source\x20of\x20this\x20dia\ gnostic,\x20e.g.\n\x20'typescript'\x20or\x20'super\x20lint'.\n\n\r\n\x05\ - \x04\n\x02\x03\x05\x12\x04\xe2\x05\x02\x08\n\r\n\x05\x04\n\x02\x03\x01\ - \x12\x04\xe2\x05\t\x0f\n\r\n\x05\x04\n\x02\x03\x03\x12\x04\xe2\x05\x12\ - \x13\n\x0c\n\x04\x04\n\x02\x04\x12\x04\xe3\x05\x02\"\n\r\n\x05\x04\n\x02\ - \x04\x04\x12\x04\xe3\x05\x02\n\n\r\n\x05\x04\n\x02\x04\x06\x12\x04\xe3\ - \x05\x0b\x18\n\r\n\x05\x04\n\x02\x04\x01\x12\x04\xe3\x05\x19\x1d\n\r\n\ - \x05\x04\n\x02\x04\x03\x12\x04\xe3\x05\x20!\n\x0c\n\x02\x05\x05\x12\x06\ - \xe6\x05\0\xec\x05\x01\n\x0b\n\x03\x05\x05\x01\x12\x04\xe6\x05\x05\r\n\ - \x0c\n\x04\x05\x05\x02\0\x12\x04\xe7\x05\x02\x1a\n\r\n\x05\x05\x05\x02\0\ - \x01\x12\x04\xe7\x05\x02\x15\n\r\n\x05\x05\x05\x02\0\x02\x12\x04\xe7\x05\ - \x18\x19\n\x0c\n\x04\x05\x05\x02\x01\x12\x04\xe8\x05\x02\x0c\n\r\n\x05\ - \x05\x05\x02\x01\x01\x12\x04\xe8\x05\x02\x07\n\r\n\x05\x05\x05\x02\x01\ - \x02\x12\x04\xe8\x05\n\x0b\n\x0c\n\x04\x05\x05\x02\x02\x12\x04\xe9\x05\ - \x02\x0e\n\r\n\x05\x05\x05\x02\x02\x01\x12\x04\xe9\x05\x02\t\n\r\n\x05\ - \x05\x05\x02\x02\x02\x12\x04\xe9\x05\x0c\r\n\x0c\n\x04\x05\x05\x02\x03\ - \x12\x04\xea\x05\x02\x12\n\r\n\x05\x05\x05\x02\x03\x01\x12\x04\xea\x05\ - \x02\r\n\r\n\x05\x05\x05\x02\x03\x02\x12\x04\xea\x05\x10\x11\n\x0c\n\x04\ - \x05\x05\x02\x04\x12\x04\xeb\x05\x02\x0b\n\r\n\x05\x05\x05\x02\x04\x01\ - \x12\x04\xeb\x05\x02\x06\n\r\n\x05\x05\x05\x02\x04\x02\x12\x04\xeb\x05\t\ - \n\n\x0c\n\x02\x05\x06\x12\x06\xee\x05\0\xf2\x05\x01\n\x0b\n\x03\x05\x06\ - \x01\x12\x04\xee\x05\x05\x12\n\x0c\n\x04\x05\x06\x02\0\x12\x04\xef\x05\ - \x02\x1f\n\r\n\x05\x05\x06\x02\0\x01\x12\x04\xef\x05\x02\x1a\n\r\n\x05\ - \x05\x06\x02\0\x02\x12\x04\xef\x05\x1d\x1e\n\x0c\n\x04\x05\x06\x02\x01\ - \x12\x04\xf0\x05\x02\x12\n\r\n\x05\x05\x06\x02\x01\x01\x12\x04\xf0\x05\ - \x02\r\n\r\n\x05\x05\x06\x02\x01\x02\x12\x04\xf0\x05\x10\x11\n\x0c\n\x04\ - \x05\x06\x02\x02\x12\x04\xf1\x05\x02\x11\n\r\n\x05\x05\x06\x02\x02\x01\ - \x12\x04\xf1\x05\x02\x0c\n\r\n\x05\x05\x06\x02\x02\x02\x12\x04\xf1\x05\ - \x0f\x10\n\xd0\x03\n\x02\x05\x07\x12\x06\xfa\x05\0\xf0\x06\x01\x1a\xc1\ + \x04\n\x02\x03\x05\x12\x04\xe4\x05\x02\x08\n\r\n\x05\x04\n\x02\x03\x01\ + \x12\x04\xe4\x05\t\x0f\n\r\n\x05\x04\n\x02\x03\x03\x12\x04\xe4\x05\x12\ + \x13\n\x0c\n\x04\x04\n\x02\x04\x12\x04\xe5\x05\x02\"\n\r\n\x05\x04\n\x02\ + \x04\x04\x12\x04\xe5\x05\x02\n\n\r\n\x05\x04\n\x02\x04\x06\x12\x04\xe5\ + \x05\x0b\x18\n\r\n\x05\x04\n\x02\x04\x01\x12\x04\xe5\x05\x19\x1d\n\r\n\ + \x05\x04\n\x02\x04\x03\x12\x04\xe5\x05\x20!\n\x0c\n\x02\x05\x05\x12\x06\ + \xe8\x05\0\xee\x05\x01\n\x0b\n\x03\x05\x05\x01\x12\x04\xe8\x05\x05\r\n\ + \x0c\n\x04\x05\x05\x02\0\x12\x04\xe9\x05\x02\x1a\n\r\n\x05\x05\x05\x02\0\ + \x01\x12\x04\xe9\x05\x02\x15\n\r\n\x05\x05\x05\x02\0\x02\x12\x04\xe9\x05\ + \x18\x19\n\x0c\n\x04\x05\x05\x02\x01\x12\x04\xea\x05\x02\x0c\n\r\n\x05\ + \x05\x05\x02\x01\x01\x12\x04\xea\x05\x02\x07\n\r\n\x05\x05\x05\x02\x01\ + \x02\x12\x04\xea\x05\n\x0b\n\x0c\n\x04\x05\x05\x02\x02\x12\x04\xeb\x05\ + \x02\x0e\n\r\n\x05\x05\x05\x02\x02\x01\x12\x04\xeb\x05\x02\t\n\r\n\x05\ + \x05\x05\x02\x02\x02\x12\x04\xeb\x05\x0c\r\n\x0c\n\x04\x05\x05\x02\x03\ + \x12\x04\xec\x05\x02\x12\n\r\n\x05\x05\x05\x02\x03\x01\x12\x04\xec\x05\ + \x02\r\n\r\n\x05\x05\x05\x02\x03\x02\x12\x04\xec\x05\x10\x11\n\x0c\n\x04\ + \x05\x05\x02\x04\x12\x04\xed\x05\x02\x0b\n\r\n\x05\x05\x05\x02\x04\x01\ + \x12\x04\xed\x05\x02\x06\n\r\n\x05\x05\x05\x02\x04\x02\x12\x04\xed\x05\t\ + \n\n\x0c\n\x02\x05\x06\x12\x06\xf0\x05\0\xf4\x05\x01\n\x0b\n\x03\x05\x06\ + \x01\x12\x04\xf0\x05\x05\x12\n\x0c\n\x04\x05\x06\x02\0\x12\x04\xf1\x05\ + \x02\x1f\n\r\n\x05\x05\x06\x02\0\x01\x12\x04\xf1\x05\x02\x1a\n\r\n\x05\ + \x05\x06\x02\0\x02\x12\x04\xf1\x05\x1d\x1e\n\x0c\n\x04\x05\x06\x02\x01\ + \x12\x04\xf2\x05\x02\x12\n\r\n\x05\x05\x06\x02\x01\x01\x12\x04\xf2\x05\ + \x02\r\n\r\n\x05\x05\x06\x02\x01\x02\x12\x04\xf2\x05\x10\x11\n\x0c\n\x04\ + \x05\x06\x02\x02\x12\x04\xf3\x05\x02\x11\n\r\n\x05\x05\x06\x02\x02\x01\ + \x12\x04\xf3\x05\x02\x0c\n\r\n\x05\x05\x06\x02\x02\x02\x12\x04\xf3\x05\ + \x0f\x10\n\xd0\x03\n\x02\x05\x07\x12\x06\xfc\x05\0\xf2\x06\x01\x1a\xc1\ \x03\x20Language\x20standardises\x20names\x20of\x20common\x20programming\ \x20languages\x20that\x20can\x20be\x20used\n\x20for\x20the\x20`Document.\ language`\x20field.\x20The\x20primary\x20purpose\x20of\x20this\x20enum\ @@ -5733,245 +5736,245 @@ static file_descriptor_proto_data: &'static [u8] = b"\ uage\x20uses\x20the\x20name\n\x20\"CPP\"\x20in\x20this\x20enum\x20and\ \x20other\x20names\x20such\x20as\x20\"cpp\"\x20are\x20incompatible.\n\ \x20Feel\x20free\x20to\x20send\x20a\x20pull-request\x20to\x20add\x20miss\ - ing\x20programming\x20languages.\n\n\x0b\n\x03\x05\x07\x01\x12\x04\xfa\ - \x05\x05\r\n\x0c\n\x04\x05\x07\x02\0\x12\x04\xfb\x05\x02\x1a\n\r\n\x05\ - \x05\x07\x02\0\x01\x12\x04\xfb\x05\x02\x15\n\r\n\x05\x05\x07\x02\0\x02\ - \x12\x04\xfb\x05\x18\x19\n\x0c\n\x04\x05\x07\x02\x01\x12\x04\xfc\x05\x02\ - \x0c\n\r\n\x05\x05\x07\x02\x01\x01\x12\x04\xfc\x05\x02\x06\n\r\n\x05\x05\ - \x07\x02\x01\x02\x12\x04\xfc\x05\t\x0b\n\x0c\n\x04\x05\x07\x02\x02\x12\ - \x04\xfd\x05\x02\x0c\n\r\n\x05\x05\x07\x02\x02\x01\x12\x04\xfd\x05\x02\ - \x06\n\r\n\x05\x05\x07\x02\x02\x02\x12\x04\xfd\x05\t\x0b\n\x0c\n\x04\x05\ - \x07\x02\x03\x12\x04\xfe\x05\x02\x0b\n\r\n\x05\x05\x07\x02\x03\x01\x12\ - \x04\xfe\x05\x02\x05\n\r\n\x05\x05\x07\x02\x03\x02\x12\x04\xfe\x05\x08\n\ - \n\x0c\n\x04\x05\x07\x02\x04\x12\x04\xff\x05\x02\x0b\n\r\n\x05\x05\x07\ - \x02\x04\x01\x12\x04\xff\x05\x02\x05\n\r\n\x05\x05\x07\x02\x04\x02\x12\ - \x04\xff\x05\x08\n\n\x0c\n\x04\x05\x07\x02\x05\x12\x04\x80\x06\x02\x0c\n\ - \r\n\x05\x05\x07\x02\x05\x01\x12\x04\x80\x06\x02\x06\n\r\n\x05\x05\x07\ - \x02\x05\x02\x12\x04\x80\x06\t\x0b\n\x0c\n\x04\x05\x07\x02\x06\x12\x04\ - \x81\x06\x02\x10\n\r\n\x05\x05\x07\x02\x06\x01\x12\x04\x81\x06\x02\n\n\r\ - \n\x05\x05\x07\x02\x06\x02\x12\x04\x81\x06\r\x0f\n\x0c\n\x04\x05\x07\x02\ - \x07\x12\x04\x82\x06\x02\x10\n\r\n\x05\x05\x07\x02\x07\x01\x12\x04\x82\ - \x06\x02\n\n\r\n\x05\x05\x07\x02\x07\x02\x12\x04\x82\x06\r\x0f\n\x0c\n\ - \x04\x05\x07\x02\x08\x12\x04\x83\x06\x02\x0b\n\r\n\x05\x05\x07\x02\x08\ - \x01\x12\x04\x83\x06\x02\x05\n\r\n\x05\x05\x07\x02\x08\x02\x12\x04\x83\ - \x06\x08\n\n\x0c\n\x04\x05\x07\x02\t\x12\x04\x84\x06\x02\x0b\n\r\n\x05\ - \x05\x07\x02\t\x01\x12\x04\x84\x06\x02\x05\n\r\n\x05\x05\x07\x02\t\x02\ - \x12\x04\x84\x06\x08\n\n\x0c\n\x04\x05\x07\x02\n\x12\x04\x85\x06\x02\x0e\ - \n\r\n\x05\x05\x07\x02\n\x01\x12\x04\x85\x06\x02\x08\n\r\n\x05\x05\x07\ - \x02\n\x02\x12\x04\x85\x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x0b\x12\x04\x86\ - \x06\x02\t\n\r\n\x05\x05\x07\x02\x0b\x01\x12\x04\x86\x06\x02\x03\n\r\n\ - \x05\x05\x07\x02\x0b\x02\x12\x04\x86\x06\x06\x08\n\x0c\n\x04\x05\x07\x02\ - \x0c\x12\x04\x87\x06\x02\r\n\r\n\x05\x05\x07\x02\x0c\x01\x12\x04\x87\x06\ - \x02\x07\n\r\n\x05\x05\x07\x02\x0c\x02\x12\x04\x87\x06\n\x0c\nH\n\x04\ - \x05\x07\x02\r\x12\x04\x88\x06\x02\x0b\":\x20C++\x20(the\x20name\x20\"CP\ + ing\x20programming\x20languages.\n\n\x0b\n\x03\x05\x07\x01\x12\x04\xfc\ + \x05\x05\r\n\x0c\n\x04\x05\x07\x02\0\x12\x04\xfd\x05\x02\x1a\n\r\n\x05\ + \x05\x07\x02\0\x01\x12\x04\xfd\x05\x02\x15\n\r\n\x05\x05\x07\x02\0\x02\ + \x12\x04\xfd\x05\x18\x19\n\x0c\n\x04\x05\x07\x02\x01\x12\x04\xfe\x05\x02\ + \x0c\n\r\n\x05\x05\x07\x02\x01\x01\x12\x04\xfe\x05\x02\x06\n\r\n\x05\x05\ + \x07\x02\x01\x02\x12\x04\xfe\x05\t\x0b\n\x0c\n\x04\x05\x07\x02\x02\x12\ + \x04\xff\x05\x02\x0c\n\r\n\x05\x05\x07\x02\x02\x01\x12\x04\xff\x05\x02\ + \x06\n\r\n\x05\x05\x07\x02\x02\x02\x12\x04\xff\x05\t\x0b\n\x0c\n\x04\x05\ + \x07\x02\x03\x12\x04\x80\x06\x02\x0b\n\r\n\x05\x05\x07\x02\x03\x01\x12\ + \x04\x80\x06\x02\x05\n\r\n\x05\x05\x07\x02\x03\x02\x12\x04\x80\x06\x08\n\ + \n\x0c\n\x04\x05\x07\x02\x04\x12\x04\x81\x06\x02\x0b\n\r\n\x05\x05\x07\ + \x02\x04\x01\x12\x04\x81\x06\x02\x05\n\r\n\x05\x05\x07\x02\x04\x02\x12\ + \x04\x81\x06\x08\n\n\x0c\n\x04\x05\x07\x02\x05\x12\x04\x82\x06\x02\x0c\n\ + \r\n\x05\x05\x07\x02\x05\x01\x12\x04\x82\x06\x02\x06\n\r\n\x05\x05\x07\ + \x02\x05\x02\x12\x04\x82\x06\t\x0b\n\x0c\n\x04\x05\x07\x02\x06\x12\x04\ + \x83\x06\x02\x10\n\r\n\x05\x05\x07\x02\x06\x01\x12\x04\x83\x06\x02\n\n\r\ + \n\x05\x05\x07\x02\x06\x02\x12\x04\x83\x06\r\x0f\n\x0c\n\x04\x05\x07\x02\ + \x07\x12\x04\x84\x06\x02\x10\n\r\n\x05\x05\x07\x02\x07\x01\x12\x04\x84\ + \x06\x02\n\n\r\n\x05\x05\x07\x02\x07\x02\x12\x04\x84\x06\r\x0f\n\x0c\n\ + \x04\x05\x07\x02\x08\x12\x04\x85\x06\x02\x0b\n\r\n\x05\x05\x07\x02\x08\ + \x01\x12\x04\x85\x06\x02\x05\n\r\n\x05\x05\x07\x02\x08\x02\x12\x04\x85\ + \x06\x08\n\n\x0c\n\x04\x05\x07\x02\t\x12\x04\x86\x06\x02\x0b\n\r\n\x05\ + \x05\x07\x02\t\x01\x12\x04\x86\x06\x02\x05\n\r\n\x05\x05\x07\x02\t\x02\ + \x12\x04\x86\x06\x08\n\n\x0c\n\x04\x05\x07\x02\n\x12\x04\x87\x06\x02\x0e\ + \n\r\n\x05\x05\x07\x02\n\x01\x12\x04\x87\x06\x02\x08\n\r\n\x05\x05\x07\ + \x02\n\x02\x12\x04\x87\x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x0b\x12\x04\x88\ + \x06\x02\t\n\r\n\x05\x05\x07\x02\x0b\x01\x12\x04\x88\x06\x02\x03\n\r\n\ + \x05\x05\x07\x02\x0b\x02\x12\x04\x88\x06\x06\x08\n\x0c\n\x04\x05\x07\x02\ + \x0c\x12\x04\x89\x06\x02\r\n\r\n\x05\x05\x07\x02\x0c\x01\x12\x04\x89\x06\ + \x02\x07\n\r\n\x05\x05\x07\x02\x0c\x02\x12\x04\x89\x06\n\x0c\nH\n\x04\ + \x05\x07\x02\r\x12\x04\x8a\x06\x02\x0b\":\x20C++\x20(the\x20name\x20\"CP\ P\"\x20was\x20chosen\x20for\x20consistency\x20with\x20LSP)\n\n\r\n\x05\ - \x05\x07\x02\r\x01\x12\x04\x88\x06\x02\x05\n\r\n\x05\x05\x07\x02\r\x02\ - \x12\x04\x88\x06\x08\n\n\x0c\n\x04\x05\x07\x02\x0e\x12\x04\x89\x06\x02\ - \x0b\n\r\n\x05\x05\x07\x02\x0e\x01\x12\x04\x89\x06\x02\x05\n\r\n\x05\x05\ - \x07\x02\x0e\x02\x12\x04\x89\x06\x08\n\n\x0c\n\x04\x05\x07\x02\x0f\x12\ - \x04\x8a\x06\x02\r\n\r\n\x05\x05\x07\x02\x0f\x01\x12\x04\x8a\x06\x02\x08\ - \n\r\n\x05\x05\x07\x02\x0f\x02\x12\x04\x8a\x06\x0b\x0c\n\x0c\n\x04\x05\ - \x07\x02\x10\x12\x04\x8b\x06\x02\x0e\n\r\n\x05\x05\x07\x02\x10\x01\x12\ - \x04\x8b\x06\x02\t\n\r\n\x05\x05\x07\x02\x10\x02\x12\x04\x8b\x06\x0c\r\n\ - \x0c\n\x04\x05\x07\x02\x11\x12\x04\x8c\x06\x02\x14\n\r\n\x05\x05\x07\x02\ - \x11\x01\x12\x04\x8c\x06\x02\x0e\n\r\n\x05\x05\x07\x02\x11\x02\x12\x04\ - \x8c\x06\x11\x13\n\x0c\n\x04\x05\x07\x02\x12\x12\x04\x8d\x06\x02\x11\n\r\ - \n\x05\x05\x07\x02\x12\x01\x12\x04\x8d\x06\x02\x0c\n\r\n\x05\x05\x07\x02\ - \x12\x02\x12\x04\x8d\x06\x0f\x10\n\x0c\n\x04\x05\x07\x02\x13\x12\x04\x8e\ - \x06\x02\x0b\n\r\n\x05\x05\x07\x02\x13\x01\x12\x04\x8e\x06\x02\x05\n\r\n\ - \x05\x05\x07\x02\x13\x02\x12\x04\x8e\x06\x08\n\n\x0c\n\x04\x05\x07\x02\ - \x14\x12\x04\x8f\x06\x02\x0c\n\r\n\x05\x05\x07\x02\x14\x01\x12\x04\x8f\ - \x06\x02\x06\n\r\n\x05\x05\x07\x02\x14\x02\x12\x04\x8f\x06\t\x0b\n\x0c\n\ - \x04\x05\x07\x02\x15\x12\x04\x90\x06\x02\x0b\n\r\n\x05\x05\x07\x02\x15\ - \x01\x12\x04\x90\x06\x02\x06\n\r\n\x05\x05\x07\x02\x15\x02\x12\x04\x90\ - \x06\t\n\n\x0c\n\x04\x05\x07\x02\x16\x12\x04\x91\x06\x02\x0e\n\r\n\x05\ - \x05\x07\x02\x16\x01\x12\x04\x91\x06\x02\x08\n\r\n\x05\x05\x07\x02\x16\ - \x02\x12\x04\x91\x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x17\x12\x04\x92\x06\ - \x02\x0c\n\r\n\x05\x05\x07\x02\x17\x01\x12\x04\x92\x06\x02\x06\n\r\n\x05\ - \x05\x07\x02\x17\x02\x12\x04\x92\x06\t\x0b\n\x0c\n\x04\x05\x07\x02\x18\ - \x12\x04\x93\x06\x02\x12\n\r\n\x05\x05\x07\x02\x18\x01\x12\x04\x93\x06\ - \x02\x0c\n\r\n\x05\x05\x07\x02\x18\x02\x12\x04\x93\x06\x0f\x11\n\x0c\n\ - \x04\x05\x07\x02\x19\x12\x04\x94\x06\x02\x0e\n\r\n\x05\x05\x07\x02\x19\ - \x01\x12\x04\x94\x06\x02\x08\n\r\n\x05\x05\x07\x02\x19\x02\x12\x04\x94\ - \x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x1a\x12\x04\x95\x06\x02\x0e\n\r\n\x05\ - \x05\x07\x02\x1a\x01\x12\x04\x95\x06\x02\x08\n\r\n\x05\x05\x07\x02\x1a\ - \x02\x12\x04\x95\x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x1b\x12\x04\x96\x06\ - \x02\x0e\n\r\n\x05\x05\x07\x02\x1b\x01\x12\x04\x96\x06\x02\x08\n\r\n\x05\ - \x05\x07\x02\x1b\x02\x12\x04\x96\x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x1c\ - \x12\x04\x97\x06\x02\x0e\n\r\n\x05\x05\x07\x02\x1c\x01\x12\x04\x97\x06\ - \x02\x08\n\r\n\x05\x05\x07\x02\x1c\x02\x12\x04\x97\x06\x0b\r\n\x0c\n\x04\ - \x05\x07\x02\x1d\x12\x04\x98\x06\x02\x0c\n\r\n\x05\x05\x07\x02\x1d\x01\ - \x12\x04\x98\x06\x02\x06\n\r\n\x05\x05\x07\x02\x1d\x02\x12\x04\x98\x06\t\ - \x0b\n\x0c\n\x04\x05\x07\x02\x1e\x12\x04\x99\x06\x02\x0c\n\r\n\x05\x05\ - \x07\x02\x1e\x01\x12\x04\x99\x06\x02\x06\n\r\n\x05\x05\x07\x02\x1e\x02\ - \x12\x04\x99\x06\t\x0b\n\x0c\n\x04\x05\x07\x02\x1f\x12\x04\x9a\x06\x02\ - \x0f\n\r\n\x05\x05\x07\x02\x1f\x01\x12\x04\x9a\x06\x02\t\n\r\n\x05\x05\ - \x07\x02\x1f\x02\x12\x04\x9a\x06\x0c\x0e\n\x0c\n\x04\x05\x07\x02\x20\x12\ - \x04\x9b\x06\x02\x12\n\r\n\x05\x05\x07\x02\x20\x01\x12\x04\x9b\x06\x02\ - \x0c\n\r\n\x05\x05\x07\x02\x20\x02\x12\x04\x9b\x06\x0f\x11\n\x0c\n\x04\ - \x05\x07\x02!\x12\x04\x9c\x06\x02\x12\n\r\n\x05\x05\x07\x02!\x01\x12\x04\ - \x9c\x06\x02\x0c\n\r\n\x05\x05\x07\x02!\x02\x12\x04\x9c\x06\x0f\x11\n\ - \x0c\n\x04\x05\x07\x02\"\x12\x04\x9d\x06\x02\x12\n\r\n\x05\x05\x07\x02\"\ - \x01\x12\x04\x9d\x06\x02\x0c\n\r\n\x05\x05\x07\x02\"\x02\x12\x04\x9d\x06\ - \x0f\x11\n\x0c\n\x04\x05\x07\x02#\x12\x04\x9e\x06\x02\n\n\r\n\x05\x05\ - \x07\x02#\x01\x12\x04\x9e\x06\x02\x04\n\r\n\x05\x05\x07\x02#\x02\x12\x04\ - \x9e\x06\x07\t\n\x0c\n\x04\x05\x07\x02$\x12\x04\x9f\x06\x02\x0f\n\r\n\ - \x05\x05\x07\x02$\x01\x12\x04\x9f\x06\x02\t\n\r\n\x05\x05\x07\x02$\x02\ - \x12\x04\x9f\x06\x0c\x0e\n\x0c\n\x04\x05\x07\x02%\x12\x04\xa0\x06\x02\r\ - \n\r\n\x05\x05\x07\x02%\x01\x12\x04\xa0\x06\x02\x08\n\r\n\x05\x05\x07\ - \x02%\x02\x12\x04\xa0\x06\x0b\x0c\n\x0c\n\x04\x05\x07\x02&\x12\x04\xa1\ - \x06\x02\x0c\n\r\n\x05\x05\x07\x02&\x01\x12\x04\xa1\x06\x02\x06\n\r\n\ - \x05\x05\x07\x02&\x02\x12\x04\xa1\x06\t\x0b\n\x0c\n\x04\x05\x07\x02'\x12\ - \x04\xa2\x06\x02\x0c\n\r\n\x05\x05\x07\x02'\x01\x12\x04\xa2\x06\x02\x06\ - \n\r\n\x05\x05\x07\x02'\x02\x12\x04\xa2\x06\t\x0b\n\x0c\n\x04\x05\x07\ - \x02(\x12\x04\xa3\x06\x02\x12\n\r\n\x05\x05\x07\x02(\x01\x12\x04\xa3\x06\ - \x02\x0c\n\r\n\x05\x05\x07\x02(\x02\x12\x04\xa3\x06\x0f\x11\n\x0c\n\x04\ - \x05\x07\x02)\x12\x04\xa4\x06\x02\x0f\n\r\n\x05\x05\x07\x02)\x01\x12\x04\ - \xa4\x06\x02\t\n\r\n\x05\x05\x07\x02)\x02\x12\x04\xa4\x06\x0c\x0e\n\x0c\ - \n\x04\x05\x07\x02*\x12\x04\xa5\x06\x02\r\n\r\n\x05\x05\x07\x02*\x01\x12\ - \x04\xa5\x06\x02\x07\n\r\n\x05\x05\x07\x02*\x02\x12\x04\xa5\x06\n\x0c\n\ - \x0c\n\x04\x05\x07\x02+\x12\x04\xa6\x06\x02\x0b\n\r\n\x05\x05\x07\x02+\ - \x01\x12\x04\xa6\x06\x02\x05\n\r\n\x05\x05\x07\x02+\x02\x12\x04\xa6\x06\ - \x08\n\n\x0c\n\x04\x05\x07\x02,\x12\x04\xa7\x06\x02\t\n\r\n\x05\x05\x07\ - \x02,\x01\x12\x04\xa7\x06\x02\x03\n\r\n\x05\x05\x07\x02,\x02\x12\x04\xa7\ - \x06\x06\x08\n\x0c\n\x04\x05\x07\x02-\x12\x04\xa8\x06\x02\x0c\n\r\n\x05\ - \x05\x07\x02-\x01\x12\x04\xa8\x06\x02\x06\n\r\n\x05\x05\x07\x02-\x02\x12\ - \x04\xa8\x06\t\x0b\n\x0c\n\x04\x05\x07\x02.\x12\x04\xa9\x06\x02\x0b\n\r\ - \n\x05\x05\x07\x02.\x01\x12\x04\xa9\x06\x02\x06\n\r\n\x05\x05\x07\x02.\ - \x02\x12\x04\xa9\x06\t\n\n\x0c\n\x04\x05\x07\x02/\x12\x04\xaa\x06\x02\ - \x12\n\r\n\x05\x05\x07\x02/\x01\x12\x04\xaa\x06\x02\x0c\n\r\n\x05\x05\ - \x07\x02/\x02\x12\x04\xaa\x06\x0f\x11\n\x0c\n\x04\x05\x07\x020\x12\x04\ - \xab\x06\x02\x17\n\r\n\x05\x05\x07\x020\x01\x12\x04\xab\x06\x02\x11\n\r\ - \n\x05\x05\x07\x020\x02\x12\x04\xab\x06\x14\x16\n\x0c\n\x04\x05\x07\x021\ - \x12\x04\xac\x06\x02\x0f\n\r\n\x05\x05\x07\x021\x01\x12\x04\xac\x06\x02\ - \t\n\r\n\x05\x05\x07\x021\x02\x12\x04\xac\x06\x0c\x0e\n\x0c\n\x04\x05\ - \x07\x022\x12\x04\xad\x06\x02\x0e\n\r\n\x05\x05\x07\x022\x01\x12\x04\xad\ - \x06\x02\x07\n\r\n\x05\x05\x07\x022\x02\x12\x04\xad\x06\x0b\r\n\x0c\n\ - \x04\x05\x07\x023\x12\x04\xae\x06\x02\x11\n\r\n\x05\x05\x07\x023\x01\x12\ - \x04\xae\x06\x02\n\n\r\n\x05\x05\x07\x023\x02\x12\x04\xae\x06\r\x10\n\ - \x0c\n\x04\x05\x07\x024\x12\x04\xaf\x06\x02\r\n\r\n\x05\x05\x07\x024\x01\ - \x12\x04\xaf\x06\x02\x08\n\r\n\x05\x05\x07\x024\x02\x12\x04\xaf\x06\x0b\ - \x0c\n\x0c\n\x04\x05\x07\x025\x12\x04\xb0\x06\x02\r\n\r\n\x05\x05\x07\ - \x025\x01\x12\x04\xb0\x06\x02\x07\n\r\n\x05\x05\x07\x025\x02\x12\x04\xb0\ - \x06\n\x0c\n\x0c\n\x04\x05\x07\x026\x12\x04\xb1\x06\x02\x0c\n\r\n\x05\ - \x05\x07\x026\x01\x12\x04\xb1\x06\x02\x06\n\r\n\x05\x05\x07\x026\x02\x12\ - \x04\xb1\x06\t\x0b\n\x0c\n\x04\x05\x07\x027\x12\x04\xb2\x06\x02\x0c\n\r\ - \n\x05\x05\x07\x027\x01\x12\x04\xb2\x06\x02\x06\n\r\n\x05\x05\x07\x027\ - \x02\x12\x04\xb2\x06\t\x0b\n\x0c\n\x04\x05\x07\x028\x12\x04\xb3\x06\x02\ - \x0b\n\r\n\x05\x05\x07\x028\x01\x12\x04\xb3\x06\x02\x05\n\r\n\x05\x05\ - \x07\x028\x02\x12\x04\xb3\x06\x08\n\n\x0c\n\x04\x05\x07\x029\x12\x04\xb4\ - \x06\x02\r\n\r\n\x05\x05\x07\x029\x01\x12\x04\xb4\x06\x02\x06\n\r\n\x05\ - \x05\x07\x029\x02\x12\x04\xb4\x06\t\x0c\n\x0c\n\x04\x05\x07\x02:\x12\x04\ - \xb5\x06\x02\x10\n\r\n\x05\x05\x07\x02:\x01\x12\x04\xb5\x06\x02\n\n\r\n\ - \x05\x05\x07\x02:\x02\x12\x04\xb5\x06\r\x0f\n\x0c\n\x04\x05\x07\x02;\x12\ - \x04\xb6\x06\x02\x10\n\r\n\x05\x05\x07\x02;\x01\x12\x04\xb6\x06\x02\n\n\ - \r\n\x05\x05\x07\x02;\x02\x12\x04\xb6\x06\r\x0f\n\x0c\n\x04\x05\x07\x02<\ - \x12\x04\xb7\x06\x02\x0e\n\r\n\x05\x05\x07\x02<\x01\x12\x04\xb7\x06\x02\ - \x08\n\r\n\x05\x05\x07\x02<\x02\x12\x04\xb7\x06\x0b\r\n(\n\x04\x05\x07\ - \x02=\x12\x04\xb8\x06\x02\x0f\"\x1a\x20https://nickel-lang.org/\n\n\r\n\ - \x05\x05\x07\x02=\x01\x12\x04\xb8\x06\x02\x08\n\r\n\x05\x05\x07\x02=\x02\ - \x12\x04\xb8\x06\x0b\x0e\n\x0c\n\x04\x05\x07\x02>\x12\x04\xb9\x06\x02\ - \x0b\n\r\n\x05\x05\x07\x02>\x01\x12\x04\xb9\x06\x02\x05\n\r\n\x05\x05\ - \x07\x02>\x02\x12\x04\xb9\x06\x08\n\n\x0c\n\x04\x05\x07\x02?\x12\x04\xba\ - \x06\x02\r\n\r\n\x05\x05\x07\x02?\x01\x12\x04\xba\x06\x02\x07\n\r\n\x05\ - \x05\x07\x02?\x02\x12\x04\xba\x06\n\x0c\n\x0c\n\x04\x05\x07\x02@\x12\x04\ - \xbb\x06\x02\x13\n\r\n\x05\x05\x07\x02@\x01\x12\x04\xbb\x06\x02\r\n\r\n\ - \x05\x05\x07\x02@\x02\x12\x04\xbb\x06\x10\x12\n\x0c\n\x04\x05\x07\x02A\ - \x12\x04\xbc\x06\x02\x15\n\r\n\x05\x05\x07\x02A\x01\x12\x04\xbc\x06\x02\ - \x0f\n\r\n\x05\x05\x07\x02A\x02\x12\x04\xbc\x06\x12\x14\n\x0c\n\x04\x05\ - \x07\x02B\x12\x04\xbd\x06\x02\x0e\n\r\n\x05\x05\x07\x02B\x01\x12\x04\xbd\ - \x06\x02\x08\n\r\n\x05\x05\x07\x02B\x02\x12\x04\xbd\x06\x0b\r\n\x0c\n\ - \x04\x05\x07\x02C\x12\x04\xbe\x06\x02\x0b\n\r\n\x05\x05\x07\x02C\x01\x12\ - \x04\xbe\x06\x02\x05\n\r\n\x05\x05\x07\x02C\x02\x12\x04\xbe\x06\x08\n\n\ - \x0c\n\x04\x05\x07\x02D\x12\x04\xbf\x06\x02\r\n\r\n\x05\x05\x07\x02D\x01\ - \x12\x04\xbf\x06\x02\x07\n\r\n\x05\x05\x07\x02D\x02\x12\x04\xbf\x06\n\ - \x0c\n\x0c\n\x04\x05\x07\x02E\x12\x04\xc0\x06\x02\x0c\n\r\n\x05\x05\x07\ - \x02E\x01\x12\x04\xc0\x06\x02\x06\n\r\n\x05\x05\x07\x02E\x02\x12\x04\xc0\ - \x06\t\x0b\n\x0c\n\x04\x05\x07\x02F\x12\x04\xc1\x06\x02\x12\n\r\n\x05\ - \x05\x07\x02F\x01\x12\x04\xc1\x06\x02\x0c\n\r\n\x05\x05\x07\x02F\x02\x12\ - \x04\xc1\x06\x0f\x11\n\x0c\n\x04\x05\x07\x02G\x12\x04\xc2\x06\x02\x0e\n\ - \r\n\x05\x05\x07\x02G\x01\x12\x04\xc2\x06\x02\x08\n\r\n\x05\x05\x07\x02G\ - \x02\x12\x04\xc2\x06\x0b\r\n\x0c\n\x04\x05\x07\x02H\x12\x04\xc3\x06\x02\ - \x11\n\r\n\x05\x05\x07\x02H\x01\x12\x04\xc3\x06\x02\n\n\r\n\x05\x05\x07\ - \x02H\x02\x12\x04\xc3\x06\r\x10\n\x0c\n\x04\x05\x07\x02I\x12\x04\xc4\x06\ - \x02\x0e\n\r\n\x05\x05\x07\x02I\x01\x12\x04\xc4\x06\x02\x08\n\r\n\x05\ - \x05\x07\x02I\x02\x12\x04\xc4\x06\x0b\r\n\x0c\n\x04\x05\x07\x02J\x12\x04\ - \xc5\x06\x02\t\n\r\n\x05\x05\x07\x02J\x01\x12\x04\xc5\x06\x02\x03\n\r\n\ - \x05\x05\x07\x02J\x02\x12\x04\xc5\x06\x06\x08\n\x0c\n\x04\x05\x07\x02K\ - \x12\x04\xc6\x06\x02\x0e\n\r\n\x05\x05\x07\x02K\x01\x12\x04\xc6\x06\x02\ - \x08\n\r\n\x05\x05\x07\x02K\x02\x12\x04\xc6\x06\x0b\r\n\x0c\n\x04\x05\ - \x07\x02L\x12\x04\xc7\x06\x02\x0c\n\r\n\x05\x05\x07\x02L\x01\x12\x04\xc7\ - \x06\x02\x06\n\r\n\x05\x05\x07\x02L\x02\x12\x04\xc7\x06\t\x0b\n\x0c\n\ - \x04\x05\x07\x02M\x12\x04\xc8\x06\x02\r\n\r\n\x05\x05\x07\x02M\x01\x12\ - \x04\xc8\x06\x02\x07\n\r\n\x05\x05\x07\x02M\x02\x12\x04\xc8\x06\n\x0c\n2\ - \n\x04\x05\x07\x02N\x12\x04\xc9\x06\x02\x0e\"$\x20Internal\x20language\ - \x20for\x20testing\x20SCIP\n\n\r\n\x05\x05\x07\x02N\x01\x12\x04\xc9\x06\ - \x02\x07\n\r\n\x05\x05\x07\x02N\x02\x12\x04\xc9\x06\n\r\n\x0c\n\x04\x05\ - \x07\x02O\x12\x04\xca\x06\x02\x0c\n\r\n\x05\x05\x07\x02O\x01\x12\x04\xca\ - \x06\x02\x06\n\r\n\x05\x05\x07\x02O\x02\x12\x04\xca\x06\t\x0b\n\x0c\n\ - \x04\x05\x07\x02P\x12\x04\xcb\x06\x02\x0c\n\r\n\x05\x05\x07\x02P\x01\x12\ - \x04\xcb\x06\x02\x06\n\r\n\x05\x05\x07\x02P\x02\x12\x04\xcb\x06\t\x0b\n\ - \x0c\n\x04\x05\x07\x02Q\x12\x04\xcc\x06\x02\x0c\n\r\n\x05\x05\x07\x02Q\ - \x01\x12\x04\xcc\x06\x02\x06\n\r\n\x05\x05\x07\x02Q\x02\x12\x04\xcc\x06\ - \t\x0b\n\x0c\n\x04\x05\x07\x02R\x12\x04\xcd\x06\x02\x0b\n\r\n\x05\x05\ - \x07\x02R\x01\x12\x04\xcd\x06\x02\x05\n\r\n\x05\x05\x07\x02R\x02\x12\x04\ - \xcd\x06\x08\n\n\x0c\n\x04\x05\x07\x02S\x12\x04\xce\x06\x02\x0c\n\r\n\ - \x05\x05\x07\x02S\x01\x12\x04\xce\x06\x02\x06\n\r\n\x05\x05\x07\x02S\x02\ - \x12\x04\xce\x06\t\x0b\n\x0c\n\x04\x05\x07\x02T\x12\x04\xcf\x06\x02\x0b\ - \n\r\n\x05\x05\x07\x02T\x01\x12\x04\xcf\x06\x02\x05\n\r\n\x05\x05\x07\ - \x02T\x02\x12\x04\xcf\x06\x08\n\n\x0c\n\x04\x05\x07\x02U\x12\x04\xd0\x06\ - \x02\x0b\n\r\n\x05\x05\x07\x02U\x01\x12\x04\xd0\x06\x02\x05\n\r\n\x05\ - \x05\x07\x02U\x02\x12\x04\xd0\x06\x08\n\n\x0c\n\x04\x05\x07\x02V\x12\x04\ - \xd1\x06\x02\x0c\n\r\n\x05\x05\x07\x02V\x01\x12\x04\xd1\x06\x02\x06\n\r\ - \n\x05\x05\x07\x02V\x02\x12\x04\xd1\x06\t\x0b\n\x0c\n\x04\x05\x07\x02W\ - \x12\x04\xd2\x06\x02\x0c\n\r\n\x05\x05\x07\x02W\x01\x12\x04\xd2\x06\x02\ - \x07\n\r\n\x05\x05\x07\x02W\x02\x12\x04\xd2\x06\n\x0b\n\x0c\n\x04\x05\ - \x07\x02X\x12\x04\xd3\x06\x02\x0e\n\r\n\x05\x05\x07\x02X\x01\x12\x04\xd3\ - \x06\x02\x08\n\r\n\x05\x05\x07\x02X\x02\x12\x04\xd3\x06\x0b\r\n\x14\n\ - \x04\x05\x07\x02Y\x12\x04\xd4\x06\x02\x13\"\x06\x20Bash\n\n\r\n\x05\x05\ - \x07\x02Y\x01\x12\x04\xd4\x06\x02\r\n\r\n\x05\x05\x07\x02Y\x02\x12\x04\ - \xd4\x06\x10\x12\n\x0c\n\x04\x05\x07\x02Z\x12\x04\xd5\x06\x02\x0f\n\r\n\ - \x05\x05\x07\x02Z\x01\x12\x04\xd5\x06\x02\t\n\r\n\x05\x05\x07\x02Z\x02\ - \x12\x04\xd5\x06\x0c\x0e\n\x0c\n\x04\x05\x07\x02[\x12\x04\xd6\x06\x02\ - \x0e\n\r\n\x05\x05\x07\x02[\x01\x12\x04\xd6\x06\x02\x07\n\r\n\x05\x05\ - \x07\x02[\x02\x12\x04\xd6\x06\n\r\n\x0c\n\x04\x05\x07\x02\\\x12\x04\xd7\ - \x06\x02\x10\n\r\n\x05\x05\x07\x02\\\x01\x12\x04\xd7\x06\x02\n\n\r\n\x05\ - \x05\x07\x02\\\x02\x12\x04\xd7\x06\r\x0f\n\x0c\n\x04\x05\x07\x02]\x12\ - \x04\xd8\x06\x02\x0f\n\r\n\x05\x05\x07\x02]\x01\x12\x04\xd8\x06\x02\x08\ - \n\r\n\x05\x05\x07\x02]\x02\x12\x04\xd8\x06\x0b\x0e\n\x0c\n\x04\x05\x07\ - \x02^\x12\x04\xd9\x06\x02\x0c\n\r\n\x05\x05\x07\x02^\x01\x12\x04\xd9\x06\ - \x02\x07\n\r\n\x05\x05\x07\x02^\x02\x12\x04\xd9\x06\n\x0b\n\x0c\n\x04\ - \x05\x07\x02_\x12\x04\xda\x06\x02\x0c\n\r\n\x05\x05\x07\x02_\x01\x12\x04\ - \xda\x06\x02\x05\n\r\n\x05\x05\x07\x02_\x02\x12\x04\xda\x06\x08\x0b\n\ - \x0c\n\x04\x05\x07\x02`\x12\x04\xdb\x06\x02\x0c\n\r\n\x05\x05\x07\x02`\ - \x01\x12\x04\xdb\x06\x02\x06\n\r\n\x05\x05\x07\x02`\x02\x12\x04\xdb\x06\ - \t\x0b\n\x0c\n\x04\x05\x07\x02a\x12\x04\xdc\x06\x02\x0b\n\r\n\x05\x05\ - \x07\x02a\x01\x12\x04\xdc\x06\x02\x05\n\r\n\x05\x05\x07\x02a\x02\x12\x04\ - \xdc\x06\x08\n\n\x0c\n\x04\x05\x07\x02b\x12\x04\xdd\x06\x02\x0f\n\r\n\ - \x05\x05\x07\x02b\x01\x12\x04\xdd\x06\x02\x08\n\r\n\x05\x05\x07\x02b\x02\ - \x12\x04\xdd\x06\x0b\x0e\n\x0c\n\x04\x05\x07\x02c\x12\x04\xde\x06\x02\ - \x12\n\r\n\x05\x05\x07\x02c\x01\x12\x04\xde\x06\x02\x0c\n\r\n\x05\x05\ - \x07\x02c\x02\x12\x04\xde\x06\x0f\x11\n\x0c\n\x04\x05\x07\x02d\x12\x04\ - \xdf\x06\x02\x17\n\r\n\x05\x05\x07\x02d\x01\x12\x04\xdf\x06\x02\x11\n\r\ - \n\x05\x05\x07\x02d\x02\x12\x04\xdf\x06\x14\x16\n\x0c\n\x04\x05\x07\x02e\ - \x12\x04\xe0\x06\x02\x10\n\r\n\x05\x05\x07\x02e\x01\x12\x04\xe0\x06\x02\ - \t\n\r\n\x05\x05\x07\x02e\x02\x12\x04\xe0\x06\x0c\x0f\n\x0c\n\x04\x05\ - \x07\x02f\x12\x04\xe1\x06\x02\r\n\r\n\x05\x05\x07\x02f\x01\x12\x04\xe1\ - \x06\x02\x06\n\r\n\x05\x05\x07\x02f\x02\x12\x04\xe1\x06\t\x0c\n\x0c\n\ - \x04\x05\x07\x02g\x12\x04\xe2\x06\x02\x13\n\r\n\x05\x05\x07\x02g\x01\x12\ - \x04\xe2\x06\x02\r\n\r\n\x05\x05\x07\x02g\x02\x12\x04\xe2\x06\x10\x12\n\ - \x0c\n\x04\x05\x07\x02h\x12\x04\xe3\x06\x02\x0b\n\r\n\x05\x05\x07\x02h\ - \x01\x12\x04\xe3\x06\x02\x05\n\r\n\x05\x05\x07\x02h\x02\x12\x04\xe3\x06\ - \x08\n\n\x0c\n\x04\x05\x07\x02i\x12\x04\xe4\x06\x02\x0f\n\r\n\x05\x05\ - \x07\x02i\x01\x12\x04\xe4\x06\x02\t\n\r\n\x05\x05\x07\x02i\x02\x12\x04\ - \xe4\x06\x0c\x0e\n\x0c\n\x04\x05\x07\x02j\x12\x04\xe5\x06\x02\x0b\n\r\n\ - \x05\x05\x07\x02j\x01\x12\x04\xe5\x06\x02\x05\n\r\n\x05\x05\x07\x02j\x02\ - \x12\x04\xe5\x06\x08\n\n\x0c\n\x04\x05\x07\x02k\x12\x04\xe6\x06\x02\x0b\ - \n\r\n\x05\x05\x07\x02k\x01\x12\x04\xe6\x06\x02\x05\n\r\n\x05\x05\x07\ - \x02k\x02\x12\x04\xe6\x06\x08\n\n\x0c\n\x04\x05\x07\x02l\x12\x04\xe7\x06\ - \x02\x0c\n\r\n\x05\x05\x07\x02l\x01\x12\x04\xe7\x06\x02\x06\n\r\n\x05\ - \x05\x07\x02l\x02\x12\x04\xe7\x06\t\x0b\n\x93\x03\n\x04\x05\x07\x02m\x12\ - \x04\xe8\x06\x02\x0b\"\x84\x03\x20NextLanguage\x20=\x20111;\n\x20Steps\ + \x05\x07\x02\r\x01\x12\x04\x8a\x06\x02\x05\n\r\n\x05\x05\x07\x02\r\x02\ + \x12\x04\x8a\x06\x08\n\n\x0c\n\x04\x05\x07\x02\x0e\x12\x04\x8b\x06\x02\ + \x0b\n\r\n\x05\x05\x07\x02\x0e\x01\x12\x04\x8b\x06\x02\x05\n\r\n\x05\x05\ + \x07\x02\x0e\x02\x12\x04\x8b\x06\x08\n\n\x0c\n\x04\x05\x07\x02\x0f\x12\ + \x04\x8c\x06\x02\r\n\r\n\x05\x05\x07\x02\x0f\x01\x12\x04\x8c\x06\x02\x08\ + \n\r\n\x05\x05\x07\x02\x0f\x02\x12\x04\x8c\x06\x0b\x0c\n\x0c\n\x04\x05\ + \x07\x02\x10\x12\x04\x8d\x06\x02\x0e\n\r\n\x05\x05\x07\x02\x10\x01\x12\ + \x04\x8d\x06\x02\t\n\r\n\x05\x05\x07\x02\x10\x02\x12\x04\x8d\x06\x0c\r\n\ + \x0c\n\x04\x05\x07\x02\x11\x12\x04\x8e\x06\x02\x14\n\r\n\x05\x05\x07\x02\ + \x11\x01\x12\x04\x8e\x06\x02\x0e\n\r\n\x05\x05\x07\x02\x11\x02\x12\x04\ + \x8e\x06\x11\x13\n\x0c\n\x04\x05\x07\x02\x12\x12\x04\x8f\x06\x02\x11\n\r\ + \n\x05\x05\x07\x02\x12\x01\x12\x04\x8f\x06\x02\x0c\n\r\n\x05\x05\x07\x02\ + \x12\x02\x12\x04\x8f\x06\x0f\x10\n\x0c\n\x04\x05\x07\x02\x13\x12\x04\x90\ + \x06\x02\x0b\n\r\n\x05\x05\x07\x02\x13\x01\x12\x04\x90\x06\x02\x05\n\r\n\ + \x05\x05\x07\x02\x13\x02\x12\x04\x90\x06\x08\n\n\x0c\n\x04\x05\x07\x02\ + \x14\x12\x04\x91\x06\x02\x0c\n\r\n\x05\x05\x07\x02\x14\x01\x12\x04\x91\ + \x06\x02\x06\n\r\n\x05\x05\x07\x02\x14\x02\x12\x04\x91\x06\t\x0b\n\x0c\n\ + \x04\x05\x07\x02\x15\x12\x04\x92\x06\x02\x0b\n\r\n\x05\x05\x07\x02\x15\ + \x01\x12\x04\x92\x06\x02\x06\n\r\n\x05\x05\x07\x02\x15\x02\x12\x04\x92\ + \x06\t\n\n\x0c\n\x04\x05\x07\x02\x16\x12\x04\x93\x06\x02\x0e\n\r\n\x05\ + \x05\x07\x02\x16\x01\x12\x04\x93\x06\x02\x08\n\r\n\x05\x05\x07\x02\x16\ + \x02\x12\x04\x93\x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x17\x12\x04\x94\x06\ + \x02\x0c\n\r\n\x05\x05\x07\x02\x17\x01\x12\x04\x94\x06\x02\x06\n\r\n\x05\ + \x05\x07\x02\x17\x02\x12\x04\x94\x06\t\x0b\n\x0c\n\x04\x05\x07\x02\x18\ + \x12\x04\x95\x06\x02\x12\n\r\n\x05\x05\x07\x02\x18\x01\x12\x04\x95\x06\ + \x02\x0c\n\r\n\x05\x05\x07\x02\x18\x02\x12\x04\x95\x06\x0f\x11\n\x0c\n\ + \x04\x05\x07\x02\x19\x12\x04\x96\x06\x02\x0e\n\r\n\x05\x05\x07\x02\x19\ + \x01\x12\x04\x96\x06\x02\x08\n\r\n\x05\x05\x07\x02\x19\x02\x12\x04\x96\ + \x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x1a\x12\x04\x97\x06\x02\x0e\n\r\n\x05\ + \x05\x07\x02\x1a\x01\x12\x04\x97\x06\x02\x08\n\r\n\x05\x05\x07\x02\x1a\ + \x02\x12\x04\x97\x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x1b\x12\x04\x98\x06\ + \x02\x0e\n\r\n\x05\x05\x07\x02\x1b\x01\x12\x04\x98\x06\x02\x08\n\r\n\x05\ + \x05\x07\x02\x1b\x02\x12\x04\x98\x06\x0b\r\n\x0c\n\x04\x05\x07\x02\x1c\ + \x12\x04\x99\x06\x02\x0e\n\r\n\x05\x05\x07\x02\x1c\x01\x12\x04\x99\x06\ + \x02\x08\n\r\n\x05\x05\x07\x02\x1c\x02\x12\x04\x99\x06\x0b\r\n\x0c\n\x04\ + \x05\x07\x02\x1d\x12\x04\x9a\x06\x02\x0c\n\r\n\x05\x05\x07\x02\x1d\x01\ + \x12\x04\x9a\x06\x02\x06\n\r\n\x05\x05\x07\x02\x1d\x02\x12\x04\x9a\x06\t\ + \x0b\n\x0c\n\x04\x05\x07\x02\x1e\x12\x04\x9b\x06\x02\x0c\n\r\n\x05\x05\ + \x07\x02\x1e\x01\x12\x04\x9b\x06\x02\x06\n\r\n\x05\x05\x07\x02\x1e\x02\ + \x12\x04\x9b\x06\t\x0b\n\x0c\n\x04\x05\x07\x02\x1f\x12\x04\x9c\x06\x02\ + \x0f\n\r\n\x05\x05\x07\x02\x1f\x01\x12\x04\x9c\x06\x02\t\n\r\n\x05\x05\ + \x07\x02\x1f\x02\x12\x04\x9c\x06\x0c\x0e\n\x0c\n\x04\x05\x07\x02\x20\x12\ + \x04\x9d\x06\x02\x12\n\r\n\x05\x05\x07\x02\x20\x01\x12\x04\x9d\x06\x02\ + \x0c\n\r\n\x05\x05\x07\x02\x20\x02\x12\x04\x9d\x06\x0f\x11\n\x0c\n\x04\ + \x05\x07\x02!\x12\x04\x9e\x06\x02\x12\n\r\n\x05\x05\x07\x02!\x01\x12\x04\ + \x9e\x06\x02\x0c\n\r\n\x05\x05\x07\x02!\x02\x12\x04\x9e\x06\x0f\x11\n\ + \x0c\n\x04\x05\x07\x02\"\x12\x04\x9f\x06\x02\x12\n\r\n\x05\x05\x07\x02\"\ + \x01\x12\x04\x9f\x06\x02\x0c\n\r\n\x05\x05\x07\x02\"\x02\x12\x04\x9f\x06\ + \x0f\x11\n\x0c\n\x04\x05\x07\x02#\x12\x04\xa0\x06\x02\n\n\r\n\x05\x05\ + \x07\x02#\x01\x12\x04\xa0\x06\x02\x04\n\r\n\x05\x05\x07\x02#\x02\x12\x04\ + \xa0\x06\x07\t\n\x0c\n\x04\x05\x07\x02$\x12\x04\xa1\x06\x02\x0f\n\r\n\ + \x05\x05\x07\x02$\x01\x12\x04\xa1\x06\x02\t\n\r\n\x05\x05\x07\x02$\x02\ + \x12\x04\xa1\x06\x0c\x0e\n\x0c\n\x04\x05\x07\x02%\x12\x04\xa2\x06\x02\r\ + \n\r\n\x05\x05\x07\x02%\x01\x12\x04\xa2\x06\x02\x08\n\r\n\x05\x05\x07\ + \x02%\x02\x12\x04\xa2\x06\x0b\x0c\n\x0c\n\x04\x05\x07\x02&\x12\x04\xa3\ + \x06\x02\x0c\n\r\n\x05\x05\x07\x02&\x01\x12\x04\xa3\x06\x02\x06\n\r\n\ + \x05\x05\x07\x02&\x02\x12\x04\xa3\x06\t\x0b\n\x0c\n\x04\x05\x07\x02'\x12\ + \x04\xa4\x06\x02\x0c\n\r\n\x05\x05\x07\x02'\x01\x12\x04\xa4\x06\x02\x06\ + \n\r\n\x05\x05\x07\x02'\x02\x12\x04\xa4\x06\t\x0b\n\x0c\n\x04\x05\x07\ + \x02(\x12\x04\xa5\x06\x02\x12\n\r\n\x05\x05\x07\x02(\x01\x12\x04\xa5\x06\ + \x02\x0c\n\r\n\x05\x05\x07\x02(\x02\x12\x04\xa5\x06\x0f\x11\n\x0c\n\x04\ + \x05\x07\x02)\x12\x04\xa6\x06\x02\x0f\n\r\n\x05\x05\x07\x02)\x01\x12\x04\ + \xa6\x06\x02\t\n\r\n\x05\x05\x07\x02)\x02\x12\x04\xa6\x06\x0c\x0e\n\x0c\ + \n\x04\x05\x07\x02*\x12\x04\xa7\x06\x02\r\n\r\n\x05\x05\x07\x02*\x01\x12\ + \x04\xa7\x06\x02\x07\n\r\n\x05\x05\x07\x02*\x02\x12\x04\xa7\x06\n\x0c\n\ + \x0c\n\x04\x05\x07\x02+\x12\x04\xa8\x06\x02\x0b\n\r\n\x05\x05\x07\x02+\ + \x01\x12\x04\xa8\x06\x02\x05\n\r\n\x05\x05\x07\x02+\x02\x12\x04\xa8\x06\ + \x08\n\n\x0c\n\x04\x05\x07\x02,\x12\x04\xa9\x06\x02\t\n\r\n\x05\x05\x07\ + \x02,\x01\x12\x04\xa9\x06\x02\x03\n\r\n\x05\x05\x07\x02,\x02\x12\x04\xa9\ + \x06\x06\x08\n\x0c\n\x04\x05\x07\x02-\x12\x04\xaa\x06\x02\x0c\n\r\n\x05\ + \x05\x07\x02-\x01\x12\x04\xaa\x06\x02\x06\n\r\n\x05\x05\x07\x02-\x02\x12\ + \x04\xaa\x06\t\x0b\n\x0c\n\x04\x05\x07\x02.\x12\x04\xab\x06\x02\x0b\n\r\ + \n\x05\x05\x07\x02.\x01\x12\x04\xab\x06\x02\x06\n\r\n\x05\x05\x07\x02.\ + \x02\x12\x04\xab\x06\t\n\n\x0c\n\x04\x05\x07\x02/\x12\x04\xac\x06\x02\ + \x12\n\r\n\x05\x05\x07\x02/\x01\x12\x04\xac\x06\x02\x0c\n\r\n\x05\x05\ + \x07\x02/\x02\x12\x04\xac\x06\x0f\x11\n\x0c\n\x04\x05\x07\x020\x12\x04\ + \xad\x06\x02\x17\n\r\n\x05\x05\x07\x020\x01\x12\x04\xad\x06\x02\x11\n\r\ + \n\x05\x05\x07\x020\x02\x12\x04\xad\x06\x14\x16\n\x0c\n\x04\x05\x07\x021\ + \x12\x04\xae\x06\x02\x0f\n\r\n\x05\x05\x07\x021\x01\x12\x04\xae\x06\x02\ + \t\n\r\n\x05\x05\x07\x021\x02\x12\x04\xae\x06\x0c\x0e\n\x0c\n\x04\x05\ + \x07\x022\x12\x04\xaf\x06\x02\x0e\n\r\n\x05\x05\x07\x022\x01\x12\x04\xaf\ + \x06\x02\x07\n\r\n\x05\x05\x07\x022\x02\x12\x04\xaf\x06\x0b\r\n\x0c\n\ + \x04\x05\x07\x023\x12\x04\xb0\x06\x02\x11\n\r\n\x05\x05\x07\x023\x01\x12\ + \x04\xb0\x06\x02\n\n\r\n\x05\x05\x07\x023\x02\x12\x04\xb0\x06\r\x10\n\ + \x0c\n\x04\x05\x07\x024\x12\x04\xb1\x06\x02\r\n\r\n\x05\x05\x07\x024\x01\ + \x12\x04\xb1\x06\x02\x08\n\r\n\x05\x05\x07\x024\x02\x12\x04\xb1\x06\x0b\ + \x0c\n\x0c\n\x04\x05\x07\x025\x12\x04\xb2\x06\x02\r\n\r\n\x05\x05\x07\ + \x025\x01\x12\x04\xb2\x06\x02\x07\n\r\n\x05\x05\x07\x025\x02\x12\x04\xb2\ + \x06\n\x0c\n\x0c\n\x04\x05\x07\x026\x12\x04\xb3\x06\x02\x0c\n\r\n\x05\ + \x05\x07\x026\x01\x12\x04\xb3\x06\x02\x06\n\r\n\x05\x05\x07\x026\x02\x12\ + \x04\xb3\x06\t\x0b\n\x0c\n\x04\x05\x07\x027\x12\x04\xb4\x06\x02\x0c\n\r\ + \n\x05\x05\x07\x027\x01\x12\x04\xb4\x06\x02\x06\n\r\n\x05\x05\x07\x027\ + \x02\x12\x04\xb4\x06\t\x0b\n\x0c\n\x04\x05\x07\x028\x12\x04\xb5\x06\x02\ + \x0b\n\r\n\x05\x05\x07\x028\x01\x12\x04\xb5\x06\x02\x05\n\r\n\x05\x05\ + \x07\x028\x02\x12\x04\xb5\x06\x08\n\n\x0c\n\x04\x05\x07\x029\x12\x04\xb6\ + \x06\x02\r\n\r\n\x05\x05\x07\x029\x01\x12\x04\xb6\x06\x02\x06\n\r\n\x05\ + \x05\x07\x029\x02\x12\x04\xb6\x06\t\x0c\n\x0c\n\x04\x05\x07\x02:\x12\x04\ + \xb7\x06\x02\x10\n\r\n\x05\x05\x07\x02:\x01\x12\x04\xb7\x06\x02\n\n\r\n\ + \x05\x05\x07\x02:\x02\x12\x04\xb7\x06\r\x0f\n\x0c\n\x04\x05\x07\x02;\x12\ + \x04\xb8\x06\x02\x10\n\r\n\x05\x05\x07\x02;\x01\x12\x04\xb8\x06\x02\n\n\ + \r\n\x05\x05\x07\x02;\x02\x12\x04\xb8\x06\r\x0f\n\x0c\n\x04\x05\x07\x02<\ + \x12\x04\xb9\x06\x02\x0e\n\r\n\x05\x05\x07\x02<\x01\x12\x04\xb9\x06\x02\ + \x08\n\r\n\x05\x05\x07\x02<\x02\x12\x04\xb9\x06\x0b\r\n(\n\x04\x05\x07\ + \x02=\x12\x04\xba\x06\x02\x0f\"\x1a\x20https://nickel-lang.org/\n\n\r\n\ + \x05\x05\x07\x02=\x01\x12\x04\xba\x06\x02\x08\n\r\n\x05\x05\x07\x02=\x02\ + \x12\x04\xba\x06\x0b\x0e\n\x0c\n\x04\x05\x07\x02>\x12\x04\xbb\x06\x02\ + \x0b\n\r\n\x05\x05\x07\x02>\x01\x12\x04\xbb\x06\x02\x05\n\r\n\x05\x05\ + \x07\x02>\x02\x12\x04\xbb\x06\x08\n\n\x0c\n\x04\x05\x07\x02?\x12\x04\xbc\ + \x06\x02\r\n\r\n\x05\x05\x07\x02?\x01\x12\x04\xbc\x06\x02\x07\n\r\n\x05\ + \x05\x07\x02?\x02\x12\x04\xbc\x06\n\x0c\n\x0c\n\x04\x05\x07\x02@\x12\x04\ + \xbd\x06\x02\x13\n\r\n\x05\x05\x07\x02@\x01\x12\x04\xbd\x06\x02\r\n\r\n\ + \x05\x05\x07\x02@\x02\x12\x04\xbd\x06\x10\x12\n\x0c\n\x04\x05\x07\x02A\ + \x12\x04\xbe\x06\x02\x15\n\r\n\x05\x05\x07\x02A\x01\x12\x04\xbe\x06\x02\ + \x0f\n\r\n\x05\x05\x07\x02A\x02\x12\x04\xbe\x06\x12\x14\n\x0c\n\x04\x05\ + \x07\x02B\x12\x04\xbf\x06\x02\x0e\n\r\n\x05\x05\x07\x02B\x01\x12\x04\xbf\ + \x06\x02\x08\n\r\n\x05\x05\x07\x02B\x02\x12\x04\xbf\x06\x0b\r\n\x0c\n\ + \x04\x05\x07\x02C\x12\x04\xc0\x06\x02\x0b\n\r\n\x05\x05\x07\x02C\x01\x12\ + \x04\xc0\x06\x02\x05\n\r\n\x05\x05\x07\x02C\x02\x12\x04\xc0\x06\x08\n\n\ + \x0c\n\x04\x05\x07\x02D\x12\x04\xc1\x06\x02\r\n\r\n\x05\x05\x07\x02D\x01\ + \x12\x04\xc1\x06\x02\x07\n\r\n\x05\x05\x07\x02D\x02\x12\x04\xc1\x06\n\ + \x0c\n\x0c\n\x04\x05\x07\x02E\x12\x04\xc2\x06\x02\x0c\n\r\n\x05\x05\x07\ + \x02E\x01\x12\x04\xc2\x06\x02\x06\n\r\n\x05\x05\x07\x02E\x02\x12\x04\xc2\ + \x06\t\x0b\n\x0c\n\x04\x05\x07\x02F\x12\x04\xc3\x06\x02\x12\n\r\n\x05\ + \x05\x07\x02F\x01\x12\x04\xc3\x06\x02\x0c\n\r\n\x05\x05\x07\x02F\x02\x12\ + \x04\xc3\x06\x0f\x11\n\x0c\n\x04\x05\x07\x02G\x12\x04\xc4\x06\x02\x0e\n\ + \r\n\x05\x05\x07\x02G\x01\x12\x04\xc4\x06\x02\x08\n\r\n\x05\x05\x07\x02G\ + \x02\x12\x04\xc4\x06\x0b\r\n\x0c\n\x04\x05\x07\x02H\x12\x04\xc5\x06\x02\ + \x11\n\r\n\x05\x05\x07\x02H\x01\x12\x04\xc5\x06\x02\n\n\r\n\x05\x05\x07\ + \x02H\x02\x12\x04\xc5\x06\r\x10\n\x0c\n\x04\x05\x07\x02I\x12\x04\xc6\x06\ + \x02\x0e\n\r\n\x05\x05\x07\x02I\x01\x12\x04\xc6\x06\x02\x08\n\r\n\x05\ + \x05\x07\x02I\x02\x12\x04\xc6\x06\x0b\r\n\x0c\n\x04\x05\x07\x02J\x12\x04\ + \xc7\x06\x02\t\n\r\n\x05\x05\x07\x02J\x01\x12\x04\xc7\x06\x02\x03\n\r\n\ + \x05\x05\x07\x02J\x02\x12\x04\xc7\x06\x06\x08\n\x0c\n\x04\x05\x07\x02K\ + \x12\x04\xc8\x06\x02\x0e\n\r\n\x05\x05\x07\x02K\x01\x12\x04\xc8\x06\x02\ + \x08\n\r\n\x05\x05\x07\x02K\x02\x12\x04\xc8\x06\x0b\r\n\x0c\n\x04\x05\ + \x07\x02L\x12\x04\xc9\x06\x02\x0c\n\r\n\x05\x05\x07\x02L\x01\x12\x04\xc9\ + \x06\x02\x06\n\r\n\x05\x05\x07\x02L\x02\x12\x04\xc9\x06\t\x0b\n\x0c\n\ + \x04\x05\x07\x02M\x12\x04\xca\x06\x02\r\n\r\n\x05\x05\x07\x02M\x01\x12\ + \x04\xca\x06\x02\x07\n\r\n\x05\x05\x07\x02M\x02\x12\x04\xca\x06\n\x0c\n2\ + \n\x04\x05\x07\x02N\x12\x04\xcb\x06\x02\x0e\"$\x20Internal\x20language\ + \x20for\x20testing\x20SCIP\n\n\r\n\x05\x05\x07\x02N\x01\x12\x04\xcb\x06\ + \x02\x07\n\r\n\x05\x05\x07\x02N\x02\x12\x04\xcb\x06\n\r\n\x0c\n\x04\x05\ + \x07\x02O\x12\x04\xcc\x06\x02\x0c\n\r\n\x05\x05\x07\x02O\x01\x12\x04\xcc\ + \x06\x02\x06\n\r\n\x05\x05\x07\x02O\x02\x12\x04\xcc\x06\t\x0b\n\x0c\n\ + \x04\x05\x07\x02P\x12\x04\xcd\x06\x02\x0c\n\r\n\x05\x05\x07\x02P\x01\x12\ + \x04\xcd\x06\x02\x06\n\r\n\x05\x05\x07\x02P\x02\x12\x04\xcd\x06\t\x0b\n\ + \x0c\n\x04\x05\x07\x02Q\x12\x04\xce\x06\x02\x0c\n\r\n\x05\x05\x07\x02Q\ + \x01\x12\x04\xce\x06\x02\x06\n\r\n\x05\x05\x07\x02Q\x02\x12\x04\xce\x06\ + \t\x0b\n\x0c\n\x04\x05\x07\x02R\x12\x04\xcf\x06\x02\x0b\n\r\n\x05\x05\ + \x07\x02R\x01\x12\x04\xcf\x06\x02\x05\n\r\n\x05\x05\x07\x02R\x02\x12\x04\ + \xcf\x06\x08\n\n\x0c\n\x04\x05\x07\x02S\x12\x04\xd0\x06\x02\x0c\n\r\n\ + \x05\x05\x07\x02S\x01\x12\x04\xd0\x06\x02\x06\n\r\n\x05\x05\x07\x02S\x02\ + \x12\x04\xd0\x06\t\x0b\n\x0c\n\x04\x05\x07\x02T\x12\x04\xd1\x06\x02\x0b\ + \n\r\n\x05\x05\x07\x02T\x01\x12\x04\xd1\x06\x02\x05\n\r\n\x05\x05\x07\ + \x02T\x02\x12\x04\xd1\x06\x08\n\n\x0c\n\x04\x05\x07\x02U\x12\x04\xd2\x06\ + \x02\x0b\n\r\n\x05\x05\x07\x02U\x01\x12\x04\xd2\x06\x02\x05\n\r\n\x05\ + \x05\x07\x02U\x02\x12\x04\xd2\x06\x08\n\n\x0c\n\x04\x05\x07\x02V\x12\x04\ + \xd3\x06\x02\x0c\n\r\n\x05\x05\x07\x02V\x01\x12\x04\xd3\x06\x02\x06\n\r\ + \n\x05\x05\x07\x02V\x02\x12\x04\xd3\x06\t\x0b\n\x0c\n\x04\x05\x07\x02W\ + \x12\x04\xd4\x06\x02\x0c\n\r\n\x05\x05\x07\x02W\x01\x12\x04\xd4\x06\x02\ + \x07\n\r\n\x05\x05\x07\x02W\x02\x12\x04\xd4\x06\n\x0b\n\x0c\n\x04\x05\ + \x07\x02X\x12\x04\xd5\x06\x02\x0e\n\r\n\x05\x05\x07\x02X\x01\x12\x04\xd5\ + \x06\x02\x08\n\r\n\x05\x05\x07\x02X\x02\x12\x04\xd5\x06\x0b\r\n\x14\n\ + \x04\x05\x07\x02Y\x12\x04\xd6\x06\x02\x13\"\x06\x20Bash\n\n\r\n\x05\x05\ + \x07\x02Y\x01\x12\x04\xd6\x06\x02\r\n\r\n\x05\x05\x07\x02Y\x02\x12\x04\ + \xd6\x06\x10\x12\n\x0c\n\x04\x05\x07\x02Z\x12\x04\xd7\x06\x02\x0f\n\r\n\ + \x05\x05\x07\x02Z\x01\x12\x04\xd7\x06\x02\t\n\r\n\x05\x05\x07\x02Z\x02\ + \x12\x04\xd7\x06\x0c\x0e\n\x0c\n\x04\x05\x07\x02[\x12\x04\xd8\x06\x02\ + \x0e\n\r\n\x05\x05\x07\x02[\x01\x12\x04\xd8\x06\x02\x07\n\r\n\x05\x05\ + \x07\x02[\x02\x12\x04\xd8\x06\n\r\n\x0c\n\x04\x05\x07\x02\\\x12\x04\xd9\ + \x06\x02\x10\n\r\n\x05\x05\x07\x02\\\x01\x12\x04\xd9\x06\x02\n\n\r\n\x05\ + \x05\x07\x02\\\x02\x12\x04\xd9\x06\r\x0f\n\x0c\n\x04\x05\x07\x02]\x12\ + \x04\xda\x06\x02\x0f\n\r\n\x05\x05\x07\x02]\x01\x12\x04\xda\x06\x02\x08\ + \n\r\n\x05\x05\x07\x02]\x02\x12\x04\xda\x06\x0b\x0e\n\x0c\n\x04\x05\x07\ + \x02^\x12\x04\xdb\x06\x02\x0c\n\r\n\x05\x05\x07\x02^\x01\x12\x04\xdb\x06\ + \x02\x07\n\r\n\x05\x05\x07\x02^\x02\x12\x04\xdb\x06\n\x0b\n\x0c\n\x04\ + \x05\x07\x02_\x12\x04\xdc\x06\x02\x0c\n\r\n\x05\x05\x07\x02_\x01\x12\x04\ + \xdc\x06\x02\x05\n\r\n\x05\x05\x07\x02_\x02\x12\x04\xdc\x06\x08\x0b\n\ + \x0c\n\x04\x05\x07\x02`\x12\x04\xdd\x06\x02\x0c\n\r\n\x05\x05\x07\x02`\ + \x01\x12\x04\xdd\x06\x02\x06\n\r\n\x05\x05\x07\x02`\x02\x12\x04\xdd\x06\ + \t\x0b\n\x0c\n\x04\x05\x07\x02a\x12\x04\xde\x06\x02\x0b\n\r\n\x05\x05\ + \x07\x02a\x01\x12\x04\xde\x06\x02\x05\n\r\n\x05\x05\x07\x02a\x02\x12\x04\ + \xde\x06\x08\n\n\x0c\n\x04\x05\x07\x02b\x12\x04\xdf\x06\x02\x0f\n\r\n\ + \x05\x05\x07\x02b\x01\x12\x04\xdf\x06\x02\x08\n\r\n\x05\x05\x07\x02b\x02\ + \x12\x04\xdf\x06\x0b\x0e\n\x0c\n\x04\x05\x07\x02c\x12\x04\xe0\x06\x02\ + \x12\n\r\n\x05\x05\x07\x02c\x01\x12\x04\xe0\x06\x02\x0c\n\r\n\x05\x05\ + \x07\x02c\x02\x12\x04\xe0\x06\x0f\x11\n\x0c\n\x04\x05\x07\x02d\x12\x04\ + \xe1\x06\x02\x17\n\r\n\x05\x05\x07\x02d\x01\x12\x04\xe1\x06\x02\x11\n\r\ + \n\x05\x05\x07\x02d\x02\x12\x04\xe1\x06\x14\x16\n\x0c\n\x04\x05\x07\x02e\ + \x12\x04\xe2\x06\x02\x10\n\r\n\x05\x05\x07\x02e\x01\x12\x04\xe2\x06\x02\ + \t\n\r\n\x05\x05\x07\x02e\x02\x12\x04\xe2\x06\x0c\x0f\n\x0c\n\x04\x05\ + \x07\x02f\x12\x04\xe3\x06\x02\r\n\r\n\x05\x05\x07\x02f\x01\x12\x04\xe3\ + \x06\x02\x06\n\r\n\x05\x05\x07\x02f\x02\x12\x04\xe3\x06\t\x0c\n\x0c\n\ + \x04\x05\x07\x02g\x12\x04\xe4\x06\x02\x13\n\r\n\x05\x05\x07\x02g\x01\x12\ + \x04\xe4\x06\x02\r\n\r\n\x05\x05\x07\x02g\x02\x12\x04\xe4\x06\x10\x12\n\ + \x0c\n\x04\x05\x07\x02h\x12\x04\xe5\x06\x02\x0b\n\r\n\x05\x05\x07\x02h\ + \x01\x12\x04\xe5\x06\x02\x05\n\r\n\x05\x05\x07\x02h\x02\x12\x04\xe5\x06\ + \x08\n\n\x0c\n\x04\x05\x07\x02i\x12\x04\xe6\x06\x02\x0f\n\r\n\x05\x05\ + \x07\x02i\x01\x12\x04\xe6\x06\x02\t\n\r\n\x05\x05\x07\x02i\x02\x12\x04\ + \xe6\x06\x0c\x0e\n\x0c\n\x04\x05\x07\x02j\x12\x04\xe7\x06\x02\x0b\n\r\n\ + \x05\x05\x07\x02j\x01\x12\x04\xe7\x06\x02\x05\n\r\n\x05\x05\x07\x02j\x02\ + \x12\x04\xe7\x06\x08\n\n\x0c\n\x04\x05\x07\x02k\x12\x04\xe8\x06\x02\x0b\ + \n\r\n\x05\x05\x07\x02k\x01\x12\x04\xe8\x06\x02\x05\n\r\n\x05\x05\x07\ + \x02k\x02\x12\x04\xe8\x06\x08\n\n\x0c\n\x04\x05\x07\x02l\x12\x04\xe9\x06\ + \x02\x0c\n\r\n\x05\x05\x07\x02l\x01\x12\x04\xe9\x06\x02\x06\n\r\n\x05\ + \x05\x07\x02l\x02\x12\x04\xe9\x06\t\x0b\n\x93\x03\n\x04\x05\x07\x02m\x12\ + \x04\xea\x06\x02\x0b\"\x84\x03\x20NextLanguage\x20=\x20111;\n\x20Steps\ \x20add\x20a\x20new\x20language:\n\x201.\x20Copy-paste\x20the\x20\"NextL\ anguage\x20=\x20N\"\x20line\x20above\n\x202.\x20Increment\x20\"NextLangu\ age\x20=\x20N\"\x20to\x20\"NextLanguage\x20=\x20N+1\"\n\x203.\x20Replace\ @@ -5980,8 +5983,8 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x20correct\x20line\x20above\x20using\x20alphabetical\x20order\n\x205.\ \x20(optional)\x20Add\x20a\x20brief\x20comment\x20behind\x20the\x20langu\ age\x20if\x20the\x20name\x20is\x20not\x20self-explanatory\n\n\r\n\x05\ - \x05\x07\x02m\x01\x12\x04\xe8\x06\x02\x05\n\r\n\x05\x05\x07\x02m\x02\x12\ - \x04\xe8\x06\x08\nb\x06proto3\ + \x05\x07\x02m\x01\x12\x04\xea\x06\x02\x05\n\r\n\x05\x05\x07\x02m\x02\x12\ + \x04\xea\x06\x08\nb\x06proto3\ "; /// `FileDescriptorProto` object which was a source for this generated file diff --git a/dev/sample_indexes/.gitignore b/dev/sample_indexes/.gitignore new file mode 100644 index 00000000..4d8c4d12 --- /dev/null +++ b/dev/sample_indexes/.gitignore @@ -0,0 +1,3 @@ +# Ignore any SCIP indexes as well as any files with statistics data. +*.scip +*.json diff --git a/dev/sample_indexes/indexes-metadata.json b/dev/sample_indexes/indexes-metadata.json new file mode 100644 index 00000000..fde1b23f --- /dev/null +++ b/dev/sample_indexes/indexes-metadata.json @@ -0,0 +1,40 @@ +{ + "indexes": [ + { + "name": "django-1.scip", + "sha256": "93fb1d73db532f1d61404220bb2d9443e42fc25f5a69246d13a13cb47feb1176" + }, + { + "name": "flink-1.scip", + "sha256": "d400dac9055bfe3260da6a9d87eab5e2e8e912424ee483baec2eecb4c11714f0" + }, + { + "name": "kubernetes-1.scip", + "sha256": "c717d08ff69470b6984dcfba12e271282bd4132f3416b9e395d9c95fd9202b87" + }, + { + "name": "llvm-project-1.scip", + "sha256": "81110140699c76cd131842ae2f6d76484ecca49786930f6efe08d75e6678b4f7" + }, + { + "name": "materialize-1.scip", + "sha256": "fac6c26746569a67ec5c9675606881f3dd0dd69c6c397893bb2ad74629a4f0f5" + }, + { + "name": "postgres-1.scip", + "sha256": "9c7ee3d7d6dc6ab9c9e2e53375ce8dd8d91c37c1f408e09d5b0fe914b1e4f384" + }, + { + "name": "rust-1.scip", + "sha256": "1b59754bd055a8022cf6c803a0fb3c2412eecb93ff5c07070f2d18994d7aecbd" + }, + { + "name": "shopify-api-ruby-1.scip", + "sha256": "a4f6543a3ab798ebd4e0a75818d3de8a818a01af68d12aa1e8d210af66736f44" + }, + { + "name": "typescript-1.scip", + "sha256": "0132ed92a82f0a41cf4378582538139917e6100f3cf5095c8a1168e634c4041f" + } + ] +} diff --git a/docs/scip.md b/docs/scip.md index 5c603fc8..6b0bd32c 100644 --- a/docs/scip.md +++ b/docs/scip.md @@ -5,11 +5,11 @@ ### Descriptor -| Name | Type | Description | -| ----------------- | ------ | ----------- | +| Name | Type | Description | +| ----------------- | ------ | ----------------------------------------------------------------------------------------------------------------- | | **name** | string | | **disambiguator** | string | -| **suffix** | Suffix | +| **suffix** | Suffix | NOTE: If you add new fields here, make sure to update the prepareSlot() function responsible for parsing symbols. | #### Suffix diff --git a/go.mod b/go.mod index 37d14bb3..738b5f67 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/sourcegraph/scip -go 1.20 +go 1.22 require ( github.com/bufbuild/buf v1.25.0 @@ -12,10 +12,13 @@ require ( github.com/hexops/autogold/v2 v2.2.1 github.com/hexops/gotextdiff v1.0.3 github.com/hhatto/gocloc v0.4.2 + github.com/jedib0t/go-pretty/v6 v6.6.3 github.com/k0kubun/pp/v3 v3.1.0 github.com/montanaflynn/stats v0.7.1 github.com/pseudomuto/protoc-gen-doc v1.5.1 github.com/smacker/go-tree-sitter v0.0.0-20220209044044-0d3022e933c3 + github.com/sourcegraph/beaut v0.0.0-20240611013027-627e4c25335a + github.com/sourcegraph/conc v0.3.0 github.com/stretchr/testify v1.8.4 github.com/urfave/cli/v2 v2.25.7 golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1 @@ -73,6 +76,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.19 // indirect + github.com/mattn/go-runewidth v0.0.15 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/moby/term v0.5.0 // indirect github.com/morikuni/aec v1.0.0 // indirect @@ -85,7 +89,8 @@ require ( github.com/pkg/profile v1.7.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/pseudomuto/protokit v0.2.0 // indirect - github.com/rogpeppe/go-internal v1.10.0 // indirect + github.com/rivo/uniseg v0.2.0 // indirect + github.com/rogpeppe/go-internal v1.11.0 // indirect github.com/rs/cors v1.9.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sirupsen/logrus v1.9.3 // indirect @@ -107,8 +112,8 @@ require ( golang.org/x/mod v0.12.0 // indirect golang.org/x/net v0.14.0 // indirect golang.org/x/sync v0.3.0 // indirect - golang.org/x/sys v0.11.0 // indirect - golang.org/x/term v0.11.0 // indirect + golang.org/x/sys v0.21.0 // indirect + golang.org/x/term v0.17.0 // indirect golang.org/x/text v0.12.0 // indirect google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index 4ff5a35f..b885c763 100644 --- a/go.sum +++ b/go.sum @@ -25,6 +25,7 @@ github.com/aokoli/goutils v1.0.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o= +github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/bufbuild/buf v1.25.0 h1:HFxKrR8wFcZwrBInN50K/oJX/WOtPVq24rHb/ArjfBA= github.com/bufbuild/buf v1.25.0/go.mod h1:GCKZ5bAP6Ht4MF7KcfaGVgBEXGumwAz2hXjjLVxx8ZU= github.com/bufbuild/connect-go v1.9.0 h1:JIgAeNuFpo+SUPfU19Yt5TcWlznsN5Bv10/gI/6Pjoc= @@ -77,6 +78,7 @@ github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHH github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= +github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -144,6 +146,7 @@ github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22 github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= +github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/gofrs/uuid/v5 v5.0.0 h1:p544++a97kEL+svbcFbCQVM9KFu0Yo25UoISXGNNH9M= github.com/gofrs/uuid/v5 v5.0.0/go.mod h1:CDOjlDMVAtN56jqyRUZh58JT31Tiw7/oQyEXZV+9bD8= github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= @@ -232,8 +235,11 @@ github.com/iris-contrib/pongo2 v0.0.1/go.mod h1:Ssh+00+3GAZqSQb30AvBRNxBx7rf0Gqw github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw= github.com/jdxcode/netrc v0.0.0-20221124155335-4616370d1a84 h1:2uT3aivO7NVpUPGcQX7RbHijHMyWix/yCnIrCWc+5co= github.com/jdxcode/netrc v0.0.0-20221124155335-4616370d1a84/go.mod h1:Zi/ZFkEqFHTm7qkjyNJjaWH4LQA9LQhGJyF0lTYGpxw= +github.com/jedib0t/go-pretty/v6 v6.6.3 h1:nGqgS0tgIO1Hto47HSaaK4ac/I/Bu7usmdD3qvs0WvM= +github.com/jedib0t/go-pretty/v6 v6.6.3/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= +github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= @@ -292,6 +298,8 @@ github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/ github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= +github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/mediocregopher/mediocre-go-lib v0.0.0-20181029021733-cb65787f37ed/go.mod h1:dSsfyI2zABAdhcbvkXqgxOxrCsbYeHCPgrZkku60dSg= github.com/mediocregopher/radix/v3 v3.3.0/go.mod h1:EmfVyvspXz1uZEyPBMyGK+kjWiKQGvsUt6O3Pj+LDCQ= @@ -351,12 +359,15 @@ github.com/pseudomuto/protoc-gen-doc v1.5.1 h1:Ah259kcrio7Ix1Rhb6u8FCaOkzf9qRBqX github.com/pseudomuto/protoc-gen-doc v1.5.1/go.mod h1:XpMKYg6zkcpgfpCfQ8GcWBDRtRxOmMR5w7pz4Xo+dYM= github.com/pseudomuto/protokit v0.2.0 h1:hlnBDcy3YEDXH7kc9gV+NLaN0cDzhDvD1s7Y6FZ8RpM= github.com/pseudomuto/protokit v0.2.0/go.mod h1:2PdH30hxVHsup8KpBTOXTBeMVhJZVio3Q8ViKSAXT0Q= +github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/rs/cors v1.9.0 h1:l9HGsTsHJcvW14Nk7J9KFz8bzeAWXn3CG6bgt7LsrAE= github.com/rs/cors v1.9.0/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= @@ -375,6 +386,10 @@ github.com/smacker/go-tree-sitter v0.0.0-20220209044044-0d3022e933c3 h1:WrsSqod9 github.com/smacker/go-tree-sitter v0.0.0-20220209044044-0d3022e933c3/go.mod h1:EiUuVMUfLQj8Sul+S8aKWJwQy7FRYnJCO2EWzf8F5hk= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/sourcegraph/beaut v0.0.0-20240611013027-627e4c25335a h1:j/CQ27s679M9wRGBRJYyXGrfkYuQA6VMnD7R08mHD9c= +github.com/sourcegraph/beaut v0.0.0-20240611013027-627e4c25335a/go.mod h1:JG1sdvGTKWwe/oH3/3UKQ26vfcHIN//7fwEJhoqaBcM= +github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= +github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= @@ -440,12 +455,14 @@ go.opentelemetry.io/otel/metric v1.16.0/go.mod h1:QE47cpOmkwipPiefDwo2wDzwJrlfxx go.opentelemetry.io/otel/sdk v1.16.0 h1:Z1Ok1YsijYL0CSJpHt4cS3wDDh7p572grzNrBMiMWgE= go.opentelemetry.io/otel/sdk v1.16.0/go.mod h1:tMsIuKXuuIWPBAOrH+eHtvhTL+SntFtXF9QD68aP6p4= go.opentelemetry.io/otel/sdk/metric v0.39.0 h1:Kun8i1eYf48kHH83RucG93ffz0zGV1sh46FAScOTuDI= +go.opentelemetry.io/otel/sdk/metric v0.39.0/go.mod h1:piDIRgjcK7u0HCL5pCA4e74qpK/jk3NiUoAHATVAmiI= go.opentelemetry.io/otel/trace v1.16.0 h1:8JRpaObFoW0pxuVPapkgH8UhHQj+bJW8jJsCZEu5MQs= go.opentelemetry.io/otel/trace v1.16.0/go.mod h1:Yt9vYq1SdNz3xdjZZK7wcXv1qv2pwLkqr2QVwea0ef0= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= +go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= @@ -560,16 +577,18 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.11.0 h1:F9tnn/DA/Im8nCwm+fX+1/eBwi4qFjRT++MhtVC4ZX0= golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= +golang.org/x/term v0.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -583,6 +602,7 @@ golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac h1:7zkz7BUtwNFFqcowJ+RIgu2MaV/MapERkDIy+mwPyjs= +golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -646,6 +666,7 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= @@ -666,6 +687,7 @@ gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= +gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= mvdan.cc/gofumpt v0.4.0/go.mod h1:PljLOHDeZqgS8opHRKLzp2It2VBuSdteAgqUfzMTxlQ= diff --git a/scip.proto b/scip.proto index 17d6e2a6..59a05b7c 100644 --- a/scip.proto +++ b/scip.proto @@ -224,6 +224,8 @@ message Descriptor { string name = 1; string disambiguator = 2; Suffix suffix = 3; + // NOTE: If you add new fields here, make sure to update the prepareSlot() + // function responsible for parsing symbols. } // SymbolInformation defines metadata about a symbol, such as the symbol's