/// Protocol Buffers - Google's data interchange format
// Copyright 2023 Google LLC.  All rights reserved.
//
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file or at
// https://developers.google.com/open-source/licenses/bsd

syntax = "proto2";

package upb_lua_test;

import "google/protobuf/timestamp.proto";

message MapTest {
  map<string, double> map_string_double = 1;
}

message PackedTest {
  repeated bool bool_packed = 1 [packed = true];
  repeated int32 i32_packed = 2 [packed = true];
  repeated int64 i64_packed = 3 [packed = true];
  repeated fixed32 f32_packed = 4 [packed = true];
  repeated fixed64 f64_packed = 5 [packed = true];
}

message UnpackedTest {
  repeated bool bool_packed = 1 [packed = false];
  repeated int32 i32_packed = 2 [packed = false];
  repeated int64 i64_packed = 3 [packed = false];
  repeated fixed32 f32_packed = 4 [packed = false];
  repeated fixed64 f64_packed = 5 [packed = false];
}

message TestLargeFieldNumber {
  optional int32 i32 = 456214797;
}

message TestTimestamp {
  optional google.protobuf.Timestamp ts = 1;
}

message HelloRequest {
  optional uint32 id = 1;
  optional uint32 random_name_a0 = 2;
  optional uint32 random_name_a1 = 3;
  optional uint32 random_name_a2 = 4;
  optional uint32 random_name_a3 = 5;
  optional uint32 random_name_a4 = 6;
  optional uint32 random_name_a5 = 7;
  optional uint32 random_name_a6 = 8;
  optional uint32 random_name_a7 = 9;
  optional uint32 random_name_a8 = 10;
  optional uint32 random_name_a9 = 11;
  optional uint32 random_name_b0 = 12;
  optional uint32 random_name_b1 = 13;
  optional uint32 random_name_b2 = 14;
  optional uint32 random_name_b3 = 15;
  optional uint32 random_name_b4 = 16;
  optional uint32 random_name_b5 = 17;
  optional uint32 random_name_b6 = 18;
  optional uint32 random_name_b7 = 19;
  optional uint32 random_name_b8 = 20;
  optional uint32 random_name_b9 = 21;
  optional uint32 random_name_c0 = 22;
  optional uint32 random_name_c1 = 23;
  optional uint32 random_name_c2 = 24;
  optional uint32 random_name_c3 = 25;
  optional uint32 random_name_c4 = 26;
  optional uint32 random_name_c5 = 27;
  optional uint32 random_name_c6 = 28;
  optional uint32 random_name_c7 = 29;
  optional uint32 random_name_c8 = 30;
  optional uint32 random_name_c9 = 31;
  optional string version = 32;
}
