// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
// for details. 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 a46.a47.a1.a48.a49.a4;
message A99 {
  optional double a50 = 1;
  optional int32 a51 = 2;
  optional string a52 = 3;
  repeated string a53 = 4;
  optional string a54 = 5;
  optional string a55 = 6;
  optional string a56 = 7;
}
message A100 {
  optional double a50 = 1;
  optional int32 a51 = 2;
  optional string a52 = 3;
  optional string a57 = 4;
  optional string a54 = 5;
  optional bool a58 = 6;
  optional float a59 = 7;
  optional string a60 = 8;
}
message A101 {
  optional string a52 = 1;
  optional string a54 = 2;
  optional string a61 = 3;
  optional int64 a62 = 4;
  optional int64 a63 = 5;
  optional string a64 = 6;
  optional int64 a65 = 7;
  optional int64 a66 = 8;
  optional bool a67 = 9;
}
