// Copyright 2018 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

syntax = "proto2";

package google.golang.org.proto2_20180430;
option go_package = "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20180430_b4deda09";

enum SiblingEnum {
	ALPHA   = 0;
	BRAVO   = 10;
	CHARLIE = 200;
}

message SiblingMessage {
	optional string  f1 = 1;
	required string  f2 = 2;
	repeated string  f3 = 3;
	optional Message f4 = 4;
}

message Message {
	enum ChildEnum {
		ALPHA   = 0;
		BRAVO   = 1;
		CHARLIE = 2;
	}
	message ChildMessage {
		optional string  f1 = 1;
		required string  f2 = 2;
		repeated string  f3 = 3;
	    optional Message f4 = 4;
	}
	optional group NamedGroup = 1 {
		optional string  f1 = 1;
		required string  f2 = 2;
		repeated string  f3 = 3;
	    optional Message f4 = 4;
	}

	// Optional fields.
	optional bool     optional_bool     = 100;
	optional int32    optional_int32    = 101;
	optional sint32   optional_sint32   = 102;
	optional uint32   optional_uint32   = 103;
	optional int64    optional_int64    = 104;
	optional sint64   optional_sint64   = 105;
	optional uint64   optional_uint64   = 106;
	optional fixed32  optional_fixed32  = 107;
	optional sfixed32 optional_sfixed32 = 108;
	optional float    optional_float    = 109;
	optional fixed64  optional_fixed64  = 110;
	optional sfixed64 optional_sfixed64 = 111;
	optional double   optional_double   = 112;
	optional string   optional_string   = 113;
	optional bytes    optional_bytes    = 114;

	optional ChildEnum      optional_child_enum      = 115;
	optional ChildMessage   optional_child_message   = 116;
	optional NamedGroup     optional_named_group     = 117;
	optional SiblingEnum    optional_sibling_enum    = 118;
	optional SiblingMessage optional_sibling_message = 119;
	optional group OptionalGroup = 120 {
		optional string f1 = 1;
		required string f2 = 2;
		repeated string f3 = 3;
	}

	// Optional default fields.
	optional bool      defaulted_bool     = 200 [default = true];
	optional int32     defaulted_int32    = 201 [default = -12345];
	optional sint32    defaulted_sint32   = 202 [default = -3200];
	optional uint32    defaulted_uint32   = 203 [default = 3200];
	optional int64     defaulted_int64    = 204 [default = -123456789];
	optional sint64    defaulted_sint64   = 205 [default = -6400];
	optional uint64    defaulted_uint64   = 206 [default = 6400];
	optional fixed32   defaulted_fixed32  = 207 [default = 320000];
	optional sfixed32  defaulted_sfixed32 = 208 [default = -320000];
	optional float     defaulted_float    = 209 [default = 3.14159];
	optional fixed64   defaulted_fixed64  = 210 [default = 640000];
	optional sfixed64  defaulted_sfixed64 = 211 [default = -640000];
	optional double    defaulted_double   = 212 [default = 3.14159265359];
	optional string    defaulted_string   = 213 [default = "hello, \"world!\"\n"];
	optional bytes     defaulted_bytes    = 214 [default = "dead\xde\xad\xbe\xefbeef"];

	optional ChildEnum   defaulted_child_enum   = 215 [default = ALPHA];
	optional SiblingEnum defaulted_sibling_enum = 216 [default = ALPHA];

	// Required fields.
	required bool     required_bool     = 300;
	required int32    required_int32    = 301;
	required sint32   required_sint32   = 302;
	required uint32   required_uint32   = 303;
	required int64    required_int64    = 304;
	required sint64   required_sint64   = 305;
	required uint64   required_uint64   = 306;
	required fixed32  required_fixed32  = 307;
	required sfixed32 required_sfixed32 = 308;
	required float    required_float    = 309;
	required fixed64  required_fixed64  = 310;
	required sfixed64 required_sfixed64 = 311;
	required double   required_double   = 312;
	required string   required_string   = 313;
	required bytes    required_bytes    = 314;

	required ChildEnum      required_child_enum      = 315;
	required ChildMessage   required_child_message   = 316;
	required NamedGroup     required_named_group     = 317;
	required SiblingEnum    required_sibling_enum    = 318;
	required SiblingMessage required_sibling_message = 319;
	required group RequiredGroup = 320 {
		optional string f1 = 1;
		required string f2 = 2;
		repeated string f3 = 3;
	}
	// Required default fields.
	required bool      required_defaulted_bool     = 400 [default = true];
	required int32     required_defaulted_int32    = 401 [default = -12345];
	required sint32    required_defaulted_sint32   = 402 [default = -3200];
	required uint32    required_defaulted_uint32   = 403 [default = 3200];
	required int64     required_defaulted_int64    = 404 [default = -123456789];
	required sint64    required_defaulted_sint64   = 405 [default = -6400];
	required uint64    required_defaulted_uint64   = 406 [default = 6400];
	required fixed32   required_defaulted_fixed32  = 407 [default = 320000];
	required sfixed32  required_defaulted_sfixed32 = 408 [default = -320000];
	required float     required_defaulted_float    = 409 [default = 3.14159];
	required fixed64   required_defaulted_fixed64  = 410 [default = 640000];
	required sfixed64  required_defaulted_sfixed64 = 411 [default = -640000];
	required double    required_defaulted_double   = 412 [default = 3.14159265359];
	required string    required_defaulted_string   = 413 [default = "hello, \"world!\"\n"];
	required bytes     required_defaulted_bytes    = 414 [default = "dead\xde\xad\xbe\xefbeef"];

	required ChildEnum   required_defaulted_child_enum   = 415 [default = ALPHA];
	required SiblingEnum required_defaulted_sibling_enum = 416 [default = ALPHA];

	// Repeated fields.
	repeated bool     repeated_bool     = 500;
	repeated int32    repeated_int32    = 501;
	repeated sint32   repeated_sint32   = 502;
	repeated uint32   repeated_uint32   = 503;
	repeated int64    repeated_int64    = 504;
	repeated sint64   repeated_sint64   = 505;
	repeated uint64   repeated_uint64   = 506;
	repeated fixed32  repeated_fixed32  = 507;
	repeated sfixed32 repeated_sfixed32 = 508;
	repeated float    repeated_float    = 509;
	repeated fixed64  repeated_fixed64  = 510;
	repeated sfixed64 repeated_sfixed64 = 511;
	repeated double   repeated_double   = 512;
	repeated string   repeated_string   = 513;
	repeated bytes    repeated_bytes    = 514;

	repeated ChildEnum      repeated_child_enum      = 515;
	repeated ChildMessage   repeated_child_message   = 516;
	repeated NamedGroup     repeated_named_group     = 517;
	repeated SiblingEnum    repeated_sibling_enum    = 518;
	repeated SiblingMessage repeated_sibling_message = 519;
	repeated group RepeatedGroup = 520 {
		optional string f1 = 1;
		required string f2 = 2;
		repeated string f3 = 3;
	}

	// Map fields.
	map<bool, bool>     map_bool_bool     = 600;
	map<bool, int32>    map_bool_int32    = 601;
	map<bool, sint32>   map_bool_sint32   = 602;
	map<bool, uint32>   map_bool_uint32   = 603;
	map<bool, int64>    map_bool_int64    = 604;
	map<bool, sint64>   map_bool_sint64   = 605;
	map<bool, uint64>   map_bool_uint64   = 606;
	map<bool, fixed32>  map_bool_fixed32  = 607;
	map<bool, sfixed32> map_bool_sfixed32 = 608;
	map<bool, float>    map_bool_float    = 609;
	map<bool, fixed64>  map_bool_fixed64  = 610;
	map<bool, sfixed64> map_bool_sfixed64 = 611;
	map<bool, double>   map_bool_double   = 612;
	map<bool, string>   map_bool_string   = 613;
	map<bool, bytes>    map_bool_bytes    = 614;

	map<bool, ChildEnum>      map_bool_child_enum      = 615;
	map<bool, ChildMessage>   map_bool_child_message   = 616;
	map<bool, NamedGroup>     map_bool_named_group     = 617;
	map<bool, SiblingEnum>    map_bool_sibling_enum    = 618;
	map<bool, SiblingMessage> map_bool_sibling_message = 619;

	map<int32, bool>   map_int32_bool   = 620;
	map<sint32, bool>  map_sint32_bool  = 621;
	map<uint32, bool>  map_uint32_bool  = 622;
	map<int64, bool>   map_int64_bool   = 623;
	map<sint64, bool>  map_sint64_bool  = 624;
	map<uint64, bool>  map_uint64_bool  = 625;
	map<fixed32, bool> map_fixed32_bool = 626;
	map<string, bool>  map_string_bool  = 627;

	// Oneof fields.
	oneof oneof_union {
		bool     oneof_bool     = 700;
		int32    oneof_int32    = 701;
		sint32   oneof_sint32   = 702;
		uint32   oneof_uint32   = 703;
		int64    oneof_int64    = 704;
		sint64   oneof_sint64   = 705;
		uint64   oneof_uint64   = 706;
		fixed32  oneof_fixed32  = 707;
		sfixed32 oneof_sfixed32 = 708;
		float    oneof_float    = 709;
		fixed64  oneof_fixed64  = 710;
		sfixed64 oneof_sfixed64 = 711;
		double   oneof_double   = 712;
		string   oneof_string   = 713;
		bytes    oneof_bytes    = 714;

		ChildEnum      oneof_child_enum      = 715;
		ChildMessage   oneof_child_message   = 716;
		NamedGroup     oneof_named_group     = 717;
		SiblingEnum    oneof_sibling_enum    = 718;
		SiblingMessage oneof_sibling_message = 719;
		group OneofGroup = 720 {
			optional string f1 = 1;
			required string f2 = 2;
			repeated string f3 = 3;
		}

		string oneof_string1 = 721;
		string oneof_string2 = 722;
		string oneof_string3 = 723;
	}

	// Oneof default fields.
	oneof oneof_defaulted_union {
		bool      oneof_defaulted_bool     = 800 [default = true];
		int32     oneof_defaulted_int32    = 801 [default = -12345];
		sint32    oneof_defaulted_sint32   = 802 [default = -3200];
		uint32    oneof_defaulted_uint32   = 803 [default = 3200];
		int64     oneof_defaulted_int64    = 804 [default = -123456789];
		sint64    oneof_defaulted_sint64   = 805 [default = -6400];
		uint64    oneof_defaulted_uint64   = 806 [default = 6400];
		fixed32   oneof_defaulted_fixed32  = 807 [default = 320000];
		sfixed32  oneof_defaulted_sfixed32 = 808 [default = -320000];
		float     oneof_defaulted_float    = 809 [default = 3.14159];
		fixed64   oneof_defaulted_fixed64  = 810 [default = 640000];
		sfixed64  oneof_defaulted_sfixed64 = 811 [default = -640000];
		double    oneof_defaulted_double   = 812 [default = 3.14159265359];
		string    oneof_defaulted_string   = 813 [default = "hello, \"world!\"\n"];
		bytes     oneof_defaulted_bytes    = 814 [default = "dead\xde\xad\xbe\xefbeef"];

		ChildEnum   oneof_defaulted_child_enum   = 815 [default = ALPHA];
		SiblingEnum oneof_defaulted_sibling_enum = 816 [default = ALPHA];
	}

	// Extension fields.
	extend Message {
		// Optional fields.
		optional bool     extension_optional_bool     = 10000;
		optional int32    extension_optional_int32    = 10001;
		optional sint32   extension_optional_sint32   = 10002;
		optional uint32   extension_optional_uint32   = 10003;
		optional int64    extension_optional_int64    = 10004;
		optional sint64   extension_optional_sint64   = 10005;
		optional uint64   extension_optional_uint64   = 10006;
		optional fixed32  extension_optional_fixed32  = 10007;
		optional sfixed32 extension_optional_sfixed32 = 10008;
		optional float    extension_optional_float    = 10009;
		optional fixed64  extension_optional_fixed64  = 10010;
		optional sfixed64 extension_optional_sfixed64 = 10011;
		optional double   extension_optional_double   = 10012;
		optional string   extension_optional_string   = 10013;
		optional bytes    extension_optional_bytes    = 10014;

		optional ChildEnum      extension_optional_child_enum      = 10015;
		optional ChildMessage   extension_optional_child_message   = 10016;
		optional NamedGroup     extension_optional_named_group     = 10017;
		optional SiblingEnum    extension_optional_sibling_enum    = 10018;
		optional SiblingMessage extension_optional_sibling_message = 10019;
		optional group ExtensionOptionalGroup = 10020 {
			optional string f1 = 1;
			required string f2 = 2;
			repeated string f3 = 3;
		}

		// Optional default fields.
		optional bool      extension_defaulted_bool     = 20000 [default = true];
		optional int32     extension_defaulted_int32    = 20001 [default = -12345];
		optional sint32    extension_defaulted_sint32   = 20002 [default = -3200];
		optional uint32    extension_defaulted_uint32   = 20003 [default = 3200];
		optional int64     extension_defaulted_int64    = 20004 [default = -123456789];
		optional sint64    extension_defaulted_sint64   = 20005 [default = -6400];
		optional uint64    extension_defaulted_uint64   = 20006 [default = 6400];
		optional fixed32   extension_defaulted_fixed32  = 20007 [default = 320000];
		optional sfixed32  extension_defaulted_sfixed32 = 20008 [default = -320000];
		optional float     extension_defaulted_float    = 20009 [default = 3.14159];
		optional fixed64   extension_defaulted_fixed64  = 20010 [default = 640000];
		optional sfixed64  extension_defaulted_sfixed64 = 20011 [default = -640000];
		optional double    extension_defaulted_double   = 20012 [default = 3.14159265359];
		optional string    extension_defaulted_string   = 20013 [default = "hello, \"world!\"\n"];
		optional bytes     extension_defaulted_bytes    = 20014 [default = "dead\xde\xad\xbe\xefbeef"];

		optional ChildEnum   extension_defaulted_child_enum   = 20015 [default = ALPHA];
		optional SiblingEnum extension_defaulted_sibling_enum = 20016 [default = ALPHA];

		// Repeated fields.
		repeated bool     extension_repeated_bool     = 30000;
		repeated int32    extension_repeated_int32    = 30001;
		repeated sint32   extension_repeated_sint32   = 30002;
		repeated uint32   extension_repeated_uint32   = 30003;
		repeated int64    extension_repeated_int64    = 30004;
		repeated sint64   extension_repeated_sint64   = 30005;
		repeated uint64   extension_repeated_uint64   = 30006;
		repeated fixed32  extension_repeated_fixed32  = 30007;
		repeated sfixed32 extension_repeated_sfixed32 = 30008;
		repeated float    extension_repeated_float    = 30009;
		repeated fixed64  extension_repeated_fixed64  = 30010;
		repeated sfixed64 extension_repeated_sfixed64 = 30011;
		repeated double   extension_repeated_double   = 30012;
		repeated string   extension_repeated_string   = 30013;
		repeated bytes    extension_repeated_bytes    = 30014;

		repeated ChildEnum      extension_repeated_child_enum      = 30015;
		repeated ChildMessage   extension_repeated_child_message   = 30016;
		repeated NamedGroup     extension_repeated_named_group     = 30017;
		repeated SiblingEnum    extension_repeated_sibling_enum    = 30018;
		repeated SiblingMessage extension_repeated_sibling_message = 30019;
		repeated group ExtensionRepeatedGroup = 30020 {
			optional string f1 = 1;
			required string f2 = 2;
			repeated string f3 = 3;
		}
	}

	extensions 10000 to max;
}
