github.com/google/cloudprober@v0.11.3/servers/proto/config.pb.go (about)

     1  // Code generated by protoc-gen-go. DO NOT EDIT.
     2  // versions:
     3  // 	protoc-gen-go v1.26.0
     4  // 	protoc        v3.17.3
     5  // source: github.com/google/cloudprober/servers/proto/config.proto
     6  
     7  package proto
     8  
     9  import (
    10  	proto3 "github.com/google/cloudprober/servers/external/proto"
    11  	proto2 "github.com/google/cloudprober/servers/grpc/proto"
    12  	proto "github.com/google/cloudprober/servers/http/proto"
    13  	proto1 "github.com/google/cloudprober/servers/udp/proto"
    14  	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
    15  	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
    16  	reflect "reflect"
    17  	sync "sync"
    18  )
    19  
    20  const (
    21  	// Verify that this generated code is sufficiently up-to-date.
    22  	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
    23  	// Verify that runtime/protoimpl is sufficiently up-to-date.
    24  	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
    25  )
    26  
    27  type ServerDef_Type int32
    28  
    29  const (
    30  	ServerDef_HTTP     ServerDef_Type = 0
    31  	ServerDef_UDP      ServerDef_Type = 1
    32  	ServerDef_GRPC     ServerDef_Type = 2
    33  	ServerDef_EXTERNAL ServerDef_Type = 3
    34  )
    35  
    36  // Enum value maps for ServerDef_Type.
    37  var (
    38  	ServerDef_Type_name = map[int32]string{
    39  		0: "HTTP",
    40  		1: "UDP",
    41  		2: "GRPC",
    42  		3: "EXTERNAL",
    43  	}
    44  	ServerDef_Type_value = map[string]int32{
    45  		"HTTP":     0,
    46  		"UDP":      1,
    47  		"GRPC":     2,
    48  		"EXTERNAL": 3,
    49  	}
    50  )
    51  
    52  func (x ServerDef_Type) Enum() *ServerDef_Type {
    53  	p := new(ServerDef_Type)
    54  	*p = x
    55  	return p
    56  }
    57  
    58  func (x ServerDef_Type) String() string {
    59  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
    60  }
    61  
    62  func (ServerDef_Type) Descriptor() protoreflect.EnumDescriptor {
    63  	return file_github_com_google_cloudprober_servers_proto_config_proto_enumTypes[0].Descriptor()
    64  }
    65  
    66  func (ServerDef_Type) Type() protoreflect.EnumType {
    67  	return &file_github_com_google_cloudprober_servers_proto_config_proto_enumTypes[0]
    68  }
    69  
    70  func (x ServerDef_Type) Number() protoreflect.EnumNumber {
    71  	return protoreflect.EnumNumber(x)
    72  }
    73  
    74  // Deprecated: Do not use.
    75  func (x *ServerDef_Type) UnmarshalJSON(b []byte) error {
    76  	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
    77  	if err != nil {
    78  		return err
    79  	}
    80  	*x = ServerDef_Type(num)
    81  	return nil
    82  }
    83  
    84  // Deprecated: Use ServerDef_Type.Descriptor instead.
    85  func (ServerDef_Type) EnumDescriptor() ([]byte, []int) {
    86  	return file_github_com_google_cloudprober_servers_proto_config_proto_rawDescGZIP(), []int{0, 0}
    87  }
    88  
    89  type ServerDef struct {
    90  	state         protoimpl.MessageState
    91  	sizeCache     protoimpl.SizeCache
    92  	unknownFields protoimpl.UnknownFields
    93  
    94  	Type *ServerDef_Type `protobuf:"varint,1,req,name=type,enum=cloudprober.servers.ServerDef_Type" json:"type,omitempty"`
    95  	// Types that are assignable to Server:
    96  	//	*ServerDef_HttpServer
    97  	//	*ServerDef_UdpServer
    98  	//	*ServerDef_GrpcServer
    99  	//	*ServerDef_ExternalServer
   100  	Server isServerDef_Server `protobuf_oneof:"server"`
   101  }
   102  
   103  func (x *ServerDef) Reset() {
   104  	*x = ServerDef{}
   105  	if protoimpl.UnsafeEnabled {
   106  		mi := &file_github_com_google_cloudprober_servers_proto_config_proto_msgTypes[0]
   107  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   108  		ms.StoreMessageInfo(mi)
   109  	}
   110  }
   111  
   112  func (x *ServerDef) String() string {
   113  	return protoimpl.X.MessageStringOf(x)
   114  }
   115  
   116  func (*ServerDef) ProtoMessage() {}
   117  
   118  func (x *ServerDef) ProtoReflect() protoreflect.Message {
   119  	mi := &file_github_com_google_cloudprober_servers_proto_config_proto_msgTypes[0]
   120  	if protoimpl.UnsafeEnabled && x != nil {
   121  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   122  		if ms.LoadMessageInfo() == nil {
   123  			ms.StoreMessageInfo(mi)
   124  		}
   125  		return ms
   126  	}
   127  	return mi.MessageOf(x)
   128  }
   129  
   130  // Deprecated: Use ServerDef.ProtoReflect.Descriptor instead.
   131  func (*ServerDef) Descriptor() ([]byte, []int) {
   132  	return file_github_com_google_cloudprober_servers_proto_config_proto_rawDescGZIP(), []int{0}
   133  }
   134  
   135  func (x *ServerDef) GetType() ServerDef_Type {
   136  	if x != nil && x.Type != nil {
   137  		return *x.Type
   138  	}
   139  	return ServerDef_HTTP
   140  }
   141  
   142  func (m *ServerDef) GetServer() isServerDef_Server {
   143  	if m != nil {
   144  		return m.Server
   145  	}
   146  	return nil
   147  }
   148  
   149  func (x *ServerDef) GetHttpServer() *proto.ServerConf {
   150  	if x, ok := x.GetServer().(*ServerDef_HttpServer); ok {
   151  		return x.HttpServer
   152  	}
   153  	return nil
   154  }
   155  
   156  func (x *ServerDef) GetUdpServer() *proto1.ServerConf {
   157  	if x, ok := x.GetServer().(*ServerDef_UdpServer); ok {
   158  		return x.UdpServer
   159  	}
   160  	return nil
   161  }
   162  
   163  func (x *ServerDef) GetGrpcServer() *proto2.ServerConf {
   164  	if x, ok := x.GetServer().(*ServerDef_GrpcServer); ok {
   165  		return x.GrpcServer
   166  	}
   167  	return nil
   168  }
   169  
   170  func (x *ServerDef) GetExternalServer() *proto3.ServerConf {
   171  	if x, ok := x.GetServer().(*ServerDef_ExternalServer); ok {
   172  		return x.ExternalServer
   173  	}
   174  	return nil
   175  }
   176  
   177  type isServerDef_Server interface {
   178  	isServerDef_Server()
   179  }
   180  
   181  type ServerDef_HttpServer struct {
   182  	HttpServer *proto.ServerConf `protobuf:"bytes,2,opt,name=http_server,json=httpServer,oneof"`
   183  }
   184  
   185  type ServerDef_UdpServer struct {
   186  	UdpServer *proto1.ServerConf `protobuf:"bytes,3,opt,name=udp_server,json=udpServer,oneof"`
   187  }
   188  
   189  type ServerDef_GrpcServer struct {
   190  	GrpcServer *proto2.ServerConf `protobuf:"bytes,4,opt,name=grpc_server,json=grpcServer,oneof"`
   191  }
   192  
   193  type ServerDef_ExternalServer struct {
   194  	ExternalServer *proto3.ServerConf `protobuf:"bytes,5,opt,name=external_server,json=externalServer,oneof"`
   195  }
   196  
   197  func (*ServerDef_HttpServer) isServerDef_Server() {}
   198  
   199  func (*ServerDef_UdpServer) isServerDef_Server() {}
   200  
   201  func (*ServerDef_GrpcServer) isServerDef_Server() {}
   202  
   203  func (*ServerDef_ExternalServer) isServerDef_Server() {}
   204  
   205  var File_github_com_google_cloudprober_servers_proto_config_proto protoreflect.FileDescriptor
   206  
   207  var file_github_com_google_cloudprober_servers_proto_config_proto_rawDesc = []byte{
   208  	0x0a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6f,
   209  	0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x72, 0x2f,
   210  	0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f,
   211  	0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x63, 0x6c, 0x6f, 0x75,
   212  	0x64, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x72, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x1a,
   213  	0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6f, 0x67,
   214  	0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x72, 0x2f, 0x73,
   215  	0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x70, 0x72, 0x6f, 0x74,
   216  	0x6f, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3d,
   217  	0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
   218  	0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x72, 0x2f, 0x73, 0x65,
   219  	0x72, 0x76, 0x65, 0x72, 0x73, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
   220  	0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3c, 0x67,
   221  	0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
   222  	0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x72, 0x2f, 0x73, 0x65, 0x72,
   223  	0x76, 0x65, 0x72, 0x73, 0x2f, 0x75, 0x64, 0x70, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63,
   224  	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x41, 0x67, 0x69, 0x74,
   225  	0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63,
   226  	0x6c, 0x6f, 0x75, 0x64, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x72, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65,
   227  	0x72, 0x73, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74,
   228  	0x6f, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xae,
   229  	0x03, 0x0a, 0x09, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x44, 0x65, 0x66, 0x12, 0x37, 0x0a, 0x04,
   230  	0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x63, 0x6c, 0x6f,
   231  	0x75, 0x64, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x72, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73,
   232  	0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x44, 0x65, 0x66, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52,
   233  	0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x47, 0x0a, 0x0b, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x73, 0x65,
   234  	0x72, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x6c, 0x6f,
   235  	0x75, 0x64, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x72, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73,
   236  	0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66,
   237  	0x48, 0x00, 0x52, 0x0a, 0x68, 0x74, 0x74, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x44,
   238  	0x0a, 0x0a, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01,
   239  	0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x72,
   240  	0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x2e, 0x75, 0x64, 0x70, 0x2e, 0x53, 0x65, 0x72,
   241  	0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x48, 0x00, 0x52, 0x09, 0x75, 0x64, 0x70, 0x53, 0x65,
   242  	0x72, 0x76, 0x65, 0x72, 0x12, 0x47, 0x0a, 0x0b, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x73, 0x65, 0x72,
   243  	0x76, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
   244  	0x64, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x72, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x2e,
   245  	0x67, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x48,
   246  	0x00, 0x52, 0x0a, 0x67, 0x72, 0x70, 0x63, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x53, 0x0a,
   247  	0x0f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
   248  	0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x70, 0x72,
   249  	0x6f, 0x62, 0x65, 0x72, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x2e, 0x65, 0x78, 0x74,
   250  	0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66,
   251  	0x48, 0x00, 0x52, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76,
   252  	0x65, 0x72, 0x22, 0x31, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x54,
   253  	0x54, 0x50, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x55, 0x44, 0x50, 0x10, 0x01, 0x12, 0x08, 0x0a,
   254  	0x04, 0x47, 0x52, 0x50, 0x43, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x54, 0x45, 0x52,
   255  	0x4e, 0x41, 0x4c, 0x10, 0x03, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x42,
   256  	0x2d, 0x5a, 0x2b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f,
   257  	0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x72,
   258  	0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
   259  }
   260  
   261  var (
   262  	file_github_com_google_cloudprober_servers_proto_config_proto_rawDescOnce sync.Once
   263  	file_github_com_google_cloudprober_servers_proto_config_proto_rawDescData = file_github_com_google_cloudprober_servers_proto_config_proto_rawDesc
   264  )
   265  
   266  func file_github_com_google_cloudprober_servers_proto_config_proto_rawDescGZIP() []byte {
   267  	file_github_com_google_cloudprober_servers_proto_config_proto_rawDescOnce.Do(func() {
   268  		file_github_com_google_cloudprober_servers_proto_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_github_com_google_cloudprober_servers_proto_config_proto_rawDescData)
   269  	})
   270  	return file_github_com_google_cloudprober_servers_proto_config_proto_rawDescData
   271  }
   272  
   273  var file_github_com_google_cloudprober_servers_proto_config_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
   274  var file_github_com_google_cloudprober_servers_proto_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
   275  var file_github_com_google_cloudprober_servers_proto_config_proto_goTypes = []interface{}{
   276  	(ServerDef_Type)(0),       // 0: cloudprober.servers.ServerDef.Type
   277  	(*ServerDef)(nil),         // 1: cloudprober.servers.ServerDef
   278  	(*proto.ServerConf)(nil),  // 2: cloudprober.servers.http.ServerConf
   279  	(*proto1.ServerConf)(nil), // 3: cloudprober.servers.udp.ServerConf
   280  	(*proto2.ServerConf)(nil), // 4: cloudprober.servers.grpc.ServerConf
   281  	(*proto3.ServerConf)(nil), // 5: cloudprober.servers.external.ServerConf
   282  }
   283  var file_github_com_google_cloudprober_servers_proto_config_proto_depIdxs = []int32{
   284  	0, // 0: cloudprober.servers.ServerDef.type:type_name -> cloudprober.servers.ServerDef.Type
   285  	2, // 1: cloudprober.servers.ServerDef.http_server:type_name -> cloudprober.servers.http.ServerConf
   286  	3, // 2: cloudprober.servers.ServerDef.udp_server:type_name -> cloudprober.servers.udp.ServerConf
   287  	4, // 3: cloudprober.servers.ServerDef.grpc_server:type_name -> cloudprober.servers.grpc.ServerConf
   288  	5, // 4: cloudprober.servers.ServerDef.external_server:type_name -> cloudprober.servers.external.ServerConf
   289  	5, // [5:5] is the sub-list for method output_type
   290  	5, // [5:5] is the sub-list for method input_type
   291  	5, // [5:5] is the sub-list for extension type_name
   292  	5, // [5:5] is the sub-list for extension extendee
   293  	0, // [0:5] is the sub-list for field type_name
   294  }
   295  
   296  func init() { file_github_com_google_cloudprober_servers_proto_config_proto_init() }
   297  func file_github_com_google_cloudprober_servers_proto_config_proto_init() {
   298  	if File_github_com_google_cloudprober_servers_proto_config_proto != nil {
   299  		return
   300  	}
   301  	if !protoimpl.UnsafeEnabled {
   302  		file_github_com_google_cloudprober_servers_proto_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
   303  			switch v := v.(*ServerDef); i {
   304  			case 0:
   305  				return &v.state
   306  			case 1:
   307  				return &v.sizeCache
   308  			case 2:
   309  				return &v.unknownFields
   310  			default:
   311  				return nil
   312  			}
   313  		}
   314  	}
   315  	file_github_com_google_cloudprober_servers_proto_config_proto_msgTypes[0].OneofWrappers = []interface{}{
   316  		(*ServerDef_HttpServer)(nil),
   317  		(*ServerDef_UdpServer)(nil),
   318  		(*ServerDef_GrpcServer)(nil),
   319  		(*ServerDef_ExternalServer)(nil),
   320  	}
   321  	type x struct{}
   322  	out := protoimpl.TypeBuilder{
   323  		File: protoimpl.DescBuilder{
   324  			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
   325  			RawDescriptor: file_github_com_google_cloudprober_servers_proto_config_proto_rawDesc,
   326  			NumEnums:      1,
   327  			NumMessages:   1,
   328  			NumExtensions: 0,
   329  			NumServices:   0,
   330  		},
   331  		GoTypes:           file_github_com_google_cloudprober_servers_proto_config_proto_goTypes,
   332  		DependencyIndexes: file_github_com_google_cloudprober_servers_proto_config_proto_depIdxs,
   333  		EnumInfos:         file_github_com_google_cloudprober_servers_proto_config_proto_enumTypes,
   334  		MessageInfos:      file_github_com_google_cloudprober_servers_proto_config_proto_msgTypes,
   335  	}.Build()
   336  	File_github_com_google_cloudprober_servers_proto_config_proto = out.File
   337  	file_github_com_google_cloudprober_servers_proto_config_proto_rawDesc = nil
   338  	file_github_com_google_cloudprober_servers_proto_config_proto_goTypes = nil
   339  	file_github_com_google_cloudprober_servers_proto_config_proto_depIdxs = nil
   340  }