From 93a9ef1b5c16ec759aca3547482faac237ee1c94 Mon Sep 17 00:00:00 2001 From: Alfred Fuller Date: Fri, 8 Dec 2023 09:42:59 -0800 Subject: [PATCH] Tolerate trailing '.' in unambiguous type name cases (#224) While still reporting an error. The important case for code completion is extension type names. See https://github.com/bufbuild/protocompile/issues/200 --- ast/identifiers.go | 9 +- parser/parser_test.go | 106 +++- parser/proto.y | 75 ++- parser/proto.y.go | 1376 ++++++++++++++++++++++------------------- 4 files changed, 914 insertions(+), 652 deletions(-) diff --git a/ast/identifiers.go b/ast/identifiers.go index 6d25bcca..238a7b6f 100644 --- a/ast/identifiers.go +++ b/ast/identifiers.go @@ -91,10 +91,10 @@ func NewCompoundIdentNode(leadingDot *RuneNode, components []*IdentNode, dots [] if len(components) == 0 { panic("must have at least one component") } - if len(dots) != len(components)-1 { + if len(dots) != len(components)-1 && len(dots) != len(components) { panic(fmt.Sprintf("%d components requires %d dots, not %d", len(components), len(components)-1, len(dots))) } - numChildren := len(components)*2 - 1 + numChildren := len(components) + len(dots) if leadingDot != nil { numChildren++ } @@ -113,6 +113,11 @@ func NewCompoundIdentNode(leadingDot *RuneNode, components []*IdentNode, dots [] children = append(children, comp) b.WriteString(comp.Val) } + if len(dots) == len(components) { + dot := dots[len(dots)-1] + children = append(children, dot) + b.WriteRune(dot.Rune) + } return &CompoundIdentNode{ compositeNode: compositeNode{ children: children, diff --git a/parser/parser_test.go b/parser/parser_test.go index f44ff04f..0ddf482e 100644 --- a/parser/parser_test.go +++ b/parser/parser_test.go @@ -97,14 +97,16 @@ func runParseErrorTestCases(t *testing.T, testCases map[string]parseErrorTestCas require.NoError(t, err) producedError := false + var errs []error errHandler := reporter.NewHandler(reporter.NewReporter(func(err reporter.ErrorWithPos) error { + errs = append(errs, err) if strings.Contains(err.Error(), expected) { producedError = true } return nil }, nil)) _, _ = Parse(protoName, strings.NewReader(testCase.Error), errHandler) - require.Truef(t, producedError, "expected error containing %q", expected) + require.Truef(t, producedError, "expected error containing %q, got %v", expected, errs) }) } } @@ -484,6 +486,108 @@ func TestLenientParse_OptionNameTrailingDot(t *testing.T) { int32 bar = 1 [baz.(foo)=1]; }`, }, + "field-options-type": { + Error: `syntax = "proto3"; + message Foo { + int32 bar = 1 [(type.)=1]; + }`, + NoError: `syntax = "proto3"; + message Foo { + int32 bar = 1 [(type)=1]; + }`, + }, + "message-options": { + Error: `syntax = "proto3"; + message Foo { + option (foo.) = 1; + }`, + NoError: `syntax = "proto3"; + message Foo { + option (foo) = 1; + }`, + }, + "message-option-field": { + Error: `syntax = "proto3"; + message Foo { + option (foo.) = { + [type.]: + }; + }`, + NoError: `syntax = "proto3"; + message Foo { + option (foo) = { + [type]: + }; + }`, + }, + "message-option-any-field": { + Error: `syntax = "proto3"; + message Foo { + option (foo) = { + [url.com/type.]: + }; + }`, + NoError: `syntax = "proto3"; + message Foo { + option (foo) = { + [url.com/type]: + }; + }`, + }, + "message-option-any-field-url": { + Error: `syntax = "proto3"; + message Foo { + option (foo) = { + [url.com./type]: + }; + }`, + NoError: `syntax = "proto3"; + message Foo { + option (foo) = { + [url.com/type]: + }; + }`, + }, + "map-value-type": { + Error: `syntax = "proto3"; + message Foo { + map bar = 1; + }`, + NoError: `syntax = "proto3"; + message Foo { + map bar = 1; + }`, + }, + "extension": { + Error: `syntax = "proto3"; + extend Foo. { + int32 bar = 1; + }`, + NoError: `syntax = "proto3"; + extend Foo { + int32 bar = 1; + }`, + }, + "method-type": { + Error: `syntax = "proto3"; + service Foo { + rpc Bar(type.) returns (type); + }`, + NoError: `syntax = "proto3"; + service Foo { + rpc Bar(type) returns (type); + }`, + }, + "method-stream-type": { + Error: `syntax = "proto3"; + service Foo { + rpc Bar(stream type) returns (stream A.B.); + }`, + NoError: `syntax = "proto3"; + service Foo { + rpc Bar(stream type) returns (stream A.B); + }`, + }, } runParseErrorTestCases(t, inputs, "unexpected '.'") } diff --git a/parser/proto.y b/parser/proto.y index d05666ed..3b8fe815 100644 --- a/parser/proto.y +++ b/parser/proto.y @@ -54,6 +54,7 @@ import ( rng *ast.RangeNode rngs *rangeSlices names *nameSlices + cidPart nodeWithRunes[*ast.IdentNode] cid *identSlices tid ast.IdentValueNode sl *valueSlices @@ -89,7 +90,8 @@ import ( %type value optionValue scalarValue messageLiteralWithBraces messageLiteral numLit listLiteral listElement listOfMessagesLiteral messageValue %type enumValueNumber %type identifier mapKeyType msgElementName extElementName oneofElementName notGroupElementName mtdElementName enumValueName fieldCardinality -%type qualifiedIdentifier msgElementIdent extElementIdent oneofElementIdent notGroupElementIdent mtdElementIdent +%type qualifiedIdentifierEntry qualifiedIdentifierFinal mtdElementIdentEntry mtdElementIdentFinal +%type qualifiedIdentifier msgElementIdent extElementIdent oneofElementIdent notGroupElementIdent mtdElementIdent qualifiedIdentifierDot qualifiedIdentifierLeading mtdElementIdentLeading %type typeName msgElementTypeIdent extElementTypeIdent oneofElementTypeIdent notGroupElementTypeIdent mtdElementTypeIdent %type listElements messageLiterals %type messageLiteralFieldEntry messageLiteralFields messageTextFormat @@ -265,6 +267,36 @@ qualifiedIdentifier : identifier { $$ = $1 } +qualifiedIdentifierDot : qualifiedIdentifierFinal { + $$ = &identSlices{idents: []*ast.IdentNode{$1.Node}, dots: $1.Runes} + } + | qualifiedIdentifierLeading qualifiedIdentifierFinal { + $1.idents = append($1.idents, $2.Node) + $1.dots = append($1.dots, $2.Runes...) + $$ = $1 + } + +qualifiedIdentifierLeading : qualifiedIdentifierEntry { + $$ = &identSlices{idents: []*ast.IdentNode{$1.Node}, dots: $1.Runes} + } + | qualifiedIdentifierLeading qualifiedIdentifierEntry { + $1.idents = append($1.idents, $2.Node) + $1.dots = append($1.dots, $2.Runes...) + $$ = $1 + } + +qualifiedIdentifierFinal : identifier { + $$ = newNodeWithRunes($1) + } + | qualifiedIdentifierEntry { + protolex.(*protoLex).Error("unexpected '.'") + $$ = $1 + } + +qualifiedIdentifierEntry : identifier '.' { + $$ = newNodeWithRunes($1, $2) + } + // to mimic limitations of protoc recursive-descent parser, // we don't allowed message statement keywords as identifiers // (or oneof statement keywords [e.g. "option"] below) @@ -305,15 +337,36 @@ notGroupElementIdent : notGroupElementName { $$ = $1 } -mtdElementIdent : mtdElementName { - $$ = &identSlices{idents: []*ast.IdentNode{$1}} +mtdElementIdent : mtdElementIdentFinal { + $$ = &identSlices{idents: []*ast.IdentNode{$1.Node}, dots: $1.Runes} } - | mtdElementIdent '.' identifier { - $1.idents = append($1.idents, $3) - $1.dots = append($1.dots, $2) + | mtdElementIdentLeading mtdElementIdentFinal { + $1.idents = append($1.idents, $2.Node) + $1.dots = append($1.dots, $2.Runes...) + $$ = $1 + } + +mtdElementIdentLeading : mtdElementIdentEntry { + $$ = &identSlices{idents: []*ast.IdentNode{$1.Node}, dots: $1.Runes} + } + | mtdElementIdentLeading mtdElementIdentEntry { + $1.idents = append($1.idents, $2.Node) + $1.dots = append($1.dots, $2.Runes...) $$ = $1 } +mtdElementIdentFinal : mtdElementName { + $$ = newNodeWithRunes($1) + } + | mtdElementIdentEntry { + protolex.(*protoLex).Error("unexpected '.'") + $$ = $1 + } + +mtdElementIdentEntry : mtdElementName '.' { + $$ = newNodeWithRunes($1, $2) + } + oneofOptionDecl : _OPTION optionName '=' optionValue semicolon { optName := ast.NewOptionNameNode($2.refs, $2.dots) $$ = ast.NewOptionNode($1.ToKeyword(), optName, $3, $4, $5) @@ -492,10 +545,10 @@ messageLiteralField : messageLiteralFieldName ':' value { messageLiteralFieldName : identifier { $$ = ast.NewFieldReferenceNode($1) } - | '[' qualifiedIdentifier ']' { + | '[' qualifiedIdentifierDot ']' { $$ = ast.NewExtensionFieldReferenceNode($1, $2.toIdentValueNode(nil), $3) } - | '[' qualifiedIdentifier '/' qualifiedIdentifier ']' { + | '[' qualifiedIdentifierDot '/' qualifiedIdentifierDot ']' { $$ = ast.NewAnyTypeReferenceNode($1, $2.toIdentValueNode(nil), $3, $4.toIdentValueNode(nil), $5) } | '[' error ']' { @@ -571,10 +624,10 @@ messageLiterals : messageLiteral { $$ = $1 } -typeName : qualifiedIdentifier { +typeName : qualifiedIdentifierDot { $$ = $1.toIdentValueNode(nil) } - | '.' qualifiedIdentifier { + | '.' qualifiedIdentifierDot { $$ = $2.toIdentValueNode($1) } @@ -609,7 +662,7 @@ notGroupElementTypeIdent : notGroupElementIdent { mtdElementTypeIdent : mtdElementIdent { $$ = $1.toIdentValueNode(nil) } - | '.' qualifiedIdentifier { + | '.' qualifiedIdentifierDot { $$ = $2.toIdentValueNode($1) } diff --git a/parser/proto.y.go b/parser/proto.y.go index 568c5b73..8ff293ba 100644 --- a/parser/proto.y.go +++ b/parser/proto.y.go @@ -67,6 +67,7 @@ type protoSymType struct { rng *ast.RangeNode rngs *rangeSlices names *nameSlices + cidPart nodeWithRunes[*ast.IdentNode] cid *identSlices tid ast.IdentValueNode sl *valueSlices @@ -238,434 +239,463 @@ var protoExca = [...]int16{ 1, 7, -2, 0, -1, 89, - 52, 48, - 61, 48, - 69, 48, - -2, 49, - -1, 108, - 52, 48, - 61, 48, - 69, 48, - -2, 50, - -1, 114, - 56, 222, + 52, 60, + 61, 60, + 69, 60, + -2, 61, + -1, 101, + 55, 37, + 58, 37, + 62, 37, + 67, 37, + 69, 37, + -2, 34, + -1, 112, + 52, 60, + 61, 60, + 69, 60, + -2, 62, + -1, 118, + 56, 234, -2, 0, - -1, 133, - 56, 202, + -1, 121, + 55, 37, + 58, 37, + 62, 37, + 67, 37, + 69, 37, + -2, 35, + -1, 140, + 56, 214, -2, 0, - -1, 135, - 56, 191, - -2, 0, - -1, 137, - 56, 223, + -1, 142, + 56, 203, -2, 0, - -1, 191, + -1, 144, 56, 235, -2, 0, - -1, 196, - 56, 72, - 62, 72, + -1, 198, + 56, 247, -2, 0, - -1, 209, - 56, 203, + -1, 203, + 56, 84, + 62, 84, -2, 0, - -1, 266, - 56, 192, + -1, 216, + 56, 215, -2, 0, - -1, 372, - 56, 236, + -1, 273, + 56, 204, -2, 0, - -1, 453, - 56, 138, + -1, 379, + 56, 248, -2, 0, - -1, 507, - 69, 129, - -2, 126, - -1, 512, - 56, 139, + -1, 460, + 56, 150, -2, 0, - -1, 639, - 69, 129, - -2, 127, - -1, 694, - 56, 246, + -1, 514, + 69, 141, + -2, 138, + -1, 519, + 56, 151, -2, 0, - -1, 704, - 56, 247, + -1, 594, + 67, 52, + -2, 49, + -1, 649, + 69, 141, + -2, 139, + -1, 674, + 67, 52, + -2, 50, + -1, 705, + 56, 258, + -2, 0, + -1, 715, + 56, 259, -2, 0, } const protoPrivate = 57344 -const protoLast = 1908 +const protoLast = 1958 var protoAct = [...]int16{ - 133, 7, 132, 7, 7, 576, 18, 705, 389, 488, - 121, 120, 432, 96, 95, 508, 483, 504, 513, 507, - 417, 416, 400, 193, 40, 430, 373, 449, 228, 267, - 399, 123, 321, 21, 195, 20, 19, 102, 138, 39, - 105, 86, 85, 142, 32, 34, 210, 89, 440, 385, - 126, 90, 93, 94, 637, 98, 36, 443, 390, 106, - 578, 9, 106, 391, 629, 493, 448, 700, 442, 103, - 104, 632, 628, 492, 450, 451, 451, 665, 654, 630, - 451, 451, 484, 494, 444, 683, 661, 418, 131, 418, - 451, 451, 126, 411, 383, 384, 677, 491, 476, 640, - 390, 126, 382, 567, 117, 118, 475, 111, 106, 390, - 9, 115, 90, 662, 135, 439, 122, 191, 459, 9, - 455, 192, 381, 648, 573, 423, 9, 457, 450, 109, - 380, 119, 125, 106, 409, 108, 369, 110, 100, 718, - 217, 716, 268, 709, 703, 702, 695, 419, 691, 419, - 9, 200, 682, 100, 642, 378, 371, 317, 265, 208, - 712, 686, 370, 679, 274, 453, 116, 214, 368, 212, - 213, 114, 113, 112, 5, 6, 318, 222, 100, 9, - 23, 578, 644, 319, 31, 674, 579, 9, 24, 673, - 672, 25, 26, 641, 497, 496, 480, 479, 374, 454, - 447, 376, 101, 425, 414, 107, 13, 12, 477, 394, - 452, 15, 387, 26, 690, 392, 217, 509, 707, 9, - 689, 200, 28, 27, 29, 30, 35, 99, 207, 205, - 26, 379, 634, 633, 33, 8, 575, 204, 202, 574, - 206, 37, 38, 214, 410, 212, 213, 377, 398, 203, - 402, 403, 408, 222, 510, 397, 395, 563, 404, 407, - 401, 498, 482, 478, 4, 100, 412, 10, 11, 33, - 693, 704, 375, 268, 462, 463, 464, 465, 466, 467, - 468, 469, 470, 471, 472, 473, 190, 372, 22, 136, - 137, 269, 134, 266, 215, 274, 413, 415, 408, 270, - 220, 406, 405, 511, 512, 407, 209, 226, 219, 216, - 516, 140, 218, 139, 515, 211, 197, 196, 420, 438, - 485, 581, 519, 143, 223, 582, 322, 521, 147, 229, - 272, 584, 324, 523, 149, 232, 461, 424, 386, 388, - 433, 124, 87, 88, 199, 421, 422, 91, 505, 502, - 514, 506, 17, 16, 14, 3, 2, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 427, 0, 0, 0, 0, 0, 0, 374, + 140, 7, 139, 7, 7, 583, 716, 18, 396, 128, + 456, 127, 495, 96, 591, 594, 490, 515, 39, 100, + 520, 95, 511, 514, 424, 423, 439, 407, 130, 200, + 380, 274, 406, 437, 235, 328, 202, 106, 21, 98, + 109, 32, 34, 20, 85, 40, 90, 93, 94, 19, + 102, 149, 217, 36, 145, 101, 86, 89, 450, 585, + 447, 392, 133, 639, 500, 455, 107, 108, 711, 449, + 397, 638, 499, 457, 458, 398, 9, 677, 647, 664, + 458, 458, 425, 642, 640, 501, 451, 695, 671, 425, + 458, 458, 458, 138, 491, 133, 418, 390, 391, 689, + 498, 110, 483, 397, 9, 389, 650, 90, 124, 125, + 482, 119, 466, 133, 115, 9, 574, 462, 142, 580, + 129, 397, 9, 464, 198, 457, 388, 446, 199, 110, + 126, 132, 675, 104, 387, 658, 430, 723, 416, 120, + 376, 122, 426, 114, 113, 112, 729, 727, 224, 426, + 275, 720, 714, 207, 713, 121, 706, 702, 9, 652, + 694, 104, 385, 378, 324, 272, 215, 697, 691, 460, + 375, 123, 118, 117, 377, 40, 116, 281, 104, 221, + 5, 6, 9, 9, 219, 585, 23, 654, 326, 31, + 220, 686, 229, 685, 24, 684, 651, 25, 26, 325, + 504, 503, 487, 486, 461, 454, 381, 432, 421, 516, + 105, 111, 13, 12, 586, 701, 401, 484, 459, 15, + 214, 212, 399, 207, 224, 9, 383, 103, 28, 27, + 29, 30, 213, 394, 35, 211, 209, 718, 26, 700, + 386, 644, 643, 582, 581, 570, 517, 210, 408, 26, + 405, 33, 409, 410, 415, 221, 417, 40, 37, 38, + 219, 505, 489, 414, 485, 404, 220, 411, 229, 402, + 104, 4, 384, 419, 10, 11, 33, 8, 704, 715, + 382, 275, 469, 470, 471, 472, 473, 474, 475, 476, + 477, 478, 479, 480, 197, 379, 22, 143, 144, 276, + 415, 141, 273, 222, 422, 420, 277, 227, 281, 414, + 413, 412, 518, 519, 216, 233, 226, 223, 523, 147, + 225, 146, 522, 218, 204, 427, 203, 445, 492, 588, + 526, 150, 230, 592, 99, 589, 329, 528, 154, 236, + 279, 593, 331, 530, 156, 239, 468, 428, 429, 431, + 40, 393, 395, 440, 131, 87, 88, 206, 91, 512, + 509, 521, 513, 17, 16, 14, 3, 2, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 434, + 0, 0, 0, 0, 0, 0, 0, 381, 0, 0, + 0, 0, 0, 0, 0, 0, 433, 0, 0, 0, + 0, 438, 438, 0, 436, 0, 0, 0, 0, 0, + 435, 132, 132, 463, 465, 0, 0, 207, 0, 0, + 0, 0, 0, 452, 453, 448, 442, 443, 0, 0, + 0, 0, 0, 0, 0, 0, 467, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 481, 0, 0, 0, + 488, 496, 0, 0, 0, 0, 506, 507, 0, 0, + 0, 132, 0, 571, 502, 0, 0, 0, 497, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, + 0, 0, 575, 0, 578, 508, 573, 0, 0, 0, + 0, 0, 576, 572, 0, 0, 0, 0, 0, 0, + 584, 0, 0, 0, 0, 0, 645, 0, 577, 579, + 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 641, 0, 0, + 0, 0, 90, 0, 0, 648, 649, 0, 0, 0, + 653, 0, 0, 655, 0, 90, 656, 657, 659, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 426, 431, 431, 0, 0, 428, - 0, 0, 429, 0, 441, 0, 456, 458, 0, 125, - 125, 435, 0, 0, 436, 200, 0, 0, 0, 0, - 0, 445, 446, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 460, 474, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 489, 0, 490, 481, 499, - 500, 0, 0, 0, 0, 0, 564, 495, 0, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 501, 0, 568, 90, 571, 0, 0, - 0, 0, 0, 0, 566, 0, 0, 0, 0, 565, - 0, 0, 0, 0, 0, 0, 0, 570, 572, 635, - 0, 0, 569, 0, 0, 0, 631, 0, 0, 0, - 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 638, 0, 639, 636, 0, 0, 0, - 90, 643, 0, 0, 645, 0, 649, 0, 0, 0, - 0, 0, 0, 90, 646, 647, 0, 0, 0, 0, + 0, 660, 0, 0, 0, 0, 0, 663, 0, 0, + 0, 661, 0, 0, 0, 0, 0, 0, 666, 0, + 668, 0, 665, 667, 0, 0, 662, 0, 0, 0, + 0, 0, 0, 669, 672, 0, 0, 673, 674, 670, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 650, 0, 0, 0, 0, 0, - 653, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 656, 652, 658, 0, 0, 0, 0, 0, 0, - 0, 651, 0, 0, 0, 660, 659, 663, 0, 0, - 0, 0, 655, 657, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 667, 0, 669, 0, 664, - 489, 0, 490, 671, 0, 0, 0, 0, 0, 0, - 122, 0, 676, 670, 125, 0, 0, 678, 0, 0, - 681, 666, 668, 680, 0, 0, 125, 0, 685, 687, - 0, 0, 0, 675, 0, 0, 0, 0, 0, 0, - 0, 122, 692, 694, 688, 0, 0, 684, 0, 696, - 0, 0, 0, 0, 697, 698, 708, 125, 0, 0, - 0, 706, 0, 711, 713, 710, 0, 0, 0, 0, - 715, 706, 714, 0, 0, 717, 0, 699, 701, 487, - 0, 33, 130, 127, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 0, 0, - 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, - 390, 129, 128, 0, 0, 0, 486, 33, 130, 127, + 0, 0, 0, 0, 0, 679, 0, 681, 0, 496, + 0, 0, 676, 683, 678, 680, 0, 0, 0, 132, + 129, 0, 688, 682, 0, 0, 497, 690, 0, 0, + 693, 132, 0, 692, 0, 0, 0, 0, 687, 0, + 696, 698, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 129, 703, 705, 699, 0, 0, 0, + 707, 0, 0, 0, 132, 708, 709, 719, 0, 0, + 0, 710, 712, 717, 722, 724, 721, 0, 0, 0, + 0, 726, 725, 717, 0, 494, 728, 33, 137, 134, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 0, 0, 0, 0, 126, 0, - 0, 0, 0, 0, 0, 0, 390, 129, 128, 0, - 0, 434, 33, 130, 127, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 0, - 0, 0, 0, 126, 0, 0, 0, 0, 0, 0, - 0, 390, 129, 128, 33, 130, 127, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 0, 0, 0, 0, 126, 0, 0, 0, 0, - 0, 0, 0, 0, 129, 128, 41, 42, 43, 44, + 81, 82, 83, 84, 0, 0, 0, 0, 133, 0, + 0, 0, 0, 0, 0, 0, 397, 136, 135, 0, + 0, 0, 493, 33, 137, 134, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 198, 92, 0, 0, 503, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 437, 0, 198, 0, 0, 0, - 201, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 0, 0, 0, 0, 133, 0, 0, 0, 0, 0, + 0, 0, 397, 136, 135, 0, 0, 441, 33, 137, + 134, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 0, 0, 0, 0, 0, - 194, 0, 0, 0, 0, 0, 0, 0, 198, 0, - 0, 0, 201, 41, 42, 43, 44, 45, 46, 47, + 80, 81, 82, 83, 84, 0, 0, 0, 0, 133, + 0, 0, 0, 0, 0, 0, 0, 397, 136, 135, + 33, 137, 134, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 0, 0, 0, + 0, 133, 0, 0, 0, 0, 0, 0, 0, 0, + 136, 135, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 33, 418, 201, 41, 42, 43, 44, 45, + 205, 92, 0, 0, 510, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 419, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 92, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 97, 585, 586, - 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, - 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, - 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, - 580, 627, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 583, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 396, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 0, 0, 0, 0, - 0, 221, 0, 0, 0, 323, 233, 234, 235, 236, - 237, 238, 239, 26, 240, 241, 242, 243, 146, 145, - 144, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 0, 225, 231, 224, - 259, 260, 227, 28, 27, 29, 261, 262, 263, 264, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 320, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 0, 0, 0, 0, 0, 141, - 0, 0, 0, 323, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 146, 145, 144, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 0, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 0, 0, - 0, 0, 0, 517, 0, 0, 0, 148, 524, 525, - 526, 527, 528, 529, 530, 518, 531, 532, 533, 534, - 0, 0, 0, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 520, 550, - 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, - 561, 562, 0, 0, 0, 0, 0, 0, 0, 33, - 401, 522, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 271, 0, 0, 0, - 0, 275, 276, 277, 278, 279, 280, 281, 26, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 273, 310, 311, - 312, 313, 314, 315, 316, 393, 0, 0, 0, 0, + 444, 0, 205, 0, 0, 0, 208, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 0, 0, 0, 0, 0, 201, 0, 0, 0, + 0, 0, 0, 0, 205, 0, 0, 0, 208, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 425, + 208, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 426, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, + 81, 82, 83, 84, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 97, 595, 596, 597, 598, 599, 600, + 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, + 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, + 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, + 631, 632, 633, 634, 635, 636, 587, 637, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 590, 332, 333, + 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 403, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, 374, 0, 0, 0, 0, 0, 228, 0, 0, + 0, 330, 240, 241, 242, 243, 244, 245, 246, 26, + 247, 248, 249, 250, 153, 152, 151, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 0, 232, 238, 231, 266, 267, 234, 28, + 27, 29, 268, 269, 270, 271, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 237, 332, 333, 334, 335, + 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 327, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 0, 0, 0, 0, 0, 148, 0, 0, 0, 330, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 153, 152, 151, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 0, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 0, 0, 0, 0, 0, 524, + 0, 0, 0, 155, 531, 532, 533, 534, 535, 536, + 537, 525, 538, 539, 540, 541, 0, 0, 0, 542, + 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, + 553, 554, 555, 556, 527, 557, 558, 559, 560, 561, + 562, 563, 564, 565, 566, 567, 568, 569, 0, 0, + 0, 0, 0, 0, 0, 33, 408, 529, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 278, 0, 0, 0, 0, 282, 283, 284, + 285, 286, 287, 288, 26, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 280, 317, 318, 319, 320, 321, 322, + 323, 400, 0, 0, 0, 0, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 595, 596, 597, 598, 599, 600, + 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, + 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, + 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, + 631, 632, 633, 634, 635, 636, 0, 637, } var protoPact = [...]int16{ - 166, -1000, 126, 126, -1000, 155, 154, 178, 131, -1000, - -1000, -1000, 265, 265, 178, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 230, 1857, 1277, 1857, 1857, 1337, - 1857, -1000, 174, -1000, 149, -1000, 134, 265, 265, 73, + 172, -1000, 130, 130, -1000, 161, 160, 184, 136, -1000, + -1000, -1000, 272, 272, 184, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 247, 1863, 1283, 1863, 1863, 1343, + 1863, -1000, 174, -1000, 157, -1000, 129, 272, 272, 69, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 159, -1000, 1283, 83, -1000, + -1000, -1000, 1343, 121, 118, 117, -1000, 1863, -1000, 1863, + 81, -1000, 116, -1000, -1000, -1000, -1000, 129, 129, -1000, + 1863, 916, -1000, -1000, -1000, 26, 130, 130, 1613, -1000, + -1000, -1000, -1000, 130, -1000, -1000, -1000, 130, -1000, -1000, + 266, -1000, -1000, 1100, -1000, 230, 215, -1000, -1000, 110, + 1505, 109, 1770, 108, 1613, -1000, -1000, -1000, 135, 1559, + 1863, -1000, -1000, -1000, 80, 1863, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 153, -1000, 1277, 77, -1000, - -1000, -1000, 1337, 118, 117, 116, 48, 1857, 111, -1000, - -1000, -1000, -1000, 134, 134, -1000, 1857, 910, -1000, -1000, - -1000, 21, 126, 126, 1607, 48, 126, -1000, -1000, -1000, - 126, -1000, -1000, 261, -1000, -1000, 1094, -1000, 232, 223, - -1000, -1000, 103, 1499, 102, 1764, 101, 1607, -1000, -1000, - -1000, 130, 1553, 1857, -1000, -1000, -1000, 76, 1857, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 107, 224, -1000, + 106, -1000, -1000, 1162, 73, 44, 7, -1000, 1819, -1000, + -1000, -1000, -1000, -1000, -1000, 130, 1505, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1451, + 1863, 243, 1863, 1863, 1721, -1000, 78, 1863, 33, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 100, 199, -1000, 99, -1000, -1000, 1156, 69, 41, -5, - -1000, 1813, -1000, -1000, -1000, -1000, -1000, -1000, 126, 1499, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 1445, 1857, 255, 1857, 1857, 1715, -1000, 74, - 1857, 30, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 130, 1770, -1000, -1000, -1000, -1000, -1000, 156, + 1224, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 126, 1764, -1000, -1000, -1000, - -1000, -1000, 152, 1218, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 130, -1000, -1000, 1863, 1863, 76, + 1863, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 126, -1000, -1000, - 1857, 1857, 65, 1857, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 155, 1863, 41, 130, 224, + -1000, -1000, -1000, -1000, 1863, -1000, -1000, -1000, -1000, -1000, + -1000, 789, 789, -1000, -1000, -1000, -1000, 1038, 58, 0, + 17, -1000, -1000, 1863, 1863, 153, 12, -1000, 177, 114, + 152, 64, 62, 51, 266, -1000, 1863, 41, 258, -1000, + -1000, 84, 49, -1000, 176, -1000, 259, -1000, 151, 150, + 1863, 41, 257, -1000, -1000, -1000, 28, -1000, -1000, -1000, + -1000, 723, -1000, 38, -1000, 3, -1000, 16, -1000, -1000, + 1863, -1000, 149, 148, 256, 130, 130, 243, 975, 204, + 1667, 240, 130, -1000, 272, -1000, 1863, -1000, 55, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 23, 84, 130, 77, -1000, 239, 238, -1000, 6, + 164, 1397, 2, -1000, 15, -1000, -1000, -1000, -1000, -1000, + 40, -1000, 14, 237, 236, 23, -1000, -1000, -1000, 9, + -1000, -1000, 1283, 45, -1000, 144, -1000, -1000, 103, 1667, + -1000, -1000, -1000, -1000, 134, 1283, 1863, 1863, 75, 1863, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 151, 1857, - 48, 126, 199, -1000, -1000, -1000, -1000, 1857, -1000, -1000, - -1000, -1000, -1000, -1000, 783, 783, -1000, -1000, -1000, -1000, - 1032, 46, -1, 15, -1000, -1000, 1857, 1857, 148, 13, - -1000, 169, 110, 147, 67, 66, 57, 261, -1000, 1857, - 48, 250, -1000, -1000, 84, 45, -1000, 167, -1000, 258, - -1000, 145, 144, 1857, 48, 257, -1000, -1000, -1000, 16, - -1000, -1000, -1000, -1000, 717, -1000, 35, -1000, 4, -1000, - 14, -1000, -1000, 1857, -1000, 143, 142, 256, 126, 126, - 255, 969, 212, 1661, 252, 126, -1000, 265, -1000, 1857, - -1000, 42, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 8, 84, 126, 82, -1000, 234, - 231, -1000, 7, 136, 1391, 3, -1000, 10, -1000, -1000, - -1000, -1000, -1000, 37, -1000, 2, 228, 227, 8, -1000, - -1000, -1000, -15, -1000, -1000, 1277, 38, -1000, 141, -1000, - -1000, 98, 1661, -1000, -1000, -1000, -1000, 129, 1277, 1857, - 1857, 63, 1857, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 8, -1000, 261, -1000, 1337, -1000, 126, - -1000, -1000, -1000, -1000, 23, 7, -1000, 128, -1000, 16, - 1337, 19, 53, 1857, -1000, -1000, -1000, -1000, -1000, -1000, + 23, -1000, 266, -1000, 1343, -1000, 130, -1000, -1000, -1000, + -1000, 24, 6, -1000, 132, -1000, 28, 1343, 21, -1000, + 1863, -1000, 1907, 72, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 848, - -1000, -1000, -1000, 22, 8, -1000, 126, -1000, -1000, -1000, - -1000, 910, 126, -1000, -1000, 138, 137, 133, 1857, 48, - -1000, 126, 34, -1000, 126, 108, -1000, 128, -1000, 97, - 18, -1000, 1857, 48, -1000, 126, 106, -1000, 126, -1000, - -1000, -1000, 910, 215, 209, -1000, -1000, -1000, 92, 126, - -1000, -1000, 126, -1000, -1000, 90, 126, -1000, 128, 7, - 12, -1000, 89, 88, 216, 126, 87, -1000, -1000, 128, - 126, 105, -1000, 126, 216, -1000, -1000, -1000, -1000, 126, - -1000, 85, 126, -1000, -1000, -1000, -1000, 83, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 854, + -1000, -1000, -1000, 22, 23, -1000, 130, -1000, -1000, -1000, + -1000, 916, 130, -1000, -1000, 143, 141, 139, 1863, 41, + -1000, 130, 37, -1000, 130, 113, -1000, 132, -1000, 105, + 20, -1000, -1000, -1000, -1000, -1000, -1000, 130, 112, -1000, + 130, -1000, -1000, -1000, 916, 234, 210, -1000, -1000, -1000, + 101, 130, -1000, -1000, 130, -1000, 100, 130, -1000, 132, + 6, 13, -1000, 98, 96, 235, 130, 95, -1000, -1000, + 132, 130, 82, -1000, 130, 235, -1000, -1000, -1000, -1000, + 130, -1000, 91, 130, -1000, -1000, -1000, -1000, 90, -1000, } var protoPgo = [...]int16{ - 0, 357, 356, 355, 264, 211, 354, 353, 352, 351, - 350, 6, 19, 17, 349, 348, 347, 344, 343, 47, - 41, 15, 342, 27, 25, 11, 10, 8, 12, 341, - 340, 9, 339, 338, 20, 24, 336, 335, 334, 333, - 332, 331, 330, 43, 13, 329, 328, 327, 326, 325, - 14, 324, 323, 322, 32, 321, 320, 319, 317, 34, - 23, 316, 315, 314, 313, 312, 311, 310, 309, 308, - 307, 36, 46, 306, 2, 18, 304, 303, 302, 301, - 300, 299, 28, 22, 21, 30, 297, 294, 35, 29, - 293, 292, 291, 33, 38, 290, 289, 31, 288, 26, - 287, 286, 272, 7, 271, 270, 16, 5, 0, 235, + 0, 368, 367, 366, 271, 219, 365, 364, 363, 362, + 361, 7, 23, 22, 360, 359, 358, 357, 356, 57, + 56, 17, 355, 10, 33, 11, 9, 8, 26, 354, + 353, 12, 352, 351, 24, 19, 346, 345, 344, 343, + 342, 341, 340, 51, 55, 39, 15, 14, 18, 339, + 338, 337, 336, 335, 13, 334, 333, 21, 332, 331, + 330, 35, 329, 328, 327, 326, 36, 29, 324, 323, + 322, 321, 320, 319, 318, 317, 316, 315, 49, 52, + 314, 2, 20, 313, 312, 311, 310, 307, 306, 34, + 27, 25, 32, 304, 303, 43, 31, 302, 301, 299, + 38, 54, 298, 297, 28, 296, 30, 295, 294, 280, + 6, 279, 278, 16, 5, 0, 277, } var protoR1 = [...]int8{ 0, 1, 1, 1, 1, 1, 1, 4, 6, 6, - 5, 5, 5, 5, 5, 5, 5, 5, 109, 109, - 108, 108, 107, 107, 2, 3, 7, 7, 7, 8, - 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, - 49, 49, 10, 11, 18, 18, 19, 20, 20, 22, - 22, 21, 21, 16, 25, 25, 26, 26, 26, 29, - 29, 29, 29, 29, 29, 29, 29, 97, 97, 27, - 27, 60, 59, 59, 58, 58, 58, 58, 58, 58, - 61, 61, 61, 17, 17, 17, 17, 24, 24, 24, - 33, 33, 28, 28, 28, 30, 30, 30, 56, 56, - 31, 31, 32, 32, 32, 57, 57, 50, 50, 51, - 51, 52, 52, 53, 53, 54, 54, 55, 55, 43, - 43, 43, 23, 23, 14, 14, 15, 15, 13, 13, - 12, 9, 9, 66, 66, 68, 68, 65, 77, 77, - 76, 76, 75, 75, 75, 75, 75, 63, 63, 67, - 67, 69, 69, 70, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 87, 87, 85, 85, - 83, 83, 83, 86, 86, 84, 84, 84, 34, 34, - 80, 80, 81, 81, 82, 82, 78, 78, 79, 79, - 88, 91, 91, 90, 90, 89, 89, 89, 89, 92, - 92, 71, 74, 74, 73, 73, 72, 72, 72, 72, - 72, 72, 72, 72, 72, 72, 72, 62, 62, 62, - 62, 93, 96, 96, 95, 95, 94, 94, 94, 94, - 64, 64, 64, 64, 98, 101, 101, 100, 100, 99, - 99, 99, 102, 102, 106, 106, 105, 105, 104, 104, - 103, 103, 37, 37, 37, 37, 37, 37, 37, 37, + 5, 5, 5, 5, 5, 5, 5, 5, 116, 116, + 115, 115, 114, 114, 2, 3, 7, 7, 7, 8, + 48, 48, 54, 54, 55, 55, 45, 45, 44, 49, + 49, 50, 50, 51, 51, 52, 52, 53, 53, 56, + 56, 47, 47, 46, 10, 11, 18, 18, 19, 20, + 20, 22, 22, 21, 21, 16, 25, 25, 26, 26, + 26, 29, 29, 29, 29, 29, 29, 29, 29, 104, + 104, 27, 27, 67, 66, 66, 65, 65, 65, 65, + 65, 65, 68, 68, 68, 17, 17, 17, 17, 24, + 24, 24, 33, 33, 28, 28, 28, 30, 30, 30, + 63, 63, 31, 31, 32, 32, 32, 64, 64, 57, + 57, 58, 58, 59, 59, 60, 60, 61, 61, 62, + 62, 43, 43, 43, 23, 23, 14, 14, 15, 15, + 13, 13, 12, 9, 9, 73, 73, 75, 75, 72, + 84, 84, 83, 83, 82, 82, 82, 82, 82, 70, + 70, 74, 74, 76, 76, 77, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, 94, 94, + 92, 92, 90, 90, 90, 93, 93, 91, 91, 91, + 34, 34, 87, 87, 88, 88, 89, 89, 85, 85, + 86, 86, 95, 98, 98, 97, 97, 96, 96, 96, + 96, 99, 99, 78, 81, 81, 80, 80, 79, 79, + 79, 79, 79, 79, 79, 79, 79, 79, 79, 69, + 69, 69, 69, 100, 103, 103, 102, 102, 101, 101, + 101, 101, 71, 71, 71, 71, 105, 108, 108, 107, + 107, 106, 106, 106, 109, 109, 113, 113, 112, 112, + 111, 111, 110, 110, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 38, 38, 38, 38, 38, + 37, 37, 37, 37, 37, 37, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 42, 42, 42, 42, 42, + 38, 38, 38, 38, 38, 38, 38, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 39, 39, 39, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 40, 40, 40, 40, + 39, 39, 39, 39, 39, 39, 39, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 40, 40, 41, - 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, - 41, 41, 35, 35, 35, 35, 35, 35, 35, 35, + 41, 41, 41, 41, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, } var protoR2 = [...]int8{ 0, 1, 1, 1, 2, 2, 0, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 0, 1, 0, 4, 4, 3, 4, 4, 3, - 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, - 1, 3, 5, 5, 1, 1, 2, 1, 1, 1, - 2, 1, 2, 3, 1, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 1, 2, 2, 1, 2, 3, - 2, 1, 1, 2, 1, 2, 2, 2, 2, 1, - 3, 2, 3, 1, 3, 5, 3, 1, 1, 1, - 1, 1, 1, 3, 2, 3, 2, 3, 1, 3, - 1, 1, 3, 2, 3, 1, 3, 1, 2, 1, + 1, 3, 1, 2, 1, 2, 1, 1, 2, 1, + 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, + 2, 1, 1, 2, 5, 5, 1, 1, 2, 1, + 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, + 1, 1, 2, 2, 2, 2, 1, 2, 2, 1, + 2, 3, 2, 1, 1, 2, 1, 2, 2, 2, + 2, 1, 3, 2, 3, 1, 3, 5, 3, 1, + 1, 1, 1, 1, 1, 3, 2, 3, 2, 3, + 1, 3, 1, 1, 3, 2, 3, 1, 3, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, - 1, 1, 3, 2, 1, 2, 1, 2, 1, 1, - 2, 3, 1, 8, 9, 9, 10, 6, 0, 1, - 2, 1, 1, 1, 1, 2, 1, 5, 6, 7, - 8, 5, 6, 6, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 4, 4, 1, 3, - 1, 3, 3, 1, 3, 1, 3, 3, 1, 2, - 4, 1, 4, 1, 3, 3, 1, 3, 1, 3, - 6, 1, 2, 2, 1, 1, 1, 1, 1, 4, - 5, 6, 1, 2, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 6, 7, 5, - 6, 6, 0, 1, 2, 1, 1, 1, 2, 1, - 6, 7, 5, 6, 6, 1, 2, 2, 1, 1, - 1, 1, 6, 9, 4, 3, 1, 2, 2, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 1, 1, 1, 3, 2, 1, 2, 1, 2, + 1, 1, 2, 3, 1, 8, 9, 9, 10, 6, + 0, 1, 2, 1, 1, 1, 1, 2, 1, 5, + 6, 7, 8, 5, 6, 6, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, + 1, 3, 1, 3, 3, 1, 3, 1, 3, 3, + 1, 2, 4, 1, 4, 1, 3, 3, 1, 3, + 1, 3, 6, 1, 2, 2, 1, 1, 1, 1, + 1, 4, 5, 6, 1, 2, 2, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, + 7, 5, 6, 6, 0, 1, 2, 1, 1, 1, + 2, 1, 6, 7, 5, 6, 6, 1, 2, 2, + 1, 1, 1, 1, 6, 9, 4, 3, 1, 2, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -693,157 +723,159 @@ var protoR2 = [...]int8{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, } var protoChk = [...]int16{ - -1000, -1, -2, -3, -4, 8, 9, -108, -109, 53, - -4, -4, 52, 52, -6, -5, -7, -8, -11, -71, - -88, -93, -98, 2, 10, 13, 14, 45, 44, 46, - 47, 53, -97, 4, -97, -5, -97, 11, 12, -44, + -1000, -1, -2, -3, -4, 8, 9, -115, -116, 53, + -4, -4, 52, 52, -6, -5, -7, -8, -11, -78, + -95, -100, -105, 2, 10, 13, 14, 45, 44, 46, + 47, 53, -104, 4, -104, -5, -104, 11, 12, -48, -35, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, -21, -20, -22, -18, -19, - -35, -16, 66, -35, -35, -50, -44, 60, -35, 53, - 4, 53, -108, -97, -97, -108, 60, 52, -19, -20, - 60, -50, 55, 55, 55, -44, 55, -108, -108, -35, - -25, -26, -27, -97, -29, -35, 55, 6, 65, 64, - 5, 67, -74, -108, -91, -108, -96, -95, -94, -64, - -66, 2, -43, -52, 21, 20, 19, -46, 60, -38, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + -35, -16, 66, -35, -35, -57, -54, 60, -45, -55, + -35, -44, -35, 53, 4, 53, -115, -104, -104, -115, + 60, 52, -19, -20, 60, -57, 55, 55, 55, -54, + -45, -44, 60, 55, -115, -115, -35, -25, -26, -27, + -104, -29, -35, 55, 6, 65, 64, 5, 67, -81, + -115, -98, -115, -103, -102, -101, -71, -73, 2, -43, + -59, 21, 20, 19, -50, 60, -38, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, -108, -115, -115, + -67, 56, -66, -65, -68, 2, -17, -35, 68, 6, + 17, 5, 6, 17, 5, 56, -80, -79, -69, -95, + -78, -100, -94, -75, -11, -72, -76, -87, 2, -43, + -58, 40, 38, -77, 43, -89, -49, 60, 39, -37, + 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, + 18, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 41, 42, 47, 48, + 49, 50, 56, -97, -96, -11, -99, -88, 2, -42, + 43, -89, 7, 8, 9, 10, 11, 12, 13, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, + 47, 48, 49, 50, 56, -101, 53, 37, -61, -52, + 60, -40, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, -35, 60, -48, 56, -107, + -106, -11, -109, 2, 48, 56, -66, 61, 53, 61, + 53, 54, 54, -33, -28, -32, -27, 63, 68, -54, + 2, -115, -79, 37, -61, -35, -92, -90, 5, -35, + -35, -92, -85, -86, -104, -35, 60, -48, 63, -115, + -96, 52, -93, -91, -34, 5, 65, -115, -35, -35, + 60, -48, 52, -35, -115, -106, -35, -24, -26, -28, + -30, 68, -24, -67, 62, -64, 69, 2, -28, 69, + 58, 69, -35, -35, 52, 53, -23, 61, 68, 41, + 55, 52, 53, -115, 61, -115, 61, -35, -36, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, -34, 61, 53, 41, 5, 52, 52, -35, 5, + -113, 66, -63, 69, 2, -31, -26, -28, 62, 69, + 61, 69, -54, 52, 52, 5, -115, -115, -90, -14, + 69, -13, -15, -9, -12, -21, 5, 42, -84, -83, + -82, -10, -70, -74, 2, 14, -60, 37, -51, 60, + -39, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - -101, -108, -108, -60, 56, -59, -58, -61, 2, -17, - -35, 68, 6, 17, 5, 6, 17, 5, 56, -73, - -72, -62, -88, -71, -93, -87, -68, -11, -65, -69, - -80, 2, -43, -51, 40, 38, -70, 43, -82, -45, - 60, 39, -37, 7, 8, 9, 10, 11, 12, 13, - 15, 16, 17, 18, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 41, - 42, 47, 48, 49, 50, 56, -90, -89, -11, -92, - -81, 2, -42, 43, -82, 7, 8, 9, 10, 11, - 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 44, 45, 46, 47, 48, 49, 50, 56, -94, 53, - 37, -54, -48, 60, -40, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, -35, 60, - -44, 56, -100, -99, -11, -102, 2, 48, 56, -59, - 61, 53, 61, 53, 54, 54, -33, -28, -32, -27, - 63, 68, -44, 2, -108, -72, 37, -54, -35, -85, - -83, 5, -35, -35, -85, -78, -79, -97, -35, 60, - -44, 63, -108, -89, 52, -86, -84, -34, 5, 65, - -108, -35, -35, 60, -44, 52, -35, -108, -99, -35, - -24, -26, -28, -30, 68, -24, -60, 62, -57, 69, - 2, -28, 69, 58, 69, -35, -35, 52, 53, -23, - 61, 68, 41, 55, 52, 53, -108, 61, -108, 61, - -35, -36, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, -34, 61, 53, 41, 5, 52, - 52, -35, 5, -106, 66, -56, 69, 2, -31, -26, - -28, 62, 69, 61, 69, -44, 52, 52, 5, -108, - -108, -83, -14, 69, -13, -15, -9, -12, -21, 5, - 42, -77, -76, -75, -10, -63, -67, 2, 14, -53, - 37, -47, 60, -39, 7, 8, 9, 10, 11, 12, - 13, 15, 16, 17, 18, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 5, -108, -97, -35, 61, -108, -23, - -84, -108, -34, 42, 5, 5, -107, -23, 53, 50, - 49, -55, -49, 60, -41, 7, 8, 9, 10, 11, + 5, -115, -104, -35, 61, -115, -23, -91, -115, -34, + 42, 5, 5, -114, -23, 53, 50, 49, -62, -53, + 60, -47, -56, -41, -46, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 69, 61, - 69, -28, 69, 5, 5, -108, -23, 69, -13, -12, - 61, 52, 56, -75, 53, -21, -35, -35, 60, -44, - -108, -23, -50, -108, 55, -23, -107, -23, -107, -106, - -50, 67, 60, -44, -31, 55, -23, -108, -23, -108, - -25, -108, 52, 52, 52, -35, -108, 62, -74, 55, - -107, -108, 55, 67, -35, -74, 55, -108, -25, 5, - 5, 56, -74, -105, -108, 56, -74, -107, -107, -23, - 55, -23, 56, 56, -104, -103, -11, 2, -108, 56, - -107, -74, 55, -108, -103, -108, 56, -74, 56, + 69, -28, 69, 5, 5, -115, -23, 69, -13, -12, + 61, 52, 56, -82, 53, -21, -35, -35, 60, -48, + -115, -23, -57, -115, 55, -23, -114, -23, -114, -113, + -57, 67, -54, -47, -46, 60, -31, 55, -23, -115, + -23, -115, -25, -115, 52, 52, 52, -35, -115, 62, + -81, 55, -114, -115, 55, 67, -81, 55, -115, -25, + 5, 5, 56, -81, -112, -115, 56, -81, -114, -114, + -23, 55, -23, 56, 56, -111, -110, -11, 2, -115, + 56, -114, -81, 55, -115, -110, -115, 56, -81, 56, } var protoDef = [...]int16{ -2, -2, -2, -2, 3, 0, 0, 0, 20, 18, 4, 5, 0, 0, -2, 9, 10, 11, 12, 13, 14, 15, 16, 17, 0, 0, 0, 0, 0, 0, - 0, 19, 0, 67, 0, 8, 21, 0, 0, 21, - 30, 492, 493, 494, 495, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, - 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, - 531, 532, 533, 534, 535, 0, 51, 0, 47, -2, - 44, 45, 0, 0, 0, 0, 107, 0, 0, 24, - 68, 25, 26, 21, 21, 29, 0, 0, -2, 52, - 46, 0, 21, 21, -2, 108, 21, 27, 28, 31, - 21, 54, 55, 56, 57, 58, 0, 59, 0, 0, - 64, 53, 0, -2, 0, -2, 0, -2, 225, 226, - 227, 229, 0, 0, 119, 120, 121, 111, 0, 34, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 0, -2, 43, 0, 70, 71, -2, 74, 79, 0, - 83, 0, 60, 63, 66, 61, 62, 65, 21, -2, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 0, 0, 0, 0, 0, 0, 181, 109, - 0, 278, 32, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 279, - 280, 281, 282, 283, 284, 21, -2, 194, 195, 196, - 197, 198, 0, 0, 183, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 21, 224, 228, - 0, 0, 115, 0, 38, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 0, 0, - 112, 21, -2, 238, 239, 240, 241, 0, 69, 73, - 75, 76, 77, 78, 0, 0, 81, 90, 91, 92, - 0, 0, 0, 0, 201, 204, 0, 0, 0, 0, - 168, 170, 0, 0, 0, 21, 21, 186, 188, 0, - 110, 0, 190, 193, 0, 0, 173, 175, 178, 0, - 221, 0, 0, 0, 116, 0, 35, 234, 237, 0, - 82, 87, 88, 89, 0, 80, 0, 94, 0, 103, - 0, 105, 84, 0, 86, 0, 0, 0, 21, 21, - 0, 0, 0, -2, 0, 21, 184, 0, 185, 0, - 33, 0, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 21, 0, 21, 0, 179, 0, - 0, 39, 23, 0, 0, 0, 96, 0, 98, 100, - 101, 93, 102, 0, 104, 0, 0, 0, 21, 166, - 167, 169, 0, 123, 124, 0, 128, -2, 132, 171, - 172, 0, -2, 141, 142, 143, 144, 146, 0, 0, - 0, 113, 0, 36, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 21, 180, 187, 189, 0, 199, 21, - 174, 182, 176, 177, 0, 23, 232, 23, 22, 0, - 0, 0, 117, 0, 40, 449, 450, 451, 452, 453, - 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, - 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, - 484, 485, 486, 487, 488, 489, 490, 491, 95, 0, - 97, 106, 85, 0, 21, 219, 21, 122, 125, -2, - 130, 0, 21, 140, 145, 0, 0, 0, 0, 114, - 151, 21, 0, 200, 21, 0, 230, 23, 233, 21, - 0, 245, 0, 118, 99, 21, 0, 217, 21, 220, - 131, 137, 0, 0, 0, 37, 152, 153, 0, 21, - 231, 242, 21, 244, 41, 0, 21, 218, 23, 23, - 0, 133, 0, 0, -2, 21, 0, 42, 147, 23, - 21, 0, 134, 21, -2, 249, 250, 251, 135, 21, - 148, 0, 21, 243, 248, 136, 149, 0, 150, + 0, 19, 0, 79, 0, 8, 21, 0, 0, 21, + 30, 504, 505, 506, 507, 508, 509, 510, 511, 512, + 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, + 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, + 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, + 543, 544, 545, 546, 547, 0, 63, 0, 59, -2, + 56, 57, 0, 0, 0, 0, 119, 0, 32, 0, + 36, -2, 0, 24, 80, 25, 26, 21, 21, 29, + 0, 0, -2, 64, 58, 0, 21, 21, -2, 120, + 33, -2, 38, 21, 27, 28, 31, 21, 66, 67, + 68, 69, 70, 0, 71, 0, 0, 76, 65, 0, + -2, 0, -2, 0, -2, 237, 238, 239, 241, 0, + 0, 131, 132, 133, 123, 0, 41, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 334, 335, 336, 0, -2, 55, + 0, 82, 83, -2, 86, 91, 0, 95, 0, 72, + 75, 78, 73, 74, 77, 21, -2, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 0, + 0, 0, 0, 0, 0, 193, 121, 0, 290, 39, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 291, 292, 293, 294, + 295, 296, 21, -2, 206, 207, 208, 209, 210, 0, + 0, 195, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 21, 236, 240, 0, 0, 127, + 0, 45, 418, 419, 420, 421, 422, 423, 424, 425, + 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, + 456, 457, 458, 459, 460, 0, 0, 124, 21, -2, + 250, 251, 252, 253, 0, 81, 85, 87, 88, 89, + 90, 0, 0, 93, 102, 103, 104, 0, 0, 0, + 0, 213, 216, 0, 0, 0, 0, 180, 182, 0, + 0, 0, 21, 21, 198, 200, 0, 122, 0, 202, + 205, 0, 0, 185, 187, 190, 0, 233, 0, 0, + 0, 128, 0, 42, 246, 249, 0, 94, 99, 100, + 101, 0, 92, 0, 106, 0, 115, 0, 117, 96, + 0, 98, 0, 0, 0, 21, 21, 0, 0, 0, + -2, 0, 21, 196, 0, 197, 0, 40, 0, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 21, 0, 21, 0, 191, 0, 0, 46, 23, + 0, 0, 0, 108, 0, 110, 112, 113, 105, 114, + 0, 116, 0, 0, 0, 21, 178, 179, 181, 0, + 135, 136, 0, 140, -2, 144, 183, 184, 0, -2, + 153, 154, 155, 156, 158, 0, 0, 0, 125, 0, + 43, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 21, 192, 199, 201, 0, 211, 21, 186, 194, 188, + 189, 0, 23, 244, 23, 22, 0, 0, 0, 129, + 0, 47, 0, 51, -2, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, + 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 503, 107, 0, + 109, 118, 97, 0, 21, 231, 21, 134, 137, -2, + 142, 0, 21, 152, 157, 0, 0, 0, 0, 126, + 163, 21, 0, 212, 21, 0, 242, 23, 245, 21, + 0, 257, 130, 48, -2, 53, 111, 21, 0, 229, + 21, 232, 143, 149, 0, 0, 0, 44, 164, 165, + 0, 21, 243, 254, 21, 256, 0, 21, 230, 23, + 23, 0, 145, 0, 0, -2, 21, 0, 54, 159, + 23, 21, 0, 146, 21, -2, 261, 262, 263, 147, + 21, 160, 0, 21, 255, 260, 148, 161, 0, 162, } var protoTok1 = [...]int8{ @@ -1386,179 +1418,247 @@ protodefault: case 32: protoDollar = protoS[protopt-1 : protopt+1] { - protoVAL.cid = &identSlices{idents: []*ast.IdentNode{protoDollar[1].id}} + protoVAL.cid = &identSlices{idents: []*ast.IdentNode{protoDollar[1].cidPart.Node}, dots: protoDollar[1].cidPart.Runes} } case 33: - protoDollar = protoS[protopt-3 : protopt+1] + protoDollar = protoS[protopt-2 : protopt+1] { - protoDollar[1].cid.idents = append(protoDollar[1].cid.idents, protoDollar[3].id) - protoDollar[1].cid.dots = append(protoDollar[1].cid.dots, protoDollar[2].b) + protoDollar[1].cid.idents = append(protoDollar[1].cid.idents, protoDollar[2].cidPart.Node) + protoDollar[1].cid.dots = append(protoDollar[1].cid.dots, protoDollar[2].cidPart.Runes...) protoVAL.cid = protoDollar[1].cid } case 34: protoDollar = protoS[protopt-1 : protopt+1] { - protoVAL.cid = &identSlices{idents: []*ast.IdentNode{protoDollar[1].id}} + protoVAL.cid = &identSlices{idents: []*ast.IdentNode{protoDollar[1].cidPart.Node}, dots: protoDollar[1].cidPart.Runes} } case 35: + protoDollar = protoS[protopt-2 : protopt+1] + { + protoDollar[1].cid.idents = append(protoDollar[1].cid.idents, protoDollar[2].cidPart.Node) + protoDollar[1].cid.dots = append(protoDollar[1].cid.dots, protoDollar[2].cidPart.Runes...) + protoVAL.cid = protoDollar[1].cid + } + case 36: + protoDollar = protoS[protopt-1 : protopt+1] + { + protoVAL.cidPart = newNodeWithRunes(protoDollar[1].id) + } + case 37: + protoDollar = protoS[protopt-1 : protopt+1] + { + protolex.(*protoLex).Error("unexpected '.'") + protoVAL.cidPart = protoDollar[1].cidPart + } + case 38: + protoDollar = protoS[protopt-2 : protopt+1] + { + protoVAL.cidPart = newNodeWithRunes(protoDollar[1].id, protoDollar[2].b) + } + case 39: + protoDollar = protoS[protopt-1 : protopt+1] + { + protoVAL.cid = &identSlices{idents: []*ast.IdentNode{protoDollar[1].id}} + } + case 40: protoDollar = protoS[protopt-3 : protopt+1] { protoDollar[1].cid.idents = append(protoDollar[1].cid.idents, protoDollar[3].id) protoDollar[1].cid.dots = append(protoDollar[1].cid.dots, protoDollar[2].b) protoVAL.cid = protoDollar[1].cid } - case 36: + case 41: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.cid = &identSlices{idents: []*ast.IdentNode{protoDollar[1].id}} } - case 37: + case 42: protoDollar = protoS[protopt-3 : protopt+1] { protoDollar[1].cid.idents = append(protoDollar[1].cid.idents, protoDollar[3].id) protoDollar[1].cid.dots = append(protoDollar[1].cid.dots, protoDollar[2].b) protoVAL.cid = protoDollar[1].cid } - case 38: + case 43: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.cid = &identSlices{idents: []*ast.IdentNode{protoDollar[1].id}} } - case 39: + case 44: protoDollar = protoS[protopt-3 : protopt+1] { protoDollar[1].cid.idents = append(protoDollar[1].cid.idents, protoDollar[3].id) protoDollar[1].cid.dots = append(protoDollar[1].cid.dots, protoDollar[2].b) protoVAL.cid = protoDollar[1].cid } - case 40: + case 45: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.cid = &identSlices{idents: []*ast.IdentNode{protoDollar[1].id}} } - case 41: + case 46: protoDollar = protoS[protopt-3 : protopt+1] { protoDollar[1].cid.idents = append(protoDollar[1].cid.idents, protoDollar[3].id) protoDollar[1].cid.dots = append(protoDollar[1].cid.dots, protoDollar[2].b) protoVAL.cid = protoDollar[1].cid } - case 42: + case 47: + protoDollar = protoS[protopt-1 : protopt+1] + { + protoVAL.cid = &identSlices{idents: []*ast.IdentNode{protoDollar[1].cidPart.Node}, dots: protoDollar[1].cidPart.Runes} + } + case 48: + protoDollar = protoS[protopt-2 : protopt+1] + { + protoDollar[1].cid.idents = append(protoDollar[1].cid.idents, protoDollar[2].cidPart.Node) + protoDollar[1].cid.dots = append(protoDollar[1].cid.dots, protoDollar[2].cidPart.Runes...) + protoVAL.cid = protoDollar[1].cid + } + case 49: + protoDollar = protoS[protopt-1 : protopt+1] + { + protoVAL.cid = &identSlices{idents: []*ast.IdentNode{protoDollar[1].cidPart.Node}, dots: protoDollar[1].cidPart.Runes} + } + case 50: + protoDollar = protoS[protopt-2 : protopt+1] + { + protoDollar[1].cid.idents = append(protoDollar[1].cid.idents, protoDollar[2].cidPart.Node) + protoDollar[1].cid.dots = append(protoDollar[1].cid.dots, protoDollar[2].cidPart.Runes...) + protoVAL.cid = protoDollar[1].cid + } + case 51: + protoDollar = protoS[protopt-1 : protopt+1] + { + protoVAL.cidPart = newNodeWithRunes(protoDollar[1].id) + } + case 52: + protoDollar = protoS[protopt-1 : protopt+1] + { + protolex.(*protoLex).Error("unexpected '.'") + protoVAL.cidPart = protoDollar[1].cidPart + } + case 53: + protoDollar = protoS[protopt-2 : protopt+1] + { + protoVAL.cidPart = newNodeWithRunes(protoDollar[1].id, protoDollar[2].b) + } + case 54: protoDollar = protoS[protopt-5 : protopt+1] { optName := ast.NewOptionNameNode(protoDollar[2].optNms.refs, protoDollar[2].optNms.dots) protoVAL.optRaw = ast.NewOptionNode(protoDollar[1].id.ToKeyword(), optName, protoDollar[3].b, protoDollar[4].v, protoDollar[5].b) } - case 43: + case 55: protoDollar = protoS[protopt-5 : protopt+1] { optName := ast.NewOptionNameNode(protoDollar[2].optNms.refs, protoDollar[2].optNms.dots) semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[5].bs) protoVAL.opt = newNodeWithRunes(ast.NewOptionNode(protoDollar[1].id.ToKeyword(), optName, protoDollar[3].b, protoDollar[4].v, semi), extra...) } - case 44: + case 56: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.refRaw = ast.NewFieldReferenceNode(protoDollar[1].id) } - case 45: + case 57: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.refRaw = protoDollar[1].refRaw } - case 46: + case 58: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.ref = newNodeWithRunes(protoDollar[1].refRaw, protoDollar[2].b) } - case 47: + case 59: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.ref = newNodeWithRunes(protoDollar[1].refRaw) } - case 48: + case 60: protoDollar = protoS[protopt-1 : protopt+1] { protolex.(*protoLex).Error("unexpected '.'") protoVAL.ref = protoDollar[1].ref } - case 49: + case 61: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.optNms = &fieldRefSlices{refs: []*ast.FieldReferenceNode{protoDollar[1].ref.Node}, dots: protoDollar[1].ref.Runes} } - case 50: + case 62: protoDollar = protoS[protopt-2 : protopt+1] { protoDollar[1].optNms.refs = append(protoDollar[1].optNms.refs, protoDollar[2].ref.Node) protoDollar[1].optNms.dots = append(protoDollar[1].optNms.dots, protoDollar[2].ref.Runes...) protoVAL.optNms = protoDollar[1].optNms } - case 51: + case 63: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.optNms = &fieldRefSlices{refs: []*ast.FieldReferenceNode{protoDollar[1].ref.Node}, dots: protoDollar[1].ref.Runes} } - case 52: + case 64: protoDollar = protoS[protopt-2 : protopt+1] { protoDollar[1].optNms.refs = append(protoDollar[1].optNms.refs, protoDollar[2].ref.Node) protoDollar[1].optNms.dots = append(protoDollar[1].optNms.dots, protoDollar[2].ref.Runes...) protoVAL.optNms = protoDollar[1].optNms } - case 53: + case 65: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.refRaw = ast.NewExtensionFieldReferenceNode(protoDollar[1].b, protoDollar[2].tid, protoDollar[3].b) } - case 56: + case 68: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.v = toStringValueNode(protoDollar[1].str) } - case 58: + case 70: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.v = protoDollar[1].id } - case 59: + case 71: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.v = protoDollar[1].f } - case 60: + case 72: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.v = ast.NewSignedFloatLiteralNode(protoDollar[1].b, protoDollar[2].f) } - case 61: + case 73: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.v = ast.NewSignedFloatLiteralNode(protoDollar[1].b, protoDollar[2].f) } - case 62: + case 74: protoDollar = protoS[protopt-2 : protopt+1] { f := ast.NewSpecialFloatLiteralNode(protoDollar[2].id.ToKeyword()) protoVAL.v = ast.NewSignedFloatLiteralNode(protoDollar[1].b, f) } - case 63: + case 75: protoDollar = protoS[protopt-2 : protopt+1] { f := ast.NewSpecialFloatLiteralNode(protoDollar[2].id.ToKeyword()) protoVAL.v = ast.NewSignedFloatLiteralNode(protoDollar[1].b, f) } - case 64: + case 76: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.v = protoDollar[1].i } - case 65: + case 77: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.v = ast.NewPositiveUintLiteralNode(protoDollar[1].b, protoDollar[2].i) } - case 66: + case 78: protoDollar = protoS[protopt-2 : protopt+1] { if protoDollar[2].i.Val > math.MaxInt64+1 { @@ -1568,17 +1668,17 @@ protodefault: protoVAL.v = ast.NewNegativeIntLiteralNode(protoDollar[1].b, protoDollar[2].i) } } - case 67: + case 79: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.str = []*ast.StringLiteralNode{protoDollar[1].s} } - case 68: + case 80: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.str = append(protoDollar[1].str, protoDollar[2].s) } - case 69: + case 81: protoDollar = protoS[protopt-3 : protopt+1] { if protoDollar[2].msgLitFlds == nil { @@ -1588,12 +1688,12 @@ protodefault: protoVAL.v = ast.NewMessageLiteralNode(protoDollar[1].b, fields, delimiters, protoDollar[3].b) } } - case 70: + case 82: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.v = ast.NewMessageLiteralNode(protoDollar[1].b, nil, nil, protoDollar[2].b) } - case 73: + case 85: protoDollar = protoS[protopt-2 : protopt+1] { if protoDollar[1].msgLitFlds != nil { @@ -1603,7 +1703,7 @@ protodefault: protoVAL.msgLitFlds = protoDollar[2].msgLitFlds } } - case 74: + case 86: protoDollar = protoS[protopt-1 : protopt+1] { if protoDollar[1].msgLitFld != nil { @@ -1612,7 +1712,7 @@ protodefault: protoVAL.msgLitFlds = nil } } - case 75: + case 87: protoDollar = protoS[protopt-2 : protopt+1] { if protoDollar[1].msgLitFld != nil { @@ -1621,7 +1721,7 @@ protodefault: protoVAL.msgLitFlds = nil } } - case 76: + case 88: protoDollar = protoS[protopt-2 : protopt+1] { if protoDollar[1].msgLitFld != nil { @@ -1630,22 +1730,22 @@ protodefault: protoVAL.msgLitFlds = nil } } - case 77: + case 89: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.msgLitFlds = nil } - case 78: + case 90: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.msgLitFlds = nil } - case 79: + case 91: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgLitFlds = nil } - case 80: + case 92: protoDollar = protoS[protopt-3 : protopt+1] { if protoDollar[1].refRaw != nil && protoDollar[2].b != nil { @@ -1654,7 +1754,7 @@ protodefault: protoVAL.msgLitFld = nil } } - case 81: + case 93: protoDollar = protoS[protopt-2 : protopt+1] { if protoDollar[1].refRaw != nil && protoDollar[2].v != nil { @@ -1663,32 +1763,32 @@ protodefault: protoVAL.msgLitFld = nil } } - case 82: + case 94: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.msgLitFld = nil } - case 83: + case 95: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.refRaw = ast.NewFieldReferenceNode(protoDollar[1].id) } - case 84: + case 96: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.refRaw = ast.NewExtensionFieldReferenceNode(protoDollar[1].b, protoDollar[2].cid.toIdentValueNode(nil), protoDollar[3].b) } - case 85: + case 97: protoDollar = protoS[protopt-5 : protopt+1] { protoVAL.refRaw = ast.NewAnyTypeReferenceNode(protoDollar[1].b, protoDollar[2].cid.toIdentValueNode(nil), protoDollar[3].b, protoDollar[4].cid.toIdentValueNode(nil), protoDollar[5].b) } - case 86: + case 98: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.refRaw = nil } - case 93: + case 105: protoDollar = protoS[protopt-3 : protopt+1] { if protoDollar[2].msgLitFlds == nil { @@ -1698,12 +1798,12 @@ protodefault: protoVAL.v = ast.NewMessageLiteralNode(protoDollar[1].b, fields, delimiters, protoDollar[3].b) } } - case 94: + case 106: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.v = ast.NewMessageLiteralNode(protoDollar[1].b, nil, nil, protoDollar[2].b) } - case 95: + case 107: protoDollar = protoS[protopt-3 : protopt+1] { if protoDollar[2].sl == nil { @@ -1712,29 +1812,29 @@ protodefault: protoVAL.v = ast.NewArrayLiteralNode(protoDollar[1].b, protoDollar[2].sl.vals, protoDollar[2].sl.commas, protoDollar[3].b) } } - case 96: + case 108: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.v = ast.NewArrayLiteralNode(protoDollar[1].b, nil, nil, protoDollar[2].b) } - case 97: + case 109: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.v = ast.NewArrayLiteralNode(protoDollar[1].b, nil, nil, protoDollar[3].b) } - case 98: + case 110: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.sl = &valueSlices{vals: []ast.ValueNode{protoDollar[1].v}} } - case 99: + case 111: protoDollar = protoS[protopt-3 : protopt+1] { protoDollar[1].sl.vals = append(protoDollar[1].sl.vals, protoDollar[3].v) protoDollar[1].sl.commas = append(protoDollar[1].sl.commas, protoDollar[2].b) protoVAL.sl = protoDollar[1].sl } - case 102: + case 114: protoDollar = protoS[protopt-3 : protopt+1] { if protoDollar[2].sl == nil { @@ -1743,183 +1843,183 @@ protodefault: protoVAL.v = ast.NewArrayLiteralNode(protoDollar[1].b, protoDollar[2].sl.vals, protoDollar[2].sl.commas, protoDollar[3].b) } } - case 103: + case 115: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.v = ast.NewArrayLiteralNode(protoDollar[1].b, nil, nil, protoDollar[2].b) } - case 104: + case 116: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.v = ast.NewArrayLiteralNode(protoDollar[1].b, nil, nil, protoDollar[3].b) } - case 105: + case 117: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.sl = &valueSlices{vals: []ast.ValueNode{protoDollar[1].v}} } - case 106: + case 118: protoDollar = protoS[protopt-3 : protopt+1] { protoDollar[1].sl.vals = append(protoDollar[1].sl.vals, protoDollar[3].v) protoDollar[1].sl.commas = append(protoDollar[1].sl.commas, protoDollar[2].b) protoVAL.sl = protoDollar[1].sl } - case 107: + case 119: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.tid = protoDollar[1].cid.toIdentValueNode(nil) } - case 108: + case 120: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.tid = protoDollar[2].cid.toIdentValueNode(protoDollar[1].b) } - case 109: + case 121: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.tid = protoDollar[1].cid.toIdentValueNode(nil) } - case 110: + case 122: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.tid = protoDollar[2].cid.toIdentValueNode(protoDollar[1].b) } - case 111: + case 123: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.tid = protoDollar[1].cid.toIdentValueNode(nil) } - case 112: + case 124: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.tid = protoDollar[2].cid.toIdentValueNode(protoDollar[1].b) } - case 113: + case 125: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.tid = protoDollar[1].cid.toIdentValueNode(nil) } - case 114: + case 126: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.tid = protoDollar[2].cid.toIdentValueNode(protoDollar[1].b) } - case 115: + case 127: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.tid = protoDollar[1].cid.toIdentValueNode(nil) } - case 116: + case 128: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.tid = protoDollar[2].cid.toIdentValueNode(protoDollar[1].b) } - case 117: + case 129: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.tid = protoDollar[1].cid.toIdentValueNode(nil) } - case 118: + case 130: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.tid = protoDollar[2].cid.toIdentValueNode(protoDollar[1].b) } - case 122: + case 134: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.cmpctOpts = ast.NewCompactOptionsNode(protoDollar[1].b, protoDollar[2].opts.options, protoDollar[2].opts.commas, protoDollar[3].b) } - case 123: + case 135: protoDollar = protoS[protopt-2 : protopt+1] { protolex.(*protoLex).Error("compact options must have at least one option") protoVAL.cmpctOpts = ast.NewCompactOptionsNode(protoDollar[1].b, nil, nil, protoDollar[2].b) } - case 124: + case 136: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.opts = &compactOptionSlices{options: []*ast.OptionNode{protoDollar[1].opt.Node}, commas: protoDollar[1].opt.Runes} } - case 125: + case 137: protoDollar = protoS[protopt-2 : protopt+1] { protoDollar[1].opts.options = append(protoDollar[1].opts.options, protoDollar[2].opt.Node) protoDollar[1].opts.commas = append(protoDollar[1].opts.commas, protoDollar[2].opt.Runes...) protoVAL.opts = protoDollar[1].opts } - case 126: + case 138: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.opts = &compactOptionSlices{options: []*ast.OptionNode{protoDollar[1].opt.Node}, commas: protoDollar[1].opt.Runes} } - case 127: + case 139: protoDollar = protoS[protopt-2 : protopt+1] { protoDollar[1].opts.options = append(protoDollar[1].opts.options, protoDollar[2].opt.Node) protoDollar[1].opts.commas = append(protoDollar[1].opts.commas, protoDollar[2].opt.Runes...) protoVAL.opts = protoDollar[1].opts } - case 128: + case 140: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.opt = newNodeWithRunes(protoDollar[1].optRaw) } - case 129: + case 141: protoDollar = protoS[protopt-1 : protopt+1] { protolex.(*protoLex).Error("unexpected ','") protoVAL.opt = protoDollar[1].opt } - case 130: + case 142: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.opt = newNodeWithRunes(protoDollar[1].optRaw, protoDollar[2].b) } - case 131: + case 143: protoDollar = protoS[protopt-3 : protopt+1] { optName := ast.NewOptionNameNode(protoDollar[1].optNms.refs, protoDollar[1].optNms.dots) protoVAL.optRaw = ast.NewCompactOptionNode(optName, protoDollar[2].b, protoDollar[3].v) } - case 132: + case 144: protoDollar = protoS[protopt-1 : protopt+1] { optName := ast.NewOptionNameNode(protoDollar[1].optNms.refs, protoDollar[1].optNms.dots) protolex.(*protoLex).Error("compact option must have a value") protoVAL.optRaw = ast.NewCompactOptionNode(optName, nil, nil) } - case 133: + case 145: protoDollar = protoS[protopt-8 : protopt+1] { protoVAL.grp = ast.NewGroupNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id.ToKeyword(), protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, nil, protoDollar[6].b, protoDollar[7].msgElements, protoDollar[8].b) } - case 134: + case 146: protoDollar = protoS[protopt-9 : protopt+1] { protoVAL.grp = ast.NewGroupNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id.ToKeyword(), protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, protoDollar[6].cmpctOpts, protoDollar[7].b, protoDollar[8].msgElements, protoDollar[9].b) } - case 135: + case 147: protoDollar = protoS[protopt-9 : protopt+1] { protoVAL.msgGrp = newNodeWithRunes(ast.NewGroupNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id.ToKeyword(), protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, nil, protoDollar[6].b, protoDollar[7].msgElements, protoDollar[8].b), protoDollar[9].bs...) } - case 136: + case 148: protoDollar = protoS[protopt-10 : protopt+1] { protoVAL.msgGrp = newNodeWithRunes(ast.NewGroupNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id.ToKeyword(), protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, protoDollar[6].cmpctOpts, protoDollar[7].b, protoDollar[8].msgElements, protoDollar[9].b), protoDollar[10].bs...) } - case 137: + case 149: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.oo = newNodeWithRunes(ast.NewOneofNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].b, protoDollar[4].ooElements, protoDollar[5].b), protoDollar[6].bs...) } - case 138: + case 150: protoDollar = protoS[protopt-0 : protopt+1] { protoVAL.ooElements = nil } - case 140: + case 152: protoDollar = protoS[protopt-2 : protopt+1] { if protoDollar[2].ooElement != nil { @@ -1928,7 +2028,7 @@ protodefault: protoVAL.ooElements = protoDollar[1].ooElements } } - case 141: + case 153: protoDollar = protoS[protopt-1 : protopt+1] { if protoDollar[1].ooElement != nil { @@ -1937,367 +2037,367 @@ protodefault: protoVAL.ooElements = nil } } - case 142: + case 154: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.ooElement = protoDollar[1].optRaw } - case 143: + case 155: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.ooElement = protoDollar[1].fld } - case 144: + case 156: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.ooElement = protoDollar[1].grp } - case 145: + case 157: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.ooElement = nil } - case 146: + case 158: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.ooElement = nil } - case 147: + case 159: protoDollar = protoS[protopt-5 : protopt+1] { protoVAL.fld = ast.NewFieldNode(nil, protoDollar[1].tid, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, nil, protoDollar[5].b) } - case 148: + case 160: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.fld = ast.NewFieldNode(nil, protoDollar[1].tid, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, protoDollar[5].cmpctOpts, protoDollar[6].b) } - case 149: + case 161: protoDollar = protoS[protopt-7 : protopt+1] { protoVAL.grp = ast.NewGroupNode(nil, protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, nil, protoDollar[5].b, protoDollar[6].msgElements, protoDollar[7].b) } - case 150: + case 162: protoDollar = protoS[protopt-8 : protopt+1] { protoVAL.grp = ast.NewGroupNode(nil, protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, protoDollar[5].cmpctOpts, protoDollar[6].b, protoDollar[7].msgElements, protoDollar[8].b) } - case 151: + case 163: protoDollar = protoS[protopt-5 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[5].bs) protoVAL.mapFld = newNodeWithRunes(ast.NewMapFieldNode(protoDollar[1].mapType, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, nil, semi), extra...) } - case 152: + case 164: protoDollar = protoS[protopt-6 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[6].bs) protoVAL.mapFld = newNodeWithRunes(ast.NewMapFieldNode(protoDollar[1].mapType, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, protoDollar[5].cmpctOpts, semi), extra...) } - case 153: + case 165: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.mapType = ast.NewMapTypeNode(protoDollar[1].id.ToKeyword(), protoDollar[2].b, protoDollar[3].id, protoDollar[4].b, protoDollar[5].tid, protoDollar[6].b) } - case 166: + case 178: protoDollar = protoS[protopt-4 : protopt+1] { // TODO: Tolerate a missing semicolon here. This currnelty creates a shift/reduce conflict // between `extensions 1 to 10` and `extensions 1` followed by `to = 10`. protoVAL.ext = newNodeWithRunes(ast.NewExtensionRangeNode(protoDollar[1].id.ToKeyword(), protoDollar[2].rngs.ranges, protoDollar[2].rngs.commas, nil, protoDollar[3].b), protoDollar[4].bs...) } - case 167: + case 179: protoDollar = protoS[protopt-4 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[4].bs) protoVAL.ext = newNodeWithRunes(ast.NewExtensionRangeNode(protoDollar[1].id.ToKeyword(), protoDollar[2].rngs.ranges, protoDollar[2].rngs.commas, protoDollar[3].cmpctOpts, semi), extra...) } - case 168: + case 180: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.rngs = &rangeSlices{ranges: []*ast.RangeNode{protoDollar[1].rng}} } - case 169: + case 181: protoDollar = protoS[protopt-3 : protopt+1] { protoDollar[1].rngs.ranges = append(protoDollar[1].rngs.ranges, protoDollar[3].rng) protoDollar[1].rngs.commas = append(protoDollar[1].rngs.commas, protoDollar[2].b) protoVAL.rngs = protoDollar[1].rngs } - case 170: + case 182: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.rng = ast.NewRangeNode(protoDollar[1].i, nil, nil, nil) } - case 171: + case 183: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.rng = ast.NewRangeNode(protoDollar[1].i, protoDollar[2].id.ToKeyword(), protoDollar[3].i, nil) } - case 172: + case 184: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.rng = ast.NewRangeNode(protoDollar[1].i, protoDollar[2].id.ToKeyword(), nil, protoDollar[3].id.ToKeyword()) } - case 173: + case 185: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.rngs = &rangeSlices{ranges: []*ast.RangeNode{protoDollar[1].rng}} } - case 174: + case 186: protoDollar = protoS[protopt-3 : protopt+1] { protoDollar[1].rngs.ranges = append(protoDollar[1].rngs.ranges, protoDollar[3].rng) protoDollar[1].rngs.commas = append(protoDollar[1].rngs.commas, protoDollar[2].b) protoVAL.rngs = protoDollar[1].rngs } - case 175: + case 187: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.rng = ast.NewRangeNode(protoDollar[1].il, nil, nil, nil) } - case 176: + case 188: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.rng = ast.NewRangeNode(protoDollar[1].il, protoDollar[2].id.ToKeyword(), protoDollar[3].il, nil) } - case 177: + case 189: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.rng = ast.NewRangeNode(protoDollar[1].il, protoDollar[2].id.ToKeyword(), nil, protoDollar[3].id.ToKeyword()) } - case 178: + case 190: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.il = protoDollar[1].i } - case 179: + case 191: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.il = ast.NewNegativeIntLiteralNode(protoDollar[1].b, protoDollar[2].i) } - case 180: + case 192: protoDollar = protoS[protopt-4 : protopt+1] { // TODO: Tolerate a missing semicolon here. This currnelty creates a shift/reduce conflict // between `reserved 1 to 10` and `reserved 1` followed by `to = 10`. protoVAL.resvd = newNodeWithRunes(ast.NewReservedRangesNode(protoDollar[1].id.ToKeyword(), protoDollar[2].rngs.ranges, protoDollar[2].rngs.commas, protoDollar[3].b), protoDollar[4].bs...) } - case 182: + case 194: protoDollar = protoS[protopt-4 : protopt+1] { // TODO: Tolerate a missing semicolon here. This currnelty creates a shift/reduce conflict // between `reserved 1 to 10` and `reserved 1` followed by `to = 10`. protoVAL.resvd = newNodeWithRunes(ast.NewReservedRangesNode(protoDollar[1].id.ToKeyword(), protoDollar[2].rngs.ranges, protoDollar[2].rngs.commas, protoDollar[3].b), protoDollar[4].bs...) } - case 184: + case 196: protoDollar = protoS[protopt-3 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[3].bs) protoVAL.resvd = newNodeWithRunes(ast.NewReservedNamesNode(protoDollar[1].id.ToKeyword(), protoDollar[2].names.names, protoDollar[2].names.commas, semi), extra...) } - case 185: + case 197: protoDollar = protoS[protopt-3 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[3].bs) protoVAL.resvd = newNodeWithRunes(ast.NewReservedIdentifiersNode(protoDollar[1].id.ToKeyword(), protoDollar[2].names.idents, protoDollar[2].names.commas, semi), extra...) } - case 186: + case 198: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.names = &nameSlices{names: []ast.StringValueNode{toStringValueNode(protoDollar[1].str)}} } - case 187: + case 199: protoDollar = protoS[protopt-3 : protopt+1] { protoDollar[1].names.names = append(protoDollar[1].names.names, toStringValueNode(protoDollar[3].str)) protoDollar[1].names.commas = append(protoDollar[1].names.commas, protoDollar[2].b) protoVAL.names = protoDollar[1].names } - case 188: + case 200: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.names = &nameSlices{idents: []*ast.IdentNode{protoDollar[1].id}} } - case 189: + case 201: protoDollar = protoS[protopt-3 : protopt+1] { protoDollar[1].names.idents = append(protoDollar[1].names.idents, protoDollar[3].id) protoDollar[1].names.commas = append(protoDollar[1].names.commas, protoDollar[2].b) protoVAL.names = protoDollar[1].names } - case 190: + case 202: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.en = newNodeWithRunes(ast.NewEnumNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].b, protoDollar[4].enElements, protoDollar[5].b), protoDollar[6].bs...) } - case 191: + case 203: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.enElements = prependRunes(toEnumElement, protoDollar[1].bs, nil) } - case 192: + case 204: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.enElements = prependRunes(toEnumElement, protoDollar[1].bs, protoDollar[2].enElements) } - case 193: + case 205: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.enElements = append(protoDollar[1].enElements, protoDollar[2].enElements...) } - case 194: + case 206: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.enElements = protoDollar[1].enElements } - case 195: + case 207: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.enElements = toElements[ast.EnumElement](toEnumElement, protoDollar[1].opt.Node, protoDollar[1].opt.Runes) } - case 196: + case 208: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.enElements = toElements[ast.EnumElement](toEnumElement, protoDollar[1].env.Node, protoDollar[1].env.Runes) } - case 197: + case 209: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.enElements = toElements[ast.EnumElement](toEnumElement, protoDollar[1].resvd.Node, protoDollar[1].resvd.Runes) } - case 198: + case 210: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.enElements = nil } - case 199: + case 211: protoDollar = protoS[protopt-4 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[4].bs) protoVAL.env = newNodeWithRunes(ast.NewEnumValueNode(protoDollar[1].id, protoDollar[2].b, protoDollar[3].il, nil, semi), extra...) } - case 200: + case 212: protoDollar = protoS[protopt-5 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[5].bs) protoVAL.env = newNodeWithRunes(ast.NewEnumValueNode(protoDollar[1].id, protoDollar[2].b, protoDollar[3].il, protoDollar[4].cmpctOpts, semi), extra...) } - case 201: + case 213: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.msg = newNodeWithRunes(ast.NewMessageNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].b, protoDollar[4].msgElements, protoDollar[5].b), protoDollar[6].bs...) } - case 202: + case 214: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = prependRunes(toMessageElement, protoDollar[1].bs, nil) } - case 203: + case 215: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.msgElements = prependRunes(toMessageElement, protoDollar[1].bs, protoDollar[2].msgElements) } - case 204: + case 216: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.msgElements = append(protoDollar[1].msgElements, protoDollar[2].msgElements...) } - case 205: + case 217: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = protoDollar[1].msgElements } - case 206: + case 218: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = toElements[ast.MessageElement](toMessageElement, protoDollar[1].msgFld.Node, protoDollar[1].msgFld.Runes) } - case 207: + case 219: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = toElements[ast.MessageElement](toMessageElement, protoDollar[1].en.Node, protoDollar[1].en.Runes) } - case 208: + case 220: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = toElements[ast.MessageElement](toMessageElement, protoDollar[1].msg.Node, protoDollar[1].msg.Runes) } - case 209: + case 221: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = toElements[ast.MessageElement](toMessageElement, protoDollar[1].extend.Node, protoDollar[1].extend.Runes) } - case 210: + case 222: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = toElements[ast.MessageElement](toMessageElement, protoDollar[1].ext.Node, protoDollar[1].ext.Runes) } - case 211: + case 223: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = toElements[ast.MessageElement](toMessageElement, protoDollar[1].msgGrp.Node, protoDollar[1].msgGrp.Runes) } - case 212: + case 224: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = toElements[ast.MessageElement](toMessageElement, protoDollar[1].opt.Node, protoDollar[1].opt.Runes) } - case 213: + case 225: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = toElements[ast.MessageElement](toMessageElement, protoDollar[1].oo.Node, protoDollar[1].oo.Runes) } - case 214: + case 226: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = toElements[ast.MessageElement](toMessageElement, protoDollar[1].mapFld.Node, protoDollar[1].mapFld.Runes) } - case 215: + case 227: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = toElements[ast.MessageElement](toMessageElement, protoDollar[1].resvd.Node, protoDollar[1].resvd.Runes) } - case 216: + case 228: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.msgElements = nil } - case 217: + case 229: protoDollar = protoS[protopt-6 : protopt+1] { semis, extra := protolex.(*protoLex).requireSemicolon(protoDollar[6].bs) protoVAL.msgFld = newNodeWithRunes(ast.NewFieldNode(protoDollar[1].id.ToKeyword(), protoDollar[2].tid, protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, nil, semis), extra...) } - case 218: + case 230: protoDollar = protoS[protopt-7 : protopt+1] { semis, extra := protolex.(*protoLex).requireSemicolon(protoDollar[7].bs) protoVAL.msgFld = newNodeWithRunes(ast.NewFieldNode(protoDollar[1].id.ToKeyword(), protoDollar[2].tid, protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, protoDollar[6].cmpctOpts, semis), extra...) } - case 219: + case 231: protoDollar = protoS[protopt-5 : protopt+1] { semis, extra := protolex.(*protoLex).requireSemicolon(protoDollar[5].bs) protoVAL.msgFld = newNodeWithRunes(ast.NewFieldNode(nil, protoDollar[1].tid, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, nil, semis), extra...) } - case 220: + case 232: protoDollar = protoS[protopt-6 : protopt+1] { semis, extra := protolex.(*protoLex).requireSemicolon(protoDollar[6].bs) protoVAL.msgFld = newNodeWithRunes(ast.NewFieldNode(nil, protoDollar[1].tid, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, protoDollar[5].cmpctOpts, semis), extra...) } - case 221: + case 233: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.extend = newNodeWithRunes(ast.NewExtendNode(protoDollar[1].id.ToKeyword(), protoDollar[2].tid, protoDollar[3].b, protoDollar[4].extElements, protoDollar[5].b), protoDollar[6].bs...) } - case 222: + case 234: protoDollar = protoS[protopt-0 : protopt+1] { protoVAL.extElements = nil } - case 224: + case 236: protoDollar = protoS[protopt-2 : protopt+1] { if protoDollar[2].extElement != nil { @@ -2306,7 +2406,7 @@ protodefault: protoVAL.extElements = protoDollar[1].extElements } } - case 225: + case 237: protoDollar = protoS[protopt-1 : protopt+1] { if protoDollar[1].extElement != nil { @@ -2315,133 +2415,133 @@ protodefault: protoVAL.extElements = nil } } - case 226: + case 238: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.extElement = protoDollar[1].fld } - case 227: + case 239: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.extElement = protoDollar[1].grp } - case 228: + case 240: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.extElement = nil } - case 229: + case 241: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.extElement = nil } - case 230: + case 242: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.fld = ast.NewFieldNode(protoDollar[1].id.ToKeyword(), protoDollar[2].tid, protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, nil, protoDollar[6].b) } - case 231: + case 243: protoDollar = protoS[protopt-7 : protopt+1] { protoVAL.fld = ast.NewFieldNode(protoDollar[1].id.ToKeyword(), protoDollar[2].tid, protoDollar[3].id, protoDollar[4].b, protoDollar[5].i, protoDollar[6].cmpctOpts, protoDollar[7].b) } - case 232: + case 244: protoDollar = protoS[protopt-5 : protopt+1] { protoVAL.fld = ast.NewFieldNode(nil, protoDollar[1].tid, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, nil, protoDollar[5].b) } - case 233: + case 245: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.fld = ast.NewFieldNode(nil, protoDollar[1].tid, protoDollar[2].id, protoDollar[3].b, protoDollar[4].i, protoDollar[5].cmpctOpts, protoDollar[6].b) } - case 234: + case 246: protoDollar = protoS[protopt-6 : protopt+1] { protoVAL.svc = newNodeWithRunes(ast.NewServiceNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].b, protoDollar[4].svcElements, protoDollar[5].b), protoDollar[6].bs...) } - case 235: + case 247: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.svcElements = prependRunes(toServiceElement, protoDollar[1].bs, nil) } - case 236: + case 248: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.svcElements = prependRunes(toServiceElement, protoDollar[1].bs, protoDollar[2].svcElements) } - case 237: + case 249: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.svcElements = append(protoDollar[1].svcElements, protoDollar[2].svcElements...) } - case 238: + case 250: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.svcElements = protoDollar[1].svcElements } - case 239: + case 251: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.svcElements = toElements[ast.ServiceElement](toServiceElement, protoDollar[1].opt.Node, protoDollar[1].opt.Runes) } - case 240: + case 252: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.svcElements = toElements[ast.ServiceElement](toServiceElement, protoDollar[1].mtd.Node, protoDollar[1].mtd.Runes) } - case 241: + case 253: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.svcElements = nil } - case 242: + case 254: protoDollar = protoS[protopt-6 : protopt+1] { semi, extra := protolex.(*protoLex).requireSemicolon(protoDollar[6].bs) protoVAL.mtd = newNodeWithRunes(ast.NewRPCNode(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].mtdMsgType, protoDollar[4].id.ToKeyword(), protoDollar[5].mtdMsgType, semi), extra...) } - case 243: + case 255: protoDollar = protoS[protopt-9 : protopt+1] { protoVAL.mtd = newNodeWithRunes(ast.NewRPCNodeWithBody(protoDollar[1].id.ToKeyword(), protoDollar[2].id, protoDollar[3].mtdMsgType, protoDollar[4].id.ToKeyword(), protoDollar[5].mtdMsgType, protoDollar[6].b, protoDollar[7].mtdElements, protoDollar[8].b), protoDollar[9].bs...) } - case 244: + case 256: protoDollar = protoS[protopt-4 : protopt+1] { protoVAL.mtdMsgType = ast.NewRPCTypeNode(protoDollar[1].b, protoDollar[2].id.ToKeyword(), protoDollar[3].tid, protoDollar[4].b) } - case 245: + case 257: protoDollar = protoS[protopt-3 : protopt+1] { protoVAL.mtdMsgType = ast.NewRPCTypeNode(protoDollar[1].b, nil, protoDollar[2].tid, protoDollar[3].b) } - case 246: + case 258: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.mtdElements = prependRunes(toMethodElement, protoDollar[1].bs, nil) } - case 247: + case 259: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.mtdElements = prependRunes(toMethodElement, protoDollar[1].bs, protoDollar[2].mtdElements) } - case 248: + case 260: protoDollar = protoS[protopt-2 : protopt+1] { protoVAL.mtdElements = append(protoDollar[1].mtdElements, protoDollar[2].mtdElements...) } - case 249: + case 261: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.mtdElements = protoDollar[1].mtdElements } - case 250: + case 262: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.mtdElements = toElements[ast.RPCElement](toMethodElement, protoDollar[1].opt.Node, protoDollar[1].opt.Runes) } - case 251: + case 263: protoDollar = protoS[protopt-1 : protopt+1] { protoVAL.mtdElements = nil