From 1346f268cbeeb582b2350a73bb1590625cd5b652 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93lafur=20P=C3=A1ll=20Geirsson?= Date: Tue, 30 May 2023 13:06:27 +0200 Subject: [PATCH] Add `SymbolInformation.signature_documentation` (#159) * Add `SymbolInformation.signature_documentation` Towards https://github.com/sourcegraph/scip/issues/154 Previously, SCIP clients had to parse markdown from the `SymbolInformation.documentation` field to display only the signature information of a symbol (for example, method parameters and return type). With the new `SymbolInformation.signature_documentation` field, indexers can now emit more structured information about the signature of a class/method including optional hyperlinks to the referenced symbols. * Made `signature_documentation` non-repeated --- bindings/go/scip/scip.pb.go | 658 +++++---- bindings/rust/src/generated/scip.rs | 2095 ++++++++++++++------------- bindings/typescript/scip.ts | 49 + docs/scip.md | 28 +- scip.proto | 24 +- 5 files changed, 1521 insertions(+), 1333 deletions(-) diff --git a/bindings/go/scip/scip.pb.go b/bindings/go/scip/scip.pb.go index 65a8cc43..a0bf18d3 100644 --- a/bindings/go/scip/scip.pb.go +++ b/bindings/go/scip/scip.pb.go @@ -1427,6 +1427,14 @@ type Document struct { // but have a reference and are defined by some other symbol (see // Relationship.is_definition). Symbols []*SymbolInformation `protobuf:"bytes,3,rep,name=symbols,proto3" json:"symbols,omitempty"` + // (optional) Text contents of the this document. Indexers are not expected to + // include the text by default. It's preferrable that clients read the text + // contents from the file system by resolving the absolute path from joining + // `Index.metadata.project_root` and `Document.relative_path`. This field was + // introduced to support `SymbolInformation.signature_documentation`, but it + // can be used for other purposes as well, for example testing or when working + // with virtual/in-memory documents. + Text string `protobuf:"bytes,5,opt,name=text,proto3" json:"text,omitempty"` } func (x *Document) Reset() { @@ -1489,6 +1497,13 @@ func (x *Document) GetSymbols() []*SymbolInformation { return nil } +func (x *Document) GetText() string { + if x != nil { + return x.Text + } + return "" +} + // Symbol is similar to a URI, it identifies a class, method, or a local // variable. `SymbolInformation` contains rich metadata about symbols such as // the docstring. @@ -1729,9 +1744,11 @@ type SymbolInformation struct { // The string must be formatted according to the grammar in `Symbol`. Symbol string `protobuf:"bytes,1,opt,name=symbol,proto3" json:"symbol,omitempty"` // (optional, but strongly recommended) The markdown-formatted documentation - // for this symbol. This field is repeated to allow different kinds of - // documentation. For example, it's nice to include both the signature of a - // method (parameters and return type) along with the accompanying docstring. + // for this symbol. Use `SymbolInformation.signature_documentation` to + // document the method/class/type signature of this symbol. + // Due to historical reasons, indexers may include signature documentation in + // this field by rendering markdown code blocks. New indexers should only + // include non-code documentation in this field, for example docstrings. Documentation []string `protobuf:"bytes,3,rep,name=documentation,proto3" json:"documentation,omitempty"` // (optional) Relationships to other symbols (e.g., implements, type definition). Relationships []*Relationship `protobuf:"bytes,4,rep,name=relationships,proto3" json:"relationships,omitempty"` @@ -1749,6 +1766,13 @@ type SymbolInformation struct { // - The symbol may encode names with special characters that should not be // displayed to the user. DisplayName string `protobuf:"bytes,6,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + // (optional) The signature of this symbol as it's displayed in API + // documentation or in hover tooltips. For example, a Java method that adds + // two numbers this would have `Document.language = "java"` and `Document.text + // = "void add(int a, int b)". The `language` and `text` fields are required + // while other fields such as `Documentation.occurrences` can be optionally + // included to support hyperlinking referenced symbols in the signature. + SignatureDocumentation *Document `protobuf:"bytes,7,opt,name=signature_documentation,json=signatureDocumentation,proto3" json:"signature_documentation,omitempty"` } func (x *SymbolInformation) Reset() { @@ -1818,6 +1842,13 @@ func (x *SymbolInformation) GetDisplayName() string { return "" } +func (x *SymbolInformation) GetSignatureDocumentation() *Document { + if x != nil { + return x.SignatureDocumentation + } + return nil +} + type Relationship struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2236,7 +2267,7 @@ var file_scip_proto_rawDesc = []byte{ 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xb2, 0x01, 0x0a, 0x08, 0x44, + 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xc6, 0x01, 0x0a, 0x08, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, @@ -2247,303 +2278,309 @@ var file_scip_proto_rawDesc = []byte{ 0x0b, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x63, 0x69, 0x70, 0x2e, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x22, - 0x7d, 0x0a, 0x06, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, - 0x65, 0x12, 0x27, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, 0x63, 0x69, 0x70, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x32, 0x0a, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x10, 0x2e, 0x73, 0x63, 0x69, 0x70, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, - 0x72, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x51, - 0x0a, 0x07, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x22, 0x9f, 0x02, 0x0a, 0x0a, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x61, 0x6d, 0x62, 0x69, 0x67, - 0x75, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x69, 0x73, - 0x61, 0x6d, 0x62, 0x69, 0x67, 0x75, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x75, - 0x66, 0x66, 0x69, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x73, 0x63, 0x69, - 0x70, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x53, 0x75, 0x66, - 0x66, 0x69, 0x78, 0x52, 0x06, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x22, 0xa5, 0x01, 0x0a, 0x06, - 0x53, 0x75, 0x66, 0x66, 0x69, 0x78, 0x12, 0x15, 0x0a, 0x11, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x69, 0x66, 0x69, 0x65, 0x64, 0x53, 0x75, 0x66, 0x66, 0x69, 0x78, 0x10, 0x00, 0x12, 0x0d, 0x0a, - 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x07, - 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x08, 0x0a, - 0x04, 0x54, 0x79, 0x70, 0x65, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x65, 0x72, 0x6d, 0x10, - 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x10, 0x04, 0x12, 0x11, 0x0a, - 0x0d, 0x54, 0x79, 0x70, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x10, 0x05, - 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x10, 0x06, 0x12, - 0x08, 0x0a, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x10, 0x07, 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x6f, 0x63, - 0x61, 0x6c, 0x10, 0x08, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x61, 0x63, 0x72, 0x6f, 0x10, 0x09, 0x1a, - 0x02, 0x10, 0x01, 0x22, 0xbd, 0x08, 0x0a, 0x11, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x49, 0x6e, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, - 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, - 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x0d, 0x72, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, - 0x2e, 0x73, 0x63, 0x69, 0x70, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, - 0x69, 0x70, 0x52, 0x0d, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, - 0x73, 0x12, 0x30, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x1c, 0x2e, 0x73, 0x63, 0x69, 0x70, 0x2e, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x49, 0x6e, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, - 0x69, 0x6e, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, - 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xda, 0x06, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, - 0x13, 0x0a, 0x0f, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x4b, 0x69, - 0x6e, 0x64, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x72, 0x72, 0x61, 0x79, 0x10, 0x01, 0x12, - 0x0d, 0x0a, 0x09, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x02, 0x12, 0x12, - 0x0a, 0x0e, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, - 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x10, - 0x04, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x78, 0x69, 0x6f, 0x6d, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, - 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x10, 0x06, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x6c, 0x61, - 0x73, 0x73, 0x10, 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, - 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x6f, - 0x72, 0x10, 0x09, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x61, 0x74, 0x61, 0x46, 0x61, 0x6d, 0x69, 0x6c, - 0x79, 0x10, 0x0a, 0x12, 0x08, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x10, 0x0b, 0x12, 0x0e, 0x0a, - 0x0a, 0x45, 0x6e, 0x75, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x10, 0x0c, 0x12, 0x09, 0x0a, - 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10, 0x0d, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x61, 0x63, 0x74, - 0x10, 0x0e, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x10, 0x0f, 0x12, 0x08, 0x0a, - 0x04, 0x46, 0x69, 0x6c, 0x65, 0x10, 0x10, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x75, 0x6e, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x10, 0x11, 0x12, 0x0a, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x74, 0x65, 0x72, 0x10, - 0x12, 0x12, 0x0b, 0x0a, 0x07, 0x47, 0x72, 0x61, 0x6d, 0x6d, 0x61, 0x72, 0x10, 0x13, 0x12, 0x0c, - 0x0a, 0x08, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x10, 0x14, 0x12, 0x0d, 0x0a, 0x09, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x10, 0x15, 0x12, 0x07, 0x0a, 0x03, 0x4b, - 0x65, 0x79, 0x10, 0x16, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x61, 0x6e, 0x67, 0x10, 0x17, 0x12, 0x09, - 0x0a, 0x05, 0x4c, 0x65, 0x6d, 0x6d, 0x61, 0x10, 0x18, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x61, 0x63, - 0x72, 0x6f, 0x10, 0x19, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x10, 0x1a, - 0x12, 0x12, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x72, 0x10, 0x1b, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x10, - 0x1c, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x10, 0x1d, 0x12, 0x0d, 0x0a, - 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x10, 0x1e, 0x12, 0x08, 0x0a, 0x04, - 0x4e, 0x75, 0x6c, 0x6c, 0x10, 0x1f, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x10, 0x20, 0x12, 0x0a, 0x0a, 0x06, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x10, 0x21, 0x12, 0x0c, - 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x10, 0x22, 0x12, 0x0b, 0x0a, 0x07, - 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x10, 0x23, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x10, 0x24, 0x12, 0x0d, 0x0a, 0x09, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x10, 0x25, 0x12, 0x12, 0x0a, 0x0e, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x10, 0x26, 0x12, - 0x0b, 0x0a, 0x07, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x10, 0x27, 0x12, 0x0d, 0x0a, 0x09, - 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x10, 0x28, 0x12, 0x0c, 0x0a, 0x08, 0x50, - 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x10, 0x29, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x10, 0x2a, 0x12, 0x0f, 0x0a, 0x0b, 0x51, 0x75, 0x61, 0x73, 0x69, - 0x71, 0x75, 0x6f, 0x74, 0x65, 0x72, 0x10, 0x2b, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x65, 0x6c, 0x66, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x10, 0x2c, 0x12, 0x0a, 0x0a, 0x06, 0x53, - 0x65, 0x74, 0x74, 0x65, 0x72, 0x10, 0x2d, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x10, 0x2e, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x10, 0x2f, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x10, - 0x30, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x10, 0x31, 0x12, 0x0a, 0x0a, - 0x06, 0x54, 0x61, 0x63, 0x74, 0x69, 0x63, 0x10, 0x32, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x68, 0x65, - 0x6f, 0x72, 0x65, 0x6d, 0x10, 0x33, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x68, 0x69, 0x73, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x10, 0x34, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x72, 0x61, - 0x69, 0x74, 0x10, 0x35, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x10, 0x36, 0x12, 0x0d, - 0x0a, 0x09, 0x54, 0x79, 0x70, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x10, 0x37, 0x12, 0x0d, 0x0a, - 0x09, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x10, 0x38, 0x12, 0x0e, 0x0a, 0x0a, - 0x54, 0x79, 0x70, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x10, 0x39, 0x12, 0x11, 0x0a, 0x0d, - 0x54, 0x79, 0x70, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x10, 0x3a, 0x12, - 0x09, 0x0a, 0x05, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x10, 0x3b, 0x12, 0x09, 0x0a, 0x05, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x10, 0x3c, 0x12, 0x0c, 0x0a, 0x08, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x10, 0x3d, 0x22, 0xc9, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x68, 0x69, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x21, 0x0a, 0x0c, - 0x69, 0x73, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, - 0x2b, 0x0a, 0x11, 0x69, 0x73, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x73, 0x49, 0x6d, - 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x12, - 0x69, 0x73, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x73, 0x54, 0x79, 0x70, 0x65, - 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x73, - 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0c, 0x69, 0x73, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0xa4, 0x02, 0x0a, 0x0a, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x72, - 0x61, 0x6e, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x21, 0x0a, 0x0c, - 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0b, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, - 0x35, 0x0a, 0x16, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x64, 0x6f, 0x63, 0x75, - 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x15, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0b, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, - 0x5f, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x73, 0x63, - 0x69, 0x70, 0x2e, 0x53, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x0a, 0x73, - 0x79, 0x6e, 0x74, 0x61, 0x78, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x32, 0x0a, 0x0b, 0x64, 0x69, 0x61, - 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, - 0x2e, 0x73, 0x63, 0x69, 0x70, 0x2e, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, - 0x52, 0x0b, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x27, 0x0a, - 0x0f, 0x65, 0x6e, 0x63, 0x6c, 0x6f, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0e, 0x65, 0x6e, 0x63, 0x6c, 0x6f, 0x73, 0x69, 0x6e, - 0x67, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x22, 0xa7, 0x01, 0x0a, 0x0a, 0x44, 0x69, 0x61, 0x67, 0x6e, - 0x6f, 0x73, 0x74, 0x69, 0x63, 0x12, 0x2a, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x73, 0x63, 0x69, 0x70, 0x2e, 0x53, - 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, - 0x79, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x73, 0x63, 0x69, 0x70, 0x2e, 0x44, 0x69, 0x61, - 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, - 0x2a, 0x31, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x1a, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x10, 0x00, 0x2a, 0x40, 0x0a, 0x0c, 0x54, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, - 0x69, 0x6e, 0x67, 0x12, 0x1b, 0x0a, 0x17, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x00, - 0x12, 0x08, 0x0a, 0x04, 0x55, 0x54, 0x46, 0x38, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x55, 0x54, - 0x46, 0x31, 0x36, 0x10, 0x02, 0x2a, 0x7d, 0x0a, 0x0a, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x52, - 0x6f, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x52, 0x6f, 0x6c, 0x65, 0x10, 0x00, 0x12, 0x0e, - 0x0a, 0x0a, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x01, 0x12, 0x0a, - 0x0a, 0x06, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x57, 0x72, - 0x69, 0x74, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x52, - 0x65, 0x61, 0x64, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x08, 0x12, 0x0d, 0x0a, 0x09, 0x47, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x10, 0x10, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x65, - 0x73, 0x74, 0x10, 0x20, 0x2a, 0xea, 0x06, 0x0a, 0x0a, 0x53, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x4b, - 0x69, 0x6e, 0x64, 0x12, 0x19, 0x0a, 0x15, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x53, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x4b, 0x69, 0x6e, 0x64, 0x10, 0x00, 0x12, 0x0b, - 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x50, - 0x75, 0x6e, 0x63, 0x74, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x65, 0x72, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x75, 0x6e, 0x63, 0x74, 0x75, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x10, 0x03, 0x12, 0x0b, 0x0a, - 0x07, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x10, 0x04, 0x12, 0x19, 0x0a, 0x11, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x10, - 0x04, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x10, 0x05, 0x12, 0x0e, 0x0a, - 0x0a, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x10, 0x06, 0x12, 0x15, 0x0a, - 0x11, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x75, 0x69, 0x6c, 0x74, - 0x69, 0x6e, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x4e, 0x75, 0x6c, 0x6c, 0x10, 0x08, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x10, 0x09, - 0x12, 0x1b, 0x0a, 0x17, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4d, 0x75, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x10, 0x0a, 0x12, 0x17, 0x0a, - 0x13, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x65, 0x74, 0x65, 0x72, 0x10, 0x0b, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x10, 0x0c, 0x12, 0x16, 0x0a, 0x12, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x65, - 0x64, 0x10, 0x0d, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x10, 0x0e, 0x12, 0x18, 0x0a, 0x10, - 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, - 0x10, 0x0e, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x0f, 0x12, 0x20, - 0x0a, 0x1c, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x46, 0x75, 0x6e, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x10, - 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4d, 0x61, - 0x63, 0x72, 0x6f, 0x10, 0x11, 0x12, 0x1d, 0x0a, 0x19, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x4d, 0x61, 0x63, 0x72, 0x6f, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x10, 0x12, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x10, 0x13, 0x12, 0x19, 0x0a, 0x15, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x54, 0x79, 0x70, - 0x65, 0x10, 0x14, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x10, 0x15, 0x12, 0x0f, 0x0a, 0x0b, - 0x52, 0x65, 0x67, 0x65, 0x78, 0x45, 0x73, 0x63, 0x61, 0x70, 0x65, 0x10, 0x16, 0x12, 0x11, 0x0a, - 0x0d, 0x52, 0x65, 0x67, 0x65, 0x78, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x10, 0x17, - 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x65, 0x67, 0x65, 0x78, 0x57, 0x69, 0x6c, 0x64, 0x63, 0x61, 0x72, - 0x64, 0x10, 0x18, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x44, 0x65, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x65, 0x72, 0x10, 0x19, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x65, 0x67, 0x65, 0x78, - 0x4a, 0x6f, 0x69, 0x6e, 0x10, 0x1a, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x10, 0x1b, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x45, 0x73, 0x63, 0x61, 0x70, 0x65, - 0x10, 0x1c, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x74, 0x65, - 0x72, 0x61, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x10, 0x1d, 0x12, 0x14, 0x0a, 0x10, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4b, 0x65, 0x79, - 0x10, 0x1e, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x4c, - 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x10, 0x1f, 0x12, 0x12, 0x0a, 0x0e, 0x4e, 0x75, 0x6d, 0x65, - 0x72, 0x69, 0x63, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x10, 0x20, 0x12, 0x12, 0x0a, 0x0e, - 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x10, 0x21, - 0x12, 0x07, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x10, 0x22, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x61, 0x67, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x10, 0x23, 0x12, 0x10, 0x0a, 0x0c, 0x54, - 0x61, 0x67, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x10, 0x24, 0x1a, 0x02, 0x10, - 0x01, 0x2a, 0x56, 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x17, 0x0a, - 0x13, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x53, 0x65, 0x76, 0x65, - 0x72, 0x69, 0x74, 0x79, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, - 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x10, 0x02, 0x12, 0x0f, - 0x0a, 0x0b, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x03, 0x12, - 0x08, 0x0a, 0x04, 0x48, 0x69, 0x6e, 0x74, 0x10, 0x04, 0x2a, 0x4e, 0x0a, 0x0d, 0x44, 0x69, 0x61, - 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x1c, 0x0a, 0x18, 0x55, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, - 0x74, 0x69, 0x63, 0x54, 0x61, 0x67, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x6e, 0x6e, 0x65, - 0x63, 0x65, 0x73, 0x73, 0x61, 0x72, 0x79, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x65, 0x70, - 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x10, 0x02, 0x2a, 0xe0, 0x08, 0x0a, 0x08, 0x4c, 0x61, - 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, - 0x69, 0x66, 0x69, 0x65, 0x64, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x10, 0x00, 0x12, - 0x08, 0x0a, 0x04, 0x41, 0x42, 0x41, 0x50, 0x10, 0x3c, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x50, 0x4c, - 0x10, 0x31, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x64, 0x61, 0x10, 0x27, 0x12, 0x08, 0x0a, 0x04, 0x41, - 0x67, 0x64, 0x61, 0x10, 0x2d, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x73, 0x63, 0x69, 0x69, 0x44, 0x6f, - 0x63, 0x10, 0x56, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x79, 0x10, - 0x3a, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x77, 0x6b, 0x10, 0x42, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x61, - 0x74, 0x10, 0x44, 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x69, 0x62, 0x54, 0x65, 0x58, 0x10, 0x51, 0x12, - 0x05, 0x0a, 0x01, 0x43, 0x10, 0x22, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x4f, 0x42, 0x4f, 0x4c, 0x10, - 0x3b, 0x12, 0x07, 0x0a, 0x03, 0x43, 0x50, 0x50, 0x10, 0x23, 0x12, 0x07, 0x0a, 0x03, 0x43, 0x53, - 0x53, 0x10, 0x1a, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x53, 0x68, 0x61, 0x72, 0x70, 0x10, 0x01, 0x12, - 0x0b, 0x0a, 0x07, 0x43, 0x6c, 0x6f, 0x6a, 0x75, 0x72, 0x65, 0x10, 0x08, 0x12, 0x10, 0x0a, 0x0c, - 0x43, 0x6f, 0x66, 0x66, 0x65, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x10, 0x15, 0x12, 0x0e, - 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x70, 0x10, 0x09, 0x12, 0x07, - 0x0a, 0x03, 0x43, 0x6f, 0x71, 0x10, 0x2f, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x61, 0x72, 0x74, 0x10, - 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x70, 0x68, 0x69, 0x10, 0x39, 0x12, 0x08, 0x0a, - 0x04, 0x44, 0x69, 0x66, 0x66, 0x10, 0x58, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x6f, 0x63, 0x6b, 0x65, - 0x72, 0x66, 0x69, 0x6c, 0x65, 0x10, 0x50, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x79, 0x61, 0x6c, 0x6f, - 0x67, 0x10, 0x32, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x6c, 0x69, 0x78, 0x69, 0x72, 0x10, 0x11, 0x12, - 0x0a, 0x0a, 0x06, 0x45, 0x72, 0x6c, 0x61, 0x6e, 0x67, 0x10, 0x12, 0x12, 0x0a, 0x0a, 0x06, 0x46, - 0x53, 0x68, 0x61, 0x72, 0x70, 0x10, 0x2a, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x69, 0x73, 0x68, 0x10, - 0x41, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x6c, 0x6f, 0x77, 0x10, 0x18, 0x12, 0x0b, 0x0a, 0x07, 0x46, - 0x6f, 0x72, 0x74, 0x72, 0x61, 0x6e, 0x10, 0x38, 0x12, 0x0e, 0x0a, 0x0a, 0x47, 0x69, 0x74, 0x5f, - 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x10, 0x5b, 0x12, 0x0e, 0x0a, 0x0a, 0x47, 0x69, 0x74, 0x5f, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x59, 0x12, 0x0e, 0x0a, 0x0a, 0x47, 0x69, 0x74, 0x5f, - 0x52, 0x65, 0x62, 0x61, 0x73, 0x65, 0x10, 0x5c, 0x12, 0x06, 0x0a, 0x02, 0x47, 0x6f, 0x10, 0x21, - 0x12, 0x0a, 0x0a, 0x06, 0x47, 0x72, 0x6f, 0x6f, 0x76, 0x79, 0x10, 0x07, 0x12, 0x08, 0x0a, 0x04, - 0x48, 0x54, 0x4d, 0x4c, 0x10, 0x1e, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x61, 0x63, 0x6b, 0x10, 0x14, - 0x12, 0x0e, 0x0a, 0x0a, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x62, 0x61, 0x72, 0x73, 0x10, 0x5a, - 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x61, 0x73, 0x6b, 0x65, 0x6c, 0x6c, 0x10, 0x2c, 0x12, 0x09, 0x0a, - 0x05, 0x49, 0x64, 0x72, 0x69, 0x73, 0x10, 0x2e, 0x12, 0x07, 0x0a, 0x03, 0x49, 0x6e, 0x69, 0x10, - 0x48, 0x12, 0x05, 0x0a, 0x01, 0x4a, 0x10, 0x33, 0x12, 0x08, 0x0a, 0x04, 0x4a, 0x53, 0x4f, 0x4e, - 0x10, 0x4b, 0x12, 0x08, 0x0a, 0x04, 0x4a, 0x61, 0x76, 0x61, 0x10, 0x06, 0x12, 0x0e, 0x0a, 0x0a, - 0x4a, 0x61, 0x76, 0x61, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x10, 0x16, 0x12, 0x13, 0x0a, 0x0f, - 0x4a, 0x61, 0x76, 0x61, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x61, 0x63, 0x74, 0x10, - 0x5d, 0x12, 0x0b, 0x0a, 0x07, 0x4a, 0x73, 0x6f, 0x6e, 0x6e, 0x65, 0x74, 0x10, 0x4c, 0x12, 0x09, - 0x0a, 0x05, 0x4a, 0x75, 0x6c, 0x69, 0x61, 0x10, 0x37, 0x12, 0x0a, 0x0a, 0x06, 0x4b, 0x6f, 0x74, - 0x6c, 0x69, 0x6e, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x61, 0x54, 0x65, 0x58, 0x10, 0x53, - 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x65, 0x61, 0x6e, 0x10, 0x30, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x65, - 0x73, 0x73, 0x10, 0x1b, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x75, 0x61, 0x10, 0x0c, 0x12, 0x0c, 0x0a, - 0x08, 0x4d, 0x61, 0x6b, 0x65, 0x66, 0x69, 0x6c, 0x65, 0x10, 0x4f, 0x12, 0x0c, 0x0a, 0x08, 0x4d, - 0x61, 0x72, 0x6b, 0x64, 0x6f, 0x77, 0x6e, 0x10, 0x54, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x61, 0x74, - 0x6c, 0x61, 0x62, 0x10, 0x34, 0x12, 0x07, 0x0a, 0x03, 0x4e, 0x69, 0x78, 0x10, 0x4d, 0x12, 0x09, - 0x0a, 0x05, 0x4f, 0x43, 0x61, 0x6d, 0x6c, 0x10, 0x29, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x43, 0x10, 0x24, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x43, 0x50, 0x50, 0x10, 0x25, 0x12, 0x07, 0x0a, - 0x03, 0x50, 0x48, 0x50, 0x10, 0x13, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x4c, 0x53, 0x51, 0x4c, 0x10, - 0x46, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x65, 0x72, 0x6c, 0x10, 0x0d, 0x12, 0x0e, 0x0a, 0x0a, 0x50, - 0x6f, 0x77, 0x65, 0x72, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x10, 0x43, 0x12, 0x0a, 0x0a, 0x06, 0x50, - 0x72, 0x6f, 0x6c, 0x6f, 0x67, 0x10, 0x47, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x79, 0x74, 0x68, 0x6f, - 0x6e, 0x10, 0x0f, 0x12, 0x05, 0x0a, 0x01, 0x52, 0x10, 0x36, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x10, 0x0b, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x61, 0x6b, 0x75, 0x10, 0x0e, - 0x12, 0x09, 0x0a, 0x05, 0x52, 0x61, 0x7a, 0x6f, 0x72, 0x10, 0x3e, 0x12, 0x08, 0x0a, 0x04, 0x52, - 0x65, 0x53, 0x54, 0x10, 0x55, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x75, 0x62, 0x79, 0x10, 0x10, 0x12, - 0x08, 0x0a, 0x04, 0x52, 0x75, 0x73, 0x74, 0x10, 0x28, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x41, 0x53, - 0x10, 0x3d, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x43, 0x53, 0x53, 0x10, 0x1d, 0x12, 0x07, 0x0a, 0x03, - 0x53, 0x4d, 0x4c, 0x10, 0x2b, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x51, 0x4c, 0x10, 0x45, 0x12, 0x08, - 0x0a, 0x04, 0x53, 0x61, 0x73, 0x73, 0x10, 0x1c, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x63, 0x61, 0x6c, - 0x61, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x10, 0x0a, 0x12, - 0x0f, 0x0a, 0x0b, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x10, 0x40, - 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x6b, 0x79, 0x6c, 0x61, 0x72, 0x6b, 0x10, 0x4e, 0x12, 0x09, 0x0a, - 0x05, 0x53, 0x77, 0x69, 0x66, 0x74, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x4f, 0x4d, 0x4c, - 0x10, 0x49, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x65, 0x58, 0x10, 0x52, 0x12, 0x0e, 0x0a, 0x0a, 0x54, - 0x79, 0x70, 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x10, 0x17, 0x12, 0x13, 0x0a, 0x0f, 0x54, - 0x79, 0x70, 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x61, 0x63, 0x74, 0x10, 0x5e, - 0x12, 0x0f, 0x0a, 0x0b, 0x56, 0x69, 0x73, 0x75, 0x61, 0x6c, 0x42, 0x61, 0x73, 0x69, 0x63, 0x10, - 0x3f, 0x12, 0x07, 0x0a, 0x03, 0x56, 0x75, 0x65, 0x10, 0x19, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x6f, - 0x6c, 0x66, 0x72, 0x61, 0x6d, 0x10, 0x35, 0x12, 0x07, 0x0a, 0x03, 0x58, 0x4d, 0x4c, 0x10, 0x1f, - 0x12, 0x07, 0x0a, 0x03, 0x58, 0x53, 0x4c, 0x10, 0x20, 0x12, 0x08, 0x0a, 0x04, 0x59, 0x41, 0x4d, - 0x4c, 0x10, 0x4a, 0x12, 0x07, 0x0a, 0x03, 0x5a, 0x69, 0x67, 0x10, 0x26, 0x42, 0x2f, 0x5a, 0x2d, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x73, 0x63, 0x69, 0x70, 0x2f, 0x62, 0x69, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x73, 0x63, 0x69, 0x70, 0x2f, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x73, 0x12, + 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, + 0x65, 0x78, 0x74, 0x22, 0x7d, 0x0a, 0x06, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, 0x63, 0x69, 0x70, 0x2e, 0x50, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x32, + 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x63, 0x69, 0x70, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, + 0x72, 0x73, 0x22, 0x51, 0x0a, 0x07, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x9f, 0x02, 0x0a, 0x0a, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x61, + 0x6d, 0x62, 0x69, 0x67, 0x75, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x64, 0x69, 0x73, 0x61, 0x6d, 0x62, 0x69, 0x67, 0x75, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2f, + 0x0a, 0x06, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, + 0x2e, 0x73, 0x63, 0x69, 0x70, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, + 0x2e, 0x53, 0x75, 0x66, 0x66, 0x69, 0x78, 0x52, 0x06, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x22, + 0xa5, 0x01, 0x0a, 0x06, 0x53, 0x75, 0x66, 0x66, 0x69, 0x78, 0x12, 0x15, 0x0a, 0x11, 0x55, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x53, 0x75, 0x66, 0x66, 0x69, 0x78, 0x10, + 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x10, 0x01, + 0x12, 0x0f, 0x0a, 0x07, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x10, 0x01, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x54, + 0x65, 0x72, 0x6d, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x10, + 0x04, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x79, 0x70, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x10, 0x05, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x10, 0x06, 0x12, 0x08, 0x0a, 0x04, 0x4d, 0x65, 0x74, 0x61, 0x10, 0x07, 0x12, 0x09, 0x0a, + 0x05, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x10, 0x08, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x61, 0x63, 0x72, + 0x6f, 0x10, 0x09, 0x1a, 0x02, 0x10, 0x01, 0x22, 0x86, 0x09, 0x0a, 0x11, 0x53, 0x79, 0x6d, 0x62, + 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, + 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x6f, + 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x0d, 0x72, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x63, 0x69, 0x70, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x52, 0x0d, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x68, 0x69, 0x70, 0x73, 0x12, 0x30, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x73, 0x63, 0x69, 0x70, 0x2e, 0x53, 0x79, 0x6d, 0x62, 0x6f, + 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4b, 0x69, 0x6e, + 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, + 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x47, 0x0a, 0x17, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x63, + 0x69, 0x70, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x16, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0xda, 0x06, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x13, 0x0a, 0x0f, + 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x4b, 0x69, 0x6e, 0x64, 0x10, + 0x00, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x72, 0x72, 0x61, 0x79, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, + 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x41, + 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x10, 0x03, 0x12, + 0x0d, 0x0a, 0x09, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x10, 0x04, 0x12, 0x09, + 0x0a, 0x05, 0x41, 0x78, 0x69, 0x6f, 0x6d, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x6f, 0x6f, + 0x6c, 0x65, 0x61, 0x6e, 0x10, 0x06, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x10, + 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x10, 0x08, 0x12, + 0x0f, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x6f, 0x72, 0x10, 0x09, + 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x61, 0x74, 0x61, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x10, 0x0a, + 0x12, 0x08, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x10, 0x0b, 0x12, 0x0e, 0x0a, 0x0a, 0x45, 0x6e, + 0x75, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x10, 0x0c, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x10, 0x0d, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x61, 0x63, 0x74, 0x10, 0x0e, 0x12, + 0x09, 0x0a, 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x10, 0x0f, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x69, + 0x6c, 0x65, 0x10, 0x10, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x10, 0x11, 0x12, 0x0a, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x74, 0x65, 0x72, 0x10, 0x12, 0x12, 0x0b, + 0x0a, 0x07, 0x47, 0x72, 0x61, 0x6d, 0x6d, 0x61, 0x72, 0x10, 0x13, 0x12, 0x0c, 0x0a, 0x08, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x10, 0x14, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x10, 0x15, 0x12, 0x07, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x10, + 0x16, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x61, 0x6e, 0x67, 0x10, 0x17, 0x12, 0x09, 0x0a, 0x05, 0x4c, + 0x65, 0x6d, 0x6d, 0x61, 0x10, 0x18, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x61, 0x63, 0x72, 0x6f, 0x10, + 0x19, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x10, 0x1a, 0x12, 0x12, 0x0a, + 0x0e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x10, + 0x1b, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x10, 0x1c, 0x12, 0x0a, + 0x0a, 0x06, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x10, 0x1d, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x10, 0x1e, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x75, 0x6c, + 0x6c, 0x10, 0x1f, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x10, 0x20, 0x12, + 0x0a, 0x0a, 0x06, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x10, 0x21, 0x12, 0x0c, 0x0a, 0x08, 0x4f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x10, 0x22, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x10, 0x23, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, + 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x10, 0x24, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x10, 0x25, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x10, 0x26, 0x12, 0x0b, 0x0a, 0x07, + 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x10, 0x27, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x72, 0x65, + 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x10, 0x28, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, + 0x65, 0x72, 0x74, 0x79, 0x10, 0x29, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x10, 0x2a, 0x12, 0x0f, 0x0a, 0x0b, 0x51, 0x75, 0x61, 0x73, 0x69, 0x71, 0x75, 0x6f, + 0x74, 0x65, 0x72, 0x10, 0x2b, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x65, 0x6c, 0x66, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x10, 0x2c, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x65, 0x74, 0x74, + 0x65, 0x72, 0x10, 0x2d, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x10, 0x2e, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x10, 0x2f, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x10, 0x30, 0x12, 0x0a, + 0x0a, 0x06, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x10, 0x31, 0x12, 0x0a, 0x0a, 0x06, 0x54, 0x61, + 0x63, 0x74, 0x69, 0x63, 0x10, 0x32, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x68, 0x65, 0x6f, 0x72, 0x65, + 0x6d, 0x10, 0x33, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x68, 0x69, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x10, 0x34, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x72, 0x61, 0x69, 0x74, 0x10, + 0x35, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x10, 0x36, 0x12, 0x0d, 0x0a, 0x09, 0x54, + 0x79, 0x70, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x10, 0x37, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x79, + 0x70, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x10, 0x38, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x79, 0x70, + 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x10, 0x39, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x79, 0x70, + 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x10, 0x3a, 0x12, 0x09, 0x0a, 0x05, + 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x10, 0x3b, 0x12, 0x09, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x10, 0x3c, 0x12, 0x0c, 0x0a, 0x08, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x10, 0x3d, + 0x22, 0xc9, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, + 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, + 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0b, 0x69, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x11, + 0x69, 0x73, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x73, 0x49, 0x6d, 0x70, 0x6c, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x69, 0x73, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x73, 0x54, 0x79, 0x70, 0x65, 0x44, 0x65, 0x66, + 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x73, 0x5f, 0x64, 0x65, + 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, + 0x69, 0x73, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa4, 0x02, 0x0a, + 0x0a, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, + 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x79, 0x6d, + 0x62, 0x6f, 0x6c, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0b, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x16, + 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x6f, 0x76, + 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x0b, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x5f, 0x6b, 0x69, + 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x73, 0x63, 0x69, 0x70, 0x2e, + 0x53, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x0a, 0x73, 0x79, 0x6e, 0x74, + 0x61, 0x78, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x32, 0x0a, 0x0b, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, + 0x73, 0x74, 0x69, 0x63, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x63, + 0x69, 0x70, 0x2e, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x52, 0x0b, 0x64, + 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x6e, + 0x63, 0x6c, 0x6f, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x05, 0x52, 0x0e, 0x65, 0x6e, 0x63, 0x6c, 0x6f, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x61, + 0x6e, 0x67, 0x65, 0x22, 0xa7, 0x01, 0x0a, 0x0a, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, + 0x69, 0x63, 0x12, 0x2a, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x73, 0x63, 0x69, 0x70, 0x2e, 0x53, 0x65, 0x76, 0x65, + 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x12, + 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, + 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x73, 0x63, 0x69, 0x70, 0x2e, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, + 0x73, 0x74, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x2a, 0x31, 0x0a, + 0x0f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x1e, 0x0a, 0x1a, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x10, 0x00, + 0x2a, 0x40, 0x0a, 0x0c, 0x54, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, + 0x12, 0x1b, 0x0a, 0x17, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x54, + 0x65, 0x78, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, 0x08, 0x0a, + 0x04, 0x55, 0x54, 0x46, 0x38, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x55, 0x54, 0x46, 0x31, 0x36, + 0x10, 0x02, 0x2a, 0x7d, 0x0a, 0x0a, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x52, 0x6f, 0x6c, 0x65, + 0x12, 0x19, 0x0a, 0x15, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x53, + 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x52, 0x6f, 0x6c, 0x65, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x44, + 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x49, + 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x57, 0x72, 0x69, 0x74, 0x65, + 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x65, 0x61, 0x64, + 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x08, 0x12, 0x0d, 0x0a, 0x09, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x64, 0x10, 0x10, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x65, 0x73, 0x74, 0x10, + 0x20, 0x2a, 0xea, 0x06, 0x0a, 0x0a, 0x53, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x4b, 0x69, 0x6e, 0x64, + 0x12, 0x19, 0x0a, 0x15, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x53, + 0x79, 0x6e, 0x74, 0x61, 0x78, 0x4b, 0x69, 0x6e, 0x64, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x43, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x75, 0x6e, 0x63, + 0x74, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, + 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x75, 0x6e, 0x63, 0x74, 0x75, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x4b, 0x65, + 0x79, 0x77, 0x6f, 0x72, 0x64, 0x10, 0x04, 0x12, 0x19, 0x0a, 0x11, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x10, 0x04, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x10, + 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4e, + 0x75, 0x6c, 0x6c, 0x10, 0x08, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x10, 0x09, 0x12, 0x1b, 0x0a, + 0x17, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4d, 0x75, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x10, 0x0a, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x10, 0x0b, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x10, 0x0c, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x0d, + 0x12, 0x17, 0x0a, 0x13, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x10, 0x0e, 0x12, 0x18, 0x0a, 0x10, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x10, 0x0e, 0x1a, + 0x02, 0x08, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x0f, 0x12, 0x20, 0x0a, 0x1c, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x10, 0x12, 0x13, 0x0a, + 0x0f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4d, 0x61, 0x63, 0x72, 0x6f, + 0x10, 0x11, 0x12, 0x1d, 0x0a, 0x19, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x4d, 0x61, 0x63, 0x72, 0x6f, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x10, + 0x12, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x54, + 0x79, 0x70, 0x65, 0x10, 0x13, 0x12, 0x19, 0x0a, 0x15, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x42, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x10, 0x14, + 0x12, 0x17, 0x0a, 0x13, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x10, 0x15, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x65, 0x67, + 0x65, 0x78, 0x45, 0x73, 0x63, 0x61, 0x70, 0x65, 0x10, 0x16, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x65, + 0x67, 0x65, 0x78, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x10, 0x17, 0x12, 0x11, 0x0a, + 0x0d, 0x52, 0x65, 0x67, 0x65, 0x78, 0x57, 0x69, 0x6c, 0x64, 0x63, 0x61, 0x72, 0x64, 0x10, 0x18, + 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x65, 0x72, 0x10, 0x19, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x65, 0x67, 0x65, 0x78, 0x4a, 0x6f, 0x69, + 0x6e, 0x10, 0x1a, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x74, + 0x65, 0x72, 0x61, 0x6c, 0x10, 0x1b, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x45, 0x73, 0x63, 0x61, 0x70, 0x65, 0x10, 0x1c, 0x12, + 0x18, 0x0a, 0x14, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, + 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x10, 0x1d, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4b, 0x65, 0x79, 0x10, 0x1e, 0x12, + 0x14, 0x0a, 0x10, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x74, 0x65, + 0x72, 0x61, 0x6c, 0x10, 0x1f, 0x12, 0x12, 0x0a, 0x0e, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, + 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x10, 0x20, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x6f, 0x6f, + 0x6c, 0x65, 0x61, 0x6e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x10, 0x21, 0x12, 0x07, 0x0a, + 0x03, 0x54, 0x61, 0x67, 0x10, 0x22, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x61, 0x67, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x10, 0x23, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x61, 0x67, 0x44, + 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x10, 0x24, 0x1a, 0x02, 0x10, 0x01, 0x2a, 0x56, + 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x6e, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, + 0x79, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x0b, + 0x0a, 0x07, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x49, + 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, + 0x48, 0x69, 0x6e, 0x74, 0x10, 0x04, 0x2a, 0x4e, 0x0a, 0x0d, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, + 0x73, 0x74, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x1c, 0x0a, 0x18, 0x55, 0x6e, 0x73, 0x70, 0x65, + 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, + 0x54, 0x61, 0x67, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x6e, 0x6e, 0x65, 0x63, 0x65, 0x73, + 0x73, 0x61, 0x72, 0x79, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, + 0x61, 0x74, 0x65, 0x64, 0x10, 0x02, 0x2a, 0xe0, 0x08, 0x0a, 0x08, 0x4c, 0x61, 0x6e, 0x67, 0x75, + 0x61, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x65, 0x64, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, + 0x41, 0x42, 0x41, 0x50, 0x10, 0x3c, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x50, 0x4c, 0x10, 0x31, 0x12, + 0x07, 0x0a, 0x03, 0x41, 0x64, 0x61, 0x10, 0x27, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x67, 0x64, 0x61, + 0x10, 0x2d, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x73, 0x63, 0x69, 0x69, 0x44, 0x6f, 0x63, 0x10, 0x56, + 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x79, 0x10, 0x3a, 0x12, 0x07, + 0x0a, 0x03, 0x41, 0x77, 0x6b, 0x10, 0x42, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x61, 0x74, 0x10, 0x44, + 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x69, 0x62, 0x54, 0x65, 0x58, 0x10, 0x51, 0x12, 0x05, 0x0a, 0x01, + 0x43, 0x10, 0x22, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x4f, 0x42, 0x4f, 0x4c, 0x10, 0x3b, 0x12, 0x07, + 0x0a, 0x03, 0x43, 0x50, 0x50, 0x10, 0x23, 0x12, 0x07, 0x0a, 0x03, 0x43, 0x53, 0x53, 0x10, 0x1a, + 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x53, 0x68, 0x61, 0x72, 0x70, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, + 0x43, 0x6c, 0x6f, 0x6a, 0x75, 0x72, 0x65, 0x10, 0x08, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x6f, 0x66, + 0x66, 0x65, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x10, 0x15, 0x12, 0x0e, 0x0a, 0x0a, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x70, 0x10, 0x09, 0x12, 0x07, 0x0a, 0x03, 0x43, + 0x6f, 0x71, 0x10, 0x2f, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x61, 0x72, 0x74, 0x10, 0x03, 0x12, 0x0a, + 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x70, 0x68, 0x69, 0x10, 0x39, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x69, + 0x66, 0x66, 0x10, 0x58, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, + 0x6c, 0x65, 0x10, 0x50, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x79, 0x61, 0x6c, 0x6f, 0x67, 0x10, 0x32, + 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x6c, 0x69, 0x78, 0x69, 0x72, 0x10, 0x11, 0x12, 0x0a, 0x0a, 0x06, + 0x45, 0x72, 0x6c, 0x61, 0x6e, 0x67, 0x10, 0x12, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x53, 0x68, 0x61, + 0x72, 0x70, 0x10, 0x2a, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x69, 0x73, 0x68, 0x10, 0x41, 0x12, 0x08, + 0x0a, 0x04, 0x46, 0x6c, 0x6f, 0x77, 0x10, 0x18, 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x6f, 0x72, 0x74, + 0x72, 0x61, 0x6e, 0x10, 0x38, 0x12, 0x0e, 0x0a, 0x0a, 0x47, 0x69, 0x74, 0x5f, 0x43, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x10, 0x5b, 0x12, 0x0e, 0x0a, 0x0a, 0x47, 0x69, 0x74, 0x5f, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x10, 0x59, 0x12, 0x0e, 0x0a, 0x0a, 0x47, 0x69, 0x74, 0x5f, 0x52, 0x65, 0x62, + 0x61, 0x73, 0x65, 0x10, 0x5c, 0x12, 0x06, 0x0a, 0x02, 0x47, 0x6f, 0x10, 0x21, 0x12, 0x0a, 0x0a, + 0x06, 0x47, 0x72, 0x6f, 0x6f, 0x76, 0x79, 0x10, 0x07, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x54, 0x4d, + 0x4c, 0x10, 0x1e, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x61, 0x63, 0x6b, 0x10, 0x14, 0x12, 0x0e, 0x0a, + 0x0a, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x62, 0x61, 0x72, 0x73, 0x10, 0x5a, 0x12, 0x0b, 0x0a, + 0x07, 0x48, 0x61, 0x73, 0x6b, 0x65, 0x6c, 0x6c, 0x10, 0x2c, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x64, + 0x72, 0x69, 0x73, 0x10, 0x2e, 0x12, 0x07, 0x0a, 0x03, 0x49, 0x6e, 0x69, 0x10, 0x48, 0x12, 0x05, + 0x0a, 0x01, 0x4a, 0x10, 0x33, 0x12, 0x08, 0x0a, 0x04, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x4b, 0x12, + 0x08, 0x0a, 0x04, 0x4a, 0x61, 0x76, 0x61, 0x10, 0x06, 0x12, 0x0e, 0x0a, 0x0a, 0x4a, 0x61, 0x76, + 0x61, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x10, 0x16, 0x12, 0x13, 0x0a, 0x0f, 0x4a, 0x61, 0x76, + 0x61, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x61, 0x63, 0x74, 0x10, 0x5d, 0x12, 0x0b, + 0x0a, 0x07, 0x4a, 0x73, 0x6f, 0x6e, 0x6e, 0x65, 0x74, 0x10, 0x4c, 0x12, 0x09, 0x0a, 0x05, 0x4a, + 0x75, 0x6c, 0x69, 0x61, 0x10, 0x37, 0x12, 0x0a, 0x0a, 0x06, 0x4b, 0x6f, 0x74, 0x6c, 0x69, 0x6e, + 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x61, 0x54, 0x65, 0x58, 0x10, 0x53, 0x12, 0x08, 0x0a, + 0x04, 0x4c, 0x65, 0x61, 0x6e, 0x10, 0x30, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x65, 0x73, 0x73, 0x10, + 0x1b, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x75, 0x61, 0x10, 0x0c, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x61, + 0x6b, 0x65, 0x66, 0x69, 0x6c, 0x65, 0x10, 0x4f, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x61, 0x72, 0x6b, + 0x64, 0x6f, 0x77, 0x6e, 0x10, 0x54, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x61, 0x74, 0x6c, 0x61, 0x62, + 0x10, 0x34, 0x12, 0x07, 0x0a, 0x03, 0x4e, 0x69, 0x78, 0x10, 0x4d, 0x12, 0x09, 0x0a, 0x05, 0x4f, + 0x43, 0x61, 0x6d, 0x6c, 0x10, 0x29, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x43, 0x10, 0x24, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x43, 0x50, 0x50, 0x10, 0x25, 0x12, 0x07, 0x0a, 0x03, 0x50, 0x48, + 0x50, 0x10, 0x13, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x4c, 0x53, 0x51, 0x4c, 0x10, 0x46, 0x12, 0x08, + 0x0a, 0x04, 0x50, 0x65, 0x72, 0x6c, 0x10, 0x0d, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x6f, 0x77, 0x65, + 0x72, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x10, 0x43, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x72, 0x6f, 0x6c, + 0x6f, 0x67, 0x10, 0x47, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x10, 0x0f, + 0x12, 0x05, 0x0a, 0x01, 0x52, 0x10, 0x36, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x10, 0x0b, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x61, 0x6b, 0x75, 0x10, 0x0e, 0x12, 0x09, 0x0a, + 0x05, 0x52, 0x61, 0x7a, 0x6f, 0x72, 0x10, 0x3e, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x65, 0x53, 0x54, + 0x10, 0x55, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x75, 0x62, 0x79, 0x10, 0x10, 0x12, 0x08, 0x0a, 0x04, + 0x52, 0x75, 0x73, 0x74, 0x10, 0x28, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x41, 0x53, 0x10, 0x3d, 0x12, + 0x08, 0x0a, 0x04, 0x53, 0x43, 0x53, 0x53, 0x10, 0x1d, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x4d, 0x4c, + 0x10, 0x2b, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x51, 0x4c, 0x10, 0x45, 0x12, 0x08, 0x0a, 0x04, 0x53, + 0x61, 0x73, 0x73, 0x10, 0x1c, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x10, 0x05, + 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x10, 0x0a, 0x12, 0x0f, 0x0a, 0x0b, + 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x10, 0x40, 0x12, 0x0b, 0x0a, + 0x07, 0x53, 0x6b, 0x79, 0x6c, 0x61, 0x72, 0x6b, 0x10, 0x4e, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x77, + 0x69, 0x66, 0x74, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x4f, 0x4d, 0x4c, 0x10, 0x49, 0x12, + 0x07, 0x0a, 0x03, 0x54, 0x65, 0x58, 0x10, 0x52, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x79, 0x70, 0x65, + 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x10, 0x17, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x79, 0x70, 0x65, + 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x61, 0x63, 0x74, 0x10, 0x5e, 0x12, 0x0f, 0x0a, + 0x0b, 0x56, 0x69, 0x73, 0x75, 0x61, 0x6c, 0x42, 0x61, 0x73, 0x69, 0x63, 0x10, 0x3f, 0x12, 0x07, + 0x0a, 0x03, 0x56, 0x75, 0x65, 0x10, 0x19, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x6f, 0x6c, 0x66, 0x72, + 0x61, 0x6d, 0x10, 0x35, 0x12, 0x07, 0x0a, 0x03, 0x58, 0x4d, 0x4c, 0x10, 0x1f, 0x12, 0x07, 0x0a, + 0x03, 0x58, 0x53, 0x4c, 0x10, 0x20, 0x12, 0x08, 0x0a, 0x04, 0x59, 0x41, 0x4d, 0x4c, 0x10, 0x4a, + 0x12, 0x07, 0x0a, 0x03, 0x5a, 0x69, 0x67, 0x10, 0x26, 0x42, 0x2f, 0x5a, 0x2d, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x67, 0x72, + 0x61, 0x70, 0x68, 0x2f, 0x73, 0x63, 0x69, 0x70, 0x2f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x73, 0x63, 0x69, 0x70, 0x2f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -2596,15 +2633,16 @@ var file_scip_proto_depIdxs = []int32{ 7, // 10: scip.Descriptor.suffix:type_name -> scip.Descriptor.Suffix 17, // 11: scip.SymbolInformation.relationships:type_name -> scip.Relationship 8, // 12: scip.SymbolInformation.kind:type_name -> scip.SymbolInformation.Kind - 3, // 13: scip.Occurrence.syntax_kind:type_name -> scip.SyntaxKind - 19, // 14: scip.Occurrence.diagnostics:type_name -> scip.Diagnostic - 4, // 15: scip.Diagnostic.severity:type_name -> scip.Severity - 5, // 16: scip.Diagnostic.tags:type_name -> scip.DiagnosticTag - 17, // [17:17] is the sub-list for method output_type - 17, // [17:17] is the sub-list for method input_type - 17, // [17:17] is the sub-list for extension type_name - 17, // [17:17] is the sub-list for extension extendee - 0, // [0:17] is the sub-list for field type_name + 12, // 13: scip.SymbolInformation.signature_documentation:type_name -> scip.Document + 3, // 14: scip.Occurrence.syntax_kind:type_name -> scip.SyntaxKind + 19, // 15: scip.Occurrence.diagnostics:type_name -> scip.Diagnostic + 4, // 16: scip.Diagnostic.severity:type_name -> scip.Severity + 5, // 17: scip.Diagnostic.tags:type_name -> scip.DiagnosticTag + 18, // [18:18] is the sub-list for method output_type + 18, // [18:18] is the sub-list for method input_type + 18, // [18:18] is the sub-list for extension type_name + 18, // [18:18] is the sub-list for extension extendee + 0, // [0:18] is the sub-list for field type_name } func init() { file_scip_proto_init() } diff --git a/bindings/rust/src/generated/scip.rs b/bindings/rust/src/generated/scip.rs index 8278d59e..cb2152d4 100644 --- a/bindings/rust/src/generated/scip.rs +++ b/bindings/rust/src/generated/scip.rs @@ -567,6 +567,15 @@ pub struct Document { /// Relationship.is_definition). // @@protoc_insertion_point(field:scip.Document.symbols) pub symbols: ::std::vec::Vec, + /// (optional) Text contents of the this document. Indexers are not expected to + /// include the text by default. It's preferrable that clients read the text + /// contents from the file system by resolving the absolute path from joining + /// `Index.metadata.project_root` and `Document.relative_path`. This field was + /// introduced to support `SymbolInformation.signature_documentation`, but it + /// can be used for other purposes as well, for example testing or when working + /// with virtual/in-memory documents. + // @@protoc_insertion_point(field:scip.Document.text) + pub text: ::std::string::String, // special fields // @@protoc_insertion_point(special_field:scip.Document.special_fields) pub special_fields: ::protobuf::SpecialFields, @@ -584,7 +593,7 @@ impl Document { } fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { - let mut fields = ::std::vec::Vec::with_capacity(4); + let mut fields = ::std::vec::Vec::with_capacity(5); let mut oneofs = ::std::vec::Vec::with_capacity(0); fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>( "language", @@ -606,6 +615,11 @@ impl Document { |m: &Document| { &m.symbols }, |m: &mut Document| { &mut m.symbols }, )); + fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>( + "text", + |m: &Document| { &m.text }, + |m: &mut Document| { &mut m.text }, + )); ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::( "Document", fields, @@ -636,6 +650,9 @@ impl ::protobuf::Message for Document { 26 => { self.symbols.push(is.read_message()?); }, + 42 => { + self.text = is.read_string()?; + }, tag => { ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?; }, @@ -662,6 +679,9 @@ impl ::protobuf::Message for Document { let len = value.compute_size(); my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len; }; + if !self.text.is_empty() { + my_size += ::protobuf::rt::string_size(5, &self.text); + } my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); self.special_fields.cached_size().set(my_size as u32); my_size @@ -680,6 +700,9 @@ impl ::protobuf::Message for Document { for v in &self.symbols { ::protobuf::rt::write_message_field_with_cached_size(3, v, os)?; }; + if !self.text.is_empty() { + os.write_string(5, &self.text)?; + } os.write_unknown_fields(self.special_fields.unknown_fields())?; ::std::result::Result::Ok(()) } @@ -701,6 +724,7 @@ impl ::protobuf::Message for Document { self.relative_path.clear(); self.occurrences.clear(); self.symbols.clear(); + self.text.clear(); self.special_fields.clear(); } @@ -710,6 +734,7 @@ impl ::protobuf::Message for Document { relative_path: ::std::string::String::new(), occurrences: ::std::vec::Vec::new(), symbols: ::std::vec::Vec::new(), + text: ::std::string::String::new(), special_fields: ::protobuf::SpecialFields::new(), }; &instance @@ -1389,9 +1414,11 @@ pub struct SymbolInformation { // @@protoc_insertion_point(field:scip.SymbolInformation.symbol) pub symbol: ::std::string::String, /// (optional, but strongly recommended) The markdown-formatted documentation - /// for this symbol. This field is repeated to allow different kinds of - /// documentation. For example, it's nice to include both the signature of a - /// method (parameters and return type) along with the accompanying docstring. + /// for this symbol. Use `SymbolInformation.signature_documentation` to + /// document the method/class/type signature of this symbol. + /// Due to historical reasons, indexers may include signature documentation in + /// this field by rendering markdown code blocks. New indexers should only + /// include non-code documentation in this field, for example docstrings. // @@protoc_insertion_point(field:scip.SymbolInformation.documentation) pub documentation: ::std::vec::Vec<::std::string::String>, /// (optional) Relationships to other symbols (e.g., implements, type definition). @@ -1413,6 +1440,14 @@ pub struct SymbolInformation { /// displayed to the user. // @@protoc_insertion_point(field:scip.SymbolInformation.display_name) pub display_name: ::std::string::String, + /// (optional) The signature of this symbol as it's displayed in API + /// documentation or in hover tooltips. For example, a Java method that adds + /// two numbers this would have `Document.language = "java"` and `Document.text + /// = "void add(int a, int b)". The `language` and `text` fields are required + /// while other fields such as `Documentation.occurrences` can be optionally + /// included to support hyperlinking referenced symbols in the signature. + // @@protoc_insertion_point(field:scip.SymbolInformation.signature_documentation) + pub signature_documentation: ::protobuf::MessageField, // special fields // @@protoc_insertion_point(special_field:scip.SymbolInformation.special_fields) pub special_fields: ::protobuf::SpecialFields, @@ -1430,7 +1465,7 @@ impl SymbolInformation { } fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { - let mut fields = ::std::vec::Vec::with_capacity(5); + let mut fields = ::std::vec::Vec::with_capacity(6); let mut oneofs = ::std::vec::Vec::with_capacity(0); fields.push(::protobuf::reflect::rt::v2::make_simpler_field_accessor::<_, _>( "symbol", @@ -1457,6 +1492,11 @@ impl SymbolInformation { |m: &SymbolInformation| { &m.display_name }, |m: &mut SymbolInformation| { &mut m.display_name }, )); + fields.push(::protobuf::reflect::rt::v2::make_message_field_accessor::<_, Document>( + "signature_documentation", + |m: &SymbolInformation| { &m.signature_documentation }, + |m: &mut SymbolInformation| { &mut m.signature_documentation }, + )); ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::( "SymbolInformation", fields, @@ -1490,6 +1530,9 @@ impl ::protobuf::Message for SymbolInformation { 50 => { self.display_name = is.read_string()?; }, + 58 => { + ::protobuf::rt::read_singular_message_into_field(is, &mut self.signature_documentation)?; + }, tag => { ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?; }, @@ -1518,6 +1561,10 @@ impl ::protobuf::Message for SymbolInformation { if !self.display_name.is_empty() { my_size += ::protobuf::rt::string_size(6, &self.display_name); } + if let Some(v) = self.signature_documentation.as_ref() { + let len = v.compute_size(); + my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len; + } my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); self.special_fields.cached_size().set(my_size as u32); my_size @@ -1539,6 +1586,9 @@ impl ::protobuf::Message for SymbolInformation { if !self.display_name.is_empty() { os.write_string(6, &self.display_name)?; } + if let Some(v) = self.signature_documentation.as_ref() { + ::protobuf::rt::write_message_field_with_cached_size(7, v, os)?; + } os.write_unknown_fields(self.special_fields.unknown_fields())?; ::std::result::Result::Ok(()) } @@ -1561,6 +1611,7 @@ impl ::protobuf::Message for SymbolInformation { self.relationships.clear(); self.kind = ::protobuf::EnumOrUnknown::new(symbol_information::Kind::UnspecifiedKind); self.display_name.clear(); + self.signature_documentation.clear(); self.special_fields.clear(); } @@ -1571,6 +1622,7 @@ impl ::protobuf::Message for SymbolInformation { relationships: ::std::vec::Vec::new(), kind: ::protobuf::EnumOrUnknown::from_i32(0), display_name: ::std::string::String::new(), + signature_documentation: ::protobuf::MessageField::none(), special_fields: ::protobuf::SpecialFields::new(), }; &instance @@ -3749,50 +3801,52 @@ static file_descriptor_proto_data: &'static [u8] = b"\ 2\x12.scip.TextEncodingR\x14textDocumentEncoding\"V\n\x08ToolInfo\x12\ \x12\n\x04name\x18\x01\x20\x01(\tR\x04name\x12\x18\n\x07version\x18\x02\ \x20\x01(\tR\x07version\x12\x1c\n\targuments\x18\x03\x20\x03(\tR\targume\ - nts\"\xb2\x01\n\x08Document\x12\x1a\n\x08language\x18\x04\x20\x01(\tR\ + nts\"\xc6\x01\n\x08Document\x12\x1a\n\x08language\x18\x04\x20\x01(\tR\ \x08language\x12#\n\rrelative_path\x18\x01\x20\x01(\tR\x0crelativePath\ \x122\n\x0boccurrences\x18\x02\x20\x03(\x0b2\x10.scip.OccurrenceR\x0bocc\ urrences\x121\n\x07symbols\x18\x03\x20\x03(\x0b2\x17.scip.SymbolInformat\ - ionR\x07symbols\"}\n\x06Symbol\x12\x16\n\x06scheme\x18\x01\x20\x01(\tR\ - \x06scheme\x12'\n\x07package\x18\x02\x20\x01(\x0b2\r.scip.PackageR\x07pa\ - ckage\x122\n\x0bdescriptors\x18\x03\x20\x03(\x0b2\x10.scip.DescriptorR\ - \x0bdescriptors\"Q\n\x07Package\x12\x18\n\x07manager\x18\x01\x20\x01(\tR\ - \x07manager\x12\x12\n\x04name\x18\x02\x20\x01(\tR\x04name\x12\x18\n\x07v\ - ersion\x18\x03\x20\x01(\tR\x07version\"\x9f\x02\n\nDescriptor\x12\x12\n\ - \x04name\x18\x01\x20\x01(\tR\x04name\x12$\n\rdisambiguator\x18\x02\x20\ - \x01(\tR\rdisambiguator\x12/\n\x06suffix\x18\x03\x20\x01(\x0e2\x17.scip.\ - Descriptor.SuffixR\x06suffix\"\xa5\x01\n\x06Suffix\x12\x15\n\x11Unspecif\ - iedSuffix\x10\0\x12\r\n\tNamespace\x10\x01\x12\x0f\n\x07Package\x10\x01\ - \x1a\x02\x08\x01\x12\x08\n\x04Type\x10\x02\x12\x08\n\x04Term\x10\x03\x12\ - \n\n\x06Method\x10\x04\x12\x11\n\rTypeParameter\x10\x05\x12\r\n\tParamet\ - er\x10\x06\x12\x08\n\x04Meta\x10\x07\x12\t\n\x05Local\x10\x08\x12\t\n\ - \x05Macro\x10\t\x1a\x02\x10\x01\"\xbd\x08\n\x11SymbolInformation\x12\x16\ - \n\x06symbol\x18\x01\x20\x01(\tR\x06symbol\x12$\n\rdocumentation\x18\x03\ - \x20\x03(\tR\rdocumentation\x128\n\rrelationships\x18\x04\x20\x03(\x0b2\ - \x12.scip.RelationshipR\rrelationships\x120\n\x04kind\x18\x05\x20\x01(\ - \x0e2\x1c.scip.SymbolInformation.KindR\x04kind\x12!\n\x0cdisplay_name\ - \x18\x06\x20\x01(\tR\x0bdisplayName\"\xda\x06\n\x04Kind\x12\x13\n\x0fUns\ - pecifiedKind\x10\0\x12\t\n\x05Array\x10\x01\x12\r\n\tAssertion\x10\x02\ - \x12\x12\n\x0eAssociatedType\x10\x03\x12\r\n\tAttribute\x10\x04\x12\t\n\ - \x05Axiom\x10\x05\x12\x0b\n\x07Boolean\x10\x06\x12\t\n\x05Class\x10\x07\ - \x12\x0c\n\x08Constant\x10\x08\x12\x0f\n\x0bConstructor\x10\t\x12\x0e\n\ - \nDataFamily\x10\n\x12\x08\n\x04Enum\x10\x0b\x12\x0e\n\nEnumMember\x10\ - \x0c\x12\t\n\x05Event\x10\r\x12\x08\n\x04Fact\x10\x0e\x12\t\n\x05Field\ - \x10\x0f\x12\x08\n\x04File\x10\x10\x12\x0c\n\x08Function\x10\x11\x12\n\n\ - \x06Getter\x10\x12\x12\x0b\n\x07Grammar\x10\x13\x12\x0c\n\x08Instance\ - \x10\x14\x12\r\n\tInterface\x10\x15\x12\x07\n\x03Key\x10\x16\x12\x08\n\ - \x04Lang\x10\x17\x12\t\n\x05Lemma\x10\x18\x12\t\n\x05Macro\x10\x19\x12\n\ - \n\x06Method\x10\x1a\x12\x12\n\x0eMethodReceiver\x10\x1b\x12\x0b\n\x07Me\ - ssage\x10\x1c\x12\n\n\x06Module\x10\x1d\x12\r\n\tNamespace\x10\x1e\x12\ - \x08\n\x04Null\x10\x1f\x12\n\n\x06Number\x10\x20\x12\n\n\x06Object\x10!\ - \x12\x0c\n\x08Operator\x10\"\x12\x0b\n\x07Package\x10#\x12\x11\n\rPackag\ - eObject\x10$\x12\r\n\tParameter\x10%\x12\x12\n\x0eParameterLabel\x10&\ - \x12\x0b\n\x07Pattern\x10'\x12\r\n\tPredicate\x10(\x12\x0c\n\x08Property\ - \x10)\x12\x0c\n\x08Protocol\x10*\x12\x0f\n\x0bQuasiquoter\x10+\x12\x11\n\ - \rSelfParameter\x10,\x12\n\n\x06Setter\x10-\x12\r\n\tSignature\x10.\x12\ - \r\n\tSubscript\x10/\x12\n\n\x06String\x100\x12\n\n\x06Struct\x101\x12\n\ - \n\x06Tactic\x102\x12\x0b\n\x07Theorem\x103\x12\x11\n\rThisParameter\x10\ - 4\x12\t\n\x05Trait\x105\x12\x08\n\x04Type\x106\x12\r\n\tTypeAlias\x107\ + ionR\x07symbols\x12\x12\n\x04text\x18\x05\x20\x01(\tR\x04text\"}\n\x06Sy\ + mbol\x12\x16\n\x06scheme\x18\x01\x20\x01(\tR\x06scheme\x12'\n\x07package\ + \x18\x02\x20\x01(\x0b2\r.scip.PackageR\x07package\x122\n\x0bdescriptors\ + \x18\x03\x20\x03(\x0b2\x10.scip.DescriptorR\x0bdescriptors\"Q\n\x07Packa\ + ge\x12\x18\n\x07manager\x18\x01\x20\x01(\tR\x07manager\x12\x12\n\x04name\ + \x18\x02\x20\x01(\tR\x04name\x12\x18\n\x07version\x18\x03\x20\x01(\tR\ + \x07version\"\x9f\x02\n\nDescriptor\x12\x12\n\x04name\x18\x01\x20\x01(\t\ + R\x04name\x12$\n\rdisambiguator\x18\x02\x20\x01(\tR\rdisambiguator\x12/\ + \n\x06suffix\x18\x03\x20\x01(\x0e2\x17.scip.Descriptor.SuffixR\x06suffix\ + \"\xa5\x01\n\x06Suffix\x12\x15\n\x11UnspecifiedSuffix\x10\0\x12\r\n\tNam\ + espace\x10\x01\x12\x0f\n\x07Package\x10\x01\x1a\x02\x08\x01\x12\x08\n\ + \x04Type\x10\x02\x12\x08\n\x04Term\x10\x03\x12\n\n\x06Method\x10\x04\x12\ + \x11\n\rTypeParameter\x10\x05\x12\r\n\tParameter\x10\x06\x12\x08\n\x04Me\ + ta\x10\x07\x12\t\n\x05Local\x10\x08\x12\t\n\x05Macro\x10\t\x1a\x02\x10\ + \x01\"\x86\t\n\x11SymbolInformation\x12\x16\n\x06symbol\x18\x01\x20\x01(\ + \tR\x06symbol\x12$\n\rdocumentation\x18\x03\x20\x03(\tR\rdocumentation\ + \x128\n\rrelationships\x18\x04\x20\x03(\x0b2\x12.scip.RelationshipR\rrel\ + ationships\x120\n\x04kind\x18\x05\x20\x01(\x0e2\x1c.scip.SymbolInformati\ + on.KindR\x04kind\x12!\n\x0cdisplay_name\x18\x06\x20\x01(\tR\x0bdisplayNa\ + me\x12G\n\x17signature_documentation\x18\x07\x20\x01(\x0b2\x0e.scip.Docu\ + mentR\x16signatureDocumentation\"\xda\x06\n\x04Kind\x12\x13\n\x0fUnspeci\ + fiedKind\x10\0\x12\t\n\x05Array\x10\x01\x12\r\n\tAssertion\x10\x02\x12\ + \x12\n\x0eAssociatedType\x10\x03\x12\r\n\tAttribute\x10\x04\x12\t\n\x05A\ + xiom\x10\x05\x12\x0b\n\x07Boolean\x10\x06\x12\t\n\x05Class\x10\x07\x12\ + \x0c\n\x08Constant\x10\x08\x12\x0f\n\x0bConstructor\x10\t\x12\x0e\n\nDat\ + aFamily\x10\n\x12\x08\n\x04Enum\x10\x0b\x12\x0e\n\nEnumMember\x10\x0c\ + \x12\t\n\x05Event\x10\r\x12\x08\n\x04Fact\x10\x0e\x12\t\n\x05Field\x10\ + \x0f\x12\x08\n\x04File\x10\x10\x12\x0c\n\x08Function\x10\x11\x12\n\n\x06\ + Getter\x10\x12\x12\x0b\n\x07Grammar\x10\x13\x12\x0c\n\x08Instance\x10\ + \x14\x12\r\n\tInterface\x10\x15\x12\x07\n\x03Key\x10\x16\x12\x08\n\x04La\ + ng\x10\x17\x12\t\n\x05Lemma\x10\x18\x12\t\n\x05Macro\x10\x19\x12\n\n\x06\ + Method\x10\x1a\x12\x12\n\x0eMethodReceiver\x10\x1b\x12\x0b\n\x07Message\ + \x10\x1c\x12\n\n\x06Module\x10\x1d\x12\r\n\tNamespace\x10\x1e\x12\x08\n\ + \x04Null\x10\x1f\x12\n\n\x06Number\x10\x20\x12\n\n\x06Object\x10!\x12\ + \x0c\n\x08Operator\x10\"\x12\x0b\n\x07Package\x10#\x12\x11\n\rPackageObj\ + ect\x10$\x12\r\n\tParameter\x10%\x12\x12\n\x0eParameterLabel\x10&\x12\ + \x0b\n\x07Pattern\x10'\x12\r\n\tPredicate\x10(\x12\x0c\n\x08Property\x10\ + )\x12\x0c\n\x08Protocol\x10*\x12\x0f\n\x0bQuasiquoter\x10+\x12\x11\n\rSe\ + lfParameter\x10,\x12\n\n\x06Setter\x10-\x12\r\n\tSignature\x10.\x12\r\n\ + \tSubscript\x10/\x12\n\n\x06String\x100\x12\n\n\x06Struct\x101\x12\n\n\ + \x06Tactic\x102\x12\x0b\n\x07Theorem\x103\x12\x11\n\rThisParameter\x104\ + \x12\t\n\x05Trait\x105\x12\x08\n\x04Type\x106\x12\r\n\tTypeAlias\x107\ \x12\r\n\tTypeClass\x108\x12\x0e\n\nTypeFamily\x109\x12\x11\n\rTypeParam\ eter\x10:\x12\t\n\x05Union\x10;\x12\t\n\x05Value\x10<\x12\x0c\n\x08Varia\ ble\x10=\"\xc9\x01\n\x0cRelationship\x12\x16\n\x06symbol\x18\x01\x20\x01\ @@ -3876,7 +3930,7 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x0fTypeScriptReact\x10^\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-github.c\ - om/sourcegraph/scip/bindings/go/scip/J\xe8\xf9\x01\n\x07\x12\x05\n\0\xc9\ + om/sourcegraph/scip/bindings/go/scip/J\xff\x82\x02\n\x07\x12\x05\n\0\xdb\ \x05\x01\n\x82\x04\n\x01\x0c\x12\x03\n\0\x122\xf7\x03\x20An\x20index\x20\ contains\x20one\x20or\x20more\x20pieces\x20of\x20information\x20about\ \x20a\x20given\x20piece\x20of\n\x20source\x20code\x20or\x20software\x20a\ @@ -3961,7 +4015,7 @@ static file_descriptor_proto_data: &'static [u8] = b"\ s\x20indexer.\n\n\x0c\n\x05\x04\x02\x02\x02\x04\x12\x03A\x02\n\n\x0c\n\ \x05\x04\x02\x02\x02\x05\x12\x03A\x0b\x11\n\x0c\n\x05\x04\x02\x02\x02\ \x01\x12\x03A\x12\x1b\n\x0c\n\x05\x04\x02\x02\x02\x03\x12\x03A\x1e\x1f\n\ - H\n\x02\x04\x03\x12\x04E\0]\x01\x1a<\x20Document\x20defines\x20the\x20me\ + H\n\x02\x04\x03\x12\x04E\0f\x01\x1a<\x20Document\x20defines\x20the\x20me\ tadata\x20about\x20a\x20source\x20file\x20on\x20disk.\n\n\n\n\x03\x04\ \x03\x01\x12\x03E\x08\x10\n\xa5\x02\n\x04\x04\x03\x02\0\x12\x03J\x02\x16\ \x1a\x97\x02\x20The\x20string\x20ID\x20for\x20the\x20programming\x20lang\ @@ -3996,970 +4050,997 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x20(see\n\x20Relationship.is_definition).\n\n\x0c\n\x05\x04\x03\x02\x03\ \x04\x12\x03\\\x02\n\n\x0c\n\x05\x04\x03\x02\x03\x06\x12\x03\\\x0b\x1c\n\ \x0c\n\x05\x04\x03\x02\x03\x01\x12\x03\\\x1d$\n\x0c\n\x05\x04\x03\x02\ - \x03\x03\x12\x03\\'(\n\xf3\x0f\n\x02\x04\x04\x12\x06\x85\x01\0\x89\x01\ - \x01\x1a\xe4\x0f\x20Symbol\x20is\x20similar\x20to\x20a\x20URI,\x20it\x20\ - identifies\x20a\x20class,\x20method,\x20or\x20a\x20local\n\x20variable.\ - \x20`SymbolInformation`\x20contains\x20rich\x20metadata\x20about\x20symb\ - ols\x20such\x20as\n\x20the\x20docstring.\n\n\x20Symbol\x20has\x20a\x20st\ - andardized\x20string\x20representation,\x20which\x20can\x20be\x20used\n\ - \x20interchangeably\x20with\x20`Symbol`.\x20The\x20syntax\x20for\x20Symb\ - ol\x20is\x20the\x20following:\n\x20```\n\x20#\x20()+\x20stands\x20for\ - \x20one\x20or\x20more\x20repetitions\x20of\x20\n\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20\x20'\ - \x20'\x20\x20'\x20'\x20()+\x20|\x20'local\x20'\x20<\ - local-id>\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20::=\x20\x20'\x20'\x20\x20'\x20'\x20\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20::=\x20any\x20UTF-8,\x20escape\x20spaces\x20with\x20double\x20sp\ - ace.\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20::=\x20same\x20as\x20above,\x20use\x20the\x20placeholder\x20'.'\x20t\ - o\x20indicate\x20an\x20empty\x20value\n\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20::=\x20same\x20as\x20above\n\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20same\x20as\ - \x20above\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:\ - :=\x20\x20|\x20\x20|\x20\x20|\x20\x20|\ - \x20\x20|\x20\x20|\x20\x20|\x20\ - \n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20\ - \x20'/'\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20::=\x20\x20'#'\n\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20\x20'.'\ - \n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20::=\x20\x20':'\n\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20\x20'!'\n\x20\ + \x03\x03\x12\x03\\'(\n\xf7\x03\n\x04\x04\x03\x02\x04\x12\x03e\x02\x12\ + \x1a\xe9\x03\x20(optional)\x20Text\x20contents\x20of\x20the\x20this\x20d\ + ocument.\x20Indexers\x20are\x20not\x20expected\x20to\n\x20include\x20the\ + \x20text\x20by\x20default.\x20It's\x20preferrable\x20that\x20clients\x20\ + read\x20the\x20text\n\x20contents\x20from\x20the\x20file\x20system\x20by\ + \x20resolving\x20the\x20absolute\x20path\x20from\x20joining\n\x20`Index.\ + metadata.project_root`\x20and\x20`Document.relative_path`.\x20This\x20fi\ + eld\x20was\n\x20introduced\x20to\x20support\x20`SymbolInformation.signat\ + ure_documentation`,\x20but\x20it\n\x20can\x20be\x20used\x20for\x20other\ + \x20purposes\x20as\x20well,\x20for\x20example\x20testing\x20or\x20when\ + \x20working\n\x20with\x20virtual/in-memory\x20documents.\n\n\x0c\n\x05\ + \x04\x03\x02\x04\x05\x12\x03e\x02\x08\n\x0c\n\x05\x04\x03\x02\x04\x01\ + \x12\x03e\t\r\n\x0c\n\x05\x04\x03\x02\x04\x03\x12\x03e\x10\x11\n\xf3\x0f\ + \n\x02\x04\x04\x12\x06\x8e\x01\0\x92\x01\x01\x1a\xe4\x0f\x20Symbol\x20is\ + \x20similar\x20to\x20a\x20URI,\x20it\x20identifies\x20a\x20class,\x20met\ + hod,\x20or\x20a\x20local\n\x20variable.\x20`SymbolInformation`\x20contai\ + ns\x20rich\x20metadata\x20about\x20symbols\x20such\x20as\n\x20the\x20doc\ + string.\n\n\x20Symbol\x20has\x20a\x20standardized\x20string\x20represent\ + ation,\x20which\x20can\x20be\x20used\n\x20interchangeably\x20with\x20`Sy\ + mbol`.\x20The\x20syntax\x20for\x20Symbol\x20is\x20the\x20following:\n\ + \x20```\n\x20#\x20()+\x20stands\x20for\x20one\x20or\x20more\x20repeti\ + tions\x20of\x20\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20::=\x20\x20'\x20'\x20\x20'\x20'\x20\ + ()+\x20|\x20'local\x20'\x20\n\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20\x20'\ + \x20'\x20\x20'\x20'\x20\n\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20any\x20UTF-8,\x20\ + escape\x20spaces\x20with\x20double\x20space.\n\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20same\x20as\x20above,\ + \x20use\x20the\x20placeholder\x20'.'\x20to\x20indicate\x20an\x20empty\ + \x20value\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20\ + same\x20as\x20above\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20::=\x20same\x20as\x20above\n\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20\x20|\x20\ + \x20|\x20\x20|\x20\x20|\x20\x20|\x20\x20|\x20\x20|\x20\n\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20::=\x20\x20'/'\n\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20\x20'('\x20\x20').'\n\x20\x20\x20\ - \x20\x20\x20\x20\x20::=\x20'['\x20\x20']'\n\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20'('\x20\x20')'\n\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20::=\x20\n\x20\x20::=\x20\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20::=\x20\x20|\x20\n\x20\x20\x20\x20\x20::=\x20()+\n\x20\x20::=\x20'_'\x20|\x20'+'\x20|\x20'-'\x20|\x20'$'\x20|\ - \x20ASCII\x20letter\x20or\x20digit\n\x20\x20\x20\x20\ - ::=\x20'`'\x20()+\x20'`'\n\x20\ - \x20\x20\x20::=\x20any\x20UTF-8\x20character,\x20escape\x20backticks\x20\ - with\x20double\x20backtick.\n\x20```\n\n\x20The\x20list\x20of\x20descrip\ - tors\x20for\x20a\x20symbol\x20should\x20together\x20form\x20a\x20fully\n\ - \x20qualified\x20name\x20for\x20the\x20symbol.\x20That\x20is,\x20it\x20s\ - hould\x20serve\x20as\x20a\x20unique\n\x20identifier\x20across\x20the\x20\ - package.\x20Typically,\x20it\x20will\x20include\x20one\x20descriptor\n\ - \x20for\x20every\x20node\x20in\x20the\x20AST\x20(along\x20the\x20ancestr\ - y\x20path)\x20between\x20the\x20root\x20of\n\x20the\x20file\x20and\x20th\ - e\x20node\x20corresponding\x20to\x20the\x20symbol.\n\n\x0b\n\x03\x04\x04\ - \x01\x12\x04\x85\x01\x08\x0e\n\x0c\n\x04\x04\x04\x02\0\x12\x04\x86\x01\ - \x02\x14\n\r\n\x05\x04\x04\x02\0\x05\x12\x04\x86\x01\x02\x08\n\r\n\x05\ - \x04\x04\x02\0\x01\x12\x04\x86\x01\t\x0f\n\r\n\x05\x04\x04\x02\0\x03\x12\ - \x04\x86\x01\x12\x13\n\x0c\n\x04\x04\x04\x02\x01\x12\x04\x87\x01\x02\x16\ - \n\r\n\x05\x04\x04\x02\x01\x06\x12\x04\x87\x01\x02\t\n\r\n\x05\x04\x04\ - \x02\x01\x01\x12\x04\x87\x01\n\x11\n\r\n\x05\x04\x04\x02\x01\x03\x12\x04\ - \x87\x01\x14\x15\n\x0c\n\x04\x04\x04\x02\x02\x12\x04\x88\x01\x02&\n\r\n\ - \x05\x04\x04\x02\x02\x04\x12\x04\x88\x01\x02\n\n\r\n\x05\x04\x04\x02\x02\ - \x06\x12\x04\x88\x01\x0b\x15\n\r\n\x05\x04\x04\x02\x02\x01\x12\x04\x88\ - \x01\x16!\n\r\n\x05\x04\x04\x02\x02\x03\x12\x04\x88\x01$%\nq\n\x02\x04\ - \x05\x12\x06\x8e\x01\0\x92\x01\x01\x1ac\x20Unit\x20of\x20packaging\x20an\ - d\x20distribution.\n\n\x20NOTE:\x20This\x20corresponds\x20to\x20a\x20mod\ - ule\x20in\x20Go\x20and\x20JVM\x20languages.\n\n\x0b\n\x03\x04\x05\x01\ - \x12\x04\x8e\x01\x08\x0f\n\x0c\n\x04\x04\x05\x02\0\x12\x04\x8f\x01\x02\ - \x15\n\r\n\x05\x04\x05\x02\0\x05\x12\x04\x8f\x01\x02\x08\n\r\n\x05\x04\ - \x05\x02\0\x01\x12\x04\x8f\x01\t\x10\n\r\n\x05\x04\x05\x02\0\x03\x12\x04\ - \x8f\x01\x13\x14\n\x0c\n\x04\x04\x05\x02\x01\x12\x04\x90\x01\x02\x12\n\r\ - \n\x05\x04\x05\x02\x01\x05\x12\x04\x90\x01\x02\x08\n\r\n\x05\x04\x05\x02\ - \x01\x01\x12\x04\x90\x01\t\r\n\r\n\x05\x04\x05\x02\x01\x03\x12\x04\x90\ - \x01\x10\x11\n\x0c\n\x04\x04\x05\x02\x02\x12\x04\x91\x01\x02\x15\n\r\n\ - \x05\x04\x05\x02\x02\x05\x12\x04\x91\x01\x02\x08\n\r\n\x05\x04\x05\x02\ - \x02\x01\x12\x04\x91\x01\t\x10\n\r\n\x05\x04\x05\x02\x02\x03\x12\x04\x91\ - \x01\x13\x14\n\x0c\n\x02\x04\x06\x12\x06\x94\x01\0\xab\x01\x01\n\x0b\n\ - \x03\x04\x06\x01\x12\x04\x94\x01\x08\x12\n\x0e\n\x04\x04\x06\x04\0\x12\ - \x06\x95\x01\x02\xa7\x01\x03\n\r\n\x05\x04\x06\x04\0\x01\x12\x04\x95\x01\ - \x07\r\n\r\n\x05\x04\x06\x04\0\x03\x12\x04\x96\x01\x04\x1e\n\x0e\n\x06\ - \x04\x06\x04\0\x03\x02\x12\x04\x96\x01\x04\x1e\n\x0e\n\x06\x04\x06\x04\0\ - \x02\0\x12\x04\x97\x01\x04\x1a\n\x0f\n\x07\x04\x06\x04\0\x02\0\x01\x12\ - \x04\x97\x01\x04\x15\n\x0f\n\x07\x04\x06\x04\0\x02\0\x02\x12\x04\x97\x01\ - \x18\x19\n}\n\x06\x04\x06\x04\0\x02\x01\x12\x04\x9b\x01\x04\x12\x1am\x20\ - Unit\x20of\x20code\x20abstraction\x20and/or\x20namespacing.\n\n\x20NOTE:\ - \x20This\x20corresponds\x20to\x20a\x20package\x20in\x20Go\x20and\x20JVM\ - \x20languages.\n\n\x0f\n\x07\x04\x06\x04\0\x02\x01\x01\x12\x04\x9b\x01\ - \x04\r\n\x0f\n\x07\x04\x06\x04\0\x02\x01\x02\x12\x04\x9b\x01\x10\x11\n(\ - \n\x06\x04\x06\x04\0\x02\x02\x12\x04\x9d\x01\x04\"\x1a\x18\x20Use\x20Nam\ - espace\x20instead.\n\n\x0f\n\x07\x04\x06\x04\0\x02\x02\x01\x12\x04\x9d\ - \x01\x04\x0b\n\x0f\n\x07\x04\x06\x04\0\x02\x02\x02\x12\x04\x9d\x01\x0e\ - \x0f\n\x0f\n\x07\x04\x06\x04\0\x02\x02\x03\x12\x04\x9d\x01\x10!\n\x10\n\ - \x08\x04\x06\x04\0\x02\x02\x03\x01\x12\x04\x9d\x01\x11\x20\n\x0e\n\x06\ - \x04\x06\x04\0\x02\x03\x12\x04\x9e\x01\x04\r\n\x0f\n\x07\x04\x06\x04\0\ - \x02\x03\x01\x12\x04\x9e\x01\x04\x08\n\x0f\n\x07\x04\x06\x04\0\x02\x03\ - \x02\x12\x04\x9e\x01\x0b\x0c\n\x0e\n\x06\x04\x06\x04\0\x02\x04\x12\x04\ - \x9f\x01\x04\r\n\x0f\n\x07\x04\x06\x04\0\x02\x04\x01\x12\x04\x9f\x01\x04\ - \x08\n\x0f\n\x07\x04\x06\x04\0\x02\x04\x02\x12\x04\x9f\x01\x0b\x0c\n\x0e\ - \n\x06\x04\x06\x04\0\x02\x05\x12\x04\xa0\x01\x04\x0f\n\x0f\n\x07\x04\x06\ - \x04\0\x02\x05\x01\x12\x04\xa0\x01\x04\n\n\x0f\n\x07\x04\x06\x04\0\x02\ - \x05\x02\x12\x04\xa0\x01\r\x0e\n\x0e\n\x06\x04\x06\x04\0\x02\x06\x12\x04\ - \xa1\x01\x04\x16\n\x0f\n\x07\x04\x06\x04\0\x02\x06\x01\x12\x04\xa1\x01\ - \x04\x11\n\x0f\n\x07\x04\x06\x04\0\x02\x06\x02\x12\x04\xa1\x01\x14\x15\n\ - \x0e\n\x06\x04\x06\x04\0\x02\x07\x12\x04\xa2\x01\x04\x12\n\x0f\n\x07\x04\ - \x06\x04\0\x02\x07\x01\x12\x04\xa2\x01\x04\r\n\x0f\n\x07\x04\x06\x04\0\ - \x02\x07\x02\x12\x04\xa2\x01\x10\x11\n.\n\x06\x04\x06\x04\0\x02\x08\x12\ - \x04\xa4\x01\x04\r\x1a\x1e\x20Can\x20be\x20used\x20for\x20any\x20purpose\ - .\n\n\x0f\n\x07\x04\x06\x04\0\x02\x08\x01\x12\x04\xa4\x01\x04\x08\n\x0f\ - \n\x07\x04\x06\x04\0\x02\x08\x02\x12\x04\xa4\x01\x0b\x0c\n\x0e\n\x06\x04\ - \x06\x04\0\x02\t\x12\x04\xa5\x01\x04\x0e\n\x0f\n\x07\x04\x06\x04\0\x02\t\ - \x01\x12\x04\xa5\x01\x04\t\n\x0f\n\x07\x04\x06\x04\0\x02\t\x02\x12\x04\ - \xa5\x01\x0c\r\n\x0e\n\x06\x04\x06\x04\0\x02\n\x12\x04\xa6\x01\x04\x0e\n\ - \x0f\n\x07\x04\x06\x04\0\x02\n\x01\x12\x04\xa6\x01\x04\t\n\x0f\n\x07\x04\ - \x06\x04\0\x02\n\x02\x12\x04\xa6\x01\x0c\r\n\x0c\n\x04\x04\x06\x02\0\x12\ - \x04\xa8\x01\x02\x12\n\r\n\x05\x04\x06\x02\0\x05\x12\x04\xa8\x01\x02\x08\ - \n\r\n\x05\x04\x06\x02\0\x01\x12\x04\xa8\x01\t\r\n\r\n\x05\x04\x06\x02\0\ - \x03\x12\x04\xa8\x01\x10\x11\n\x0c\n\x04\x04\x06\x02\x01\x12\x04\xa9\x01\ - \x02\x1b\n\r\n\x05\x04\x06\x02\x01\x05\x12\x04\xa9\x01\x02\x08\n\r\n\x05\ - \x04\x06\x02\x01\x01\x12\x04\xa9\x01\t\x16\n\r\n\x05\x04\x06\x02\x01\x03\ - \x12\x04\xa9\x01\x19\x1a\n\x0c\n\x04\x04\x06\x02\x02\x12\x04\xaa\x01\x02\ - \x14\n\r\n\x05\x04\x06\x02\x02\x06\x12\x04\xaa\x01\x02\x08\n\r\n\x05\x04\ - \x06\x02\x02\x01\x12\x04\xaa\x01\t\x0f\n\r\n\x05\x04\x06\x02\x02\x03\x12\ - \x04\xaa\x01\x12\x13\n\x83\x01\n\x02\x04\x07\x12\x06\xaf\x01\0\xb7\x02\ - \x01\x1au\x20SymbolInformation\x20defines\x20metadata\x20about\x20a\x20s\ - ymbol,\x20such\x20as\x20the\x20symbol's\n\x20docstring\x20or\x20what\x20\ - package\x20it's\x20defined\x20it.\n\n\x0b\n\x03\x04\x07\x01\x12\x04\xaf\ - \x01\x08\x19\n\xa0\x01\n\x04\x04\x07\x02\0\x12\x04\xb2\x01\x02\x14\x1a\ - \x91\x01\x20Identifier\x20of\x20this\x20symbol,\x20which\x20can\x20be\ - \x20referenced\x20from\x20`Occurence.symbol`.\n\x20The\x20string\x20must\ - \x20be\x20formatted\x20according\x20to\x20the\x20grammar\x20in\x20`Symbo\ - l`.\n\n\r\n\x05\x04\x07\x02\0\x05\x12\x04\xb2\x01\x02\x08\n\r\n\x05\x04\ - \x07\x02\0\x01\x12\x04\xb2\x01\t\x0f\n\r\n\x05\x04\x07\x02\0\x03\x12\x04\ - \xb2\x01\x12\x13\n\xb5\x02\n\x04\x04\x07\x02\x01\x12\x04\xb7\x01\x02$\ - \x1a\xa6\x02\x20(optional,\x20but\x20strongly\x20recommended)\x20The\x20\ - markdown-formatted\x20documentation\n\x20for\x20this\x20symbol.\x20This\ - \x20field\x20is\x20repeated\x20to\x20allow\x20different\x20kinds\x20of\n\ - \x20documentation.\x20For\x20example,\x20it's\x20nice\x20to\x20include\ - \x20both\x20the\x20signature\x20of\x20a\n\x20method\x20(parameters\x20an\ - d\x20return\x20type)\x20along\x20with\x20the\x20accompanying\x20docstrin\ - g.\n\n\r\n\x05\x04\x07\x02\x01\x04\x12\x04\xb7\x01\x02\n\n\r\n\x05\x04\ - \x07\x02\x01\x05\x12\x04\xb7\x01\x0b\x11\n\r\n\x05\x04\x07\x02\x01\x01\ - \x12\x04\xb7\x01\x12\x1f\n\r\n\x05\x04\x07\x02\x01\x03\x12\x04\xb7\x01\"\ - #\n^\n\x04\x04\x07\x02\x02\x12\x04\xb9\x01\x02*\x1aP\x20(optional)\x20Re\ - lationships\x20to\x20other\x20symbols\x20(e.g.,\x20implements,\x20type\ - \x20definition).\n\n\r\n\x05\x04\x07\x02\x02\x04\x12\x04\xb9\x01\x02\n\n\ - \r\n\x05\x04\x07\x02\x02\x06\x12\x04\xb9\x01\x0b\x17\n\r\n\x05\x04\x07\ - \x02\x02\x01\x12\x04\xb9\x01\x18%\n\r\n\x05\x04\x07\x02\x02\x03\x12\x04\ - \xb9\x01()\n\xa4\x01\n\x04\x04\x07\x02\x03\x12\x04\xbd\x01\x02\x10\x1a\ - \x95\x01\x20The\x20kind\x20of\x20this\x20symbol.\x20Use\x20this\x20field\ - \x20instead\x20of\n\x20`SymbolDescriptor.Suffix`\x20to\x20determine\x20w\ - hether\x20something\x20is,\x20for\x20example,\x20a\n\x20class\x20or\x20a\ - \x20method.\n\n\r\n\x05\x04\x07\x02\x03\x06\x12\x04\xbd\x01\x02\x06\n\r\ - \n\x05\x04\x07\x02\x03\x01\x12\x04\xbd\x01\x07\x0b\n\r\n\x05\x04\x07\x02\ - \x03\x03\x12\x04\xbd\x01\x0e\x0f\n\xf5\x05\n\x04\x04\x07\x04\0\x12\x06\ - \xcc\x01\x02\xac\x02\x03\x1a\xe4\x05\x20(optional)\x20Kind\x20represents\ - \x20the\x20fine-grained\x20category\x20of\x20a\x20symbol,\x20suitable\ - \x20for\x20presenting\n\x20information\x20about\x20the\x20symbol's\x20me\ - aning\x20in\x20the\x20language.\n\n\x20For\x20example:\n\x20-\x20A\x20Ja\ - va\x20method\x20would\x20have\x20the\x20kind\x20`Method`\x20while\x20a\ - \x20Go\x20function\x20would\n\x20\x20\x20have\x20the\x20kind\x20`Functio\ - n`,\x20even\x20if\x20the\x20symbols\x20for\x20these\x20use\x20the\x20sam\ - e\n\x20\x20\x20syntax\x20for\x20the\x20descriptor\x20`SymbolDescriptor.S\ - uffix.Method`.\n\x20-\x20A\x20Go\x20struct\x20has\x20the\x20symbol\x20ki\ - nd\x20`Struct`\x20while\x20a\x20Java\x20class\x20has\n\x20\x20\x20the\ - \x20symbol\x20kind\x20`Class`\x20even\x20if\x20they\x20both\x20have\x20t\ - he\x20same\x20descriptor:\n\x20\x20\x20`SymbolDescriptor.Suffix.Type`.\n\ - \n\x20Since\x20Kind\x20is\x20more\x20fine-grained\x20than\x20Suffix:\n\ - \x20-\x20If\x20two\x20symbols\x20have\x20the\x20same\x20Kind,\x20they\ - \x20should\x20share\x20the\x20same\x20Suffix.\n\x20-\x20If\x20two\x20sym\ - bols\x20have\x20different\x20Suffixes,\x20they\x20should\x20have\x20diff\ - erent\x20Kinds.\n\n\r\n\x05\x04\x07\x04\0\x01\x12\x04\xcc\x01\x07\x0b\n\ - \x0e\n\x06\x04\x07\x04\0\x02\0\x12\x04\xcd\x01\x06\x1a\n\x0f\n\x07\x04\ - \x07\x04\0\x02\0\x01\x12\x04\xcd\x01\x06\x15\n\x0f\n\x07\x04\x07\x04\0\ - \x02\0\x02\x12\x04\xcd\x01\x18\x19\n\x0e\n\x06\x04\x07\x04\0\x02\x01\x12\ - \x04\xce\x01\x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02\x01\x01\x12\x04\xce\ - \x01\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x01\x02\x12\x04\xce\x01\x0e\ - \x0f\n\x1b\n\x06\x04\x07\x04\0\x02\x02\x12\x04\xd0\x01\x06\x14\x1a\x0b\ - \x20For\x20Alloy\n\n\x0f\n\x07\x04\x07\x04\0\x02\x02\x01\x12\x04\xd0\x01\ - \x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02\x02\x02\x12\x04\xd0\x01\x12\x13\n\ - \x0e\n\x06\x04\x07\x04\0\x02\x03\x12\x04\xd1\x01\x06\x19\n\x0f\n\x07\x04\ - \x07\x04\0\x02\x03\x01\x12\x04\xd1\x01\x06\x14\n\x0f\n\x07\x04\x07\x04\0\ - \x02\x03\x02\x12\x04\xd1\x01\x17\x18\n\x19\n\x06\x04\x07\x04\0\x02\x04\ - \x12\x04\xd3\x01\x06\x14\x1a\t\x20For\x20C++\n\n\x0f\n\x07\x04\x07\x04\0\ - \x02\x04\x01\x12\x04\xd3\x01\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02\x04\ - \x02\x12\x04\xd3\x01\x12\x13\n\x1a\n\x06\x04\x07\x04\0\x02\x05\x12\x04\ - \xd5\x01\x06\x10\x1a\n\x20For\x20Lean\n\n\x0f\n\x07\x04\x07\x04\0\x02\ - \x05\x01\x12\x04\xd5\x01\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x05\x02\ - \x12\x04\xd5\x01\x0e\x0f\n\x0e\n\x06\x04\x07\x04\0\x02\x06\x12\x04\xd6\ - \x01\x06\x12\n\x0f\n\x07\x04\x07\x04\0\x02\x06\x01\x12\x04\xd6\x01\x06\r\ - \n\x0f\n\x07\x04\x07\x04\0\x02\x06\x02\x12\x04\xd6\x01\x10\x11\n\x0e\n\ - \x06\x04\x07\x04\0\x02\x07\x12\x04\xd7\x01\x06\x10\n\x0f\n\x07\x04\x07\ - \x04\0\x02\x07\x01\x12\x04\xd7\x01\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\ - \x07\x02\x12\x04\xd7\x01\x0e\x0f\n\x0e\n\x06\x04\x07\x04\0\x02\x08\x12\ - \x04\xd8\x01\x06\x13\n\x0f\n\x07\x04\x07\x04\0\x02\x08\x01\x12\x04\xd8\ - \x01\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02\x08\x02\x12\x04\xd8\x01\x11\ - \x12\n\x0e\n\x06\x04\x07\x04\0\x02\t\x12\x04\xd9\x01\x06\x16\n\x0f\n\x07\ - \x04\x07\x04\0\x02\t\x01\x12\x04\xd9\x01\x06\x11\n\x0f\n\x07\x04\x07\x04\ - \0\x02\t\x02\x12\x04\xd9\x01\x14\x15\n\x1d\n\x06\x04\x07\x04\0\x02\n\x12\ - \x04\xdb\x01\x06\x16\x1a\r\x20For\x20Haskell\n\n\x0f\n\x07\x04\x07\x04\0\ - \x02\n\x01\x12\x04\xdb\x01\x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02\n\x02\ - \x12\x04\xdb\x01\x13\x15\n\x0e\n\x06\x04\x07\x04\0\x02\x0b\x12\x04\xdc\ - \x01\x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02\x0b\x01\x12\x04\xdc\x01\x06\n\ - \n\x0f\n\x07\x04\x07\x04\0\x02\x0b\x02\x12\x04\xdc\x01\r\x0f\n\x0e\n\x06\ - \x04\x07\x04\0\x02\x0c\x12\x04\xdd\x01\x06\x16\n\x0f\n\x07\x04\x07\x04\0\ - \x02\x0c\x01\x12\x04\xdd\x01\x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02\x0c\ - \x02\x12\x04\xdd\x01\x13\x15\n\x0e\n\x06\x04\x07\x04\0\x02\r\x12\x04\xde\ - \x01\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02\r\x01\x12\x04\xde\x01\x06\x0b\ - \n\x0f\n\x07\x04\x07\x04\0\x02\r\x02\x12\x04\xde\x01\x0e\x10\n\x1b\n\x06\ - \x04\x07\x04\0\x02\x0e\x12\x04\xe0\x01\x06\x10\x1a\x0b\x20For\x20Alloy\n\ - \n\x0f\n\x07\x04\x07\x04\0\x02\x0e\x01\x12\x04\xe0\x01\x06\n\n\x0f\n\x07\ - \x04\x07\x04\0\x02\x0e\x02\x12\x04\xe0\x01\r\x0f\n\x0e\n\x06\x04\x07\x04\ - \0\x02\x0f\x12\x04\xe1\x01\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02\x0f\x01\ - \x12\x04\xe1\x01\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x0f\x02\x12\x04\ - \xe1\x01\x0e\x10\n\x0e\n\x06\x04\x07\x04\0\x02\x10\x12\x04\xe2\x01\x06\ - \x10\n\x0f\n\x07\x04\x07\x04\0\x02\x10\x01\x12\x04\xe2\x01\x06\n\n\x0f\n\ - \x07\x04\x07\x04\0\x02\x10\x02\x12\x04\xe2\x01\r\x0f\n\x0e\n\x06\x04\x07\ - \x04\0\x02\x11\x12\x04\xe3\x01\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x02\x11\ - \x01\x12\x04\xe3\x01\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02\x11\x02\x12\ - \x04\xe3\x01\x11\x13\n$\n\x06\x04\x07\x04\0\x02\x12\x12\x04\xe5\x01\x06\ - \x12\x1a\x14\x20For\x20'get'\x20in\x20Swift\n\n\x0f\n\x07\x04\x07\x04\0\ - \x02\x12\x01\x12\x04\xe5\x01\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02\x12\ - \x02\x12\x04\xe5\x01\x0f\x11\n\x1a\n\x06\x04\x07\x04\0\x02\x13\x12\x04\ - \xe7\x01\x06\x13\x1a\n\x20For\x20Raku\n\n\x0f\n\x07\x04\x07\x04\0\x02\ - \x13\x01\x12\x04\xe7\x01\x06\r\n\x0f\n\x07\x04\x07\x04\0\x02\x13\x02\x12\ - \x04\xe7\x01\x10\x12\n)\n\x06\x04\x07\x04\0\x02\x14\x12\x04\xe9\x01\x06\ - \x14\x1a\x19\x20For\x20Purescript\x20and\x20Lean\n\n\x0f\n\x07\x04\x07\ - \x04\0\x02\x14\x01\x12\x04\xe9\x01\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02\ - \x14\x02\x12\x04\xe9\x01\x11\x13\n\x0e\n\x06\x04\x07\x04\0\x02\x15\x12\ - \x04\xea\x01\x06\x15\n\x0f\n\x07\x04\x07\x04\0\x02\x15\x01\x12\x04\xea\ - \x01\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02\x15\x02\x12\x04\xea\x01\x12\ - \x14\n\x0e\n\x06\x04\x07\x04\0\x02\x16\x12\x04\xeb\x01\x06\x0f\n\x0f\n\ - \x07\x04\x07\x04\0\x02\x16\x01\x12\x04\xeb\x01\x06\t\n\x0f\n\x07\x04\x07\ - \x04\0\x02\x16\x02\x12\x04\xeb\x01\x0c\x0e\n\x1c\n\x06\x04\x07\x04\0\x02\ - \x17\x12\x04\xed\x01\x06\x10\x1a\x0c\x20For\x20Racket\n\n\x0f\n\x07\x04\ - \x07\x04\0\x02\x17\x01\x12\x04\xed\x01\x06\n\n\x0f\n\x07\x04\x07\x04\0\ - \x02\x17\x02\x12\x04\xed\x01\r\x0f\n\x1a\n\x06\x04\x07\x04\0\x02\x18\x12\ - \x04\xef\x01\x06\x11\x1a\n\x20For\x20Lean\n\n\x0f\n\x07\x04\x07\x04\0\ - \x02\x18\x01\x12\x04\xef\x01\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x18\ - \x02\x12\x04\xef\x01\x0e\x10\n\x0e\n\x06\x04\x07\x04\0\x02\x19\x12\x04\ - \xf0\x01\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02\x19\x01\x12\x04\xf0\x01\ - \x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x19\x02\x12\x04\xf0\x01\x0e\x10\n\ - \x0e\n\x06\x04\x07\x04\0\x02\x1a\x12\x04\xf1\x01\x06\x12\n\x0f\n\x07\x04\ - \x07\x04\0\x02\x1a\x01\x12\x04\xf1\x01\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\ - \x02\x1a\x02\x12\x04\xf1\x01\x0f\x11\n\x94\x01\n\x06\x04\x07\x04\0\x02\ - \x1b\x12\x04\xf4\x01\x06\x1a\x1a\x83\x01\x20Analogous\x20to\x20'ThisPara\ - meter'\x20and\x20'SelfParameter',\x20but\x20for\x20languages\n\x20like\ - \x20Go\x20where\x20the\x20receiver\x20doesn't\x20have\x20a\x20convention\ - al\x20name.\n\n\x0f\n\x07\x04\x07\x04\0\x02\x1b\x01\x12\x04\xf4\x01\x06\ - \x14\n\x0f\n\x07\x04\x07\x04\0\x02\x1b\x02\x12\x04\xf4\x01\x17\x19\n\x1e\ - \n\x06\x04\x07\x04\0\x02\x1c\x12\x04\xf6\x01\x06\x13\x1a\x0e\x20For\x20P\ - rotobuf\n\n\x0f\n\x07\x04\x07\x04\0\x02\x1c\x01\x12\x04\xf6\x01\x06\r\n\ - \x0f\n\x07\x04\x07\x04\0\x02\x1c\x02\x12\x04\xf6\x01\x10\x12\n\x0e\n\x06\ - \x04\x07\x04\0\x02\x1d\x12\x04\xf7\x01\x06\x12\n\x0f\n\x07\x04\x07\x04\0\ - \x02\x1d\x01\x12\x04\xf7\x01\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02\x1d\ - \x02\x12\x04\xf7\x01\x0f\x11\n\x0e\n\x06\x04\x07\x04\0\x02\x1e\x12\x04\ - \xf8\x01\x06\x15\n\x0f\n\x07\x04\x07\x04\0\x02\x1e\x01\x12\x04\xf8\x01\ - \x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02\x1e\x02\x12\x04\xf8\x01\x12\x14\n\ - \x0e\n\x06\x04\x07\x04\0\x02\x1f\x12\x04\xf9\x01\x06\x10\n\x0f\n\x07\x04\ - \x07\x04\0\x02\x1f\x01\x12\x04\xf9\x01\x06\n\n\x0f\n\x07\x04\x07\x04\0\ - \x02\x1f\x02\x12\x04\xf9\x01\r\x0f\n\x0e\n\x06\x04\x07\x04\0\x02\x20\x12\ - \x04\xfa\x01\x06\x12\n\x0f\n\x07\x04\x07\x04\0\x02\x20\x01\x12\x04\xfa\ - \x01\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02\x20\x02\x12\x04\xfa\x01\x0f\ - \x11\n\x0e\n\x06\x04\x07\x04\0\x02!\x12\x04\xfb\x01\x06\x12\n\x0f\n\x07\ - \x04\x07\x04\0\x02!\x01\x12\x04\xfb\x01\x06\x0c\n\x0f\n\x07\x04\x07\x04\ - \0\x02!\x02\x12\x04\xfb\x01\x0f\x11\n\x0e\n\x06\x04\x07\x04\0\x02\"\x12\ - \x04\xfc\x01\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x02\"\x01\x12\x04\xfc\x01\ - \x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02\"\x02\x12\x04\xfc\x01\x11\x13\n\ - \x0e\n\x06\x04\x07\x04\0\x02#\x12\x04\xfd\x01\x06\x13\n\x0f\n\x07\x04\ - \x07\x04\0\x02#\x01\x12\x04\xfd\x01\x06\r\n\x0f\n\x07\x04\x07\x04\0\x02#\ - \x02\x12\x04\xfd\x01\x10\x12\n\x0e\n\x06\x04\x07\x04\0\x02$\x12\x04\xfe\ - \x01\x06\x19\n\x0f\n\x07\x04\x07\x04\0\x02$\x01\x12\x04\xfe\x01\x06\x13\ - \n\x0f\n\x07\x04\x07\x04\0\x02$\x02\x12\x04\xfe\x01\x16\x18\n\x0e\n\x06\ - \x04\x07\x04\0\x02%\x12\x04\xff\x01\x06\x15\n\x0f\n\x07\x04\x07\x04\0\ - \x02%\x01\x12\x04\xff\x01\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02%\x02\x12\ - \x04\xff\x01\x12\x14\n\x0e\n\x06\x04\x07\x04\0\x02&\x12\x04\x80\x02\x06\ - \x1a\n\x0f\n\x07\x04\x07\x04\0\x02&\x01\x12\x04\x80\x02\x06\x14\n\x0f\n\ - \x07\x04\x07\x04\0\x02&\x02\x12\x04\x80\x02\x17\x19\n/\n\x06\x04\x07\x04\ - \0\x02'\x12\x04\x82\x02\x06\x13\x1a\x1f\x20For\x20Haskell's\x20PatternSy\ - nonyms\n\n\x0f\n\x07\x04\x07\x04\0\x02'\x01\x12\x04\x82\x02\x06\r\n\x0f\ - \n\x07\x04\x07\x04\0\x02'\x02\x12\x04\x82\x02\x10\x12\n\x1b\n\x06\x04\ - \x07\x04\0\x02(\x12\x04\x84\x02\x06\x15\x1a\x0b\x20For\x20Alloy\n\n\x0f\ - \n\x07\x04\x07\x04\0\x02(\x01\x12\x04\x84\x02\x06\x0f\n\x0f\n\x07\x04\ - \x07\x04\0\x02(\x02\x12\x04\x84\x02\x12\x14\n\x0e\n\x06\x04\x07\x04\0\ - \x02)\x12\x04\x85\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x02)\x01\x12\x04\ - \x85\x02\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02)\x02\x12\x04\x85\x02\x11\ - \x13\nQ\n\x06\x04\x07\x04\0\x02*\x12\x04\x87\x02\x06\x14\x1aA\x20Analogo\ - us\x20to\x20'Trait'\x20and\x20'TypeClass',\x20for\x20Swift\x20and\x20Obj\ - ective-C\n\n\x0f\n\x07\x04\x07\x04\0\x02*\x01\x12\x04\x87\x02\x06\x0e\n\ - \x0f\n\x07\x04\x07\x04\0\x02*\x02\x12\x04\x87\x02\x11\x13\n\x1d\n\x06\ - \x04\x07\x04\0\x02+\x12\x04\x89\x02\x06\x17\x1a\r\x20For\x20Haskell\n\n\ - \x0f\n\x07\x04\x07\x04\0\x02+\x01\x12\x04\x89\x02\x06\x11\n\x0f\n\x07\ - \x04\x07\x04\0\x02+\x02\x12\x04\x89\x02\x14\x16\n4\n\x06\x04\x07\x04\0\ - \x02,\x12\x04\x8b\x02\x06\x19\x1a$\x20'self'\x20in\x20Python,\x20Rust,\ - \x20Swift\x20etc.\n\n\x0f\n\x07\x04\x07\x04\0\x02,\x01\x12\x04\x8b\x02\ - \x06\x13\n\x0f\n\x07\x04\x07\x04\0\x02,\x02\x12\x04\x8b\x02\x16\x18\n$\n\ - \x06\x04\x07\x04\0\x02-\x12\x04\x8d\x02\x06\x12\x1a\x14\x20For\x20'set'\ - \x20in\x20Swift\n\n\x0f\n\x07\x04\x07\x04\0\x02-\x01\x12\x04\x8d\x02\x06\ - \x0c\n\x0f\n\x07\x04\x07\x04\0\x02-\x02\x12\x04\x8d\x02\x0f\x11\n3\n\x06\ - \x04\x07\x04\0\x02.\x12\x04\x8f\x02\x06\x15\x1a#\x20For\x20Alloy,\x20ana\ - logous\x20to\x20'Struct'.\n\n\x0f\n\x07\x04\x07\x04\0\x02.\x01\x12\x04\ - \x8f\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02.\x02\x12\x04\x8f\x02\x12\ - \x14\n\x1b\n\x06\x04\x07\x04\0\x02/\x12\x04\x91\x02\x06\x15\x1a\x0b\x20F\ - or\x20Swift\n\n\x0f\n\x07\x04\x07\x04\0\x02/\x01\x12\x04\x91\x02\x06\x0f\ - \n\x0f\n\x07\x04\x07\x04\0\x02/\x02\x12\x04\x91\x02\x12\x14\n\x0e\n\x06\ - \x04\x07\x04\0\x020\x12\x04\x92\x02\x06\x12\n\x0f\n\x07\x04\x07\x04\0\ - \x020\x01\x12\x04\x92\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x020\x02\x12\ - \x04\x92\x02\x0f\x11\n\x0e\n\x06\x04\x07\x04\0\x021\x12\x04\x93\x02\x06\ - \x12\n\x0f\n\x07\x04\x07\x04\0\x021\x01\x12\x04\x93\x02\x06\x0c\n\x0f\n\ - \x07\x04\x07\x04\0\x021\x02\x12\x04\x93\x02\x0f\x11\n\x1a\n\x06\x04\x07\ - \x04\0\x022\x12\x04\x95\x02\x06\x12\x1a\n\x20For\x20Lean\n\n\x0f\n\x07\ - \x04\x07\x04\0\x022\x01\x12\x04\x95\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\ - \0\x022\x02\x12\x04\x95\x02\x0f\x11\n\x1a\n\x06\x04\x07\x04\0\x023\x12\ - \x04\x97\x02\x06\x13\x1a\n\x20For\x20Lean\n\n\x0f\n\x07\x04\x07\x04\0\ - \x023\x01\x12\x04\x97\x02\x06\r\n\x0f\n\x07\x04\x07\x04\0\x023\x02\x12\ - \x04\x97\x02\x10\x12\nU\n\x06\x04\x07\x04\0\x024\x12\x04\x9a\x02\x06\x19\ - \x1aE\x20Method\x20receiver\x20for\x20languages\n\x20'this'\x20in\x20Jav\ - aScript,\x20C++,\x20Java\x20etc.\n\n\x0f\n\x07\x04\x07\x04\0\x024\x01\ - \x12\x04\x9a\x02\x06\x13\n\x0f\n\x07\x04\x07\x04\0\x024\x02\x12\x04\x9a\ - \x02\x16\x18\nD\n\x06\x04\x07\x04\0\x025\x12\x04\x9c\x02\x06\x11\x1a4\ - \x20Analogous\x20to\x20'Protocol'\x20and\x20'TypeClass',\x20for\x20Rust.\ - \n\n\x0f\n\x07\x04\x07\x04\0\x025\x01\x12\x04\x9c\x02\x06\x0b\n\x0f\n\ - \x07\x04\x07\x04\0\x025\x02\x12\x04\x9c\x02\x0e\x10\n\x89\x01\n\x06\x04\ - \x07\x04\0\x026\x12\x04\x9f\x02\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\x026\x01\x12\x04\x9f\x02\x06\n\n\x0f\n\ - \x07\x04\x07\x04\0\x026\x02\x12\x04\x9f\x02\r\x0f\n\x0e\n\x06\x04\x07\ - \x04\0\x027\x12\x04\xa0\x02\x06\x15\n\x0f\n\x07\x04\x07\x04\0\x027\x01\ - \x12\x04\xa0\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x027\x02\x12\x04\xa0\ - \x02\x12\x14\nS\n\x06\x04\x07\x04\0\x028\x12\x04\xa2\x02\x06\x15\x1aC\ - \x20Analogous\x20to\x20'Trait'\x20and\x20'Protocol',\x20for\x20Haskell,\ - \x20Purescript\x20etc.\n\n\x0f\n\x07\x04\x07\x04\0\x028\x01\x12\x04\xa2\ - \x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x028\x02\x12\x04\xa2\x02\x12\x14\ - \n\x1d\n\x06\x04\x07\x04\0\x029\x12\x04\xa4\x02\x06\x16\x1a\r\x20For\x20\ - Haskell\n\n\x0f\n\x07\x04\x07\x04\0\x029\x01\x12\x04\xa4\x02\x06\x10\n\ - \x0f\n\x07\x04\x07\x04\0\x029\x02\x12\x04\xa4\x02\x13\x15\n\x0e\n\x06\ - \x04\x07\x04\0\x02:\x12\x04\xa5\x02\x06\x19\n\x0f\n\x07\x04\x07\x04\0\ - \x02:\x01\x12\x04\xa5\x02\x06\x13\n\x0f\n\x07\x04\x07\x04\0\x02:\x02\x12\ - \x04\xa5\x02\x16\x18\n(\n\x06\x04\x07\x04\0\x02;\x12\x04\xa7\x02\x06\x11\ - \x1a\x18\x20For\x20C,\x20C++,\x20Capn\x20Proto\n\n\x0f\n\x07\x04\x07\x04\ - \0\x02;\x01\x12\x04\xa7\x02\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02;\x02\ - \x12\x04\xa7\x02\x0e\x10\n\x0e\n\x06\x04\x07\x04\0\x02<\x12\x04\xa8\x02\ - \x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02<\x01\x12\x04\xa8\x02\x06\x0b\n\ - \x0f\n\x07\x04\x07\x04\0\x02<\x02\x12\x04\xa8\x02\x0e\x10\n[\n\x06\x04\ - \x07\x04\0\x02=\x12\x04\xa9\x02\x06\x14\"K\x20Next\x20=\x2062;\n\x20Feel\ - \x20free\x20to\x20open\x20a\x20PR\x20proposing\x20new\x20language-specif\ - ic\x20kinds.\n\n\x0f\n\x07\x04\x07\x04\0\x02=\x01\x12\x04\xa9\x02\x06\ - \x0e\n\x0f\n\x07\x04\x07\x04\0\x02=\x02\x12\x04\xa9\x02\x11\x13\n\xf3\ - \x03\n\x04\x04\x07\x02\x04\x12\x04\xb6\x02\x02\x1a\x1a\xe4\x03\x20(optio\ - nal)\x20The\x20name\x20of\x20this\x20symbol\x20as\x20it\x20should\x20be\ - \x20displayed\x20to\x20the\x20user.\n\x20For\x20example,\x20the\x20symbo\ - l\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\x20\ - for\x20several\x20reasons:\n\n\x20-\x20Local\x20symbols\x20don't\x20enco\ - de\x20the\x20name.\n\x20-\x20Some\x20languages\x20have\x20case-insensiti\ - ve\x20names,\x20so\x20the\x20symbol\x20is\x20all-lowercase.\n\x20-\x20Th\ - e\x20symbol\x20may\x20encode\x20names\x20with\x20special\x20characters\ - \x20that\x20should\x20not\x20be\n\x20\x20\x20displayed\x20to\x20the\x20u\ - ser.\n\n\r\n\x05\x04\x07\x02\x04\x05\x12\x04\xb6\x02\x02\x08\n\r\n\x05\ - \x04\x07\x02\x04\x01\x12\x04\xb6\x02\t\x15\n\r\n\x05\x04\x07\x02\x04\x03\ - \x12\x04\xb6\x02\x18\x19\n\x0c\n\x02\x04\x08\x12\x06\xba\x02\0\xf2\x02\ - \x01\n\x0b\n\x03\x04\x08\x01\x12\x04\xba\x02\x08\x14\n\x0c\n\x04\x04\x08\ - \x02\0\x12\x04\xbb\x02\x02\x14\n\r\n\x05\x04\x08\x02\0\x05\x12\x04\xbb\ - \x02\x02\x08\n\r\n\x05\x04\x08\x02\0\x01\x12\x04\xbb\x02\t\x0f\n\r\n\x05\ - \x04\x08\x02\0\x03\x12\x04\xbb\x02\x12\x13\n\xde\x08\n\x04\x04\x08\x02\ - \x01\x12\x04\xd4\x02\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\xd4\x02\x02\x06\n\r\n\x05\x04\x08\x02\x01\x01\x12\x04\ - \xd4\x02\x07\x13\n\r\n\x05\x04\x08\x02\x01\x03\x12\x04\xd4\x02\x16\x17\n\ - \xee\x03\n\x04\x04\x08\x02\x02\x12\x04\xdd\x02\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\xdd\x02\x02\x06\n\r\n\x05\x04\x08\x02\x02\ - \x01\x12\x04\xdd\x02\x07\x18\n\r\n\x05\x04\x08\x02\x02\x03\x12\x04\xdd\ - \x02\x1b\x1c\nP\n\x04\x04\x08\x02\x03\x12\x04\xdf\x02\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\xdf\x02\x02\ - \x06\n\r\n\x05\x04\x08\x02\x03\x01\x12\x04\xdf\x02\x07\x19\n\r\n\x05\x04\ - \x08\x02\x03\x03\x12\x04\xdf\x02\x1c\x1d\n\xa7\x07\n\x04\x04\x08\x02\x04\ - \x12\x04\xf0\x02\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\xf0\x02\x02\x06\n\r\n\x05\x04\x08\x02\x04\x01\x12\ - \x04\xf0\x02\x07\x14\n\r\n\x05\x04\x08\x02\x04\x03\x12\x04\xf0\x02\x17\ - \x18\n\x88\x03\n\x02\x05\x02\x12\x06\xf9\x02\0\x89\x03\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\x02\x01\x12\x04\xf9\x02\x05\x0f\nv\n\x04\x05\x02\x02\0\ - \x12\x04\xfc\x02\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\x02\ - \x02\0\x01\x12\x04\xfc\x02\x02\x17\n\r\n\x05\x05\x02\x02\0\x02\x12\x04\ - \xfc\x02\x1a\x1b\nT\n\x04\x05\x02\x02\x01\x12\x04\xfe\x02\x02\x13\x1aF\ - \x20Is\x20the\x20symbol\x20defined\x20here?\x20If\x20not,\x20then\x20thi\ - s\x20is\x20a\x20symbol\x20reference.\n\n\r\n\x05\x05\x02\x02\x01\x01\x12\ - \x04\xfe\x02\x02\x0c\n\r\n\x05\x05\x02\x02\x01\x02\x12\x04\xfe\x02\x0f\ - \x12\n,\n\x04\x05\x02\x02\x02\x12\x04\x80\x03\x02\x0f\x1a\x1e\x20Is\x20t\ - he\x20symbol\x20imported\x20here?\n\n\r\n\x05\x05\x02\x02\x02\x01\x12\ - \x04\x80\x03\x02\x08\n\r\n\x05\x05\x02\x02\x02\x02\x12\x04\x80\x03\x0b\ - \x0e\n+\n\x04\x05\x02\x02\x03\x12\x04\x82\x03\x02\x14\x1a\x1d\x20Is\x20t\ - he\x20symbol\x20written\x20here?\n\n\r\n\x05\x05\x02\x02\x03\x01\x12\x04\ - \x82\x03\x02\r\n\r\n\x05\x05\x02\x02\x03\x02\x12\x04\x82\x03\x10\x13\n(\ - \n\x04\x05\x02\x02\x04\x12\x04\x84\x03\x02\x13\x1a\x1a\x20Is\x20the\x20s\ - ymbol\x20read\x20here?\n\n\r\n\x05\x05\x02\x02\x04\x01\x12\x04\x84\x03\ - \x02\x0c\n\r\n\x05\x05\x02\x02\x04\x02\x12\x04\x84\x03\x0f\x12\n0\n\x04\ - \x05\x02\x02\x05\x12\x04\x86\x03\x02\x13\x1a\"\x20Is\x20the\x20symbol\ - \x20in\x20generated\x20code?\n\n\r\n\x05\x05\x02\x02\x05\x01\x12\x04\x86\ - \x03\x02\x0b\n\r\n\x05\x05\x02\x02\x05\x02\x12\x04\x86\x03\x0e\x12\n+\n\ - \x04\x05\x02\x02\x06\x12\x04\x88\x03\x02\x0e\x1a\x1d\x20Is\x20the\x20sym\ - bol\x20in\x20test\x20code?\n\n\r\n\x05\x05\x02\x02\x06\x01\x12\x04\x88\ - \x03\x02\x06\n\r\n\x05\x05\x02\x02\x06\x02\x12\x04\x88\x03\t\r\n\x0c\n\ - \x02\x05\x03\x12\x06\x8b\x03\0\xe8\x03\x01\n\x0b\n\x03\x05\x03\x01\x12\ - \x04\x8b\x03\x05\x0f\n\x0b\n\x03\x05\x03\x03\x12\x04\x8c\x03\x02\x1c\n\ - \x0c\n\x04\x05\x03\x03\x02\x12\x04\x8c\x03\x02\x1c\n\x0c\n\x04\x05\x03\ - \x02\0\x12\x04\x8e\x03\x02\x1c\n\r\n\x05\x05\x03\x02\0\x01\x12\x04\x8e\ - \x03\x02\x17\n\r\n\x05\x05\x03\x02\0\x02\x12\x04\x8e\x03\x1a\x1b\n;\n\ - \x04\x05\x03\x02\x01\x12\x04\x91\x03\x02\x0e\x1a-\x20Comment,\x20includi\ - ng\x20comment\x20markers\x20and\x20text\n\n\r\n\x05\x05\x03\x02\x01\x01\ - \x12\x04\x91\x03\x02\t\n\r\n\x05\x05\x03\x02\x01\x02\x12\x04\x91\x03\x0c\ - \r\n\x1b\n\x04\x05\x03\x02\x02\x12\x04\x94\x03\x02\x1b\x1a\r\x20`;`\x20`\ - .`\x20`,`\n\n\r\n\x05\x05\x03\x02\x02\x01\x12\x04\x94\x03\x02\x16\n\r\n\ - \x05\x05\x03\x02\x02\x02\x12\x04\x94\x03\x19\x1a\n2\n\x04\x05\x03\x02\ - \x03\x12\x04\x96\x03\x02\x19\x1a$\x20(),\x20{},\x20[]\x20when\x20used\ - \x20syntactically\n\n\r\n\x05\x05\x03\x02\x03\x01\x12\x04\x96\x03\x02\ - \x14\n\r\n\x05\x05\x03\x02\x03\x02\x12\x04\x96\x03\x17\x18\n5\n\x04\x05\ - \x03\x02\x04\x12\x04\x99\x03\x02\x0e\x1a'\x20`if`,\x20`else`,\x20`return\ - `,\x20`class`,\x20etc.\n\n\r\n\x05\x05\x03\x02\x04\x01\x12\x04\x99\x03\ - \x02\t\n\r\n\x05\x05\x03\x02\x04\x02\x12\x04\x99\x03\x0c\r\n\x0c\n\x04\ - \x05\x03\x02\x05\x12\x04\x9a\x03\x02*\n\r\n\x05\x05\x03\x02\x05\x01\x12\ - \x04\x9a\x03\x02\x13\n\r\n\x05\x05\x03\x02\x05\x02\x12\x04\x9a\x03\x16\ - \x17\n\r\n\x05\x05\x03\x02\x05\x03\x12\x04\x9a\x03\x18)\n\x0e\n\x06\x05\ - \x03\x02\x05\x03\x01\x12\x04\x9a\x03\x19(\n\x1e\n\x04\x05\x03\x02\x06\ - \x12\x04\x9d\x03\x02\x19\x1a\x10\x20`+`,\x20`*`,\x20etc.\n\n\r\n\x05\x05\ - \x03\x02\x06\x01\x12\x04\x9d\x03\x02\x14\n\r\n\x05\x05\x03\x02\x06\x02\ - \x12\x04\x9d\x03\x17\x18\nX\n\x04\x05\x03\x02\x07\x12\x04\xa0\x03\x02\ - \x11\x1aJ\x20non-specific\x20catch-all\x20for\x20any\x20identifier\x20no\ - t\x20better\x20described\x20elsewhere\n\n\r\n\x05\x05\x03\x02\x07\x01\ - \x12\x04\xa0\x03\x02\x0c\n\r\n\x05\x05\x03\x02\x07\x02\x12\x04\xa0\x03\ - \x0f\x10\nN\n\x04\x05\x03\x02\x08\x12\x04\xa2\x03\x02\x18\x1a@\x20Identi\ - fiers\x20builtin\x20to\x20the\x20language:\x20`min`,\x20`print`\x20in\ - \x20Python.\n\n\r\n\x05\x05\x03\x02\x08\x01\x12\x04\xa2\x03\x02\x13\n\r\ - \n\x05\x05\x03\x02\x08\x02\x12\x04\xa2\x03\x16\x17\n[\n\x04\x05\x03\x02\ - \t\x12\x04\xa4\x03\x02\x15\x1aM\x20Identifiers\x20representing\x20`null`\ - -like\x20values:\x20`None`\x20in\x20Python,\x20`nil`\x20in\x20Go.\n\n\r\ - \n\x05\x05\x03\x02\t\x01\x12\x04\xa4\x03\x02\x10\n\r\n\x05\x05\x03\x02\t\ - \x02\x12\x04\xa4\x03\x13\x14\n.\n\x04\x05\x03\x02\n\x12\x04\xa6\x03\x02\ - \x19\x1a\x20\x20`xyz`\x20in\x20`const\x20xyz\x20=\x20\"hello\"`\n\n\r\n\ - \x05\x05\x03\x02\n\x01\x12\x04\xa6\x03\x02\x14\n\r\n\x05\x05\x03\x02\n\ - \x02\x12\x04\xa6\x03\x17\x18\n'\n\x04\x05\x03\x02\x0b\x12\x04\xa8\x03\ - \x02\x1f\x1a\x19\x20`var\x20X\x20=\x20\"hello\"`\x20in\x20Go\n\n\r\n\x05\ - \x05\x03\x02\x0b\x01\x12\x04\xa8\x03\x02\x19\n\r\n\x05\x05\x03\x02\x0b\ - \x02\x12\x04\xa8\x03\x1c\x1e\n3\n\x04\x05\x03\x02\x0c\x12\x04\xaa\x03\ - \x02\x1b\x1a%\x20Parameter\x20definition\x20and\x20references\n\n\r\n\ - \x05\x05\x03\x02\x0c\x01\x12\x04\xaa\x03\x02\x15\n\r\n\x05\x05\x03\x02\ - \x0c\x02\x12\x04\xaa\x03\x18\x1a\nX\n\x04\x05\x03\x02\r\x12\x04\xac\x03\ - \x02\x17\x1aJ\x20Identifiers\x20for\x20variable\x20definitions\x20and\ - \x20references\x20within\x20a\x20local\x20scope\n\n\r\n\x05\x05\x03\x02\ - \r\x01\x12\x04\xac\x03\x02\x11\n\r\n\x05\x05\x03\x02\r\x02\x12\x04\xac\ - \x03\x14\x16\nK\n\x04\x05\x03\x02\x0e\x12\x04\xae\x03\x02\x1a\x1a=\x20Id\ - entifiers\x20that\x20shadow\x20other\x20identifiers\x20in\x20an\x20outer\ - \x20scope\n\n\r\n\x05\x05\x03\x02\x0e\x01\x12\x04\xae\x03\x02\x14\n\r\n\ - \x05\x05\x03\x02\x0e\x02\x12\x04\xae\x03\x17\x19\n\xcd\x01\n\x04\x05\x03\ - \x02\x0f\x12\x04\xb3\x03\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\x03\x02\x0f\x01\x12\ - \x04\xb3\x03\x02\x15\n\r\n\x05\x05\x03\x02\x0f\x02\x12\x04\xb3\x03\x18\ - \x1a\n\x0c\n\x04\x05\x03\x02\x10\x12\x04\xb4\x03\x02*\n\r\n\x05\x05\x03\ - \x02\x10\x01\x12\x04\xb4\x03\x02\x12\n\r\n\x05\x05\x03\x02\x10\x02\x12\ - \x04\xb4\x03\x15\x17\n\r\n\x05\x05\x03\x02\x10\x03\x12\x04\xb4\x03\x18)\ - \n\x0e\n\x06\x05\x03\x02\x10\x03\x01\x12\x04\xb4\x03\x19(\n4\n\x04\x05\ - \x03\x02\x11\x12\x04\xb7\x03\x02\x1a\x1a&\x20Function\x20references,\x20\ - including\x20calls\n\n\r\n\x05\x05\x03\x02\x11\x01\x12\x04\xb7\x03\x02\ - \x14\n\r\n\x05\x05\x03\x02\x11\x02\x12\x04\xb7\x03\x17\x19\n(\n\x04\x05\ - \x03\x02\x12\x12\x04\xb9\x03\x02$\x1a\x1a\x20Function\x20definition\x20o\ - nly\n\n\r\n\x05\x05\x03\x02\x12\x01\x12\x04\xb9\x03\x02\x1e\n\r\n\x05\ - \x05\x03\x02\x12\x02\x12\x04\xb9\x03!#\n7\n\x04\x05\x03\x02\x13\x12\x04\ - \xbc\x03\x02\x17\x1a)\x20Macro\x20references,\x20including\x20invocation\ - s\n\n\r\n\x05\x05\x03\x02\x13\x01\x12\x04\xbc\x03\x02\x11\n\r\n\x05\x05\ - \x03\x02\x13\x02\x12\x04\xbc\x03\x14\x16\n%\n\x04\x05\x03\x02\x14\x12\ - \x04\xbe\x03\x02!\x1a\x17\x20Macro\x20definition\x20only\n\n\r\n\x05\x05\ - \x03\x02\x14\x01\x12\x04\xbe\x03\x02\x1b\n\r\n\x05\x05\x03\x02\x14\x02\ - \x12\x04\xbe\x03\x1e\x20\n!\n\x04\x05\x03\x02\x15\x12\x04\xc1\x03\x02\ - \x16\x1a\x13\x20non-builtin\x20types\n\n\r\n\x05\x05\x03\x02\x15\x01\x12\ - \x04\xc1\x03\x02\x10\n\r\n\x05\x05\x03\x02\x15\x02\x12\x04\xc1\x03\x13\ - \x15\nK\n\x04\x05\x03\x02\x16\x12\x04\xc3\x03\x02\x1d\x1a=\x20builtin\ - \x20types\x20only,\x20such\x20as\x20`str`\x20for\x20Python\x20or\x20`int\ - `\x20in\x20Go\n\n\r\n\x05\x05\x03\x02\x16\x01\x12\x04\xc3\x03\x02\x17\n\ - \r\n\x05\x05\x03\x02\x16\x02\x12\x04\xc3\x03\x1a\x1c\n7\n\x04\x05\x03\ - \x02\x17\x12\x04\xc6\x03\x02\x1b\x1a)\x20Python\x20decorators,\x20c-like\ - \x20__attribute__\n\n\r\n\x05\x05\x03\x02\x17\x01\x12\x04\xc6\x03\x02\ - \x15\n\r\n\x05\x05\x03\x02\x17\x02\x12\x04\xc6\x03\x18\x1a\n\x14\n\x04\ - \x05\x03\x02\x18\x12\x04\xc9\x03\x02\x13\x1a\x06\x20`\\b`\n\n\r\n\x05\ - \x05\x03\x02\x18\x01\x12\x04\xc9\x03\x02\r\n\r\n\x05\x05\x03\x02\x18\x02\ - \x12\x04\xc9\x03\x10\x12\n\x18\n\x04\x05\x03\x02\x19\x12\x04\xcb\x03\x02\ - \x15\x1a\n\x20`*`,\x20`+`\n\n\r\n\x05\x05\x03\x02\x19\x01\x12\x04\xcb\ - \x03\x02\x0f\n\r\n\x05\x05\x03\x02\x19\x02\x12\x04\xcb\x03\x12\x14\n\x13\ - \n\x04\x05\x03\x02\x1a\x12\x04\xcd\x03\x02\x15\x1a\x05\x20`.`\n\n\r\n\ - \x05\x05\x03\x02\x1a\x01\x12\x04\xcd\x03\x02\x0f\n\r\n\x05\x05\x03\x02\ - \x1a\x02\x12\x04\xcd\x03\x12\x14\n\"\n\x04\x05\x03\x02\x1b\x12\x04\xcf\ - \x03\x02\x16\x1a\x14\x20`(`,\x20`)`,\x20`[`,\x20`]`\n\n\r\n\x05\x05\x03\ - \x02\x1b\x01\x12\x04\xcf\x03\x02\x10\n\r\n\x05\x05\x03\x02\x1b\x02\x12\ - \x04\xcf\x03\x13\x15\n\x18\n\x04\x05\x03\x02\x1c\x12\x04\xd1\x03\x02\x11\ - \x1a\n\x20`|`,\x20`-`\n\n\r\n\x05\x05\x03\x02\x1c\x01\x12\x04\xd1\x03\ - \x02\x0b\n\r\n\x05\x05\x03\x02\x1c\x02\x12\x04\xd1\x03\x0e\x10\n0\n\x04\ - \x05\x03\x02\x1d\x12\x04\xd4\x03\x02\x15\x1a\"\x20Literal\x20strings:\ - \x20\"Hello,\x20world!\"\n\n\r\n\x05\x05\x03\x02\x1d\x01\x12\x04\xd4\x03\ - \x02\x0f\n\r\n\x05\x05\x03\x02\x1d\x02\x12\x04\xd4\x03\x12\x14\n-\n\x04\ - \x05\x03\x02\x1e\x12\x04\xd6\x03\x02\x1b\x1a\x1f\x20non-regex\x20escapes\ - :\x20\"\\t\",\x20\"\\n\"\n\n\r\n\x05\x05\x03\x02\x1e\x01\x12\x04\xd6\x03\ - \x02\x15\n\r\n\x05\x05\x03\x02\x1e\x02\x12\x04\xd6\x03\x18\x1a\n_\n\x04\ - \x05\x03\x02\x1f\x12\x04\xd8\x03\x02\x1c\x1aQ\x20datetimes\x20within\x20\ - strings,\x20special\x20words\x20within\x20a\x20string,\x20`{}`\x20in\x20\ - format\x20strings\n\n\r\n\x05\x05\x03\x02\x1f\x01\x12\x04\xd8\x03\x02\ - \x16\n\r\n\x05\x05\x03\x02\x1f\x02\x12\x04\xd8\x03\x19\x1b\nG\n\x04\x05\ - \x03\x02\x20\x12\x04\xda\x03\x02\x18\x1a9\x20\"key\"\x20in\x20{\x20\"key\ - \":\x20\"value\"\x20},\x20useful\x20for\x20example\x20in\x20JSON\n\n\r\n\ - \x05\x05\x03\x02\x20\x01\x12\x04\xda\x03\x02\x12\n\r\n\x05\x05\x03\x02\ - \x20\x02\x12\x04\xda\x03\x15\x17\nV\n\x04\x05\x03\x02!\x12\x04\xdc\x03\ - \x02\x18\x1aH\x20'c'\x20or\x20similar,\x20in\x20languages\x20that\x20dif\ - ferentiate\x20strings\x20and\x20characters\n\n\r\n\x05\x05\x03\x02!\x01\ - \x12\x04\xdc\x03\x02\x12\n\r\n\x05\x05\x03\x02!\x02\x12\x04\xdc\x03\x15\ - \x17\n9\n\x04\x05\x03\x02\"\x12\x04\xde\x03\x02\x16\x1a+\x20Literal\x20n\ - umbers,\x20both\x20floats\x20and\x20integers\n\n\r\n\x05\x05\x03\x02\"\ - \x01\x12\x04\xde\x03\x02\x10\n\r\n\x05\x05\x03\x02\"\x02\x12\x04\xde\x03\ - \x13\x15\n\x1f\n\x04\x05\x03\x02#\x12\x04\xe0\x03\x02\x16\x1a\x11\x20`tr\ - ue`,\x20`false`\n\n\r\n\x05\x05\x03\x02#\x01\x12\x04\xe0\x03\x02\x10\n\r\ - \n\x05\x05\x03\x02#\x02\x12\x04\xe0\x03\x13\x15\n&\n\x04\x05\x03\x02$\ - \x12\x04\xe3\x03\x02\x0b\x1a\x18\x20Used\x20for\x20XML-like\x20tags\n\n\ - \r\n\x05\x05\x03\x02$\x01\x12\x04\xe3\x03\x02\x05\n\r\n\x05\x05\x03\x02$\ - \x02\x12\x04\xe3\x03\x08\n\n/\n\x04\x05\x03\x02%\x12\x04\xe5\x03\x02\x14\ - \x1a!\x20Attribute\x20name\x20in\x20XML-like\x20tags\n\n\r\n\x05\x05\x03\ - \x02%\x01\x12\x04\xe5\x03\x02\x0e\n\r\n\x05\x05\x03\x02%\x02\x12\x04\xe5\ - \x03\x11\x13\n,\n\x04\x05\x03\x02&\x12\x04\xe7\x03\x02\x14\x1a\x1e\x20De\ - limiters\x20for\x20XML-like\x20tags\n\n\r\n\x05\x05\x03\x02&\x01\x12\x04\ - \xe7\x03\x02\x0e\n\r\n\x05\x05\x03\x02&\x02\x12\x04\xe7\x03\x11\x13\n\ - \xf9\x01\n\x02\x04\t\x12\x06\xef\x03\0\xbe\x04\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\xef\x03\ - \x08\x12\n\xc6\x07\n\x04\x04\t\x02\0\x12\x04\x82\x04\x02\x1b\x1a\xb7\x07\ - \x20Source\x20position\x20of\x20this\x20occurrence.\x20Must\x20be\x20exa\ - ctly\x20three\x20or\x20four\n\x20elements:\n\n\x20-\x20Four\x20elements:\ - \x20`[startLine,\x20startCharacter,\x20endLine,\x20endCharacter]`\n\x20-\ - \x20Three\x20elements:\x20`[startLine,\x20startCharacter,\x20endCharacte\ - r]`.\x20The\x20end\x20line\n\x20\x20\x20is\x20inferred\x20to\x20have\x20\ - the\x20same\x20value\x20as\x20the\x20start\x20line.\n\n\x20Line\x20numbe\ - rs\x20and\x20characters\x20are\x20always\x200-based.\x20Make\x20sure\x20\ - to\x20increment\x20the\n\x20line/character\x20values\x20before\x20displa\ - ying\x20them\x20in\x20an\x20editor-like\x20UI\x20because\n\x20editors\ - \x20conventionally\x20use\x201-based\x20numbers.\n\n\x20Historical\x20no\ - te:\x20the\x20original\x20draft\x20of\x20this\x20schema\x20had\x20a\x20`\ - Range`\x20message\n\x20type\x20with\x20`start`\x20and\x20`end`\x20fields\ - \x20of\x20type\x20`Position`,\x20mirroring\x20LSP.\n\x20Benchmarks\x20re\ - vealed\x20that\x20this\x20encoding\x20was\x20inefficient\x20and\x20that\ - \x20we\x20could\n\x20reduce\x20the\x20total\x20payload\x20size\x20of\x20\ - an\x20index\x20by\x2050%\x20by\x20using\x20`repeated\x20int32`\n\x20inst\ - ead.\x20The\x20`repeated\x20int32`\x20encoding\x20is\x20admittedly\x20mo\ - re\x20embarrassing\x20to\n\x20work\x20with\x20in\x20some\x20programming\ - \x20languages\x20but\x20we\x20hope\x20the\x20performance\n\x20improvemen\ - ts\x20make\x20up\x20for\x20it.\n\n\r\n\x05\x04\t\x02\0\x04\x12\x04\x82\ - \x04\x02\n\n\r\n\x05\x04\t\x02\0\x05\x12\x04\x82\x04\x0b\x10\n\r\n\x05\ - \x04\t\x02\0\x01\x12\x04\x82\x04\x11\x16\n\r\n\x05\x04\t\x02\0\x03\x12\ - \x04\x82\x04\x19\x1a\n\x8a\x01\n\x04\x04\t\x02\x01\x12\x04\x85\x04\x02\ - \x14\x1a|\x20(optional)\x20The\x20symbol\x20that\x20appears\x20at\x20thi\ - s\x20position.\x20See\n\x20`SymbolInformation.symbol`\x20for\x20how\x20t\ - o\x20format\x20symbols\x20as\x20strings.\n\n\r\n\x05\x04\t\x02\x01\x05\ - \x12\x04\x85\x04\x02\x08\n\r\n\x05\x04\t\x02\x01\x01\x12\x04\x85\x04\t\ - \x0f\n\r\n\x05\x04\t\x02\x01\x03\x12\x04\x85\x04\x12\x13\n\x97\x01\n\x04\ - \x04\t\x02\x02\x12\x04\x88\x04\x02\x19\x1a\x88\x01\x20(optional)\x20Bits\ - et\x20containing\x20`SymbolRole`s\x20in\x20this\x20occurrence.\n\x20See\ - \x20`SymbolRole`'s\x20documentation\x20for\x20how\x20to\x20read\x20and\ - \x20write\x20this\x20field.\n\n\r\n\x05\x04\t\x02\x02\x05\x12\x04\x88\ - \x04\x02\x07\n\r\n\x05\x04\t\x02\x02\x01\x12\x04\x88\x04\x08\x14\n\r\n\ - \x05\x04\t\x02\x02\x03\x12\x04\x88\x04\x17\x18\n\xf1\x03\n\x04\x04\t\x02\ - \x03\x12\x04\x91\x04\x02-\x1a\xe2\x03\x20(optional)\x20CommonMark-format\ - ted\x20documentation\x20for\x20this\x20specific\x20range.\x20If\n\x20emp\ - ty,\x20the\x20`Symbol.documentation`\x20field\x20is\x20used\x20instead.\ - \x20One\x20example\n\x20where\x20this\x20field\x20might\x20be\x20useful\ - \x20is\x20when\x20the\x20symbol\x20represents\x20a\x20generic\n\x20funct\ - ion\x20(with\x20abstract\x20type\x20parameters\x20such\x20as\x20`List\ - `)\x20and\x20at\x20this\n\x20occurrence\x20we\x20know\x20the\x20exact\ - \x20values\x20(such\x20as\x20`List`).\n\n\x20This\x20field\x20ca\ - n\x20also\x20be\x20used\x20for\x20dynamically\x20or\x20gradually\x20type\ - d\x20languages,\n\x20which\x20commonly\x20allow\x20for\x20type-changing\ - \x20assignment.\n\n\r\n\x05\x04\t\x02\x03\x04\x12\x04\x91\x04\x02\n\n\r\ - \n\x05\x04\t\x02\x03\x05\x12\x04\x91\x04\x0b\x11\n\r\n\x05\x04\t\x02\x03\ - \x01\x12\x04\x91\x04\x12(\n\r\n\x05\x04\t\x02\x03\x03\x12\x04\x91\x04+,\ - \nX\n\x04\x04\t\x02\x04\x12\x04\x93\x04\x02\x1d\x1aJ\x20(optional)\x20Wh\ - at\x20syntax\x20highlighting\x20class\x20should\x20be\x20used\x20for\x20\ - this\x20range?\n\n\r\n\x05\x04\t\x02\x04\x06\x12\x04\x93\x04\x02\x0c\n\r\ - \n\x05\x04\t\x02\x04\x01\x12\x04\x93\x04\r\x18\n\r\n\x05\x04\t\x02\x04\ - \x03\x12\x04\x93\x04\x1b\x1c\nW\n\x04\x04\t\x02\x05\x12\x04\x95\x04\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\x95\x04\x02\n\n\r\n\x05\x04\t\x02\x05\x06\x12\x04\x95\x04\x0b\x15\n\ - \r\n\x05\x04\t\x02\x05\x01\x12\x04\x95\x04\x16!\n\r\n\x05\x04\t\x02\x05\ - \x03\x12\x04\x95\x04$%\n\x80\x0c\n\x04\x04\t\x02\x06\x12\x04\xbd\x04\x02\ - %\x1a\xf1\x0b\x20(optional)\x20Using\x20the\x20same\x20encoding\x20as\ - \x20the\x20sibling\x20`range`\x20field,\x20source\n\x20position\x20of\ - \x20the\x20nearest\x20non-trivial\x20enclosing\x20AST\x20node.\x20This\ - \x20range\x20must\n\x20enclose\x20the\x20`range`\x20field.\x20Example\ - \x20applications\x20that\x20make\x20use\x20of\x20the\n\x20enclosing_rang\ - e\x20field:\n\n\x20-\x20Call\x20hierarchies:\x20to\x20determine\x20what\ - \x20symbols\x20are\x20references\x20from\x20the\x20body\n\x20\x20\x20of\ - \x20a\x20function\n\x20-\x20Symbol\x20outline:\x20to\x20display\x20bread\ - crumbs\x20from\x20the\x20cursor\x20position\x20to\x20the\n\x20\x20\x20ro\ - ot\x20of\x20the\x20file\n\x20-\x20Expand\x20selection:\x20to\x20select\ - \x20the\x20nearest\x20enclosing\x20AST\x20node.\n\x20-\x20Highlight\x20r\ - ange:\x20to\x20indicate\x20the\x20AST\x20expression\x20that\x20is\x20ass\ - ociated\x20with\x20a\n\x20\x20\x20hover\x20popover\n\n\x20For\x20definit\ - ion\x20occurrences,\x20the\x20enclosing\x20range\x20should\x20indicate\ - \x20the\n\x20start/end\x20bounds\x20of\x20the\x20entire\x20definition\ - \x20AST\x20node,\x20including\n\x20documentation.\n\x20```\n\x20const\ - \x20n\x20=\x203\n\x20\x20\x20\x20\x20\x20\x20^\x20range\n\x20^^^^^^^^^^^\ - \x20enclosing_range\n\n\x20/**\x20Parses\x20the\x20string\x20into\x20som\ - ething\x20*/\n\x20^\x20enclosing_range\x20start\x20---------------------\ - -----------------|\n\x20function\x20parse(input\x20string):\x20string\ - \x20{\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20|\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20^^^^^\x20range\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + >\x20'#'\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20::=\x20\x20'.'\n\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20\x20':'\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20::=\ + \x20\x20'!'\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20::=\x20\x20'('\x20\x20')\ + .'\n\x20\x20\x20\x20\x20\x20\x20\x20::=\x20'['\x20\ + \x20']'\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + ::=\x20'('\x20\x20')'\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20::=\x20\n\x20\x20::=\x20\n\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20::=\x20\x20|\x20\n\x20\x20\x20\x20\x20::=\x20()+\n\x20\x20::=\x20'_'\x20|\x20'+'\ + \x20|\x20'-'\x20|\x20'$'\x20|\x20ASCII\x20letter\x20or\x20digit\n\x20\x20\x20\x20::=\x20'`'\x20()+\x20'`'\ + \n\x20\x20\x20\x20::=\x20any\x20UTF-8\x20character,\ + \x20escape\x20backticks\x20with\x20double\x20backtick.\n\x20```\n\n\x20T\ + he\x20list\x20of\x20descriptors\x20for\x20a\x20symbol\x20should\x20toget\ + her\x20form\x20a\x20fully\n\x20qualified\x20name\x20for\x20the\x20symbol\ + .\x20That\x20is,\x20it\x20should\x20serve\x20as\x20a\x20unique\n\x20iden\ + tifier\x20across\x20the\x20package.\x20Typically,\x20it\x20will\x20inclu\ + de\x20one\x20descriptor\n\x20for\x20every\x20node\x20in\x20the\x20AST\ + \x20(along\x20the\x20ancestry\x20path)\x20between\x20the\x20root\x20of\n\ + \x20the\x20file\x20and\x20the\x20node\x20corresponding\x20to\x20the\x20s\ + ymbol.\n\n\x0b\n\x03\x04\x04\x01\x12\x04\x8e\x01\x08\x0e\n\x0c\n\x04\x04\ + \x04\x02\0\x12\x04\x8f\x01\x02\x14\n\r\n\x05\x04\x04\x02\0\x05\x12\x04\ + \x8f\x01\x02\x08\n\r\n\x05\x04\x04\x02\0\x01\x12\x04\x8f\x01\t\x0f\n\r\n\ + \x05\x04\x04\x02\0\x03\x12\x04\x8f\x01\x12\x13\n\x0c\n\x04\x04\x04\x02\ + \x01\x12\x04\x90\x01\x02\x16\n\r\n\x05\x04\x04\x02\x01\x06\x12\x04\x90\ + \x01\x02\t\n\r\n\x05\x04\x04\x02\x01\x01\x12\x04\x90\x01\n\x11\n\r\n\x05\ + \x04\x04\x02\x01\x03\x12\x04\x90\x01\x14\x15\n\x0c\n\x04\x04\x04\x02\x02\ + \x12\x04\x91\x01\x02&\n\r\n\x05\x04\x04\x02\x02\x04\x12\x04\x91\x01\x02\ + \n\n\r\n\x05\x04\x04\x02\x02\x06\x12\x04\x91\x01\x0b\x15\n\r\n\x05\x04\ + \x04\x02\x02\x01\x12\x04\x91\x01\x16!\n\r\n\x05\x04\x04\x02\x02\x03\x12\ + \x04\x91\x01$%\nq\n\x02\x04\x05\x12\x06\x97\x01\0\x9b\x01\x01\x1ac\x20Un\ + it\x20of\x20packaging\x20and\x20distribution.\n\n\x20NOTE:\x20This\x20co\ + rresponds\x20to\x20a\x20module\x20in\x20Go\x20and\x20JVM\x20languages.\n\ + \n\x0b\n\x03\x04\x05\x01\x12\x04\x97\x01\x08\x0f\n\x0c\n\x04\x04\x05\x02\ + \0\x12\x04\x98\x01\x02\x15\n\r\n\x05\x04\x05\x02\0\x05\x12\x04\x98\x01\ + \x02\x08\n\r\n\x05\x04\x05\x02\0\x01\x12\x04\x98\x01\t\x10\n\r\n\x05\x04\ + \x05\x02\0\x03\x12\x04\x98\x01\x13\x14\n\x0c\n\x04\x04\x05\x02\x01\x12\ + \x04\x99\x01\x02\x12\n\r\n\x05\x04\x05\x02\x01\x05\x12\x04\x99\x01\x02\ + \x08\n\r\n\x05\x04\x05\x02\x01\x01\x12\x04\x99\x01\t\r\n\r\n\x05\x04\x05\ + \x02\x01\x03\x12\x04\x99\x01\x10\x11\n\x0c\n\x04\x04\x05\x02\x02\x12\x04\ + \x9a\x01\x02\x15\n\r\n\x05\x04\x05\x02\x02\x05\x12\x04\x9a\x01\x02\x08\n\ + \r\n\x05\x04\x05\x02\x02\x01\x12\x04\x9a\x01\t\x10\n\r\n\x05\x04\x05\x02\ + \x02\x03\x12\x04\x9a\x01\x13\x14\n\x0c\n\x02\x04\x06\x12\x06\x9d\x01\0\ + \xb4\x01\x01\n\x0b\n\x03\x04\x06\x01\x12\x04\x9d\x01\x08\x12\n\x0e\n\x04\ + \x04\x06\x04\0\x12\x06\x9e\x01\x02\xb0\x01\x03\n\r\n\x05\x04\x06\x04\0\ + \x01\x12\x04\x9e\x01\x07\r\n\r\n\x05\x04\x06\x04\0\x03\x12\x04\x9f\x01\ + \x04\x1e\n\x0e\n\x06\x04\x06\x04\0\x03\x02\x12\x04\x9f\x01\x04\x1e\n\x0e\ + \n\x06\x04\x06\x04\0\x02\0\x12\x04\xa0\x01\x04\x1a\n\x0f\n\x07\x04\x06\ + \x04\0\x02\0\x01\x12\x04\xa0\x01\x04\x15\n\x0f\n\x07\x04\x06\x04\0\x02\0\ + \x02\x12\x04\xa0\x01\x18\x19\n}\n\x06\x04\x06\x04\0\x02\x01\x12\x04\xa4\ + \x01\x04\x12\x1am\x20Unit\x20of\x20code\x20abstraction\x20and/or\x20name\ + spacing.\n\n\x20NOTE:\x20This\x20corresponds\x20to\x20a\x20package\x20in\ + \x20Go\x20and\x20JVM\x20languages.\n\n\x0f\n\x07\x04\x06\x04\0\x02\x01\ + \x01\x12\x04\xa4\x01\x04\r\n\x0f\n\x07\x04\x06\x04\0\x02\x01\x02\x12\x04\ + \xa4\x01\x10\x11\n(\n\x06\x04\x06\x04\0\x02\x02\x12\x04\xa6\x01\x04\"\ + \x1a\x18\x20Use\x20Namespace\x20instead.\n\n\x0f\n\x07\x04\x06\x04\0\x02\ + \x02\x01\x12\x04\xa6\x01\x04\x0b\n\x0f\n\x07\x04\x06\x04\0\x02\x02\x02\ + \x12\x04\xa6\x01\x0e\x0f\n\x0f\n\x07\x04\x06\x04\0\x02\x02\x03\x12\x04\ + \xa6\x01\x10!\n\x10\n\x08\x04\x06\x04\0\x02\x02\x03\x01\x12\x04\xa6\x01\ + \x11\x20\n\x0e\n\x06\x04\x06\x04\0\x02\x03\x12\x04\xa7\x01\x04\r\n\x0f\n\ + \x07\x04\x06\x04\0\x02\x03\x01\x12\x04\xa7\x01\x04\x08\n\x0f\n\x07\x04\ + \x06\x04\0\x02\x03\x02\x12\x04\xa7\x01\x0b\x0c\n\x0e\n\x06\x04\x06\x04\0\ + \x02\x04\x12\x04\xa8\x01\x04\r\n\x0f\n\x07\x04\x06\x04\0\x02\x04\x01\x12\ + \x04\xa8\x01\x04\x08\n\x0f\n\x07\x04\x06\x04\0\x02\x04\x02\x12\x04\xa8\ + \x01\x0b\x0c\n\x0e\n\x06\x04\x06\x04\0\x02\x05\x12\x04\xa9\x01\x04\x0f\n\ + \x0f\n\x07\x04\x06\x04\0\x02\x05\x01\x12\x04\xa9\x01\x04\n\n\x0f\n\x07\ + \x04\x06\x04\0\x02\x05\x02\x12\x04\xa9\x01\r\x0e\n\x0e\n\x06\x04\x06\x04\ + \0\x02\x06\x12\x04\xaa\x01\x04\x16\n\x0f\n\x07\x04\x06\x04\0\x02\x06\x01\ + \x12\x04\xaa\x01\x04\x11\n\x0f\n\x07\x04\x06\x04\0\x02\x06\x02\x12\x04\ + \xaa\x01\x14\x15\n\x0e\n\x06\x04\x06\x04\0\x02\x07\x12\x04\xab\x01\x04\ + \x12\n\x0f\n\x07\x04\x06\x04\0\x02\x07\x01\x12\x04\xab\x01\x04\r\n\x0f\n\ + \x07\x04\x06\x04\0\x02\x07\x02\x12\x04\xab\x01\x10\x11\n.\n\x06\x04\x06\ + \x04\0\x02\x08\x12\x04\xad\x01\x04\r\x1a\x1e\x20Can\x20be\x20used\x20for\ + \x20any\x20purpose.\n\n\x0f\n\x07\x04\x06\x04\0\x02\x08\x01\x12\x04\xad\ + \x01\x04\x08\n\x0f\n\x07\x04\x06\x04\0\x02\x08\x02\x12\x04\xad\x01\x0b\ + \x0c\n\x0e\n\x06\x04\x06\x04\0\x02\t\x12\x04\xae\x01\x04\x0e\n\x0f\n\x07\ + \x04\x06\x04\0\x02\t\x01\x12\x04\xae\x01\x04\t\n\x0f\n\x07\x04\x06\x04\0\ + \x02\t\x02\x12\x04\xae\x01\x0c\r\n\x0e\n\x06\x04\x06\x04\0\x02\n\x12\x04\ + \xaf\x01\x04\x0e\n\x0f\n\x07\x04\x06\x04\0\x02\n\x01\x12\x04\xaf\x01\x04\ + \t\n\x0f\n\x07\x04\x06\x04\0\x02\n\x02\x12\x04\xaf\x01\x0c\r\n\x0c\n\x04\ + \x04\x06\x02\0\x12\x04\xb1\x01\x02\x12\n\r\n\x05\x04\x06\x02\0\x05\x12\ + \x04\xb1\x01\x02\x08\n\r\n\x05\x04\x06\x02\0\x01\x12\x04\xb1\x01\t\r\n\r\ + \n\x05\x04\x06\x02\0\x03\x12\x04\xb1\x01\x10\x11\n\x0c\n\x04\x04\x06\x02\ + \x01\x12\x04\xb2\x01\x02\x1b\n\r\n\x05\x04\x06\x02\x01\x05\x12\x04\xb2\ + \x01\x02\x08\n\r\n\x05\x04\x06\x02\x01\x01\x12\x04\xb2\x01\t\x16\n\r\n\ + \x05\x04\x06\x02\x01\x03\x12\x04\xb2\x01\x19\x1a\n\x0c\n\x04\x04\x06\x02\ + \x02\x12\x04\xb3\x01\x02\x14\n\r\n\x05\x04\x06\x02\x02\x06\x12\x04\xb3\ + \x01\x02\x08\n\r\n\x05\x04\x06\x02\x02\x01\x12\x04\xb3\x01\t\x0f\n\r\n\ + \x05\x04\x06\x02\x02\x03\x12\x04\xb3\x01\x12\x13\n\x83\x01\n\x02\x04\x07\ + \x12\x06\xb8\x01\0\xc9\x02\x01\x1au\x20SymbolInformation\x20defines\x20m\ + etadata\x20about\x20a\x20symbol,\x20such\x20as\x20the\x20symbol's\n\x20d\ + ocstring\x20or\x20what\x20package\x20it's\x20defined\x20it.\n\n\x0b\n\ + \x03\x04\x07\x01\x12\x04\xb8\x01\x08\x19\n\xa0\x01\n\x04\x04\x07\x02\0\ + \x12\x04\xbb\x01\x02\x14\x1a\x91\x01\x20Identifier\x20of\x20this\x20symb\ + ol,\x20which\x20can\x20be\x20referenced\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\xbb\ + \x01\x02\x08\n\r\n\x05\x04\x07\x02\0\x01\x12\x04\xbb\x01\t\x0f\n\r\n\x05\ + \x04\x07\x02\0\x03\x12\x04\xbb\x01\x12\x13\n\xb4\x03\n\x04\x04\x07\x02\ + \x01\x12\x04\xc2\x01\x02$\x1a\xa5\x03\x20(optional,\x20but\x20strongly\ + \x20recommended)\x20The\x20markdown-formatted\x20documentation\n\x20for\ + \x20this\x20symbol.\x20Use\x20`SymbolInformation.signature_documentation\ + `\x20to\n\x20document\x20the\x20method/class/type\x20signature\x20of\x20\ + this\x20symbol.\n\x20Due\x20to\x20historical\x20reasons,\x20indexers\x20\ + may\x20include\x20signature\x20documentation\x20in\n\x20this\x20field\ + \x20by\x20rendering\x20markdown\x20code\x20blocks.\x20New\x20indexers\ + \x20should\x20only\n\x20include\x20non-code\x20documentation\x20in\x20th\ + is\x20field,\x20for\x20example\x20docstrings.\n\n\r\n\x05\x04\x07\x02\ + \x01\x04\x12\x04\xc2\x01\x02\n\n\r\n\x05\x04\x07\x02\x01\x05\x12\x04\xc2\ + \x01\x0b\x11\n\r\n\x05\x04\x07\x02\x01\x01\x12\x04\xc2\x01\x12\x1f\n\r\n\ + \x05\x04\x07\x02\x01\x03\x12\x04\xc2\x01\"#\n^\n\x04\x04\x07\x02\x02\x12\ + \x04\xc4\x01\x02*\x1aP\x20(optional)\x20Relationships\x20to\x20other\x20\ + symbols\x20(e.g.,\x20implements,\x20type\x20definition).\n\n\r\n\x05\x04\ + \x07\x02\x02\x04\x12\x04\xc4\x01\x02\n\n\r\n\x05\x04\x07\x02\x02\x06\x12\ + \x04\xc4\x01\x0b\x17\n\r\n\x05\x04\x07\x02\x02\x01\x12\x04\xc4\x01\x18%\ + \n\r\n\x05\x04\x07\x02\x02\x03\x12\x04\xc4\x01()\n\xa4\x01\n\x04\x04\x07\ + \x02\x03\x12\x04\xc8\x01\x02\x10\x1a\x95\x01\x20The\x20kind\x20of\x20thi\ + s\x20symbol.\x20Use\x20this\x20field\x20instead\x20of\n\x20`SymbolDescri\ + ptor.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\xc8\x01\x02\x06\n\r\n\x05\x04\x07\x02\x03\x01\x12\ + \x04\xc8\x01\x07\x0b\n\r\n\x05\x04\x07\x02\x03\x03\x12\x04\xc8\x01\x0e\ + \x0f\n\xf5\x05\n\x04\x04\x07\x04\0\x12\x06\xd7\x01\x02\xb7\x02\x03\x1a\ + \xe4\x05\x20(optional)\x20Kind\x20represents\x20the\x20fine-grained\x20c\ + ategory\x20of\x20a\x20symbol,\x20suitable\x20for\x20presenting\n\x20info\ + rmation\x20about\x20the\x20symbol's\x20meaning\x20in\x20the\x20language.\ + \n\n\x20For\x20example:\n\x20-\x20A\x20Java\x20method\x20would\x20have\ + \x20the\x20kind\x20`Method`\x20while\x20a\x20Go\x20function\x20would\n\ + \x20\x20\x20have\x20the\x20kind\x20`Function`,\x20even\x20if\x20the\x20s\ + ymbols\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`\x20while\ + \x20a\x20Java\x20class\x20has\n\x20\x20\x20the\x20symbol\x20kind\x20`Cla\ + ss`\x20even\x20if\x20they\x20both\x20have\x20the\x20same\x20descriptor:\ + \n\x20\x20\x20`SymbolDescriptor.Suffix.Type`.\n\n\x20Since\x20Kind\x20is\ + \x20more\x20fine-grained\x20than\x20Suffix:\n\x20-\x20If\x20two\x20symbo\ + ls\x20have\x20the\x20same\x20Kind,\x20they\x20should\x20share\x20the\x20\ + same\x20Suffix.\n\x20-\x20If\x20two\x20symbols\x20have\x20different\x20S\ + uffixes,\x20they\x20should\x20have\x20different\x20Kinds.\n\n\r\n\x05\ + \x04\x07\x04\0\x01\x12\x04\xd7\x01\x07\x0b\n\x0e\n\x06\x04\x07\x04\0\x02\ + \0\x12\x04\xd8\x01\x06\x1a\n\x0f\n\x07\x04\x07\x04\0\x02\0\x01\x12\x04\ + \xd8\x01\x06\x15\n\x0f\n\x07\x04\x07\x04\0\x02\0\x02\x12\x04\xd8\x01\x18\ + \x19\n\x0e\n\x06\x04\x07\x04\0\x02\x01\x12\x04\xd9\x01\x06\x10\n\x0f\n\ + \x07\x04\x07\x04\0\x02\x01\x01\x12\x04\xd9\x01\x06\x0b\n\x0f\n\x07\x04\ + \x07\x04\0\x02\x01\x02\x12\x04\xd9\x01\x0e\x0f\n\x1b\n\x06\x04\x07\x04\0\ + \x02\x02\x12\x04\xdb\x01\x06\x14\x1a\x0b\x20For\x20Alloy\n\n\x0f\n\x07\ + \x04\x07\x04\0\x02\x02\x01\x12\x04\xdb\x01\x06\x0f\n\x0f\n\x07\x04\x07\ + \x04\0\x02\x02\x02\x12\x04\xdb\x01\x12\x13\n\x0e\n\x06\x04\x07\x04\0\x02\ + \x03\x12\x04\xdc\x01\x06\x19\n\x0f\n\x07\x04\x07\x04\0\x02\x03\x01\x12\ + \x04\xdc\x01\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x02\x03\x02\x12\x04\xdc\ + \x01\x17\x18\n\x19\n\x06\x04\x07\x04\0\x02\x04\x12\x04\xde\x01\x06\x14\ + \x1a\t\x20For\x20C++\n\n\x0f\n\x07\x04\x07\x04\0\x02\x04\x01\x12\x04\xde\ + \x01\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02\x04\x02\x12\x04\xde\x01\x12\ + \x13\n\x1a\n\x06\x04\x07\x04\0\x02\x05\x12\x04\xe0\x01\x06\x10\x1a\n\x20\ + For\x20Lean\n\n\x0f\n\x07\x04\x07\x04\0\x02\x05\x01\x12\x04\xe0\x01\x06\ + \x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x05\x02\x12\x04\xe0\x01\x0e\x0f\n\x0e\ + \n\x06\x04\x07\x04\0\x02\x06\x12\x04\xe1\x01\x06\x12\n\x0f\n\x07\x04\x07\ + \x04\0\x02\x06\x01\x12\x04\xe1\x01\x06\r\n\x0f\n\x07\x04\x07\x04\0\x02\ + \x06\x02\x12\x04\xe1\x01\x10\x11\n\x0e\n\x06\x04\x07\x04\0\x02\x07\x12\ + \x04\xe2\x01\x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02\x07\x01\x12\x04\xe2\ + \x01\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x07\x02\x12\x04\xe2\x01\x0e\ + \x0f\n\x0e\n\x06\x04\x07\x04\0\x02\x08\x12\x04\xe3\x01\x06\x13\n\x0f\n\ + \x07\x04\x07\x04\0\x02\x08\x01\x12\x04\xe3\x01\x06\x0e\n\x0f\n\x07\x04\ + \x07\x04\0\x02\x08\x02\x12\x04\xe3\x01\x11\x12\n\x0e\n\x06\x04\x07\x04\0\ + \x02\t\x12\x04\xe4\x01\x06\x16\n\x0f\n\x07\x04\x07\x04\0\x02\t\x01\x12\ + \x04\xe4\x01\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02\t\x02\x12\x04\xe4\x01\ + \x14\x15\n\x1d\n\x06\x04\x07\x04\0\x02\n\x12\x04\xe6\x01\x06\x16\x1a\r\ + \x20For\x20Haskell\n\n\x0f\n\x07\x04\x07\x04\0\x02\n\x01\x12\x04\xe6\x01\ + \x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02\n\x02\x12\x04\xe6\x01\x13\x15\n\ + \x0e\n\x06\x04\x07\x04\0\x02\x0b\x12\x04\xe7\x01\x06\x10\n\x0f\n\x07\x04\ + \x07\x04\0\x02\x0b\x01\x12\x04\xe7\x01\x06\n\n\x0f\n\x07\x04\x07\x04\0\ + \x02\x0b\x02\x12\x04\xe7\x01\r\x0f\n\x0e\n\x06\x04\x07\x04\0\x02\x0c\x12\ + \x04\xe8\x01\x06\x16\n\x0f\n\x07\x04\x07\x04\0\x02\x0c\x01\x12\x04\xe8\ + \x01\x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02\x0c\x02\x12\x04\xe8\x01\x13\ + \x15\n\x0e\n\x06\x04\x07\x04\0\x02\r\x12\x04\xe9\x01\x06\x11\n\x0f\n\x07\ + \x04\x07\x04\0\x02\r\x01\x12\x04\xe9\x01\x06\x0b\n\x0f\n\x07\x04\x07\x04\ + \0\x02\r\x02\x12\x04\xe9\x01\x0e\x10\n\x1b\n\x06\x04\x07\x04\0\x02\x0e\ + \x12\x04\xeb\x01\x06\x10\x1a\x0b\x20For\x20Alloy\n\n\x0f\n\x07\x04\x07\ + \x04\0\x02\x0e\x01\x12\x04\xeb\x01\x06\n\n\x0f\n\x07\x04\x07\x04\0\x02\ + \x0e\x02\x12\x04\xeb\x01\r\x0f\n\x0e\n\x06\x04\x07\x04\0\x02\x0f\x12\x04\ + \xec\x01\x06\x11\n\x0f\n\x07\x04\x07\x04\0\x02\x0f\x01\x12\x04\xec\x01\ + \x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x0f\x02\x12\x04\xec\x01\x0e\x10\n\ + \x0e\n\x06\x04\x07\x04\0\x02\x10\x12\x04\xed\x01\x06\x10\n\x0f\n\x07\x04\ + \x07\x04\0\x02\x10\x01\x12\x04\xed\x01\x06\n\n\x0f\n\x07\x04\x07\x04\0\ + \x02\x10\x02\x12\x04\xed\x01\r\x0f\n\x0e\n\x06\x04\x07\x04\0\x02\x11\x12\ + \x04\xee\x01\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x02\x11\x01\x12\x04\xee\ + \x01\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02\x11\x02\x12\x04\xee\x01\x11\ + \x13\n$\n\x06\x04\x07\x04\0\x02\x12\x12\x04\xf0\x01\x06\x12\x1a\x14\x20F\ + or\x20'get'\x20in\x20Swift\n\n\x0f\n\x07\x04\x07\x04\0\x02\x12\x01\x12\ + \x04\xf0\x01\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02\x12\x02\x12\x04\xf0\ + \x01\x0f\x11\n\x1a\n\x06\x04\x07\x04\0\x02\x13\x12\x04\xf2\x01\x06\x13\ + \x1a\n\x20For\x20Raku\n\n\x0f\n\x07\x04\x07\x04\0\x02\x13\x01\x12\x04\ + \xf2\x01\x06\r\n\x0f\n\x07\x04\x07\x04\0\x02\x13\x02\x12\x04\xf2\x01\x10\ + \x12\n)\n\x06\x04\x07\x04\0\x02\x14\x12\x04\xf4\x01\x06\x14\x1a\x19\x20F\ + or\x20Purescript\x20and\x20Lean\n\n\x0f\n\x07\x04\x07\x04\0\x02\x14\x01\ + \x12\x04\xf4\x01\x06\x0e\n\x0f\n\x07\x04\x07\x04\0\x02\x14\x02\x12\x04\ + \xf4\x01\x11\x13\n\x0e\n\x06\x04\x07\x04\0\x02\x15\x12\x04\xf5\x01\x06\ + \x15\n\x0f\n\x07\x04\x07\x04\0\x02\x15\x01\x12\x04\xf5\x01\x06\x0f\n\x0f\ + \n\x07\x04\x07\x04\0\x02\x15\x02\x12\x04\xf5\x01\x12\x14\n\x0e\n\x06\x04\ + \x07\x04\0\x02\x16\x12\x04\xf6\x01\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02\ + \x16\x01\x12\x04\xf6\x01\x06\t\n\x0f\n\x07\x04\x07\x04\0\x02\x16\x02\x12\ + \x04\xf6\x01\x0c\x0e\n\x1c\n\x06\x04\x07\x04\0\x02\x17\x12\x04\xf8\x01\ + \x06\x10\x1a\x0c\x20For\x20Racket\n\n\x0f\n\x07\x04\x07\x04\0\x02\x17\ + \x01\x12\x04\xf8\x01\x06\n\n\x0f\n\x07\x04\x07\x04\0\x02\x17\x02\x12\x04\ + \xf8\x01\r\x0f\n\x1a\n\x06\x04\x07\x04\0\x02\x18\x12\x04\xfa\x01\x06\x11\ + \x1a\n\x20For\x20Lean\n\n\x0f\n\x07\x04\x07\x04\0\x02\x18\x01\x12\x04\ + \xfa\x01\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02\x18\x02\x12\x04\xfa\x01\ + \x0e\x10\n\x0e\n\x06\x04\x07\x04\0\x02\x19\x12\x04\xfb\x01\x06\x11\n\x0f\ + \n\x07\x04\x07\x04\0\x02\x19\x01\x12\x04\xfb\x01\x06\x0b\n\x0f\n\x07\x04\ + \x07\x04\0\x02\x19\x02\x12\x04\xfb\x01\x0e\x10\n\x0e\n\x06\x04\x07\x04\0\ + \x02\x1a\x12\x04\xfc\x01\x06\x12\n\x0f\n\x07\x04\x07\x04\0\x02\x1a\x01\ + \x12\x04\xfc\x01\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02\x1a\x02\x12\x04\ + \xfc\x01\x0f\x11\n\x94\x01\n\x06\x04\x07\x04\0\x02\x1b\x12\x04\xff\x01\ + \x06\x1a\x1a\x83\x01\x20Analogous\x20to\x20'ThisParameter'\x20and\x20'Se\ + lfParameter',\x20but\x20for\x20languages\n\x20like\x20Go\x20where\x20the\ + \x20receiver\x20doesn't\x20have\x20a\x20conventional\x20name.\n\n\x0f\n\ + \x07\x04\x07\x04\0\x02\x1b\x01\x12\x04\xff\x01\x06\x14\n\x0f\n\x07\x04\ + \x07\x04\0\x02\x1b\x02\x12\x04\xff\x01\x17\x19\n\x1e\n\x06\x04\x07\x04\0\ + \x02\x1c\x12\x04\x81\x02\x06\x13\x1a\x0e\x20For\x20Protobuf\n\n\x0f\n\ + \x07\x04\x07\x04\0\x02\x1c\x01\x12\x04\x81\x02\x06\r\n\x0f\n\x07\x04\x07\ + \x04\0\x02\x1c\x02\x12\x04\x81\x02\x10\x12\n\x0e\n\x06\x04\x07\x04\0\x02\ + \x1d\x12\x04\x82\x02\x06\x12\n\x0f\n\x07\x04\x07\x04\0\x02\x1d\x01\x12\ + \x04\x82\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02\x1d\x02\x12\x04\x82\ + \x02\x0f\x11\n\x0e\n\x06\x04\x07\x04\0\x02\x1e\x12\x04\x83\x02\x06\x15\n\ + \x0f\n\x07\x04\x07\x04\0\x02\x1e\x01\x12\x04\x83\x02\x06\x0f\n\x0f\n\x07\ + \x04\x07\x04\0\x02\x1e\x02\x12\x04\x83\x02\x12\x14\n\x0e\n\x06\x04\x07\ + \x04\0\x02\x1f\x12\x04\x84\x02\x06\x10\n\x0f\n\x07\x04\x07\x04\0\x02\x1f\ + \x01\x12\x04\x84\x02\x06\n\n\x0f\n\x07\x04\x07\x04\0\x02\x1f\x02\x12\x04\ + \x84\x02\r\x0f\n\x0e\n\x06\x04\x07\x04\0\x02\x20\x12\x04\x85\x02\x06\x12\ + \n\x0f\n\x07\x04\x07\x04\0\x02\x20\x01\x12\x04\x85\x02\x06\x0c\n\x0f\n\ + \x07\x04\x07\x04\0\x02\x20\x02\x12\x04\x85\x02\x0f\x11\n\x0e\n\x06\x04\ + \x07\x04\0\x02!\x12\x04\x86\x02\x06\x12\n\x0f\n\x07\x04\x07\x04\0\x02!\ + \x01\x12\x04\x86\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x02!\x02\x12\x04\ + \x86\x02\x0f\x11\n\x0e\n\x06\x04\x07\x04\0\x02\"\x12\x04\x87\x02\x06\x14\ + \n\x0f\n\x07\x04\x07\x04\0\x02\"\x01\x12\x04\x87\x02\x06\x0e\n\x0f\n\x07\ + \x04\x07\x04\0\x02\"\x02\x12\x04\x87\x02\x11\x13\n\x0e\n\x06\x04\x07\x04\ + \0\x02#\x12\x04\x88\x02\x06\x13\n\x0f\n\x07\x04\x07\x04\0\x02#\x01\x12\ + \x04\x88\x02\x06\r\n\x0f\n\x07\x04\x07\x04\0\x02#\x02\x12\x04\x88\x02\ + \x10\x12\n\x0e\n\x06\x04\x07\x04\0\x02$\x12\x04\x89\x02\x06\x19\n\x0f\n\ + \x07\x04\x07\x04\0\x02$\x01\x12\x04\x89\x02\x06\x13\n\x0f\n\x07\x04\x07\ + \x04\0\x02$\x02\x12\x04\x89\x02\x16\x18\n\x0e\n\x06\x04\x07\x04\0\x02%\ + \x12\x04\x8a\x02\x06\x15\n\x0f\n\x07\x04\x07\x04\0\x02%\x01\x12\x04\x8a\ + \x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02%\x02\x12\x04\x8a\x02\x12\x14\ + \n\x0e\n\x06\x04\x07\x04\0\x02&\x12\x04\x8b\x02\x06\x1a\n\x0f\n\x07\x04\ + \x07\x04\0\x02&\x01\x12\x04\x8b\x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\ + \x02&\x02\x12\x04\x8b\x02\x17\x19\n/\n\x06\x04\x07\x04\0\x02'\x12\x04\ + \x8d\x02\x06\x13\x1a\x1f\x20For\x20Haskell's\x20PatternSynonyms\n\n\x0f\ + \n\x07\x04\x07\x04\0\x02'\x01\x12\x04\x8d\x02\x06\r\n\x0f\n\x07\x04\x07\ + \x04\0\x02'\x02\x12\x04\x8d\x02\x10\x12\n\x1b\n\x06\x04\x07\x04\0\x02(\ + \x12\x04\x8f\x02\x06\x15\x1a\x0b\x20For\x20Alloy\n\n\x0f\n\x07\x04\x07\ + \x04\0\x02(\x01\x12\x04\x8f\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x02(\ + \x02\x12\x04\x8f\x02\x12\x14\n\x0e\n\x06\x04\x07\x04\0\x02)\x12\x04\x90\ + \x02\x06\x14\n\x0f\n\x07\x04\x07\x04\0\x02)\x01\x12\x04\x90\x02\x06\x0e\ + \n\x0f\n\x07\x04\x07\x04\0\x02)\x02\x12\x04\x90\x02\x11\x13\nQ\n\x06\x04\ + \x07\x04\0\x02*\x12\x04\x92\x02\x06\x14\x1aA\x20Analogous\x20to\x20'Trai\ + t'\x20and\x20'TypeClass',\x20for\x20Swift\x20and\x20Objective-C\n\n\x0f\ + \n\x07\x04\x07\x04\0\x02*\x01\x12\x04\x92\x02\x06\x0e\n\x0f\n\x07\x04\ + \x07\x04\0\x02*\x02\x12\x04\x92\x02\x11\x13\n\x1d\n\x06\x04\x07\x04\0\ + \x02+\x12\x04\x94\x02\x06\x17\x1a\r\x20For\x20Haskell\n\n\x0f\n\x07\x04\ + \x07\x04\0\x02+\x01\x12\x04\x94\x02\x06\x11\n\x0f\n\x07\x04\x07\x04\0\ + \x02+\x02\x12\x04\x94\x02\x14\x16\n4\n\x06\x04\x07\x04\0\x02,\x12\x04\ + \x96\x02\x06\x19\x1a$\x20'self'\x20in\x20Python,\x20Rust,\x20Swift\x20et\ + c.\n\n\x0f\n\x07\x04\x07\x04\0\x02,\x01\x12\x04\x96\x02\x06\x13\n\x0f\n\ + \x07\x04\x07\x04\0\x02,\x02\x12\x04\x96\x02\x16\x18\n$\n\x06\x04\x07\x04\ + \0\x02-\x12\x04\x98\x02\x06\x12\x1a\x14\x20For\x20'set'\x20in\x20Swift\n\ + \n\x0f\n\x07\x04\x07\x04\0\x02-\x01\x12\x04\x98\x02\x06\x0c\n\x0f\n\x07\ + \x04\x07\x04\0\x02-\x02\x12\x04\x98\x02\x0f\x11\n3\n\x06\x04\x07\x04\0\ + \x02.\x12\x04\x9a\x02\x06\x15\x1a#\x20For\x20Alloy,\x20analogous\x20to\ + \x20'Struct'.\n\n\x0f\n\x07\x04\x07\x04\0\x02.\x01\x12\x04\x9a\x02\x06\ + \x0f\n\x0f\n\x07\x04\x07\x04\0\x02.\x02\x12\x04\x9a\x02\x12\x14\n\x1b\n\ + \x06\x04\x07\x04\0\x02/\x12\x04\x9c\x02\x06\x15\x1a\x0b\x20For\x20Swift\ + \n\n\x0f\n\x07\x04\x07\x04\0\x02/\x01\x12\x04\x9c\x02\x06\x0f\n\x0f\n\ + \x07\x04\x07\x04\0\x02/\x02\x12\x04\x9c\x02\x12\x14\n\x0e\n\x06\x04\x07\ + \x04\0\x020\x12\x04\x9d\x02\x06\x12\n\x0f\n\x07\x04\x07\x04\0\x020\x01\ + \x12\x04\x9d\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\x020\x02\x12\x04\x9d\ + \x02\x0f\x11\n\x0e\n\x06\x04\x07\x04\0\x021\x12\x04\x9e\x02\x06\x12\n\ + \x0f\n\x07\x04\x07\x04\0\x021\x01\x12\x04\x9e\x02\x06\x0c\n\x0f\n\x07\ + \x04\x07\x04\0\x021\x02\x12\x04\x9e\x02\x0f\x11\n\x1a\n\x06\x04\x07\x04\ + \0\x022\x12\x04\xa0\x02\x06\x12\x1a\n\x20For\x20Lean\n\n\x0f\n\x07\x04\ + \x07\x04\0\x022\x01\x12\x04\xa0\x02\x06\x0c\n\x0f\n\x07\x04\x07\x04\0\ + \x022\x02\x12\x04\xa0\x02\x0f\x11\n\x1a\n\x06\x04\x07\x04\0\x023\x12\x04\ + \xa2\x02\x06\x13\x1a\n\x20For\x20Lean\n\n\x0f\n\x07\x04\x07\x04\0\x023\ + \x01\x12\x04\xa2\x02\x06\r\n\x0f\n\x07\x04\x07\x04\0\x023\x02\x12\x04\ + \xa2\x02\x10\x12\nU\n\x06\x04\x07\x04\0\x024\x12\x04\xa5\x02\x06\x19\x1a\ + E\x20Method\x20receiver\x20for\x20languages\n\x20'this'\x20in\x20JavaScr\ + ipt,\x20C++,\x20Java\x20etc.\n\n\x0f\n\x07\x04\x07\x04\0\x024\x01\x12\ + \x04\xa5\x02\x06\x13\n\x0f\n\x07\x04\x07\x04\0\x024\x02\x12\x04\xa5\x02\ + \x16\x18\nD\n\x06\x04\x07\x04\0\x025\x12\x04\xa7\x02\x06\x11\x1a4\x20Ana\ + logous\x20to\x20'Protocol'\x20and\x20'TypeClass',\x20for\x20Rust.\n\n\ + \x0f\n\x07\x04\x07\x04\0\x025\x01\x12\x04\xa7\x02\x06\x0b\n\x0f\n\x07\ + \x04\x07\x04\0\x025\x02\x12\x04\xa7\x02\x0e\x10\n\x89\x01\n\x06\x04\x07\ + \x04\0\x026\x12\x04\xaa\x02\x06\x10\x1ay\x20Data\x20type\x20definition\ + \x20for\x20languages\x20like\x20OCaml\x20which\x20use\x20`type`\n\x20rat\ + her\x20than\x20separate\x20keywords\x20like\x20`struct`\x20and\x20`enum`\ + .\n\n\x0f\n\x07\x04\x07\x04\0\x026\x01\x12\x04\xaa\x02\x06\n\n\x0f\n\x07\ + \x04\x07\x04\0\x026\x02\x12\x04\xaa\x02\r\x0f\n\x0e\n\x06\x04\x07\x04\0\ + \x027\x12\x04\xab\x02\x06\x15\n\x0f\n\x07\x04\x07\x04\0\x027\x01\x12\x04\ + \xab\x02\x06\x0f\n\x0f\n\x07\x04\x07\x04\0\x027\x02\x12\x04\xab\x02\x12\ + \x14\nS\n\x06\x04\x07\x04\0\x028\x12\x04\xad\x02\x06\x15\x1aC\x20Analogo\ + us\x20to\x20'Trait'\x20and\x20'Protocol',\x20for\x20Haskell,\x20Purescri\ + pt\x20etc.\n\n\x0f\n\x07\x04\x07\x04\0\x028\x01\x12\x04\xad\x02\x06\x0f\ + \n\x0f\n\x07\x04\x07\x04\0\x028\x02\x12\x04\xad\x02\x12\x14\n\x1d\n\x06\ + \x04\x07\x04\0\x029\x12\x04\xaf\x02\x06\x16\x1a\r\x20For\x20Haskell\n\n\ + \x0f\n\x07\x04\x07\x04\0\x029\x01\x12\x04\xaf\x02\x06\x10\n\x0f\n\x07\ + \x04\x07\x04\0\x029\x02\x12\x04\xaf\x02\x13\x15\n\x0e\n\x06\x04\x07\x04\ + \0\x02:\x12\x04\xb0\x02\x06\x19\n\x0f\n\x07\x04\x07\x04\0\x02:\x01\x12\ + \x04\xb0\x02\x06\x13\n\x0f\n\x07\x04\x07\x04\0\x02:\x02\x12\x04\xb0\x02\ + \x16\x18\n(\n\x06\x04\x07\x04\0\x02;\x12\x04\xb2\x02\x06\x11\x1a\x18\x20\ + For\x20C,\x20C++,\x20Capn\x20Proto\n\n\x0f\n\x07\x04\x07\x04\0\x02;\x01\ + \x12\x04\xb2\x02\x06\x0b\n\x0f\n\x07\x04\x07\x04\0\x02;\x02\x12\x04\xb2\ + \x02\x0e\x10\n\x0e\n\x06\x04\x07\x04\0\x02<\x12\x04\xb3\x02\x06\x11\n\ + \x0f\n\x07\x04\x07\x04\0\x02<\x01\x12\x04\xb3\x02\x06\x0b\n\x0f\n\x07\ + \x04\x07\x04\0\x02<\x02\x12\x04\xb3\x02\x0e\x10\n[\n\x06\x04\x07\x04\0\ + \x02=\x12\x04\xb4\x02\x06\x14\"K\x20Next\x20=\x2062;\n\x20Feel\x20free\ + \x20to\x20open\x20a\x20PR\x20proposing\x20new\x20language-specific\x20ki\ + nds.\n\n\x0f\n\x07\x04\x07\x04\0\x02=\x01\x12\x04\xb4\x02\x06\x0e\n\x0f\ + \n\x07\x04\x07\x04\0\x02=\x02\x12\x04\xb4\x02\x11\x13\n\xf3\x03\n\x04\ + \x04\x07\x02\x04\x12\x04\xc1\x02\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\xc1\x02\x02\x08\n\r\n\x05\x04\x07\ + \x02\x04\x01\x12\x04\xc1\x02\t\x15\n\r\n\x05\x04\x07\x02\x04\x03\x12\x04\ + \xc1\x02\x18\x19\n\xc4\x03\n\x04\x04\x07\x02\x05\x12\x04\xc8\x02\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\xc8\x02\x02\n\n\r\n\x05\ + \x04\x07\x02\x05\x01\x12\x04\xc8\x02\x0b\"\n\r\n\x05\x04\x07\x02\x05\x03\ + \x12\x04\xc8\x02%&\n\x0c\n\x02\x04\x08\x12\x06\xcc\x02\0\x84\x03\x01\n\ + \x0b\n\x03\x04\x08\x01\x12\x04\xcc\x02\x08\x14\n\x0c\n\x04\x04\x08\x02\0\ + \x12\x04\xcd\x02\x02\x14\n\r\n\x05\x04\x08\x02\0\x05\x12\x04\xcd\x02\x02\ + \x08\n\r\n\x05\x04\x08\x02\0\x01\x12\x04\xcd\x02\t\x0f\n\r\n\x05\x04\x08\ + \x02\0\x03\x12\x04\xcd\x02\x12\x13\n\xde\x08\n\x04\x04\x08\x02\x01\x12\ + \x04\xe6\x02\x02\x18\x1a\xcf\x08\x20When\x20resolving\x20\"Find\x20refer\ + ences\",\x20this\x20field\x20documents\x20what\x20other\x20symbols\n\x20\ + should\x20be\x20included\x20together\x20with\x20this\x20symbol.\x20For\ + \x20example,\x20consider\x20the\n\x20following\x20TypeScript\x20code\x20\ + that\x20defines\x20two\x20symbols\x20`Animal#sound()`\x20and\n\x20`Dog#s\ + ound()`:\n\x20```ts\n\x20interface\x20Animal\x20{\n\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20^^^^^^\x20definition\x20Animal#\n\x20\x20\x20sou\ + nd():\x20string\n\x20\x20\x20^^^^^\x20definition\x20Animal#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\x20\ + sound():\x20string\x20{\x20return\x20\"woof\"\x20}\n\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20^^^^^\x20definition\x20Dog#sound(),\x20references_sy\ + mbols\x20=\x20Animal#sound(),\x20relationships\x20=\x20[{symbol:\x20\"An\ + imal#sound()\",\x20is_implementation:true,\x20is_reference:\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\x20A\ + nimal#\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\x20reference\ + s\x20to\x20the\x20`Dog#sound()`\x20method\x20as\x20well.\x20Vice-versa,\ + \x20doing\x20\"Find\n\x20references\"\x20on\x20the\x20`Dog#sound()`\x20m\ + ethod\x20should\x20include\x20references\x20to\x20the\n\x20`Animal#sound\ + ()`\x20method\x20as\x20well.\n\n\r\n\x05\x04\x08\x02\x01\x05\x12\x04\xe6\ + \x02\x02\x06\n\r\n\x05\x04\x08\x02\x01\x01\x12\x04\xe6\x02\x07\x13\n\r\n\ + \x05\x04\x08\x02\x01\x03\x12\x04\xe6\x02\x16\x17\n\xee\x03\n\x04\x04\x08\ + \x02\x02\x12\x04\xef\x02\x02\x1d\x1a\xdf\x03\x20Similar\x20to\x20`is_ref\ + erence`\x20but\x20for\x20\"Find\x20implementations\".\n\x20It's\x20commo\ + n\x20for\x20`is_implementation`\x20and\x20`is_reference`\x20to\x20both\ + \x20be\x20true\x20but\n\x20it's\x20not\x20always\x20the\x20case.\n\x20In\ + \x20the\x20TypeScript\x20example\x20above,\x20observe\x20that\x20`Dog#`\ + \x20has\x20an\n\x20`is_implementation`\x20relationship\x20with\x20`\"Ani\ + mal#\"`\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\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\xef\x02\x02\x06\n\r\n\x05\x04\x08\x02\x02\x01\x12\x04\xef\x02\ + \x07\x18\n\r\n\x05\x04\x08\x02\x02\x03\x12\x04\xef\x02\x1b\x1c\nP\n\x04\ + \x04\x08\x02\x03\x12\x04\xf1\x02\x02\x1e\x1aB\x20Similar\x20to\x20`refer\ + ences_symbols`\x20but\x20for\x20\"Go\x20to\x20type\x20definition\".\n\n\ + \r\n\x05\x04\x08\x02\x03\x05\x12\x04\xf1\x02\x02\x06\n\r\n\x05\x04\x08\ + \x02\x03\x01\x12\x04\xf1\x02\x07\x19\n\r\n\x05\x04\x08\x02\x03\x03\x12\ + \x04\xf1\x02\x1c\x1d\n\xa7\x07\n\x04\x04\x08\x02\x04\x12\x04\x82\x03\x02\ + \x19\x1a\xd5\x06\x20Allows\x20overriding\x20the\x20behavior\x20of\x20\"G\ + o\x20to\x20definition\"\x20and\x20\"Find\x20references\"\n\x20for\x20sym\ + bols\x20which\x20do\x20not\x20have\x20a\x20definition\x20of\x20their\x20\ + own\x20or\x20could\n\x20potentially\x20have\x20multiple\x20definitions.\ + \n\n\x20For\x20example,\x20in\x20a\x20language\x20with\x20single\x20inhe\ + ritance\x20and\x20no\x20field\x20overriding,\n\x20inherited\x20fields\ + \x20can\x20reuse\x20the\x20same\x20symbol\x20as\x20the\x20ancestor\x20wh\ + ich\x20declares\n\x20the\x20field.\x20In\x20such\x20a\x20situation,\x20i\ + s_definition\x20is\x20not\x20needed.\n\n\x20On\x20the\x20other\x20hand,\ + \x20in\x20languages\x20with\x20single\x20inheritance\x20and\x20some\x20f\ + orm\n\x20of\x20mixins,\x20you\x20can\x20use\x20is_definition\x20to\x20re\ + late\x20the\x20symbol\x20to\x20the\n\x20matching\x20symbol\x20in\x20ance\ + stor\x20classes,\x20and\x20is_reference\x20to\x20relate\x20the\n\x20symb\ + ol\x20to\x20the\x20matching\x20symbol\x20in\x20mixins.\n\n\x20NOTE:\x20A\ + t\x20the\x20moment,\x20due\x20to\x20limitations\x20of\x20the\x20SCIP\x20\ + to\x20LSIF\x20conversion,\n\x20only\x20global\x20symbols\x20in\x20an\x20\ + index\x20are\x20allowed\x20to\x20use\x20is_definition.\n\x20The\x20relat\ + ionship\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\ + \x82\x03\x02\x06\n\r\n\x05\x04\x08\x02\x04\x01\x12\x04\x82\x03\x07\x14\n\ + \r\n\x05\x04\x08\x02\x04\x03\x12\x04\x82\x03\x17\x18\n\x88\x03\n\x02\x05\ + \x02\x12\x06\x8b\x03\0\x9b\x03\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\x02\ + \x01\x12\x04\x8b\x03\x05\x0f\nv\n\x04\x05\x02\x02\0\x12\x04\x8e\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\x02\x02\0\x01\x12\x04\x8e\ + \x03\x02\x17\n\r\n\x05\x05\x02\x02\0\x02\x12\x04\x8e\x03\x1a\x1b\nT\n\ + \x04\x05\x02\x02\x01\x12\x04\x90\x03\x02\x13\x1aF\x20Is\x20the\x20symbol\ + \x20defined\x20here?\x20If\x20not,\x20then\x20this\x20is\x20a\x20symbol\ + \x20reference.\n\n\r\n\x05\x05\x02\x02\x01\x01\x12\x04\x90\x03\x02\x0c\n\ + \r\n\x05\x05\x02\x02\x01\x02\x12\x04\x90\x03\x0f\x12\n,\n\x04\x05\x02\ + \x02\x02\x12\x04\x92\x03\x02\x0f\x1a\x1e\x20Is\x20the\x20symbol\x20impor\ + ted\x20here?\n\n\r\n\x05\x05\x02\x02\x02\x01\x12\x04\x92\x03\x02\x08\n\r\ + \n\x05\x05\x02\x02\x02\x02\x12\x04\x92\x03\x0b\x0e\n+\n\x04\x05\x02\x02\ + \x03\x12\x04\x94\x03\x02\x14\x1a\x1d\x20Is\x20the\x20symbol\x20written\ + \x20here?\n\n\r\n\x05\x05\x02\x02\x03\x01\x12\x04\x94\x03\x02\r\n\r\n\ + \x05\x05\x02\x02\x03\x02\x12\x04\x94\x03\x10\x13\n(\n\x04\x05\x02\x02\ + \x04\x12\x04\x96\x03\x02\x13\x1a\x1a\x20Is\x20the\x20symbol\x20read\x20h\ + ere?\n\n\r\n\x05\x05\x02\x02\x04\x01\x12\x04\x96\x03\x02\x0c\n\r\n\x05\ + \x05\x02\x02\x04\x02\x12\x04\x96\x03\x0f\x12\n0\n\x04\x05\x02\x02\x05\ + \x12\x04\x98\x03\x02\x13\x1a\"\x20Is\x20the\x20symbol\x20in\x20generated\ + \x20code?\n\n\r\n\x05\x05\x02\x02\x05\x01\x12\x04\x98\x03\x02\x0b\n\r\n\ + \x05\x05\x02\x02\x05\x02\x12\x04\x98\x03\x0e\x12\n+\n\x04\x05\x02\x02\ + \x06\x12\x04\x9a\x03\x02\x0e\x1a\x1d\x20Is\x20the\x20symbol\x20in\x20tes\ + t\x20code?\n\n\r\n\x05\x05\x02\x02\x06\x01\x12\x04\x9a\x03\x02\x06\n\r\n\ + \x05\x05\x02\x02\x06\x02\x12\x04\x9a\x03\t\r\n\x0c\n\x02\x05\x03\x12\x06\ + \x9d\x03\0\xfa\x03\x01\n\x0b\n\x03\x05\x03\x01\x12\x04\x9d\x03\x05\x0f\n\ + \x0b\n\x03\x05\x03\x03\x12\x04\x9e\x03\x02\x1c\n\x0c\n\x04\x05\x03\x03\ + \x02\x12\x04\x9e\x03\x02\x1c\n\x0c\n\x04\x05\x03\x02\0\x12\x04\xa0\x03\ + \x02\x1c\n\r\n\x05\x05\x03\x02\0\x01\x12\x04\xa0\x03\x02\x17\n\r\n\x05\ + \x05\x03\x02\0\x02\x12\x04\xa0\x03\x1a\x1b\n;\n\x04\x05\x03\x02\x01\x12\ + \x04\xa3\x03\x02\x0e\x1a-\x20Comment,\x20including\x20comment\x20markers\ + \x20and\x20text\n\n\r\n\x05\x05\x03\x02\x01\x01\x12\x04\xa3\x03\x02\t\n\ + \r\n\x05\x05\x03\x02\x01\x02\x12\x04\xa3\x03\x0c\r\n\x1b\n\x04\x05\x03\ + \x02\x02\x12\x04\xa6\x03\x02\x1b\x1a\r\x20`;`\x20`.`\x20`,`\n\n\r\n\x05\ + \x05\x03\x02\x02\x01\x12\x04\xa6\x03\x02\x16\n\r\n\x05\x05\x03\x02\x02\ + \x02\x12\x04\xa6\x03\x19\x1a\n2\n\x04\x05\x03\x02\x03\x12\x04\xa8\x03\ + \x02\x19\x1a$\x20(),\x20{},\x20[]\x20when\x20used\x20syntactically\n\n\r\ + \n\x05\x05\x03\x02\x03\x01\x12\x04\xa8\x03\x02\x14\n\r\n\x05\x05\x03\x02\ + \x03\x02\x12\x04\xa8\x03\x17\x18\n5\n\x04\x05\x03\x02\x04\x12\x04\xab\ + \x03\x02\x0e\x1a'\x20`if`,\x20`else`,\x20`return`,\x20`class`,\x20etc.\n\ + \n\r\n\x05\x05\x03\x02\x04\x01\x12\x04\xab\x03\x02\t\n\r\n\x05\x05\x03\ + \x02\x04\x02\x12\x04\xab\x03\x0c\r\n\x0c\n\x04\x05\x03\x02\x05\x12\x04\ + \xac\x03\x02*\n\r\n\x05\x05\x03\x02\x05\x01\x12\x04\xac\x03\x02\x13\n\r\ + \n\x05\x05\x03\x02\x05\x02\x12\x04\xac\x03\x16\x17\n\r\n\x05\x05\x03\x02\ + \x05\x03\x12\x04\xac\x03\x18)\n\x0e\n\x06\x05\x03\x02\x05\x03\x01\x12\ + \x04\xac\x03\x19(\n\x1e\n\x04\x05\x03\x02\x06\x12\x04\xaf\x03\x02\x19\ + \x1a\x10\x20`+`,\x20`*`,\x20etc.\n\n\r\n\x05\x05\x03\x02\x06\x01\x12\x04\ + \xaf\x03\x02\x14\n\r\n\x05\x05\x03\x02\x06\x02\x12\x04\xaf\x03\x17\x18\n\ + X\n\x04\x05\x03\x02\x07\x12\x04\xb2\x03\x02\x11\x1aJ\x20non-specific\x20\ + catch-all\x20for\x20any\x20identifier\x20not\x20better\x20described\x20e\ + lsewhere\n\n\r\n\x05\x05\x03\x02\x07\x01\x12\x04\xb2\x03\x02\x0c\n\r\n\ + \x05\x05\x03\x02\x07\x02\x12\x04\xb2\x03\x0f\x10\nN\n\x04\x05\x03\x02\ + \x08\x12\x04\xb4\x03\x02\x18\x1a@\x20Identifiers\x20builtin\x20to\x20the\ + \x20language:\x20`min`,\x20`print`\x20in\x20Python.\n\n\r\n\x05\x05\x03\ + \x02\x08\x01\x12\x04\xb4\x03\x02\x13\n\r\n\x05\x05\x03\x02\x08\x02\x12\ + \x04\xb4\x03\x16\x17\n[\n\x04\x05\x03\x02\t\x12\x04\xb6\x03\x02\x15\x1aM\ + \x20Identifiers\x20representing\x20`null`-like\x20values:\x20`None`\x20i\ + n\x20Python,\x20`nil`\x20in\x20Go.\n\n\r\n\x05\x05\x03\x02\t\x01\x12\x04\ + \xb6\x03\x02\x10\n\r\n\x05\x05\x03\x02\t\x02\x12\x04\xb6\x03\x13\x14\n.\ + \n\x04\x05\x03\x02\n\x12\x04\xb8\x03\x02\x19\x1a\x20\x20`xyz`\x20in\x20`\ + const\x20xyz\x20=\x20\"hello\"`\n\n\r\n\x05\x05\x03\x02\n\x01\x12\x04\ + \xb8\x03\x02\x14\n\r\n\x05\x05\x03\x02\n\x02\x12\x04\xb8\x03\x17\x18\n'\ + \n\x04\x05\x03\x02\x0b\x12\x04\xba\x03\x02\x1f\x1a\x19\x20`var\x20X\x20=\ + \x20\"hello\"`\x20in\x20Go\n\n\r\n\x05\x05\x03\x02\x0b\x01\x12\x04\xba\ + \x03\x02\x19\n\r\n\x05\x05\x03\x02\x0b\x02\x12\x04\xba\x03\x1c\x1e\n3\n\ + \x04\x05\x03\x02\x0c\x12\x04\xbc\x03\x02\x1b\x1a%\x20Parameter\x20defini\ + tion\x20and\x20references\n\n\r\n\x05\x05\x03\x02\x0c\x01\x12\x04\xbc\ + \x03\x02\x15\n\r\n\x05\x05\x03\x02\x0c\x02\x12\x04\xbc\x03\x18\x1a\nX\n\ + \x04\x05\x03\x02\r\x12\x04\xbe\x03\x02\x17\x1aJ\x20Identifiers\x20for\ + \x20variable\x20definitions\x20and\x20references\x20within\x20a\x20local\ + \x20scope\n\n\r\n\x05\x05\x03\x02\r\x01\x12\x04\xbe\x03\x02\x11\n\r\n\ + \x05\x05\x03\x02\r\x02\x12\x04\xbe\x03\x14\x16\nK\n\x04\x05\x03\x02\x0e\ + \x12\x04\xc0\x03\x02\x1a\x1a=\x20Identifiers\x20that\x20shadow\x20other\ + \x20identifiers\x20in\x20an\x20outer\x20scope\n\n\r\n\x05\x05\x03\x02\ + \x0e\x01\x12\x04\xc0\x03\x02\x14\n\r\n\x05\x05\x03\x02\x0e\x02\x12\x04\ + \xc0\x03\x17\x19\n\xcd\x01\n\x04\x05\x03\x02\x0f\x12\x04\xc5\x03\x02\x1b\ + \x1a\xbe\x01\x20Identifier\x20representing\x20a\x20unit\x20of\x20code\ + \x20abstraction\x20and/or\x20namespacing.\n\n\x20NOTE:\x20This\x20corres\ + ponds\x20to\x20a\x20package\x20in\x20Go\x20and\x20JVM\x20languages,\n\ + \x20and\x20a\x20module\x20in\x20languages\x20like\x20Python\x20and\x20Ja\ + vaScript.\n\n\r\n\x05\x05\x03\x02\x0f\x01\x12\x04\xc5\x03\x02\x15\n\r\n\ + \x05\x05\x03\x02\x0f\x02\x12\x04\xc5\x03\x18\x1a\n\x0c\n\x04\x05\x03\x02\ + \x10\x12\x04\xc6\x03\x02*\n\r\n\x05\x05\x03\x02\x10\x01\x12\x04\xc6\x03\ + \x02\x12\n\r\n\x05\x05\x03\x02\x10\x02\x12\x04\xc6\x03\x15\x17\n\r\n\x05\ + \x05\x03\x02\x10\x03\x12\x04\xc6\x03\x18)\n\x0e\n\x06\x05\x03\x02\x10\ + \x03\x01\x12\x04\xc6\x03\x19(\n4\n\x04\x05\x03\x02\x11\x12\x04\xc9\x03\ + \x02\x1a\x1a&\x20Function\x20references,\x20including\x20calls\n\n\r\n\ + \x05\x05\x03\x02\x11\x01\x12\x04\xc9\x03\x02\x14\n\r\n\x05\x05\x03\x02\ + \x11\x02\x12\x04\xc9\x03\x17\x19\n(\n\x04\x05\x03\x02\x12\x12\x04\xcb\ + \x03\x02$\x1a\x1a\x20Function\x20definition\x20only\n\n\r\n\x05\x05\x03\ + \x02\x12\x01\x12\x04\xcb\x03\x02\x1e\n\r\n\x05\x05\x03\x02\x12\x02\x12\ + \x04\xcb\x03!#\n7\n\x04\x05\x03\x02\x13\x12\x04\xce\x03\x02\x17\x1a)\x20\ + Macro\x20references,\x20including\x20invocations\n\n\r\n\x05\x05\x03\x02\ + \x13\x01\x12\x04\xce\x03\x02\x11\n\r\n\x05\x05\x03\x02\x13\x02\x12\x04\ + \xce\x03\x14\x16\n%\n\x04\x05\x03\x02\x14\x12\x04\xd0\x03\x02!\x1a\x17\ + \x20Macro\x20definition\x20only\n\n\r\n\x05\x05\x03\x02\x14\x01\x12\x04\ + \xd0\x03\x02\x1b\n\r\n\x05\x05\x03\x02\x14\x02\x12\x04\xd0\x03\x1e\x20\n\ + !\n\x04\x05\x03\x02\x15\x12\x04\xd3\x03\x02\x16\x1a\x13\x20non-builtin\ + \x20types\n\n\r\n\x05\x05\x03\x02\x15\x01\x12\x04\xd3\x03\x02\x10\n\r\n\ + \x05\x05\x03\x02\x15\x02\x12\x04\xd3\x03\x13\x15\nK\n\x04\x05\x03\x02\ + \x16\x12\x04\xd5\x03\x02\x1d\x1a=\x20builtin\x20types\x20only,\x20such\ + \x20as\x20`str`\x20for\x20Python\x20or\x20`int`\x20in\x20Go\n\n\r\n\x05\ + \x05\x03\x02\x16\x01\x12\x04\xd5\x03\x02\x17\n\r\n\x05\x05\x03\x02\x16\ + \x02\x12\x04\xd5\x03\x1a\x1c\n7\n\x04\x05\x03\x02\x17\x12\x04\xd8\x03\ + \x02\x1b\x1a)\x20Python\x20decorators,\x20c-like\x20__attribute__\n\n\r\ + \n\x05\x05\x03\x02\x17\x01\x12\x04\xd8\x03\x02\x15\n\r\n\x05\x05\x03\x02\ + \x17\x02\x12\x04\xd8\x03\x18\x1a\n\x14\n\x04\x05\x03\x02\x18\x12\x04\xdb\ + \x03\x02\x13\x1a\x06\x20`\\b`\n\n\r\n\x05\x05\x03\x02\x18\x01\x12\x04\ + \xdb\x03\x02\r\n\r\n\x05\x05\x03\x02\x18\x02\x12\x04\xdb\x03\x10\x12\n\ + \x18\n\x04\x05\x03\x02\x19\x12\x04\xdd\x03\x02\x15\x1a\n\x20`*`,\x20`+`\ + \n\n\r\n\x05\x05\x03\x02\x19\x01\x12\x04\xdd\x03\x02\x0f\n\r\n\x05\x05\ + \x03\x02\x19\x02\x12\x04\xdd\x03\x12\x14\n\x13\n\x04\x05\x03\x02\x1a\x12\ + \x04\xdf\x03\x02\x15\x1a\x05\x20`.`\n\n\r\n\x05\x05\x03\x02\x1a\x01\x12\ + \x04\xdf\x03\x02\x0f\n\r\n\x05\x05\x03\x02\x1a\x02\x12\x04\xdf\x03\x12\ + \x14\n\"\n\x04\x05\x03\x02\x1b\x12\x04\xe1\x03\x02\x16\x1a\x14\x20`(`,\ + \x20`)`,\x20`[`,\x20`]`\n\n\r\n\x05\x05\x03\x02\x1b\x01\x12\x04\xe1\x03\ + \x02\x10\n\r\n\x05\x05\x03\x02\x1b\x02\x12\x04\xe1\x03\x13\x15\n\x18\n\ + \x04\x05\x03\x02\x1c\x12\x04\xe3\x03\x02\x11\x1a\n\x20`|`,\x20`-`\n\n\r\ + \n\x05\x05\x03\x02\x1c\x01\x12\x04\xe3\x03\x02\x0b\n\r\n\x05\x05\x03\x02\ + \x1c\x02\x12\x04\xe3\x03\x0e\x10\n0\n\x04\x05\x03\x02\x1d\x12\x04\xe6\ + \x03\x02\x15\x1a\"\x20Literal\x20strings:\x20\"Hello,\x20world!\"\n\n\r\ + \n\x05\x05\x03\x02\x1d\x01\x12\x04\xe6\x03\x02\x0f\n\r\n\x05\x05\x03\x02\ + \x1d\x02\x12\x04\xe6\x03\x12\x14\n-\n\x04\x05\x03\x02\x1e\x12\x04\xe8\ + \x03\x02\x1b\x1a\x1f\x20non-regex\x20escapes:\x20\"\\t\",\x20\"\\n\"\n\n\ + \r\n\x05\x05\x03\x02\x1e\x01\x12\x04\xe8\x03\x02\x15\n\r\n\x05\x05\x03\ + \x02\x1e\x02\x12\x04\xe8\x03\x18\x1a\n_\n\x04\x05\x03\x02\x1f\x12\x04\ + \xea\x03\x02\x1c\x1aQ\x20datetimes\x20within\x20strings,\x20special\x20w\ + ords\x20within\x20a\x20string,\x20`{}`\x20in\x20format\x20strings\n\n\r\ + \n\x05\x05\x03\x02\x1f\x01\x12\x04\xea\x03\x02\x16\n\r\n\x05\x05\x03\x02\ + \x1f\x02\x12\x04\xea\x03\x19\x1b\nG\n\x04\x05\x03\x02\x20\x12\x04\xec\ + \x03\x02\x18\x1a9\x20\"key\"\x20in\x20{\x20\"key\":\x20\"value\"\x20},\ + \x20useful\x20for\x20example\x20in\x20JSON\n\n\r\n\x05\x05\x03\x02\x20\ + \x01\x12\x04\xec\x03\x02\x12\n\r\n\x05\x05\x03\x02\x20\x02\x12\x04\xec\ + \x03\x15\x17\nV\n\x04\x05\x03\x02!\x12\x04\xee\x03\x02\x18\x1aH\x20'c'\ + \x20or\x20similar,\x20in\x20languages\x20that\x20differentiate\x20string\ + s\x20and\x20characters\n\n\r\n\x05\x05\x03\x02!\x01\x12\x04\xee\x03\x02\ + \x12\n\r\n\x05\x05\x03\x02!\x02\x12\x04\xee\x03\x15\x17\n9\n\x04\x05\x03\ + \x02\"\x12\x04\xf0\x03\x02\x16\x1a+\x20Literal\x20numbers,\x20both\x20fl\ + oats\x20and\x20integers\n\n\r\n\x05\x05\x03\x02\"\x01\x12\x04\xf0\x03\ + \x02\x10\n\r\n\x05\x05\x03\x02\"\x02\x12\x04\xf0\x03\x13\x15\n\x1f\n\x04\ + \x05\x03\x02#\x12\x04\xf2\x03\x02\x16\x1a\x11\x20`true`,\x20`false`\n\n\ + \r\n\x05\x05\x03\x02#\x01\x12\x04\xf2\x03\x02\x10\n\r\n\x05\x05\x03\x02#\ + \x02\x12\x04\xf2\x03\x13\x15\n&\n\x04\x05\x03\x02$\x12\x04\xf5\x03\x02\ + \x0b\x1a\x18\x20Used\x20for\x20XML-like\x20tags\n\n\r\n\x05\x05\x03\x02$\ + \x01\x12\x04\xf5\x03\x02\x05\n\r\n\x05\x05\x03\x02$\x02\x12\x04\xf5\x03\ + \x08\n\n/\n\x04\x05\x03\x02%\x12\x04\xf7\x03\x02\x14\x1a!\x20Attribute\ + \x20name\x20in\x20XML-like\x20tags\n\n\r\n\x05\x05\x03\x02%\x01\x12\x04\ + \xf7\x03\x02\x0e\n\r\n\x05\x05\x03\x02%\x02\x12\x04\xf7\x03\x11\x13\n,\n\ + \x04\x05\x03\x02&\x12\x04\xf9\x03\x02\x14\x1a\x1e\x20Delimiters\x20for\ + \x20XML-like\x20tags\n\n\r\n\x05\x05\x03\x02&\x01\x12\x04\xf9\x03\x02\ + \x0e\n\r\n\x05\x05\x03\x02&\x02\x12\x04\xf9\x03\x11\x13\n\xf9\x01\n\x02\ + \x04\t\x12\x06\x81\x04\0\xd0\x04\x01\x1a\xea\x01\x20Occurrence\x20associ\ + ates\x20a\x20source\x20position\x20with\x20a\x20symbol\x20and/or\x20high\ + lighting\n\x20information.\n\n\x20If\x20possible,\x20indexers\x20should\ + \x20try\x20to\x20bundle\x20logically\x20related\x20information\n\x20acro\ + ss\x20occurrences\x20into\x20a\x20single\x20occurrence\x20to\x20reduce\ + \x20payload\x20sizes.\n\n\x0b\n\x03\x04\t\x01\x12\x04\x81\x04\x08\x12\n\ + \xc6\x07\n\x04\x04\t\x02\0\x12\x04\x94\x04\x02\x1b\x1a\xb7\x07\x20Source\ + \x20position\x20of\x20this\x20occurrence.\x20Must\x20be\x20exactly\x20th\ + ree\x20or\x20four\n\x20elements:\n\n\x20-\x20Four\x20elements:\x20`[star\ + tLine,\x20startCharacter,\x20endLine,\x20endCharacter]`\n\x20-\x20Three\ + \x20elements:\x20`[startLine,\x20startCharacter,\x20endCharacter]`.\x20T\ + he\x20end\x20line\n\x20\x20\x20is\x20inferred\x20to\x20have\x20the\x20sa\ + me\x20value\x20as\x20the\x20start\x20line.\n\n\x20Line\x20numbers\x20and\ + \x20characters\x20are\x20always\x200-based.\x20Make\x20sure\x20to\x20inc\ + rement\x20the\n\x20line/character\x20values\x20before\x20displaying\x20t\ + hem\x20in\x20an\x20editor-like\x20UI\x20because\n\x20editors\x20conventi\ + onally\x20use\x201-based\x20numbers.\n\n\x20Historical\x20note:\x20the\ + \x20original\x20draft\x20of\x20this\x20schema\x20had\x20a\x20`Range`\x20\ + message\n\x20type\x20with\x20`start`\x20and\x20`end`\x20fields\x20of\x20\ + type\x20`Position`,\x20mirroring\x20LSP.\n\x20Benchmarks\x20revealed\x20\ + that\x20this\x20encoding\x20was\x20inefficient\x20and\x20that\x20we\x20c\ + ould\n\x20reduce\x20the\x20total\x20payload\x20size\x20of\x20an\x20index\ + \x20by\x2050%\x20by\x20using\x20`repeated\x20int32`\n\x20instead.\x20The\ + \x20`repeated\x20int32`\x20encoding\x20is\x20admittedly\x20more\x20embar\ + rassing\x20to\n\x20work\x20with\x20in\x20some\x20programming\x20language\ + s\x20but\x20we\x20hope\x20the\x20performance\n\x20improvements\x20make\ + \x20up\x20for\x20it.\n\n\r\n\x05\x04\t\x02\0\x04\x12\x04\x94\x04\x02\n\n\ + \r\n\x05\x04\t\x02\0\x05\x12\x04\x94\x04\x0b\x10\n\r\n\x05\x04\t\x02\0\ + \x01\x12\x04\x94\x04\x11\x16\n\r\n\x05\x04\t\x02\0\x03\x12\x04\x94\x04\ + \x19\x1a\n\x8a\x01\n\x04\x04\t\x02\x01\x12\x04\x97\x04\x02\x14\x1a|\x20(\ + optional)\x20The\x20symbol\x20that\x20appears\x20at\x20this\x20position.\ + \x20See\n\x20`SymbolInformation.symbol`\x20for\x20how\x20to\x20format\ + \x20symbols\x20as\x20strings.\n\n\r\n\x05\x04\t\x02\x01\x05\x12\x04\x97\ + \x04\x02\x08\n\r\n\x05\x04\t\x02\x01\x01\x12\x04\x97\x04\t\x0f\n\r\n\x05\ + \x04\t\x02\x01\x03\x12\x04\x97\x04\x12\x13\n\x97\x01\n\x04\x04\t\x02\x02\ + \x12\x04\x9a\x04\x02\x19\x1a\x88\x01\x20(optional)\x20Bitset\x20containi\ + ng\x20`SymbolRole`s\x20in\x20this\x20occurrence.\n\x20See\x20`SymbolRole\ + `'s\x20documentation\x20for\x20how\x20to\x20read\x20and\x20write\x20this\ + \x20field.\n\n\r\n\x05\x04\t\x02\x02\x05\x12\x04\x9a\x04\x02\x07\n\r\n\ + \x05\x04\t\x02\x02\x01\x12\x04\x9a\x04\x08\x14\n\r\n\x05\x04\t\x02\x02\ + \x03\x12\x04\x9a\x04\x17\x18\n\xf1\x03\n\x04\x04\t\x02\x03\x12\x04\xa3\ + \x04\x02-\x1a\xe2\x03\x20(optional)\x20CommonMark-formatted\x20documenta\ + tion\x20for\x20this\x20specific\x20range.\x20If\n\x20empty,\x20the\x20`S\ + ymbol.documentation`\x20field\x20is\x20used\x20instead.\x20One\x20exampl\ + e\n\x20where\x20this\x20field\x20might\x20be\x20useful\x20is\x20when\x20\ + the\x20symbol\x20represents\x20a\x20generic\n\x20function\x20(with\x20ab\ + stract\x20type\x20parameters\x20such\x20as\x20`List`)\x20and\x20at\ + \x20this\n\x20occurrence\x20we\x20know\x20the\x20exact\x20values\x20(suc\ + h\x20as\x20`List`).\n\n\x20This\x20field\x20can\x20also\x20be\ + \x20used\x20for\x20dynamically\x20or\x20gradually\x20typed\x20languages,\ + \n\x20which\x20commonly\x20allow\x20for\x20type-changing\x20assignment.\ + \n\n\r\n\x05\x04\t\x02\x03\x04\x12\x04\xa3\x04\x02\n\n\r\n\x05\x04\t\x02\ + \x03\x05\x12\x04\xa3\x04\x0b\x11\n\r\n\x05\x04\t\x02\x03\x01\x12\x04\xa3\ + \x04\x12(\n\r\n\x05\x04\t\x02\x03\x03\x12\x04\xa3\x04+,\nX\n\x04\x04\t\ + \x02\x04\x12\x04\xa5\x04\x02\x1d\x1aJ\x20(optional)\x20What\x20syntax\ + \x20highlighting\x20class\x20should\x20be\x20used\x20for\x20this\x20rang\ + e?\n\n\r\n\x05\x04\t\x02\x04\x06\x12\x04\xa5\x04\x02\x0c\n\r\n\x05\x04\t\ + \x02\x04\x01\x12\x04\xa5\x04\r\x18\n\r\n\x05\x04\t\x02\x04\x03\x12\x04\ + \xa5\x04\x1b\x1c\nW\n\x04\x04\t\x02\x05\x12\x04\xa7\x04\x02&\x1aI\x20(op\ + tional)\x20Diagnostics\x20that\x20have\x20been\x20reported\x20for\x20thi\ + s\x20specific\x20range.\n\n\r\n\x05\x04\t\x02\x05\x04\x12\x04\xa7\x04\ + \x02\n\n\r\n\x05\x04\t\x02\x05\x06\x12\x04\xa7\x04\x0b\x15\n\r\n\x05\x04\ + \t\x02\x05\x01\x12\x04\xa7\x04\x16!\n\r\n\x05\x04\t\x02\x05\x03\x12\x04\ + \xa7\x04$%\n\x80\x0c\n\x04\x04\t\x02\x06\x12\x04\xcf\x04\x02%\x1a\xf1\ + \x0b\x20(optional)\x20Using\x20the\x20same\x20encoding\x20as\x20the\x20s\ + ibling\x20`range`\x20field,\x20source\n\x20position\x20of\x20the\x20near\ + est\x20non-trivial\x20enclosing\x20AST\x20node.\x20This\x20range\x20must\ + \n\x20enclose\x20the\x20`range`\x20field.\x20Example\x20applications\x20\ + that\x20make\x20use\x20of\x20the\n\x20enclosing_range\x20field:\n\n\x20-\ + \x20Call\x20hierarchies:\x20to\x20determine\x20what\x20symbols\x20are\ + \x20references\x20from\x20the\x20body\n\x20\x20\x20of\x20a\x20function\n\ + \x20-\x20Symbol\x20outline:\x20to\x20display\x20breadcrumbs\x20from\x20t\ + he\x20cursor\x20position\x20to\x20the\n\x20\x20\x20root\x20of\x20the\x20\ + file\n\x20-\x20Expand\x20selection:\x20to\x20select\x20the\x20nearest\ + \x20enclosing\x20AST\x20node.\n\x20-\x20Highlight\x20range:\x20to\x20ind\ + icate\x20the\x20AST\x20expression\x20that\x20is\x20associated\x20with\ + \x20a\n\x20\x20\x20hover\x20popover\n\n\x20For\x20definition\x20occurren\ + ces,\x20the\x20enclosing\x20range\x20should\x20indicate\x20the\n\x20star\ + t/end\x20bounds\x20of\x20the\x20entire\x20definition\x20AST\x20node,\x20\ + including\n\x20documentation.\n\x20```\n\x20const\x20n\x20=\x203\n\x20\ + \x20\x20\x20\x20\x20\x20^\x20range\n\x20^^^^^^^^^^^\x20enclosing_range\n\ + \n\x20/**\x20Parses\x20the\x20string\x20into\x20something\x20*/\n\x20^\ + \x20enclosing_range\x20start\x20--------------------------------------|\ + \n\x20function\x20parse(input\x20string):\x20string\x20{\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20|\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^^^^^\x20range\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20|\n\x20\x20\x20\x20\x20return\x20input.slice(n)\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20|\n\x20\x20\x20\x20\x20retur\ - n\x20input.slice(n)\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + |\n\x20}\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20|\n\x20}\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20|\n\x20^\x20enclosing_range\x20end\ + \x20<---------------------------------------|\n\x20```\n\x20For\x20refer\ + ence\x20occurrences,\x20the\x20enclosing\x20range\x20should\x20indicate\ + \x20the\x20start/end\n\x20bounds\x20of\x20the\x20parent\x20expression.\n\ + \x20```\n\x20const\x20a\x20=\x20a.b\n\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20^\x20range\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20^^^\x20enclosing_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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20|\n\x20^\x20\ - enclosing_range\x20end\x20<---------------------------------------|\n\ - \x20```\n\x20For\x20reference\x20occurrences,\x20the\x20enclosing\x20ran\ - ge\x20should\x20indicate\x20the\x20start/end\n\x20bounds\x20of\x20the\ - \x20parent\x20expression.\n\x20```\n\x20const\x20a\x20=\x20a.b\n\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^\x20range\n\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20^^^\x20enclosing_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^\x20range\n\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20^^^^^^^^^^^^^\x20enclosing_range\n\x20```\n\n\r\n\x05\ - \x04\t\x02\x06\x04\x12\x04\xbd\x04\x02\n\n\r\n\x05\x04\t\x02\x06\x05\x12\ - \x04\xbd\x04\x0b\x10\n\r\n\x05\x04\t\x02\x06\x01\x12\x04\xbd\x04\x11\x20\ - \n\r\n\x05\x04\t\x02\x06\x03\x12\x04\xbd\x04#$\nw\n\x02\x04\n\x12\x06\ - \xc2\x04\0\xcd\x04\x01\x1ai\x20Represents\x20a\x20diagnostic,\x20such\ - \x20as\x20a\x20compiler\x20error\x20or\x20warning,\x20which\x20should\ - \x20be\n\x20reported\x20for\x20a\x20document.\n\n\x0b\n\x03\x04\n\x01\ - \x12\x04\xc2\x04\x08\x12\nW\n\x04\x04\n\x02\0\x12\x04\xc4\x04\x02\x18\ - \x1aI\x20Should\x20this\x20diagnostic\x20be\x20reported\x20as\x20an\x20e\ - rror,\x20warning,\x20info,\x20or\x20hint?\n\n\r\n\x05\x04\n\x02\0\x06\ - \x12\x04\xc4\x04\x02\n\n\r\n\x05\x04\n\x02\0\x01\x12\x04\xc4\x04\x0b\x13\ - \n\r\n\x05\x04\n\x02\0\x03\x12\x04\xc4\x04\x16\x17\n]\n\x04\x04\n\x02\ - \x01\x12\x04\xc6\x04\x02\x12\x1aO\x20(optional)\x20Code\x20of\x20this\ - \x20diagnostic,\x20which\x20might\x20appear\x20in\x20the\x20user\x20inte\ - rface.\n\n\r\n\x05\x04\n\x02\x01\x05\x12\x04\xc6\x04\x02\x08\n\r\n\x05\ - \x04\n\x02\x01\x01\x12\x04\xc6\x04\t\r\n\r\n\x05\x04\n\x02\x01\x03\x12\ - \x04\xc6\x04\x10\x11\n+\n\x04\x04\n\x02\x02\x12\x04\xc8\x04\x02\x15\x1a\ - \x1d\x20Message\x20of\x20this\x20diagnostic.\n\n\r\n\x05\x04\n\x02\x02\ - \x05\x12\x04\xc8\x04\x02\x08\n\r\n\x05\x04\n\x02\x02\x01\x12\x04\xc8\x04\ - \t\x10\n\r\n\x05\x04\n\x02\x02\x03\x12\x04\xc8\x04\x13\x14\n~\n\x04\x04\ - \n\x02\x03\x12\x04\xcb\x04\x02\x14\x1ap\x20(optional)\x20Human-readable\ - \x20string\x20describing\x20the\x20source\x20of\x20this\x20diagnostic,\ - \x20e.g.\n\x20'typescript'\x20or\x20'super\x20lint'.\n\n\r\n\x05\x04\n\ - \x02\x03\x05\x12\x04\xcb\x04\x02\x08\n\r\n\x05\x04\n\x02\x03\x01\x12\x04\ - \xcb\x04\t\x0f\n\r\n\x05\x04\n\x02\x03\x03\x12\x04\xcb\x04\x12\x13\n\x0c\ - \n\x04\x04\n\x02\x04\x12\x04\xcc\x04\x02\"\n\r\n\x05\x04\n\x02\x04\x04\ - \x12\x04\xcc\x04\x02\n\n\r\n\x05\x04\n\x02\x04\x06\x12\x04\xcc\x04\x0b\ - \x18\n\r\n\x05\x04\n\x02\x04\x01\x12\x04\xcc\x04\x19\x1d\n\r\n\x05\x04\n\ - \x02\x04\x03\x12\x04\xcc\x04\x20!\n\x0c\n\x02\x05\x04\x12\x06\xcf\x04\0\ - \xd5\x04\x01\n\x0b\n\x03\x05\x04\x01\x12\x04\xcf\x04\x05\r\n\x0c\n\x04\ - \x05\x04\x02\0\x12\x04\xd0\x04\x02\x1a\n\r\n\x05\x05\x04\x02\0\x01\x12\ - \x04\xd0\x04\x02\x15\n\r\n\x05\x05\x04\x02\0\x02\x12\x04\xd0\x04\x18\x19\ - \n\x0c\n\x04\x05\x04\x02\x01\x12\x04\xd1\x04\x02\x0c\n\r\n\x05\x05\x04\ - \x02\x01\x01\x12\x04\xd1\x04\x02\x07\n\r\n\x05\x05\x04\x02\x01\x02\x12\ - \x04\xd1\x04\n\x0b\n\x0c\n\x04\x05\x04\x02\x02\x12\x04\xd2\x04\x02\x0e\n\ - \r\n\x05\x05\x04\x02\x02\x01\x12\x04\xd2\x04\x02\t\n\r\n\x05\x05\x04\x02\ - \x02\x02\x12\x04\xd2\x04\x0c\r\n\x0c\n\x04\x05\x04\x02\x03\x12\x04\xd3\ - \x04\x02\x12\n\r\n\x05\x05\x04\x02\x03\x01\x12\x04\xd3\x04\x02\r\n\r\n\ - \x05\x05\x04\x02\x03\x02\x12\x04\xd3\x04\x10\x11\n\x0c\n\x04\x05\x04\x02\ - \x04\x12\x04\xd4\x04\x02\x0b\n\r\n\x05\x05\x04\x02\x04\x01\x12\x04\xd4\ - \x04\x02\x06\n\r\n\x05\x05\x04\x02\x04\x02\x12\x04\xd4\x04\t\n\n\x0c\n\ - \x02\x05\x05\x12\x06\xd7\x04\0\xdb\x04\x01\n\x0b\n\x03\x05\x05\x01\x12\ - \x04\xd7\x04\x05\x12\n\x0c\n\x04\x05\x05\x02\0\x12\x04\xd8\x04\x02\x1f\n\ - \r\n\x05\x05\x05\x02\0\x01\x12\x04\xd8\x04\x02\x1a\n\r\n\x05\x05\x05\x02\ - \0\x02\x12\x04\xd8\x04\x1d\x1e\n\x0c\n\x04\x05\x05\x02\x01\x12\x04\xd9\ - \x04\x02\x12\n\r\n\x05\x05\x05\x02\x01\x01\x12\x04\xd9\x04\x02\r\n\r\n\ - \x05\x05\x05\x02\x01\x02\x12\x04\xd9\x04\x10\x11\n\x0c\n\x04\x05\x05\x02\ - \x02\x12\x04\xda\x04\x02\x11\n\r\n\x05\x05\x05\x02\x02\x01\x12\x04\xda\ - \x04\x02\x0c\n\r\n\x05\x05\x05\x02\x02\x02\x12\x04\xda\x04\x0f\x10\n\xd6\ - \x03\n\x02\x05\x06\x12\x06\xe3\x04\0\xc9\x05\x01\x1a\xc7\x03\x20Language\ - \x20standardises\x20names\x20of\x20common\x20programming\x20languages\ - \x20that\x20can\x20be\x20used\n\x20for\x20the\x20`Document.language`\x20\ - field.\x20The\x20primary\x20purpose\x20of\x20this\x20enum\x20is\x20to\n\ - \x20prevent\x20a\x20situation\x20where\x20we\x20have\x20a\x20single\x20p\ - rogramming\x20language\x20ends\x20up\x20with\n\x20multiple\x20string\x20\ - representations.\x20For\x20example,\x20the\x20C++\x20language\x20uses\ - \x20the\x20name\n\x20\"CPlusPlus\"\x20in\x20this\x20enum\x20and\x20other\ - \x20names\x20such\x20as\x20\"cpp\"\x20are\x20incompatible.\n\x20Feel\x20\ - free\x20to\x20send\x20a\x20pull-request\x20to\x20add\x20missing\x20progr\ - amming\x20languages.\n\n\x0b\n\x03\x05\x06\x01\x12\x04\xe3\x04\x05\r\n\ - \x0c\n\x04\x05\x06\x02\0\x12\x04\xe4\x04\x02\x1a\n\r\n\x05\x05\x06\x02\0\ - \x01\x12\x04\xe4\x04\x02\x15\n\r\n\x05\x05\x06\x02\0\x02\x12\x04\xe4\x04\ - \x18\x19\n\x0c\n\x04\x05\x06\x02\x01\x12\x04\xe5\x04\x02\x0c\n\r\n\x05\ - \x05\x06\x02\x01\x01\x12\x04\xe5\x04\x02\x06\n\r\n\x05\x05\x06\x02\x01\ - \x02\x12\x04\xe5\x04\t\x0b\n\x0c\n\x04\x05\x06\x02\x02\x12\x04\xe6\x04\ - \x02\x0b\n\r\n\x05\x05\x06\x02\x02\x01\x12\x04\xe6\x04\x02\x05\n\r\n\x05\ - \x05\x06\x02\x02\x02\x12\x04\xe6\x04\x08\n\n\x0c\n\x04\x05\x06\x02\x03\ - \x12\x04\xe7\x04\x02\x0b\n\r\n\x05\x05\x06\x02\x03\x01\x12\x04\xe7\x04\ - \x02\x05\n\r\n\x05\x05\x06\x02\x03\x02\x12\x04\xe7\x04\x08\n\n\x0c\n\x04\ - \x05\x06\x02\x04\x12\x04\xe8\x04\x02\x0c\n\r\n\x05\x05\x06\x02\x04\x01\ - \x12\x04\xe8\x04\x02\x06\n\r\n\x05\x05\x06\x02\x04\x02\x12\x04\xe8\x04\t\ - \x0b\n\x0c\n\x04\x05\x06\x02\x05\x12\x04\xe9\x04\x02\x10\n\r\n\x05\x05\ - \x06\x02\x05\x01\x12\x04\xe9\x04\x02\n\n\r\n\x05\x05\x06\x02\x05\x02\x12\ - \x04\xe9\x04\r\x0f\n\x0c\n\x04\x05\x06\x02\x06\x12\x04\xea\x04\x02\x10\n\ - \r\n\x05\x05\x06\x02\x06\x01\x12\x04\xea\x04\x02\n\n\r\n\x05\x05\x06\x02\ - \x06\x02\x12\x04\xea\x04\r\x0f\n\x0c\n\x04\x05\x06\x02\x07\x12\x04\xeb\ - \x04\x02\x0b\n\r\n\x05\x05\x06\x02\x07\x01\x12\x04\xeb\x04\x02\x05\n\r\n\ - \x05\x05\x06\x02\x07\x02\x12\x04\xeb\x04\x08\n\n\x0c\n\x04\x05\x06\x02\ - \x08\x12\x04\xec\x04\x02\x0b\n\r\n\x05\x05\x06\x02\x08\x01\x12\x04\xec\ - \x04\x02\x05\n\r\n\x05\x05\x06\x02\x08\x02\x12\x04\xec\x04\x08\n\n\x0c\n\ - \x04\x05\x06\x02\t\x12\x04\xed\x04\x02\x0e\n\r\n\x05\x05\x06\x02\t\x01\ - \x12\x04\xed\x04\x02\x08\n\r\n\x05\x05\x06\x02\t\x02\x12\x04\xed\x04\x0b\ - \r\n\x0c\n\x04\x05\x06\x02\n\x12\x04\xee\x04\x02\t\n\r\n\x05\x05\x06\x02\ - \n\x01\x12\x04\xee\x04\x02\x03\n\r\n\x05\x05\x06\x02\n\x02\x12\x04\xee\ - \x04\x06\x08\n\x0c\n\x04\x05\x06\x02\x0b\x12\x04\xef\x04\x02\r\n\r\n\x05\ - \x05\x06\x02\x0b\x01\x12\x04\xef\x04\x02\x07\n\r\n\x05\x05\x06\x02\x0b\ - \x02\x12\x04\xef\x04\n\x0c\nH\n\x04\x05\x06\x02\x0c\x12\x04\xf0\x04\x02\ - \x0b\":\x20C++\x20(the\x20name\x20\"CPP\"\x20was\x20chosen\x20for\x20con\ - sistency\x20with\x20LSP)\n\n\r\n\x05\x05\x06\x02\x0c\x01\x12\x04\xf0\x04\ - \x02\x05\n\r\n\x05\x05\x06\x02\x0c\x02\x12\x04\xf0\x04\x08\n\n\x0c\n\x04\ - \x05\x06\x02\r\x12\x04\xf1\x04\x02\x0b\n\r\n\x05\x05\x06\x02\r\x01\x12\ - \x04\xf1\x04\x02\x05\n\r\n\x05\x05\x06\x02\r\x02\x12\x04\xf1\x04\x08\n\n\ - \x0c\n\x04\x05\x06\x02\x0e\x12\x04\xf2\x04\x02\r\n\r\n\x05\x05\x06\x02\ - \x0e\x01\x12\x04\xf2\x04\x02\x08\n\r\n\x05\x05\x06\x02\x0e\x02\x12\x04\ - \xf2\x04\x0b\x0c\n\x0c\n\x04\x05\x06\x02\x0f\x12\x04\xf3\x04\x02\x0e\n\r\ - \n\x05\x05\x06\x02\x0f\x01\x12\x04\xf3\x04\x02\t\n\r\n\x05\x05\x06\x02\ - \x0f\x02\x12\x04\xf3\x04\x0c\r\n\x0c\n\x04\x05\x06\x02\x10\x12\x04\xf4\ - \x04\x02\x14\n\r\n\x05\x05\x06\x02\x10\x01\x12\x04\xf4\x04\x02\x0e\n\r\n\ - \x05\x05\x06\x02\x10\x02\x12\x04\xf4\x04\x11\x13\n\x0c\n\x04\x05\x06\x02\ - \x11\x12\x04\xf5\x04\x02\x11\n\r\n\x05\x05\x06\x02\x11\x01\x12\x04\xf5\ - \x04\x02\x0c\n\r\n\x05\x05\x06\x02\x11\x02\x12\x04\xf5\x04\x0f\x10\n\x0c\ - \n\x04\x05\x06\x02\x12\x12\x04\xf6\x04\x02\x0b\n\r\n\x05\x05\x06\x02\x12\ - \x01\x12\x04\xf6\x04\x02\x05\n\r\n\x05\x05\x06\x02\x12\x02\x12\x04\xf6\ - \x04\x08\n\n\x0c\n\x04\x05\x06\x02\x13\x12\x04\xf7\x04\x02\x0b\n\r\n\x05\ - \x05\x06\x02\x13\x01\x12\x04\xf7\x04\x02\x06\n\r\n\x05\x05\x06\x02\x13\ - \x02\x12\x04\xf7\x04\t\n\n\x0c\n\x04\x05\x06\x02\x14\x12\x04\xf8\x04\x02\ - \x0e\n\r\n\x05\x05\x06\x02\x14\x01\x12\x04\xf8\x04\x02\x08\n\r\n\x05\x05\ - \x06\x02\x14\x02\x12\x04\xf8\x04\x0b\r\n\x0c\n\x04\x05\x06\x02\x15\x12\ - \x04\xf9\x04\x02\x0c\n\r\n\x05\x05\x06\x02\x15\x01\x12\x04\xf9\x04\x02\ - \x06\n\r\n\x05\x05\x06\x02\x15\x02\x12\x04\xf9\x04\t\x0b\n\x0c\n\x04\x05\ - \x06\x02\x16\x12\x04\xfa\x04\x02\x12\n\r\n\x05\x05\x06\x02\x16\x01\x12\ - \x04\xfa\x04\x02\x0c\n\r\n\x05\x05\x06\x02\x16\x02\x12\x04\xfa\x04\x0f\ - \x11\n\x0c\n\x04\x05\x06\x02\x17\x12\x04\xfb\x04\x02\x0e\n\r\n\x05\x05\ - \x06\x02\x17\x01\x12\x04\xfb\x04\x02\x08\n\r\n\x05\x05\x06\x02\x17\x02\ - \x12\x04\xfb\x04\x0b\r\n\x0c\n\x04\x05\x06\x02\x18\x12\x04\xfc\x04\x02\ - \x0e\n\r\n\x05\x05\x06\x02\x18\x01\x12\x04\xfc\x04\x02\x08\n\r\n\x05\x05\ - \x06\x02\x18\x02\x12\x04\xfc\x04\x0b\r\n\x0c\n\x04\x05\x06\x02\x19\x12\ - \x04\xfd\x04\x02\x0e\n\r\n\x05\x05\x06\x02\x19\x01\x12\x04\xfd\x04\x02\ - \x08\n\r\n\x05\x05\x06\x02\x19\x02\x12\x04\xfd\x04\x0b\r\n\x0c\n\x04\x05\ - \x06\x02\x1a\x12\x04\xfe\x04\x02\x0e\n\r\n\x05\x05\x06\x02\x1a\x01\x12\ - \x04\xfe\x04\x02\x08\n\r\n\x05\x05\x06\x02\x1a\x02\x12\x04\xfe\x04\x0b\r\ - \n\x0c\n\x04\x05\x06\x02\x1b\x12\x04\xff\x04\x02\x0c\n\r\n\x05\x05\x06\ - \x02\x1b\x01\x12\x04\xff\x04\x02\x06\n\r\n\x05\x05\x06\x02\x1b\x02\x12\ - \x04\xff\x04\t\x0b\n\x0c\n\x04\x05\x06\x02\x1c\x12\x04\x80\x05\x02\x0c\n\ - \r\n\x05\x05\x06\x02\x1c\x01\x12\x04\x80\x05\x02\x06\n\r\n\x05\x05\x06\ - \x02\x1c\x02\x12\x04\x80\x05\t\x0b\n\x0c\n\x04\x05\x06\x02\x1d\x12\x04\ - \x81\x05\x02\x0f\n\r\n\x05\x05\x06\x02\x1d\x01\x12\x04\x81\x05\x02\t\n\r\ - \n\x05\x05\x06\x02\x1d\x02\x12\x04\x81\x05\x0c\x0e\n\x0c\n\x04\x05\x06\ - \x02\x1e\x12\x04\x82\x05\x02\x12\n\r\n\x05\x05\x06\x02\x1e\x01\x12\x04\ - \x82\x05\x02\x0c\n\r\n\x05\x05\x06\x02\x1e\x02\x12\x04\x82\x05\x0f\x11\n\ - \x0c\n\x04\x05\x06\x02\x1f\x12\x04\x83\x05\x02\x12\n\r\n\x05\x05\x06\x02\ - \x1f\x01\x12\x04\x83\x05\x02\x0c\n\r\n\x05\x05\x06\x02\x1f\x02\x12\x04\ - \x83\x05\x0f\x11\n\x0c\n\x04\x05\x06\x02\x20\x12\x04\x84\x05\x02\x12\n\r\ - \n\x05\x05\x06\x02\x20\x01\x12\x04\x84\x05\x02\x0c\n\r\n\x05\x05\x06\x02\ - \x20\x02\x12\x04\x84\x05\x0f\x11\n\x0c\n\x04\x05\x06\x02!\x12\x04\x85\ - \x05\x02\n\n\r\n\x05\x05\x06\x02!\x01\x12\x04\x85\x05\x02\x04\n\r\n\x05\ - \x05\x06\x02!\x02\x12\x04\x85\x05\x07\t\n\x0c\n\x04\x05\x06\x02\"\x12\ - \x04\x86\x05\x02\r\n\r\n\x05\x05\x06\x02\"\x01\x12\x04\x86\x05\x02\x08\n\ - \r\n\x05\x05\x06\x02\"\x02\x12\x04\x86\x05\x0b\x0c\n\x0c\n\x04\x05\x06\ - \x02#\x12\x04\x87\x05\x02\x0c\n\r\n\x05\x05\x06\x02#\x01\x12\x04\x87\x05\ - \x02\x06\n\r\n\x05\x05\x06\x02#\x02\x12\x04\x87\x05\t\x0b\n\x0c\n\x04\ - \x05\x06\x02$\x12\x04\x88\x05\x02\x0c\n\r\n\x05\x05\x06\x02$\x01\x12\x04\ - \x88\x05\x02\x06\n\r\n\x05\x05\x06\x02$\x02\x12\x04\x88\x05\t\x0b\n\x0c\ - \n\x04\x05\x06\x02%\x12\x04\x89\x05\x02\x12\n\r\n\x05\x05\x06\x02%\x01\ - \x12\x04\x89\x05\x02\x0c\n\r\n\x05\x05\x06\x02%\x02\x12\x04\x89\x05\x0f\ - \x11\n\x0c\n\x04\x05\x06\x02&\x12\x04\x8a\x05\x02\x0f\n\r\n\x05\x05\x06\ - \x02&\x01\x12\x04\x8a\x05\x02\t\n\r\n\x05\x05\x06\x02&\x02\x12\x04\x8a\ - \x05\x0c\x0e\n\x0c\n\x04\x05\x06\x02'\x12\x04\x8b\x05\x02\r\n\r\n\x05\ - \x05\x06\x02'\x01\x12\x04\x8b\x05\x02\x07\n\r\n\x05\x05\x06\x02'\x02\x12\ - \x04\x8b\x05\n\x0c\n\x0c\n\x04\x05\x06\x02(\x12\x04\x8c\x05\x02\x0b\n\r\ - \n\x05\x05\x06\x02(\x01\x12\x04\x8c\x05\x02\x05\n\r\n\x05\x05\x06\x02(\ - \x02\x12\x04\x8c\x05\x08\n\n\x0c\n\x04\x05\x06\x02)\x12\x04\x8d\x05\x02\ - \t\n\r\n\x05\x05\x06\x02)\x01\x12\x04\x8d\x05\x02\x03\n\r\n\x05\x05\x06\ - \x02)\x02\x12\x04\x8d\x05\x06\x08\n\x0c\n\x04\x05\x06\x02*\x12\x04\x8e\ - \x05\x02\x0c\n\r\n\x05\x05\x06\x02*\x01\x12\x04\x8e\x05\x02\x06\n\r\n\ - \x05\x05\x06\x02*\x02\x12\x04\x8e\x05\t\x0b\n\x0c\n\x04\x05\x06\x02+\x12\ - \x04\x8f\x05\x02\x0b\n\r\n\x05\x05\x06\x02+\x01\x12\x04\x8f\x05\x02\x06\ - \n\r\n\x05\x05\x06\x02+\x02\x12\x04\x8f\x05\t\n\n\x0c\n\x04\x05\x06\x02,\ - \x12\x04\x90\x05\x02\x12\n\r\n\x05\x05\x06\x02,\x01\x12\x04\x90\x05\x02\ - \x0c\n\r\n\x05\x05\x06\x02,\x02\x12\x04\x90\x05\x0f\x11\n\x0c\n\x04\x05\ - \x06\x02-\x12\x04\x91\x05\x02\x17\n\r\n\x05\x05\x06\x02-\x01\x12\x04\x91\ - \x05\x02\x11\n\r\n\x05\x05\x06\x02-\x02\x12\x04\x91\x05\x14\x16\n\x0c\n\ - \x04\x05\x06\x02.\x12\x04\x92\x05\x02\x0f\n\r\n\x05\x05\x06\x02.\x01\x12\ - \x04\x92\x05\x02\t\n\r\n\x05\x05\x06\x02.\x02\x12\x04\x92\x05\x0c\x0e\n\ - \x0c\n\x04\x05\x06\x02/\x12\x04\x93\x05\x02\x0e\n\r\n\x05\x05\x06\x02/\ - \x01\x12\x04\x93\x05\x02\x07\n\r\n\x05\x05\x06\x02/\x02\x12\x04\x93\x05\ - \x0b\r\n\x0c\n\x04\x05\x06\x020\x12\x04\x94\x05\x02\r\n\r\n\x05\x05\x06\ - \x020\x01\x12\x04\x94\x05\x02\x08\n\r\n\x05\x05\x06\x020\x02\x12\x04\x94\ - \x05\x0b\x0c\n\x0c\n\x04\x05\x06\x021\x12\x04\x95\x05\x02\r\n\r\n\x05\ - \x05\x06\x021\x01\x12\x04\x95\x05\x02\x07\n\r\n\x05\x05\x06\x021\x02\x12\ - \x04\x95\x05\n\x0c\n\x0c\n\x04\x05\x06\x022\x12\x04\x96\x05\x02\x0c\n\r\ - \n\x05\x05\x06\x022\x01\x12\x04\x96\x05\x02\x06\n\r\n\x05\x05\x06\x022\ - \x02\x12\x04\x96\x05\t\x0b\n\x0c\n\x04\x05\x06\x023\x12\x04\x97\x05\x02\ - \x0c\n\r\n\x05\x05\x06\x023\x01\x12\x04\x97\x05\x02\x06\n\r\n\x05\x05\ - \x06\x023\x02\x12\x04\x97\x05\t\x0b\n\x0c\n\x04\x05\x06\x024\x12\x04\x98\ - \x05\x02\x0b\n\r\n\x05\x05\x06\x024\x01\x12\x04\x98\x05\x02\x05\n\r\n\ - \x05\x05\x06\x024\x02\x12\x04\x98\x05\x08\n\n\x0c\n\x04\x05\x06\x025\x12\ - \x04\x99\x05\x02\x10\n\r\n\x05\x05\x06\x025\x01\x12\x04\x99\x05\x02\n\n\ - \r\n\x05\x05\x06\x025\x02\x12\x04\x99\x05\r\x0f\n\x0c\n\x04\x05\x06\x026\ - \x12\x04\x9a\x05\x02\x10\n\r\n\x05\x05\x06\x026\x01\x12\x04\x9a\x05\x02\ - \n\n\r\n\x05\x05\x06\x026\x02\x12\x04\x9a\x05\r\x0f\n\x0c\n\x04\x05\x06\ - \x027\x12\x04\x9b\x05\x02\x0e\n\r\n\x05\x05\x06\x027\x01\x12\x04\x9b\x05\ - \x02\x08\n\r\n\x05\x05\x06\x027\x02\x12\x04\x9b\x05\x0b\r\n\x0c\n\x04\ - \x05\x06\x028\x12\x04\x9c\x05\x02\x0b\n\r\n\x05\x05\x06\x028\x01\x12\x04\ - \x9c\x05\x02\x05\n\r\n\x05\x05\x06\x028\x02\x12\x04\x9c\x05\x08\n\n\x0c\ - \n\x04\x05\x06\x029\x12\x04\x9d\x05\x02\r\n\r\n\x05\x05\x06\x029\x01\x12\ - \x04\x9d\x05\x02\x07\n\r\n\x05\x05\x06\x029\x02\x12\x04\x9d\x05\n\x0c\n\ - \x0c\n\x04\x05\x06\x02:\x12\x04\x9e\x05\x02\x13\n\r\n\x05\x05\x06\x02:\ - \x01\x12\x04\x9e\x05\x02\r\n\r\n\x05\x05\x06\x02:\x02\x12\x04\x9e\x05\ - \x10\x12\n\x0c\n\x04\x05\x06\x02;\x12\x04\x9f\x05\x02\x15\n\r\n\x05\x05\ - \x06\x02;\x01\x12\x04\x9f\x05\x02\x0f\n\r\n\x05\x05\x06\x02;\x02\x12\x04\ - \x9f\x05\x12\x14\n\x0c\n\x04\x05\x06\x02<\x12\x04\xa0\x05\x02\x0b\n\r\n\ - \x05\x05\x06\x02<\x01\x12\x04\xa0\x05\x02\x05\n\r\n\x05\x05\x06\x02<\x02\ - \x12\x04\xa0\x05\x08\n\n\x0c\n\x04\x05\x06\x02=\x12\x04\xa1\x05\x02\r\n\ - \r\n\x05\x05\x06\x02=\x01\x12\x04\xa1\x05\x02\x07\n\r\n\x05\x05\x06\x02=\ - \x02\x12\x04\xa1\x05\n\x0c\n\x0c\n\x04\x05\x06\x02>\x12\x04\xa2\x05\x02\ - \x0c\n\r\n\x05\x05\x06\x02>\x01\x12\x04\xa2\x05\x02\x06\n\r\n\x05\x05\ - \x06\x02>\x02\x12\x04\xa2\x05\t\x0b\n\x0c\n\x04\x05\x06\x02?\x12\x04\xa3\ - \x05\x02\x12\n\r\n\x05\x05\x06\x02?\x01\x12\x04\xa3\x05\x02\x0c\n\r\n\ - \x05\x05\x06\x02?\x02\x12\x04\xa3\x05\x0f\x11\n\x0c\n\x04\x05\x06\x02@\ - \x12\x04\xa4\x05\x02\x0e\n\r\n\x05\x05\x06\x02@\x01\x12\x04\xa4\x05\x02\ - \x08\n\r\n\x05\x05\x06\x02@\x02\x12\x04\xa4\x05\x0b\r\n\x0c\n\x04\x05\ - \x06\x02A\x12\x04\xa5\x05\x02\x0e\n\r\n\x05\x05\x06\x02A\x01\x12\x04\xa5\ - \x05\x02\x08\n\r\n\x05\x05\x06\x02A\x02\x12\x04\xa5\x05\x0b\r\n\x0c\n\ - \x04\x05\x06\x02B\x12\x04\xa6\x05\x02\t\n\r\n\x05\x05\x06\x02B\x01\x12\ - \x04\xa6\x05\x02\x03\n\r\n\x05\x05\x06\x02B\x02\x12\x04\xa6\x05\x06\x08\ - \n\x0c\n\x04\x05\x06\x02C\x12\x04\xa7\x05\x02\x0e\n\r\n\x05\x05\x06\x02C\ - \x01\x12\x04\xa7\x05\x02\x08\n\r\n\x05\x05\x06\x02C\x02\x12\x04\xa7\x05\ - \x0b\r\n\x0c\n\x04\x05\x06\x02D\x12\x04\xa8\x05\x02\x0c\n\r\n\x05\x05\ - \x06\x02D\x01\x12\x04\xa8\x05\x02\x06\n\r\n\x05\x05\x06\x02D\x02\x12\x04\ - \xa8\x05\t\x0b\n\x0c\n\x04\x05\x06\x02E\x12\x04\xa9\x05\x02\r\n\r\n\x05\ - \x05\x06\x02E\x01\x12\x04\xa9\x05\x02\x07\n\r\n\x05\x05\x06\x02E\x02\x12\ - \x04\xa9\x05\n\x0c\n\x0c\n\x04\x05\x06\x02F\x12\x04\xaa\x05\x02\x0c\n\r\ - \n\x05\x05\x06\x02F\x01\x12\x04\xaa\x05\x02\x06\n\r\n\x05\x05\x06\x02F\ - \x02\x12\x04\xaa\x05\t\x0b\n\x0c\n\x04\x05\x06\x02G\x12\x04\xab\x05\x02\ - \x0c\n\r\n\x05\x05\x06\x02G\x01\x12\x04\xab\x05\x02\x06\n\r\n\x05\x05\ - \x06\x02G\x02\x12\x04\xab\x05\t\x0b\n\x0c\n\x04\x05\x06\x02H\x12\x04\xac\ - \x05\x02\x0c\n\r\n\x05\x05\x06\x02H\x01\x12\x04\xac\x05\x02\x06\n\r\n\ - \x05\x05\x06\x02H\x02\x12\x04\xac\x05\t\x0b\n\x0c\n\x04\x05\x06\x02I\x12\ - \x04\xad\x05\x02\x0b\n\r\n\x05\x05\x06\x02I\x01\x12\x04\xad\x05\x02\x05\ - \n\r\n\x05\x05\x06\x02I\x02\x12\x04\xad\x05\x08\n\n\x0c\n\x04\x05\x06\ - \x02J\x12\x04\xae\x05\x02\x0c\n\r\n\x05\x05\x06\x02J\x01\x12\x04\xae\x05\ - \x02\x06\n\r\n\x05\x05\x06\x02J\x02\x12\x04\xae\x05\t\x0b\n\x0c\n\x04\ - \x05\x06\x02K\x12\x04\xaf\x05\x02\x0b\n\r\n\x05\x05\x06\x02K\x01\x12\x04\ - \xaf\x05\x02\x05\n\r\n\x05\x05\x06\x02K\x02\x12\x04\xaf\x05\x08\n\n\x0c\ - \n\x04\x05\x06\x02L\x12\x04\xb0\x05\x02\x0b\n\r\n\x05\x05\x06\x02L\x01\ - \x12\x04\xb0\x05\x02\x05\n\r\n\x05\x05\x06\x02L\x02\x12\x04\xb0\x05\x08\ - \n\n\x0c\n\x04\x05\x06\x02M\x12\x04\xb1\x05\x02\x0c\n\r\n\x05\x05\x06\ - \x02M\x01\x12\x04\xb1\x05\x02\x06\n\r\n\x05\x05\x06\x02M\x02\x12\x04\xb1\ - \x05\t\x0b\n\x0c\n\x04\x05\x06\x02N\x12\x04\xb2\x05\x02\x0c\n\r\n\x05\ - \x05\x06\x02N\x01\x12\x04\xb2\x05\x02\x07\n\r\n\x05\x05\x06\x02N\x02\x12\ - \x04\xb2\x05\n\x0b\n\x0c\n\x04\x05\x06\x02O\x12\x04\xb3\x05\x02\x0e\n\r\ - \n\x05\x05\x06\x02O\x01\x12\x04\xb3\x05\x02\x08\n\r\n\x05\x05\x06\x02O\ - \x02\x12\x04\xb3\x05\x0b\r\n\x14\n\x04\x05\x06\x02P\x12\x04\xb4\x05\x02\ - \x13\"\x06\x20Bash\n\n\r\n\x05\x05\x06\x02P\x01\x12\x04\xb4\x05\x02\r\n\ - \r\n\x05\x05\x06\x02P\x02\x12\x04\xb4\x05\x10\x12\n\x0c\n\x04\x05\x06\ - \x02Q\x12\x04\xb5\x05\x02\x0f\n\r\n\x05\x05\x06\x02Q\x01\x12\x04\xb5\x05\ - \x02\t\n\r\n\x05\x05\x06\x02Q\x02\x12\x04\xb5\x05\x0c\x0e\n\x0c\n\x04\ - \x05\x06\x02R\x12\x04\xb6\x05\x02\x0c\n\r\n\x05\x05\x06\x02R\x01\x12\x04\ - \xb6\x05\x02\x07\n\r\n\x05\x05\x06\x02R\x02\x12\x04\xb6\x05\n\x0b\n\x0c\ - \n\x04\x05\x06\x02S\x12\x04\xb7\x05\x02\x0c\n\r\n\x05\x05\x06\x02S\x01\ - \x12\x04\xb7\x05\x02\x06\n\r\n\x05\x05\x06\x02S\x02\x12\x04\xb7\x05\t\ - \x0b\n\x0c\n\x04\x05\x06\x02T\x12\x04\xb8\x05\x02\x0b\n\r\n\x05\x05\x06\ - \x02T\x01\x12\x04\xb8\x05\x02\x05\n\r\n\x05\x05\x06\x02T\x02\x12\x04\xb8\ - \x05\x08\n\n\x0c\n\x04\x05\x06\x02U\x12\x04\xb9\x05\x02\x12\n\r\n\x05\ - \x05\x06\x02U\x01\x12\x04\xb9\x05\x02\x0c\n\r\n\x05\x05\x06\x02U\x02\x12\ - \x04\xb9\x05\x0f\x11\n\x0c\n\x04\x05\x06\x02V\x12\x04\xba\x05\x02\x17\n\ - \r\n\x05\x05\x06\x02V\x01\x12\x04\xba\x05\x02\x11\n\r\n\x05\x05\x06\x02V\ - \x02\x12\x04\xba\x05\x14\x16\n\x0c\n\x04\x05\x06\x02W\x12\x04\xbb\x05\ - \x02\x13\n\r\n\x05\x05\x06\x02W\x01\x12\x04\xbb\x05\x02\r\n\r\n\x05\x05\ - \x06\x02W\x02\x12\x04\xbb\x05\x10\x12\n\x0c\n\x04\x05\x06\x02X\x12\x04\ - \xbc\x05\x02\x0b\n\r\n\x05\x05\x06\x02X\x01\x12\x04\xbc\x05\x02\x05\n\r\ - \n\x05\x05\x06\x02X\x02\x12\x04\xbc\x05\x08\n\n\x0c\n\x04\x05\x06\x02Y\ - \x12\x04\xbd\x05\x02\x0f\n\r\n\x05\x05\x06\x02Y\x01\x12\x04\xbd\x05\x02\ - \t\n\r\n\x05\x05\x06\x02Y\x02\x12\x04\xbd\x05\x0c\x0e\n\x0c\n\x04\x05\ - \x06\x02Z\x12\x04\xbe\x05\x02\x0b\n\r\n\x05\x05\x06\x02Z\x01\x12\x04\xbe\ - \x05\x02\x05\n\r\n\x05\x05\x06\x02Z\x02\x12\x04\xbe\x05\x08\n\n\x0c\n\ - \x04\x05\x06\x02[\x12\x04\xbf\x05\x02\x0b\n\r\n\x05\x05\x06\x02[\x01\x12\ - \x04\xbf\x05\x02\x05\n\r\n\x05\x05\x06\x02[\x02\x12\x04\xbf\x05\x08\n\n\ - \x0c\n\x04\x05\x06\x02\\\x12\x04\xc0\x05\x02\x0c\n\r\n\x05\x05\x06\x02\\\ - \x01\x12\x04\xc0\x05\x02\x06\n\r\n\x05\x05\x06\x02\\\x02\x12\x04\xc0\x05\ - \t\x0b\n\x92\x03\n\x04\x05\x06\x02]\x12\x04\xc1\x05\x02\x0b\"\x83\x03\ - \x20NextLanguage\x20=\x2095;\n\x20Steps\x20add\x20a\x20new\x20language:\ - \n\x201.\x20Copy-paste\x20the\x20\"NextLanguage\x20=\x20N\"\x20line\x20a\ - bove\n\x202.\x20Increment\x20\"NextLanguage\x20=\x20N\"\x20to\x20\"NextL\ - anguage\x20=\x20N+1\"\n\x203.\x20Replace\x20\"NextLanguage\x20=\x20N\"\ - \x20with\x20the\x20name\x20of\x20the\x20new\x20language.\n\x204.\x20Move\ - \x20the\x20new\x20language\x20to\x20the\x20correct\x20line\x20above\x20u\ - sing\x20alphabetical\x20order\n\x205.\x20(optional)\x20Add\x20a\x20brief\ - \x20comment\x20behind\x20the\x20language\x20if\x20the\x20name\x20is\x20n\ - ot\x20self-explanatory\n\n\r\n\x05\x05\x06\x02]\x01\x12\x04\xc1\x05\x02\ - \x05\n\r\n\x05\x05\x06\x02]\x02\x12\x04\xc1\x05\x08\nb\x06proto3\ + \x20^\x20range\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^^^^^^^^^^^^\ + ^\x20enclosing_range\n\x20```\n\n\r\n\x05\x04\t\x02\x06\x04\x12\x04\xcf\ + \x04\x02\n\n\r\n\x05\x04\t\x02\x06\x05\x12\x04\xcf\x04\x0b\x10\n\r\n\x05\ + \x04\t\x02\x06\x01\x12\x04\xcf\x04\x11\x20\n\r\n\x05\x04\t\x02\x06\x03\ + \x12\x04\xcf\x04#$\nw\n\x02\x04\n\x12\x06\xd4\x04\0\xdf\x04\x01\x1ai\x20\ + Represents\x20a\x20diagnostic,\x20such\x20as\x20a\x20compiler\x20error\ + \x20or\x20warning,\x20which\x20should\x20be\n\x20reported\x20for\x20a\ + \x20document.\n\n\x0b\n\x03\x04\n\x01\x12\x04\xd4\x04\x08\x12\nW\n\x04\ + \x04\n\x02\0\x12\x04\xd6\x04\x02\x18\x1aI\x20Should\x20this\x20diagnosti\ + c\x20be\x20reported\x20as\x20an\x20error,\x20warning,\x20info,\x20or\x20\ + hint?\n\n\r\n\x05\x04\n\x02\0\x06\x12\x04\xd6\x04\x02\n\n\r\n\x05\x04\n\ + \x02\0\x01\x12\x04\xd6\x04\x0b\x13\n\r\n\x05\x04\n\x02\0\x03\x12\x04\xd6\ + \x04\x16\x17\n]\n\x04\x04\n\x02\x01\x12\x04\xd8\x04\x02\x12\x1aO\x20(opt\ + ional)\x20Code\x20of\x20this\x20diagnostic,\x20which\x20might\x20appear\ + \x20in\x20the\x20user\x20interface.\n\n\r\n\x05\x04\n\x02\x01\x05\x12\ + \x04\xd8\x04\x02\x08\n\r\n\x05\x04\n\x02\x01\x01\x12\x04\xd8\x04\t\r\n\r\ + \n\x05\x04\n\x02\x01\x03\x12\x04\xd8\x04\x10\x11\n+\n\x04\x04\n\x02\x02\ + \x12\x04\xda\x04\x02\x15\x1a\x1d\x20Message\x20of\x20this\x20diagnostic.\ + \n\n\r\n\x05\x04\n\x02\x02\x05\x12\x04\xda\x04\x02\x08\n\r\n\x05\x04\n\ + \x02\x02\x01\x12\x04\xda\x04\t\x10\n\r\n\x05\x04\n\x02\x02\x03\x12\x04\ + \xda\x04\x13\x14\n~\n\x04\x04\n\x02\x03\x12\x04\xdd\x04\x02\x14\x1ap\x20\ + (optional)\x20Human-readable\x20string\x20describing\x20the\x20source\ + \x20of\x20this\x20diagnostic,\x20e.g.\n\x20'typescript'\x20or\x20'super\ + \x20lint'.\n\n\r\n\x05\x04\n\x02\x03\x05\x12\x04\xdd\x04\x02\x08\n\r\n\ + \x05\x04\n\x02\x03\x01\x12\x04\xdd\x04\t\x0f\n\r\n\x05\x04\n\x02\x03\x03\ + \x12\x04\xdd\x04\x12\x13\n\x0c\n\x04\x04\n\x02\x04\x12\x04\xde\x04\x02\"\ + \n\r\n\x05\x04\n\x02\x04\x04\x12\x04\xde\x04\x02\n\n\r\n\x05\x04\n\x02\ + \x04\x06\x12\x04\xde\x04\x0b\x18\n\r\n\x05\x04\n\x02\x04\x01\x12\x04\xde\ + \x04\x19\x1d\n\r\n\x05\x04\n\x02\x04\x03\x12\x04\xde\x04\x20!\n\x0c\n\ + \x02\x05\x04\x12\x06\xe1\x04\0\xe7\x04\x01\n\x0b\n\x03\x05\x04\x01\x12\ + \x04\xe1\x04\x05\r\n\x0c\n\x04\x05\x04\x02\0\x12\x04\xe2\x04\x02\x1a\n\r\ + \n\x05\x05\x04\x02\0\x01\x12\x04\xe2\x04\x02\x15\n\r\n\x05\x05\x04\x02\0\ + \x02\x12\x04\xe2\x04\x18\x19\n\x0c\n\x04\x05\x04\x02\x01\x12\x04\xe3\x04\ + \x02\x0c\n\r\n\x05\x05\x04\x02\x01\x01\x12\x04\xe3\x04\x02\x07\n\r\n\x05\ + \x05\x04\x02\x01\x02\x12\x04\xe3\x04\n\x0b\n\x0c\n\x04\x05\x04\x02\x02\ + \x12\x04\xe4\x04\x02\x0e\n\r\n\x05\x05\x04\x02\x02\x01\x12\x04\xe4\x04\ + \x02\t\n\r\n\x05\x05\x04\x02\x02\x02\x12\x04\xe4\x04\x0c\r\n\x0c\n\x04\ + \x05\x04\x02\x03\x12\x04\xe5\x04\x02\x12\n\r\n\x05\x05\x04\x02\x03\x01\ + \x12\x04\xe5\x04\x02\r\n\r\n\x05\x05\x04\x02\x03\x02\x12\x04\xe5\x04\x10\ + \x11\n\x0c\n\x04\x05\x04\x02\x04\x12\x04\xe6\x04\x02\x0b\n\r\n\x05\x05\ + \x04\x02\x04\x01\x12\x04\xe6\x04\x02\x06\n\r\n\x05\x05\x04\x02\x04\x02\ + \x12\x04\xe6\x04\t\n\n\x0c\n\x02\x05\x05\x12\x06\xe9\x04\0\xed\x04\x01\n\ + \x0b\n\x03\x05\x05\x01\x12\x04\xe9\x04\x05\x12\n\x0c\n\x04\x05\x05\x02\0\ + \x12\x04\xea\x04\x02\x1f\n\r\n\x05\x05\x05\x02\0\x01\x12\x04\xea\x04\x02\ + \x1a\n\r\n\x05\x05\x05\x02\0\x02\x12\x04\xea\x04\x1d\x1e\n\x0c\n\x04\x05\ + \x05\x02\x01\x12\x04\xeb\x04\x02\x12\n\r\n\x05\x05\x05\x02\x01\x01\x12\ + \x04\xeb\x04\x02\r\n\r\n\x05\x05\x05\x02\x01\x02\x12\x04\xeb\x04\x10\x11\ + \n\x0c\n\x04\x05\x05\x02\x02\x12\x04\xec\x04\x02\x11\n\r\n\x05\x05\x05\ + \x02\x02\x01\x12\x04\xec\x04\x02\x0c\n\r\n\x05\x05\x05\x02\x02\x02\x12\ + \x04\xec\x04\x0f\x10\n\xd6\x03\n\x02\x05\x06\x12\x06\xf5\x04\0\xdb\x05\ + \x01\x1a\xc7\x03\x20Language\x20standardises\x20names\x20of\x20common\ + \x20programming\x20languages\x20that\x20can\x20be\x20used\n\x20for\x20th\ + e\x20`Document.language`\x20field.\x20The\x20primary\x20purpose\x20of\ + \x20this\x20enum\x20is\x20to\n\x20prevent\x20a\x20situation\x20where\x20\ + we\x20have\x20a\x20single\x20programming\x20language\x20ends\x20up\x20wi\ + th\n\x20multiple\x20string\x20representations.\x20For\x20example,\x20the\ + \x20C++\x20language\x20uses\x20the\x20name\n\x20\"CPlusPlus\"\x20in\x20t\ + his\x20enum\x20and\x20other\x20names\x20such\x20as\x20\"cpp\"\x20are\x20\ + incompatible.\n\x20Feel\x20free\x20to\x20send\x20a\x20pull-request\x20to\ + \x20add\x20missing\x20programming\x20languages.\n\n\x0b\n\x03\x05\x06\ + \x01\x12\x04\xf5\x04\x05\r\n\x0c\n\x04\x05\x06\x02\0\x12\x04\xf6\x04\x02\ + \x1a\n\r\n\x05\x05\x06\x02\0\x01\x12\x04\xf6\x04\x02\x15\n\r\n\x05\x05\ + \x06\x02\0\x02\x12\x04\xf6\x04\x18\x19\n\x0c\n\x04\x05\x06\x02\x01\x12\ + \x04\xf7\x04\x02\x0c\n\r\n\x05\x05\x06\x02\x01\x01\x12\x04\xf7\x04\x02\ + \x06\n\r\n\x05\x05\x06\x02\x01\x02\x12\x04\xf7\x04\t\x0b\n\x0c\n\x04\x05\ + \x06\x02\x02\x12\x04\xf8\x04\x02\x0b\n\r\n\x05\x05\x06\x02\x02\x01\x12\ + \x04\xf8\x04\x02\x05\n\r\n\x05\x05\x06\x02\x02\x02\x12\x04\xf8\x04\x08\n\ + \n\x0c\n\x04\x05\x06\x02\x03\x12\x04\xf9\x04\x02\x0b\n\r\n\x05\x05\x06\ + \x02\x03\x01\x12\x04\xf9\x04\x02\x05\n\r\n\x05\x05\x06\x02\x03\x02\x12\ + \x04\xf9\x04\x08\n\n\x0c\n\x04\x05\x06\x02\x04\x12\x04\xfa\x04\x02\x0c\n\ + \r\n\x05\x05\x06\x02\x04\x01\x12\x04\xfa\x04\x02\x06\n\r\n\x05\x05\x06\ + \x02\x04\x02\x12\x04\xfa\x04\t\x0b\n\x0c\n\x04\x05\x06\x02\x05\x12\x04\ + \xfb\x04\x02\x10\n\r\n\x05\x05\x06\x02\x05\x01\x12\x04\xfb\x04\x02\n\n\r\ + \n\x05\x05\x06\x02\x05\x02\x12\x04\xfb\x04\r\x0f\n\x0c\n\x04\x05\x06\x02\ + \x06\x12\x04\xfc\x04\x02\x10\n\r\n\x05\x05\x06\x02\x06\x01\x12\x04\xfc\ + \x04\x02\n\n\r\n\x05\x05\x06\x02\x06\x02\x12\x04\xfc\x04\r\x0f\n\x0c\n\ + \x04\x05\x06\x02\x07\x12\x04\xfd\x04\x02\x0b\n\r\n\x05\x05\x06\x02\x07\ + \x01\x12\x04\xfd\x04\x02\x05\n\r\n\x05\x05\x06\x02\x07\x02\x12\x04\xfd\ + \x04\x08\n\n\x0c\n\x04\x05\x06\x02\x08\x12\x04\xfe\x04\x02\x0b\n\r\n\x05\ + \x05\x06\x02\x08\x01\x12\x04\xfe\x04\x02\x05\n\r\n\x05\x05\x06\x02\x08\ + \x02\x12\x04\xfe\x04\x08\n\n\x0c\n\x04\x05\x06\x02\t\x12\x04\xff\x04\x02\ + \x0e\n\r\n\x05\x05\x06\x02\t\x01\x12\x04\xff\x04\x02\x08\n\r\n\x05\x05\ + \x06\x02\t\x02\x12\x04\xff\x04\x0b\r\n\x0c\n\x04\x05\x06\x02\n\x12\x04\ + \x80\x05\x02\t\n\r\n\x05\x05\x06\x02\n\x01\x12\x04\x80\x05\x02\x03\n\r\n\ + \x05\x05\x06\x02\n\x02\x12\x04\x80\x05\x06\x08\n\x0c\n\x04\x05\x06\x02\ + \x0b\x12\x04\x81\x05\x02\r\n\r\n\x05\x05\x06\x02\x0b\x01\x12\x04\x81\x05\ + \x02\x07\n\r\n\x05\x05\x06\x02\x0b\x02\x12\x04\x81\x05\n\x0c\nH\n\x04\ + \x05\x06\x02\x0c\x12\x04\x82\x05\x02\x0b\":\x20C++\x20(the\x20name\x20\"\ + CPP\"\x20was\x20chosen\x20for\x20consistency\x20with\x20LSP)\n\n\r\n\x05\ + \x05\x06\x02\x0c\x01\x12\x04\x82\x05\x02\x05\n\r\n\x05\x05\x06\x02\x0c\ + \x02\x12\x04\x82\x05\x08\n\n\x0c\n\x04\x05\x06\x02\r\x12\x04\x83\x05\x02\ + \x0b\n\r\n\x05\x05\x06\x02\r\x01\x12\x04\x83\x05\x02\x05\n\r\n\x05\x05\ + \x06\x02\r\x02\x12\x04\x83\x05\x08\n\n\x0c\n\x04\x05\x06\x02\x0e\x12\x04\ + \x84\x05\x02\r\n\r\n\x05\x05\x06\x02\x0e\x01\x12\x04\x84\x05\x02\x08\n\r\ + \n\x05\x05\x06\x02\x0e\x02\x12\x04\x84\x05\x0b\x0c\n\x0c\n\x04\x05\x06\ + \x02\x0f\x12\x04\x85\x05\x02\x0e\n\r\n\x05\x05\x06\x02\x0f\x01\x12\x04\ + \x85\x05\x02\t\n\r\n\x05\x05\x06\x02\x0f\x02\x12\x04\x85\x05\x0c\r\n\x0c\ + \n\x04\x05\x06\x02\x10\x12\x04\x86\x05\x02\x14\n\r\n\x05\x05\x06\x02\x10\ + \x01\x12\x04\x86\x05\x02\x0e\n\r\n\x05\x05\x06\x02\x10\x02\x12\x04\x86\ + \x05\x11\x13\n\x0c\n\x04\x05\x06\x02\x11\x12\x04\x87\x05\x02\x11\n\r\n\ + \x05\x05\x06\x02\x11\x01\x12\x04\x87\x05\x02\x0c\n\r\n\x05\x05\x06\x02\ + \x11\x02\x12\x04\x87\x05\x0f\x10\n\x0c\n\x04\x05\x06\x02\x12\x12\x04\x88\ + \x05\x02\x0b\n\r\n\x05\x05\x06\x02\x12\x01\x12\x04\x88\x05\x02\x05\n\r\n\ + \x05\x05\x06\x02\x12\x02\x12\x04\x88\x05\x08\n\n\x0c\n\x04\x05\x06\x02\ + \x13\x12\x04\x89\x05\x02\x0b\n\r\n\x05\x05\x06\x02\x13\x01\x12\x04\x89\ + \x05\x02\x06\n\r\n\x05\x05\x06\x02\x13\x02\x12\x04\x89\x05\t\n\n\x0c\n\ + \x04\x05\x06\x02\x14\x12\x04\x8a\x05\x02\x0e\n\r\n\x05\x05\x06\x02\x14\ + \x01\x12\x04\x8a\x05\x02\x08\n\r\n\x05\x05\x06\x02\x14\x02\x12\x04\x8a\ + \x05\x0b\r\n\x0c\n\x04\x05\x06\x02\x15\x12\x04\x8b\x05\x02\x0c\n\r\n\x05\ + \x05\x06\x02\x15\x01\x12\x04\x8b\x05\x02\x06\n\r\n\x05\x05\x06\x02\x15\ + \x02\x12\x04\x8b\x05\t\x0b\n\x0c\n\x04\x05\x06\x02\x16\x12\x04\x8c\x05\ + \x02\x12\n\r\n\x05\x05\x06\x02\x16\x01\x12\x04\x8c\x05\x02\x0c\n\r\n\x05\ + \x05\x06\x02\x16\x02\x12\x04\x8c\x05\x0f\x11\n\x0c\n\x04\x05\x06\x02\x17\ + \x12\x04\x8d\x05\x02\x0e\n\r\n\x05\x05\x06\x02\x17\x01\x12\x04\x8d\x05\ + \x02\x08\n\r\n\x05\x05\x06\x02\x17\x02\x12\x04\x8d\x05\x0b\r\n\x0c\n\x04\ + \x05\x06\x02\x18\x12\x04\x8e\x05\x02\x0e\n\r\n\x05\x05\x06\x02\x18\x01\ + \x12\x04\x8e\x05\x02\x08\n\r\n\x05\x05\x06\x02\x18\x02\x12\x04\x8e\x05\ + \x0b\r\n\x0c\n\x04\x05\x06\x02\x19\x12\x04\x8f\x05\x02\x0e\n\r\n\x05\x05\ + \x06\x02\x19\x01\x12\x04\x8f\x05\x02\x08\n\r\n\x05\x05\x06\x02\x19\x02\ + \x12\x04\x8f\x05\x0b\r\n\x0c\n\x04\x05\x06\x02\x1a\x12\x04\x90\x05\x02\ + \x0e\n\r\n\x05\x05\x06\x02\x1a\x01\x12\x04\x90\x05\x02\x08\n\r\n\x05\x05\ + \x06\x02\x1a\x02\x12\x04\x90\x05\x0b\r\n\x0c\n\x04\x05\x06\x02\x1b\x12\ + \x04\x91\x05\x02\x0c\n\r\n\x05\x05\x06\x02\x1b\x01\x12\x04\x91\x05\x02\ + \x06\n\r\n\x05\x05\x06\x02\x1b\x02\x12\x04\x91\x05\t\x0b\n\x0c\n\x04\x05\ + \x06\x02\x1c\x12\x04\x92\x05\x02\x0c\n\r\n\x05\x05\x06\x02\x1c\x01\x12\ + \x04\x92\x05\x02\x06\n\r\n\x05\x05\x06\x02\x1c\x02\x12\x04\x92\x05\t\x0b\ + \n\x0c\n\x04\x05\x06\x02\x1d\x12\x04\x93\x05\x02\x0f\n\r\n\x05\x05\x06\ + \x02\x1d\x01\x12\x04\x93\x05\x02\t\n\r\n\x05\x05\x06\x02\x1d\x02\x12\x04\ + \x93\x05\x0c\x0e\n\x0c\n\x04\x05\x06\x02\x1e\x12\x04\x94\x05\x02\x12\n\r\ + \n\x05\x05\x06\x02\x1e\x01\x12\x04\x94\x05\x02\x0c\n\r\n\x05\x05\x06\x02\ + \x1e\x02\x12\x04\x94\x05\x0f\x11\n\x0c\n\x04\x05\x06\x02\x1f\x12\x04\x95\ + \x05\x02\x12\n\r\n\x05\x05\x06\x02\x1f\x01\x12\x04\x95\x05\x02\x0c\n\r\n\ + \x05\x05\x06\x02\x1f\x02\x12\x04\x95\x05\x0f\x11\n\x0c\n\x04\x05\x06\x02\ + \x20\x12\x04\x96\x05\x02\x12\n\r\n\x05\x05\x06\x02\x20\x01\x12\x04\x96\ + \x05\x02\x0c\n\r\n\x05\x05\x06\x02\x20\x02\x12\x04\x96\x05\x0f\x11\n\x0c\ + \n\x04\x05\x06\x02!\x12\x04\x97\x05\x02\n\n\r\n\x05\x05\x06\x02!\x01\x12\ + \x04\x97\x05\x02\x04\n\r\n\x05\x05\x06\x02!\x02\x12\x04\x97\x05\x07\t\n\ + \x0c\n\x04\x05\x06\x02\"\x12\x04\x98\x05\x02\r\n\r\n\x05\x05\x06\x02\"\ + \x01\x12\x04\x98\x05\x02\x08\n\r\n\x05\x05\x06\x02\"\x02\x12\x04\x98\x05\ + \x0b\x0c\n\x0c\n\x04\x05\x06\x02#\x12\x04\x99\x05\x02\x0c\n\r\n\x05\x05\ + \x06\x02#\x01\x12\x04\x99\x05\x02\x06\n\r\n\x05\x05\x06\x02#\x02\x12\x04\ + \x99\x05\t\x0b\n\x0c\n\x04\x05\x06\x02$\x12\x04\x9a\x05\x02\x0c\n\r\n\ + \x05\x05\x06\x02$\x01\x12\x04\x9a\x05\x02\x06\n\r\n\x05\x05\x06\x02$\x02\ + \x12\x04\x9a\x05\t\x0b\n\x0c\n\x04\x05\x06\x02%\x12\x04\x9b\x05\x02\x12\ + \n\r\n\x05\x05\x06\x02%\x01\x12\x04\x9b\x05\x02\x0c\n\r\n\x05\x05\x06\ + \x02%\x02\x12\x04\x9b\x05\x0f\x11\n\x0c\n\x04\x05\x06\x02&\x12\x04\x9c\ + \x05\x02\x0f\n\r\n\x05\x05\x06\x02&\x01\x12\x04\x9c\x05\x02\t\n\r\n\x05\ + \x05\x06\x02&\x02\x12\x04\x9c\x05\x0c\x0e\n\x0c\n\x04\x05\x06\x02'\x12\ + \x04\x9d\x05\x02\r\n\r\n\x05\x05\x06\x02'\x01\x12\x04\x9d\x05\x02\x07\n\ + \r\n\x05\x05\x06\x02'\x02\x12\x04\x9d\x05\n\x0c\n\x0c\n\x04\x05\x06\x02(\ + \x12\x04\x9e\x05\x02\x0b\n\r\n\x05\x05\x06\x02(\x01\x12\x04\x9e\x05\x02\ + \x05\n\r\n\x05\x05\x06\x02(\x02\x12\x04\x9e\x05\x08\n\n\x0c\n\x04\x05\ + \x06\x02)\x12\x04\x9f\x05\x02\t\n\r\n\x05\x05\x06\x02)\x01\x12\x04\x9f\ + \x05\x02\x03\n\r\n\x05\x05\x06\x02)\x02\x12\x04\x9f\x05\x06\x08\n\x0c\n\ + \x04\x05\x06\x02*\x12\x04\xa0\x05\x02\x0c\n\r\n\x05\x05\x06\x02*\x01\x12\ + \x04\xa0\x05\x02\x06\n\r\n\x05\x05\x06\x02*\x02\x12\x04\xa0\x05\t\x0b\n\ + \x0c\n\x04\x05\x06\x02+\x12\x04\xa1\x05\x02\x0b\n\r\n\x05\x05\x06\x02+\ + \x01\x12\x04\xa1\x05\x02\x06\n\r\n\x05\x05\x06\x02+\x02\x12\x04\xa1\x05\ + \t\n\n\x0c\n\x04\x05\x06\x02,\x12\x04\xa2\x05\x02\x12\n\r\n\x05\x05\x06\ + \x02,\x01\x12\x04\xa2\x05\x02\x0c\n\r\n\x05\x05\x06\x02,\x02\x12\x04\xa2\ + \x05\x0f\x11\n\x0c\n\x04\x05\x06\x02-\x12\x04\xa3\x05\x02\x17\n\r\n\x05\ + \x05\x06\x02-\x01\x12\x04\xa3\x05\x02\x11\n\r\n\x05\x05\x06\x02-\x02\x12\ + \x04\xa3\x05\x14\x16\n\x0c\n\x04\x05\x06\x02.\x12\x04\xa4\x05\x02\x0f\n\ + \r\n\x05\x05\x06\x02.\x01\x12\x04\xa4\x05\x02\t\n\r\n\x05\x05\x06\x02.\ + \x02\x12\x04\xa4\x05\x0c\x0e\n\x0c\n\x04\x05\x06\x02/\x12\x04\xa5\x05\ + \x02\x0e\n\r\n\x05\x05\x06\x02/\x01\x12\x04\xa5\x05\x02\x07\n\r\n\x05\ + \x05\x06\x02/\x02\x12\x04\xa5\x05\x0b\r\n\x0c\n\x04\x05\x06\x020\x12\x04\ + \xa6\x05\x02\r\n\r\n\x05\x05\x06\x020\x01\x12\x04\xa6\x05\x02\x08\n\r\n\ + \x05\x05\x06\x020\x02\x12\x04\xa6\x05\x0b\x0c\n\x0c\n\x04\x05\x06\x021\ + \x12\x04\xa7\x05\x02\r\n\r\n\x05\x05\x06\x021\x01\x12\x04\xa7\x05\x02\ + \x07\n\r\n\x05\x05\x06\x021\x02\x12\x04\xa7\x05\n\x0c\n\x0c\n\x04\x05\ + \x06\x022\x12\x04\xa8\x05\x02\x0c\n\r\n\x05\x05\x06\x022\x01\x12\x04\xa8\ + \x05\x02\x06\n\r\n\x05\x05\x06\x022\x02\x12\x04\xa8\x05\t\x0b\n\x0c\n\ + \x04\x05\x06\x023\x12\x04\xa9\x05\x02\x0c\n\r\n\x05\x05\x06\x023\x01\x12\ + \x04\xa9\x05\x02\x06\n\r\n\x05\x05\x06\x023\x02\x12\x04\xa9\x05\t\x0b\n\ + \x0c\n\x04\x05\x06\x024\x12\x04\xaa\x05\x02\x0b\n\r\n\x05\x05\x06\x024\ + \x01\x12\x04\xaa\x05\x02\x05\n\r\n\x05\x05\x06\x024\x02\x12\x04\xaa\x05\ + \x08\n\n\x0c\n\x04\x05\x06\x025\x12\x04\xab\x05\x02\x10\n\r\n\x05\x05\ + \x06\x025\x01\x12\x04\xab\x05\x02\n\n\r\n\x05\x05\x06\x025\x02\x12\x04\ + \xab\x05\r\x0f\n\x0c\n\x04\x05\x06\x026\x12\x04\xac\x05\x02\x10\n\r\n\ + \x05\x05\x06\x026\x01\x12\x04\xac\x05\x02\n\n\r\n\x05\x05\x06\x026\x02\ + \x12\x04\xac\x05\r\x0f\n\x0c\n\x04\x05\x06\x027\x12\x04\xad\x05\x02\x0e\ + \n\r\n\x05\x05\x06\x027\x01\x12\x04\xad\x05\x02\x08\n\r\n\x05\x05\x06\ + \x027\x02\x12\x04\xad\x05\x0b\r\n\x0c\n\x04\x05\x06\x028\x12\x04\xae\x05\ + \x02\x0b\n\r\n\x05\x05\x06\x028\x01\x12\x04\xae\x05\x02\x05\n\r\n\x05\ + \x05\x06\x028\x02\x12\x04\xae\x05\x08\n\n\x0c\n\x04\x05\x06\x029\x12\x04\ + \xaf\x05\x02\r\n\r\n\x05\x05\x06\x029\x01\x12\x04\xaf\x05\x02\x07\n\r\n\ + \x05\x05\x06\x029\x02\x12\x04\xaf\x05\n\x0c\n\x0c\n\x04\x05\x06\x02:\x12\ + \x04\xb0\x05\x02\x13\n\r\n\x05\x05\x06\x02:\x01\x12\x04\xb0\x05\x02\r\n\ + \r\n\x05\x05\x06\x02:\x02\x12\x04\xb0\x05\x10\x12\n\x0c\n\x04\x05\x06\ + \x02;\x12\x04\xb1\x05\x02\x15\n\r\n\x05\x05\x06\x02;\x01\x12\x04\xb1\x05\ + \x02\x0f\n\r\n\x05\x05\x06\x02;\x02\x12\x04\xb1\x05\x12\x14\n\x0c\n\x04\ + \x05\x06\x02<\x12\x04\xb2\x05\x02\x0b\n\r\n\x05\x05\x06\x02<\x01\x12\x04\ + \xb2\x05\x02\x05\n\r\n\x05\x05\x06\x02<\x02\x12\x04\xb2\x05\x08\n\n\x0c\ + \n\x04\x05\x06\x02=\x12\x04\xb3\x05\x02\r\n\r\n\x05\x05\x06\x02=\x01\x12\ + \x04\xb3\x05\x02\x07\n\r\n\x05\x05\x06\x02=\x02\x12\x04\xb3\x05\n\x0c\n\ + \x0c\n\x04\x05\x06\x02>\x12\x04\xb4\x05\x02\x0c\n\r\n\x05\x05\x06\x02>\ + \x01\x12\x04\xb4\x05\x02\x06\n\r\n\x05\x05\x06\x02>\x02\x12\x04\xb4\x05\ + \t\x0b\n\x0c\n\x04\x05\x06\x02?\x12\x04\xb5\x05\x02\x12\n\r\n\x05\x05\ + \x06\x02?\x01\x12\x04\xb5\x05\x02\x0c\n\r\n\x05\x05\x06\x02?\x02\x12\x04\ + \xb5\x05\x0f\x11\n\x0c\n\x04\x05\x06\x02@\x12\x04\xb6\x05\x02\x0e\n\r\n\ + \x05\x05\x06\x02@\x01\x12\x04\xb6\x05\x02\x08\n\r\n\x05\x05\x06\x02@\x02\ + \x12\x04\xb6\x05\x0b\r\n\x0c\n\x04\x05\x06\x02A\x12\x04\xb7\x05\x02\x0e\ + \n\r\n\x05\x05\x06\x02A\x01\x12\x04\xb7\x05\x02\x08\n\r\n\x05\x05\x06\ + \x02A\x02\x12\x04\xb7\x05\x0b\r\n\x0c\n\x04\x05\x06\x02B\x12\x04\xb8\x05\ + \x02\t\n\r\n\x05\x05\x06\x02B\x01\x12\x04\xb8\x05\x02\x03\n\r\n\x05\x05\ + \x06\x02B\x02\x12\x04\xb8\x05\x06\x08\n\x0c\n\x04\x05\x06\x02C\x12\x04\ + \xb9\x05\x02\x0e\n\r\n\x05\x05\x06\x02C\x01\x12\x04\xb9\x05\x02\x08\n\r\ + \n\x05\x05\x06\x02C\x02\x12\x04\xb9\x05\x0b\r\n\x0c\n\x04\x05\x06\x02D\ + \x12\x04\xba\x05\x02\x0c\n\r\n\x05\x05\x06\x02D\x01\x12\x04\xba\x05\x02\ + \x06\n\r\n\x05\x05\x06\x02D\x02\x12\x04\xba\x05\t\x0b\n\x0c\n\x04\x05\ + \x06\x02E\x12\x04\xbb\x05\x02\r\n\r\n\x05\x05\x06\x02E\x01\x12\x04\xbb\ + \x05\x02\x07\n\r\n\x05\x05\x06\x02E\x02\x12\x04\xbb\x05\n\x0c\n\x0c\n\ + \x04\x05\x06\x02F\x12\x04\xbc\x05\x02\x0c\n\r\n\x05\x05\x06\x02F\x01\x12\ + \x04\xbc\x05\x02\x06\n\r\n\x05\x05\x06\x02F\x02\x12\x04\xbc\x05\t\x0b\n\ + \x0c\n\x04\x05\x06\x02G\x12\x04\xbd\x05\x02\x0c\n\r\n\x05\x05\x06\x02G\ + \x01\x12\x04\xbd\x05\x02\x06\n\r\n\x05\x05\x06\x02G\x02\x12\x04\xbd\x05\ + \t\x0b\n\x0c\n\x04\x05\x06\x02H\x12\x04\xbe\x05\x02\x0c\n\r\n\x05\x05\ + \x06\x02H\x01\x12\x04\xbe\x05\x02\x06\n\r\n\x05\x05\x06\x02H\x02\x12\x04\ + \xbe\x05\t\x0b\n\x0c\n\x04\x05\x06\x02I\x12\x04\xbf\x05\x02\x0b\n\r\n\ + \x05\x05\x06\x02I\x01\x12\x04\xbf\x05\x02\x05\n\r\n\x05\x05\x06\x02I\x02\ + \x12\x04\xbf\x05\x08\n\n\x0c\n\x04\x05\x06\x02J\x12\x04\xc0\x05\x02\x0c\ + \n\r\n\x05\x05\x06\x02J\x01\x12\x04\xc0\x05\x02\x06\n\r\n\x05\x05\x06\ + \x02J\x02\x12\x04\xc0\x05\t\x0b\n\x0c\n\x04\x05\x06\x02K\x12\x04\xc1\x05\ + \x02\x0b\n\r\n\x05\x05\x06\x02K\x01\x12\x04\xc1\x05\x02\x05\n\r\n\x05\ + \x05\x06\x02K\x02\x12\x04\xc1\x05\x08\n\n\x0c\n\x04\x05\x06\x02L\x12\x04\ + \xc2\x05\x02\x0b\n\r\n\x05\x05\x06\x02L\x01\x12\x04\xc2\x05\x02\x05\n\r\ + \n\x05\x05\x06\x02L\x02\x12\x04\xc2\x05\x08\n\n\x0c\n\x04\x05\x06\x02M\ + \x12\x04\xc3\x05\x02\x0c\n\r\n\x05\x05\x06\x02M\x01\x12\x04\xc3\x05\x02\ + \x06\n\r\n\x05\x05\x06\x02M\x02\x12\x04\xc3\x05\t\x0b\n\x0c\n\x04\x05\ + \x06\x02N\x12\x04\xc4\x05\x02\x0c\n\r\n\x05\x05\x06\x02N\x01\x12\x04\xc4\ + \x05\x02\x07\n\r\n\x05\x05\x06\x02N\x02\x12\x04\xc4\x05\n\x0b\n\x0c\n\ + \x04\x05\x06\x02O\x12\x04\xc5\x05\x02\x0e\n\r\n\x05\x05\x06\x02O\x01\x12\ + \x04\xc5\x05\x02\x08\n\r\n\x05\x05\x06\x02O\x02\x12\x04\xc5\x05\x0b\r\n\ + \x14\n\x04\x05\x06\x02P\x12\x04\xc6\x05\x02\x13\"\x06\x20Bash\n\n\r\n\ + \x05\x05\x06\x02P\x01\x12\x04\xc6\x05\x02\r\n\r\n\x05\x05\x06\x02P\x02\ + \x12\x04\xc6\x05\x10\x12\n\x0c\n\x04\x05\x06\x02Q\x12\x04\xc7\x05\x02\ + \x0f\n\r\n\x05\x05\x06\x02Q\x01\x12\x04\xc7\x05\x02\t\n\r\n\x05\x05\x06\ + \x02Q\x02\x12\x04\xc7\x05\x0c\x0e\n\x0c\n\x04\x05\x06\x02R\x12\x04\xc8\ + \x05\x02\x0c\n\r\n\x05\x05\x06\x02R\x01\x12\x04\xc8\x05\x02\x07\n\r\n\ + \x05\x05\x06\x02R\x02\x12\x04\xc8\x05\n\x0b\n\x0c\n\x04\x05\x06\x02S\x12\ + \x04\xc9\x05\x02\x0c\n\r\n\x05\x05\x06\x02S\x01\x12\x04\xc9\x05\x02\x06\ + \n\r\n\x05\x05\x06\x02S\x02\x12\x04\xc9\x05\t\x0b\n\x0c\n\x04\x05\x06\ + \x02T\x12\x04\xca\x05\x02\x0b\n\r\n\x05\x05\x06\x02T\x01\x12\x04\xca\x05\ + \x02\x05\n\r\n\x05\x05\x06\x02T\x02\x12\x04\xca\x05\x08\n\n\x0c\n\x04\ + \x05\x06\x02U\x12\x04\xcb\x05\x02\x12\n\r\n\x05\x05\x06\x02U\x01\x12\x04\ + \xcb\x05\x02\x0c\n\r\n\x05\x05\x06\x02U\x02\x12\x04\xcb\x05\x0f\x11\n\ + \x0c\n\x04\x05\x06\x02V\x12\x04\xcc\x05\x02\x17\n\r\n\x05\x05\x06\x02V\ + \x01\x12\x04\xcc\x05\x02\x11\n\r\n\x05\x05\x06\x02V\x02\x12\x04\xcc\x05\ + \x14\x16\n\x0c\n\x04\x05\x06\x02W\x12\x04\xcd\x05\x02\x13\n\r\n\x05\x05\ + \x06\x02W\x01\x12\x04\xcd\x05\x02\r\n\r\n\x05\x05\x06\x02W\x02\x12\x04\ + \xcd\x05\x10\x12\n\x0c\n\x04\x05\x06\x02X\x12\x04\xce\x05\x02\x0b\n\r\n\ + \x05\x05\x06\x02X\x01\x12\x04\xce\x05\x02\x05\n\r\n\x05\x05\x06\x02X\x02\ + \x12\x04\xce\x05\x08\n\n\x0c\n\x04\x05\x06\x02Y\x12\x04\xcf\x05\x02\x0f\ + \n\r\n\x05\x05\x06\x02Y\x01\x12\x04\xcf\x05\x02\t\n\r\n\x05\x05\x06\x02Y\ + \x02\x12\x04\xcf\x05\x0c\x0e\n\x0c\n\x04\x05\x06\x02Z\x12\x04\xd0\x05\ + \x02\x0b\n\r\n\x05\x05\x06\x02Z\x01\x12\x04\xd0\x05\x02\x05\n\r\n\x05\ + \x05\x06\x02Z\x02\x12\x04\xd0\x05\x08\n\n\x0c\n\x04\x05\x06\x02[\x12\x04\ + \xd1\x05\x02\x0b\n\r\n\x05\x05\x06\x02[\x01\x12\x04\xd1\x05\x02\x05\n\r\ + \n\x05\x05\x06\x02[\x02\x12\x04\xd1\x05\x08\n\n\x0c\n\x04\x05\x06\x02\\\ + \x12\x04\xd2\x05\x02\x0c\n\r\n\x05\x05\x06\x02\\\x01\x12\x04\xd2\x05\x02\ + \x06\n\r\n\x05\x05\x06\x02\\\x02\x12\x04\xd2\x05\t\x0b\n\x92\x03\n\x04\ + \x05\x06\x02]\x12\x04\xd3\x05\x02\x0b\"\x83\x03\x20NextLanguage\x20=\x20\ + 95;\n\x20Steps\x20add\x20a\x20new\x20language:\n\x201.\x20Copy-paste\x20\ + the\x20\"NextLanguage\x20=\x20N\"\x20line\x20above\n\x202.\x20Increment\ + \x20\"NextLanguage\x20=\x20N\"\x20to\x20\"NextLanguage\x20=\x20N+1\"\n\ + \x203.\x20Replace\x20\"NextLanguage\x20=\x20N\"\x20with\x20the\x20name\ + \x20of\x20the\x20new\x20language.\n\x204.\x20Move\x20the\x20new\x20langu\ + age\x20to\x20the\x20correct\x20line\x20above\x20using\x20alphabetical\ + \x20order\n\x205.\x20(optional)\x20Add\x20a\x20brief\x20comment\x20behin\ + d\x20the\x20language\x20if\x20the\x20name\x20is\x20not\x20self-explanato\ + ry\n\n\r\n\x05\x05\x06\x02]\x01\x12\x04\xd3\x05\x02\x05\n\r\n\x05\x05\ + \x06\x02]\x02\x12\x04\xd3\x05\x08\nb\x06proto3\ "; /// `FileDescriptorProto` object which was a source for this generated file diff --git a/bindings/typescript/scip.ts b/bindings/typescript/scip.ts index 1138ea62..072f7866 100644 --- a/bindings/typescript/scip.ts +++ b/bindings/typescript/scip.ts @@ -548,6 +548,7 @@ export namespace scip { relative_path?: string; occurrences?: Occurrence[]; symbols?: SymbolInformation[]; + text?: string; }) { super(); pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [2, 3], this.#one_of_decls); @@ -564,6 +565,9 @@ export namespace scip { if ("symbols" in data && data.symbols != undefined) { this.symbols = data.symbols; } + if ("text" in data && data.text != undefined) { + this.text = data.text; + } } } get language() { @@ -590,11 +594,18 @@ export namespace scip { set symbols(value: SymbolInformation[]) { pb_1.Message.setRepeatedWrapperField(this, 3, value); } + get text() { + return pb_1.Message.getFieldWithDefault(this, 5, "") as string; + } + set text(value: string) { + pb_1.Message.setField(this, 5, value); + } static fromObject(data: { language?: string; relative_path?: string; occurrences?: ReturnType[]; symbols?: ReturnType[]; + text?: string; }): Document { const message = new Document({}); if (data.language != null) { @@ -609,6 +620,9 @@ export namespace scip { if (data.symbols != null) { message.symbols = data.symbols.map(item => SymbolInformation.fromObject(item)); } + if (data.text != null) { + message.text = data.text; + } return message; } toObject() { @@ -617,6 +631,7 @@ export namespace scip { relative_path?: string; occurrences?: ReturnType[]; symbols?: ReturnType[]; + text?: string; } = {}; if (this.language != null) { data.language = this.language; @@ -630,6 +645,9 @@ export namespace scip { if (this.symbols != null) { data.symbols = this.symbols.map((item: SymbolInformation) => item.toObject()); } + if (this.text != null) { + data.text = this.text; + } return data; } serialize(): Uint8Array; @@ -644,6 +662,8 @@ export namespace scip { writer.writeRepeatedMessage(2, this.occurrences, (item: Occurrence) => item.serialize(writer)); if (this.symbols.length) writer.writeRepeatedMessage(3, this.symbols, (item: SymbolInformation) => item.serialize(writer)); + if (this.text.length) + writer.writeString(5, this.text); if (!w) return writer.getResultBuffer(); } @@ -665,6 +685,9 @@ export namespace scip { case 3: reader.readMessage(message.symbols, () => pb_1.Message.addToRepeatedWrapperField(message, 3, SymbolInformation.deserialize(reader), SymbolInformation)); break; + case 5: + message.text = reader.readString(); + break; default: reader.skipField(); } } @@ -1043,6 +1066,7 @@ export namespace scip { relationships?: Relationship[]; kind?: SymbolInformation.Kind; display_name?: string; + signature_documentation?: Document; }) { super(); pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [3, 4], this.#one_of_decls); @@ -1062,6 +1086,9 @@ export namespace scip { if ("display_name" in data && data.display_name != undefined) { this.display_name = data.display_name; } + if ("signature_documentation" in data && data.signature_documentation != undefined) { + this.signature_documentation = data.signature_documentation; + } } } get symbol() { @@ -1094,12 +1121,22 @@ export namespace scip { set display_name(value: string) { pb_1.Message.setField(this, 6, value); } + get signature_documentation() { + return pb_1.Message.getWrapperField(this, Document, 7) as Document; + } + set signature_documentation(value: Document) { + pb_1.Message.setWrapperField(this, 7, value); + } + get has_signature_documentation() { + return pb_1.Message.getField(this, 7) != null; + } static fromObject(data: { symbol?: string; documentation?: string[]; relationships?: ReturnType[]; kind?: SymbolInformation.Kind; display_name?: string; + signature_documentation?: ReturnType; }): SymbolInformation { const message = new SymbolInformation({}); if (data.symbol != null) { @@ -1117,6 +1154,9 @@ export namespace scip { if (data.display_name != null) { message.display_name = data.display_name; } + if (data.signature_documentation != null) { + message.signature_documentation = Document.fromObject(data.signature_documentation); + } return message; } toObject() { @@ -1126,6 +1166,7 @@ export namespace scip { relationships?: ReturnType[]; kind?: SymbolInformation.Kind; display_name?: string; + signature_documentation?: ReturnType; } = {}; if (this.symbol != null) { data.symbol = this.symbol; @@ -1142,6 +1183,9 @@ export namespace scip { if (this.display_name != null) { data.display_name = this.display_name; } + if (this.signature_documentation != null) { + data.signature_documentation = this.signature_documentation.toObject(); + } return data; } serialize(): Uint8Array; @@ -1158,6 +1202,8 @@ export namespace scip { writer.writeEnum(5, this.kind); if (this.display_name.length) writer.writeString(6, this.display_name); + if (this.has_signature_documentation) + writer.writeMessage(7, this.signature_documentation, () => this.signature_documentation.serialize(writer)); if (!w) return writer.getResultBuffer(); } @@ -1182,6 +1228,9 @@ export namespace scip { case 6: message.display_name = reader.readString(); break; + case 7: + reader.readMessage(message.signature_documentation, () => message.signature_documentation = Document.deserialize(reader)); + break; default: reader.skipField(); } } diff --git a/docs/scip.md b/docs/scip.md index ece7dd5e..ab7aa8ef 100644 --- a/docs/scip.md +++ b/docs/scip.md @@ -50,12 +50,13 @@ reported for a document. Document defines the metadata about a source file on disk. -| Name | Type | Description | -| ------------------------ | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **language** | string | The string ID for the programming language this file is written in. The `Language` enum contains the names of most common programming languages. This field is typed as a string to permit any programming langauge, including ones that are not specified by the `Language` enum. | -| **relative_path** | string | (Required) Unique path to the text document. | -| repeated **occurrences** | Occurrence | Occurrences that appear in this file. | -| repeated **symbols** | SymbolInformation | Symbols that are "defined" within this document. | +| Name | Type | Description | +| ------------------------ | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **language** | string | The string ID for the programming language this file is written in. The `Language` enum contains the names of most common programming languages. This field is typed as a string to permit any programming langauge, including ones that are not specified by the `Language` enum. | +| **relative_path** | string | (Required) Unique path to the text document. | +| repeated **occurrences** | Occurrence | Occurrences that appear in this file. | +| repeated **symbols** | SymbolInformation | Symbols that are "defined" within this document. | +| **text** | string | (optional) Text contents of the this document. Indexers are not expected to include the text by default. It's preferrable that clients read the text contents from the file system by resolving the absolute path from joining `Index.metadata.project_root` and `Document.relative_path`. This field was introduced to support `SymbolInformation.signature_documentation`, but it can be used for other purposes as well, for example testing or when working with virtual/in-memory documents. | Additional notes on **relative_path**: @@ -291,13 +292,14 @@ the file and the node corresponding to the symbol. SymbolInformation defines metadata about a symbol, such as the symbol's docstring or what package it's defined it. -| Name | Type | Description | -| -------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **symbol** | string | Identifier of this symbol, which can be referenced from `Occurence.symbol`. The string must be formatted according to the grammar in `Symbol`. | -| repeated **documentation** | string | (optional, but strongly recommended) The markdown-formatted documentation for this symbol. This field is repeated to allow different kinds of documentation. For example, it's nice to include both the signature of a method (parameters and return type) along with the accompanying docstring. | -| repeated **relationships** | Relationship | (optional) Relationships to other symbols (e.g., implements, type definition). | -| **kind** | Kind | The kind of this symbol. Use this field instead of `SymbolDescriptor.Suffix` to determine whether something is, for example, a class or a method. | -| **display_name** | string | (optional) The name of this symbol as it should be displayed to the user. For example, the symbol "com/example/MyClass#myMethod(+1)." should have the display name "myMethod". The `symbol` field is not a reliable source of the display name for several reasons: | +| Name | Type | Description | +| --------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| **symbol** | string | Identifier of this symbol, which can be referenced from `Occurence.symbol`. The string must be formatted according to the grammar in `Symbol`. | +| repeated **documentation** | string | (optional, but strongly recommended) The markdown-formatted documentation for this symbol. Use `SymbolInformation.signature_documentation` to document the method/class/type signature of this symbol. Due to historical reasons, indexers may include signature documentation in this field by rendering markdown code blocks. New indexers should only include non-code documentation in this field, for example docstrings. | +| repeated **relationships** | Relationship | (optional) Relationships to other symbols (e.g., implements, type definition). | +| **kind** | Kind | The kind of this symbol. Use this field instead of `SymbolDescriptor.Suffix` to determine whether something is, for example, a class or a method. | +| **display_name** | string | (optional) The name of this symbol as it should be displayed to the user. For example, the symbol "com/example/MyClass#myMethod(+1)." should have the display name "myMethod". The `symbol` field is not a reliable source of the display name for several reasons: | +| **signature_documentation** | Document | (optional) The signature of this symbol as it's displayed in API documentation or in hover tooltips. For example, a Java method that adds two numbers this would have `Document.language = "java"` and `Document.text = "void add(int a, int b)". The `language`and`text`fields are required while other fields such as`Documentation.occurrences` can be optionally included to support hyperlinking referenced symbols in the signature. | Additional notes on **display_name**: diff --git a/scip.proto b/scip.proto index 741221f6..fc4dca29 100644 --- a/scip.proto +++ b/scip.proto @@ -91,6 +91,15 @@ message Document { // but have a reference and are defined by some other symbol (see // Relationship.is_definition). repeated SymbolInformation symbols = 3; + + // (optional) Text contents of the this document. Indexers are not expected to + // include the text by default. It's preferrable that clients read the text + // contents from the file system by resolving the absolute path from joining + // `Index.metadata.project_root` and `Document.relative_path`. This field was + // introduced to support `SymbolInformation.signature_documentation`, but it + // can be used for other purposes as well, for example testing or when working + // with virtual/in-memory documents. + string text = 5; } @@ -178,9 +187,11 @@ message SymbolInformation { // The string must be formatted according to the grammar in `Symbol`. string symbol = 1; // (optional, but strongly recommended) The markdown-formatted documentation - // for this symbol. This field is repeated to allow different kinds of - // documentation. For example, it's nice to include both the signature of a - // method (parameters and return type) along with the accompanying docstring. + // for this symbol. Use `SymbolInformation.signature_documentation` to + // document the method/class/type signature of this symbol. + // Due to historical reasons, indexers may include signature documentation in + // this field by rendering markdown code blocks. New indexers should only + // include non-code documentation in this field, for example docstrings. repeated string documentation = 3; // (optional) Relationships to other symbols (e.g., implements, type definition). repeated Relationship relationships = 4; @@ -309,6 +320,13 @@ message SymbolInformation { // - The symbol may encode names with special characters that should not be // displayed to the user. string display_name = 6; + // (optional) The signature of this symbol as it's displayed in API + // documentation or in hover tooltips. For example, a Java method that adds + // two numbers this would have `Document.language = "java"` and `Document.text + // = "void add(int a, int b)". The `language` and `text` fields are required + // while other fields such as `Documentation.occurrences` can be optionally + // included to support hyperlinking referenced symbols in the signature. + Document signature_documentation = 7; }