/**
 * Copyright (c) 2020-present, Wuba, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.bj58.ailab.dlpredictonline.grpc.tis;

/**
 * @author 58
 */
public final class GrpcService {
  private GrpcService() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  public interface ServerLiveRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.ServerLiveRequest)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message ServerLiveRequest
   *&#64;&#64;
   *&#64;&#64;   Request message for ServerLive.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.ServerLiveRequest}
   */
  public  static final class ServerLiveRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.ServerLiveRequest)
      ServerLiveRequestOrBuilder {
    // Use ServerLiveRequest.newBuilder() to construct.
    private ServerLiveRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ServerLiveRequest() {
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ServerLiveRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_ServerLiveRequest_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_ServerLiveRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.ServerLiveRequest.class, GrpcService.ServerLiveRequest.Builder.class);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.ServerLiveRequest)) {
        return super.equals(obj);
      }
      GrpcService.ServerLiveRequest other = (GrpcService.ServerLiveRequest) obj;

      boolean result = true;
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.ServerLiveRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ServerLiveRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ServerLiveRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ServerLiveRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ServerLiveRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ServerLiveRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ServerLiveRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.ServerLiveRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ServerLiveRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ServerLiveRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.ServerLiveRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message ServerLiveRequest
     *&#64;&#64;
     *&#64;&#64;   Request message for ServerLive.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.ServerLiveRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.ServerLiveRequest)
        GrpcService.ServerLiveRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_ServerLiveRequest_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_ServerLiveRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.ServerLiveRequest.class, GrpcService.ServerLiveRequest.Builder.class);
      }

      // Construct using GrpcService.ServerLiveRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_ServerLiveRequest_descriptor;
      }

      public GrpcService.ServerLiveRequest getDefaultInstanceForType() {
        return GrpcService.ServerLiveRequest.getDefaultInstance();
      }

      public GrpcService.ServerLiveRequest build() {
        GrpcService.ServerLiveRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.ServerLiveRequest buildPartial() {
        GrpcService.ServerLiveRequest result = new GrpcService.ServerLiveRequest(this);
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.ServerLiveRequest) {
          return mergeFrom((GrpcService.ServerLiveRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.ServerLiveRequest other) {
        if (other == GrpcService.ServerLiveRequest.getDefaultInstance()) return this;
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.ServerLiveRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.ServerLiveRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.ServerLiveRequest)
    }

    // @@protoc_insertion_point(class_scope:inference.ServerLiveRequest)
    private static final GrpcService.ServerLiveRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.ServerLiveRequest();
    }

    public static GrpcService.ServerLiveRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ServerLiveRequest>
        PARSER = new com.google.protobuf.AbstractParser<ServerLiveRequest>() {
      public ServerLiveRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new ServerLiveRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ServerLiveRequest> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<ServerLiveRequest> getParserForType() {
      return PARSER;
    }

    public GrpcService.ServerLiveRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ServerLiveResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.ServerLiveResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: bool live
     *&#64;&#64;
     *&#64;&#64;     True if the inference server is live, false it not live.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional bool live = 1;</code>
     */
    boolean getLive();
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message ServerLiveResponse
   *&#64;&#64;
   *&#64;&#64;   Response message for ServerLive.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.ServerLiveResponse}
   */
  public  static final class ServerLiveResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.ServerLiveResponse)
      ServerLiveResponseOrBuilder {
    // Use ServerLiveResponse.newBuilder() to construct.
    private ServerLiveResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ServerLiveResponse() {
      live_ = false;
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ServerLiveResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 8: {

              live_ = input.readBool();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_ServerLiveResponse_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_ServerLiveResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.ServerLiveResponse.class, GrpcService.ServerLiveResponse.Builder.class);
    }

    public static final int LIVE_FIELD_NUMBER = 1;
    private boolean live_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: bool live
     *&#64;&#64;
     *&#64;&#64;     True if the inference server is live, false it not live.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional bool live = 1;</code>
     */
    public boolean getLive() {
      return live_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (live_ != false) {
        output.writeBool(1, live_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (live_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, live_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.ServerLiveResponse)) {
        return super.equals(obj);
      }
      GrpcService.ServerLiveResponse other = (GrpcService.ServerLiveResponse) obj;

      boolean result = true;
      result = result && (getLive()
          == other.getLive());
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (37 * hash) + LIVE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getLive());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.ServerLiveResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ServerLiveResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ServerLiveResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ServerLiveResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ServerLiveResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ServerLiveResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ServerLiveResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.ServerLiveResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ServerLiveResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ServerLiveResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.ServerLiveResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message ServerLiveResponse
     *&#64;&#64;
     *&#64;&#64;   Response message for ServerLive.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.ServerLiveResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.ServerLiveResponse)
        GrpcService.ServerLiveResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_ServerLiveResponse_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_ServerLiveResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.ServerLiveResponse.class, GrpcService.ServerLiveResponse.Builder.class);
      }

      // Construct using GrpcService.ServerLiveResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        live_ = false;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_ServerLiveResponse_descriptor;
      }

      public GrpcService.ServerLiveResponse getDefaultInstanceForType() {
        return GrpcService.ServerLiveResponse.getDefaultInstance();
      }

      public GrpcService.ServerLiveResponse build() {
        GrpcService.ServerLiveResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.ServerLiveResponse buildPartial() {
        GrpcService.ServerLiveResponse result = new GrpcService.ServerLiveResponse(this);
        result.live_ = live_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.ServerLiveResponse) {
          return mergeFrom((GrpcService.ServerLiveResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.ServerLiveResponse other) {
        if (other == GrpcService.ServerLiveResponse.getDefaultInstance()) return this;
        if (other.getLive() != false) {
          setLive(other.getLive());
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.ServerLiveResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.ServerLiveResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private boolean live_ ;
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bool live
       *&#64;&#64;
       *&#64;&#64;     True if the inference server is live, false it not live.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional bool live = 1;</code>
       */
      public boolean getLive() {
        return live_;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bool live
       *&#64;&#64;
       *&#64;&#64;     True if the inference server is live, false it not live.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional bool live = 1;</code>
       */
      public Builder setLive(boolean value) {

        live_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bool live
       *&#64;&#64;
       *&#64;&#64;     True if the inference server is live, false it not live.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional bool live = 1;</code>
       */
      public Builder clearLive() {

        live_ = false;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.ServerLiveResponse)
    }

    // @@protoc_insertion_point(class_scope:inference.ServerLiveResponse)
    private static final GrpcService.ServerLiveResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.ServerLiveResponse();
    }

    public static GrpcService.ServerLiveResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ServerLiveResponse>
        PARSER = new com.google.protobuf.AbstractParser<ServerLiveResponse>() {
      public ServerLiveResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new ServerLiveResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ServerLiveResponse> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<ServerLiveResponse> getParserForType() {
      return PARSER;
    }

    public GrpcService.ServerLiveResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ServerReadyRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.ServerReadyRequest)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message ServerReadyRequest
   *&#64;&#64;
   *&#64;&#64;   Request message for ServerReady.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.ServerReadyRequest}
   */
  public  static final class ServerReadyRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.ServerReadyRequest)
      ServerReadyRequestOrBuilder {
    // Use ServerReadyRequest.newBuilder() to construct.
    private ServerReadyRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ServerReadyRequest() {
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ServerReadyRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_ServerReadyRequest_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_ServerReadyRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.ServerReadyRequest.class, GrpcService.ServerReadyRequest.Builder.class);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.ServerReadyRequest)) {
        return super.equals(obj);
      }
      GrpcService.ServerReadyRequest other = (GrpcService.ServerReadyRequest) obj;

      boolean result = true;
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.ServerReadyRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ServerReadyRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ServerReadyRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ServerReadyRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ServerReadyRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ServerReadyRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ServerReadyRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.ServerReadyRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ServerReadyRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ServerReadyRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.ServerReadyRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message ServerReadyRequest
     *&#64;&#64;
     *&#64;&#64;   Request message for ServerReady.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.ServerReadyRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.ServerReadyRequest)
        GrpcService.ServerReadyRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_ServerReadyRequest_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_ServerReadyRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.ServerReadyRequest.class, GrpcService.ServerReadyRequest.Builder.class);
      }

      // Construct using GrpcService.ServerReadyRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_ServerReadyRequest_descriptor;
      }

      public GrpcService.ServerReadyRequest getDefaultInstanceForType() {
        return GrpcService.ServerReadyRequest.getDefaultInstance();
      }

      public GrpcService.ServerReadyRequest build() {
        GrpcService.ServerReadyRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.ServerReadyRequest buildPartial() {
        GrpcService.ServerReadyRequest result = new GrpcService.ServerReadyRequest(this);
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.ServerReadyRequest) {
          return mergeFrom((GrpcService.ServerReadyRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.ServerReadyRequest other) {
        if (other == GrpcService.ServerReadyRequest.getDefaultInstance()) return this;
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.ServerReadyRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.ServerReadyRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.ServerReadyRequest)
    }

    // @@protoc_insertion_point(class_scope:inference.ServerReadyRequest)
    private static final GrpcService.ServerReadyRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.ServerReadyRequest();
    }

    public static GrpcService.ServerReadyRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ServerReadyRequest>
        PARSER = new com.google.protobuf.AbstractParser<ServerReadyRequest>() {
      public ServerReadyRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new ServerReadyRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ServerReadyRequest> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<ServerReadyRequest> getParserForType() {
      return PARSER;
    }

    public GrpcService.ServerReadyRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ServerReadyResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.ServerReadyResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: bool ready
     *&#64;&#64;
     *&#64;&#64;     True if the inference server is ready, false it not ready.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional bool ready = 1;</code>
     */
    boolean getReady();
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message ServerReadyResponse
   *&#64;&#64;
   *&#64;&#64;   Response message for ServerReady.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.ServerReadyResponse}
   */
  public  static final class ServerReadyResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.ServerReadyResponse)
      ServerReadyResponseOrBuilder {
    // Use ServerReadyResponse.newBuilder() to construct.
    private ServerReadyResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ServerReadyResponse() {
      ready_ = false;
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ServerReadyResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 8: {

              ready_ = input.readBool();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_ServerReadyResponse_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_ServerReadyResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.ServerReadyResponse.class, GrpcService.ServerReadyResponse.Builder.class);
    }

    public static final int READY_FIELD_NUMBER = 1;
    private boolean ready_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: bool ready
     *&#64;&#64;
     *&#64;&#64;     True if the inference server is ready, false it not ready.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional bool ready = 1;</code>
     */
    public boolean getReady() {
      return ready_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (ready_ != false) {
        output.writeBool(1, ready_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (ready_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, ready_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.ServerReadyResponse)) {
        return super.equals(obj);
      }
      GrpcService.ServerReadyResponse other = (GrpcService.ServerReadyResponse) obj;

      boolean result = true;
      result = result && (getReady()
          == other.getReady());
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (37 * hash) + READY_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getReady());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.ServerReadyResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ServerReadyResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ServerReadyResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ServerReadyResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ServerReadyResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ServerReadyResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ServerReadyResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.ServerReadyResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ServerReadyResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ServerReadyResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.ServerReadyResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message ServerReadyResponse
     *&#64;&#64;
     *&#64;&#64;   Response message for ServerReady.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.ServerReadyResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.ServerReadyResponse)
        GrpcService.ServerReadyResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_ServerReadyResponse_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_ServerReadyResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.ServerReadyResponse.class, GrpcService.ServerReadyResponse.Builder.class);
      }

      // Construct using GrpcService.ServerReadyResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        ready_ = false;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_ServerReadyResponse_descriptor;
      }

      public GrpcService.ServerReadyResponse getDefaultInstanceForType() {
        return GrpcService.ServerReadyResponse.getDefaultInstance();
      }

      public GrpcService.ServerReadyResponse build() {
        GrpcService.ServerReadyResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.ServerReadyResponse buildPartial() {
        GrpcService.ServerReadyResponse result = new GrpcService.ServerReadyResponse(this);
        result.ready_ = ready_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.ServerReadyResponse) {
          return mergeFrom((GrpcService.ServerReadyResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.ServerReadyResponse other) {
        if (other == GrpcService.ServerReadyResponse.getDefaultInstance()) return this;
        if (other.getReady() != false) {
          setReady(other.getReady());
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.ServerReadyResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.ServerReadyResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private boolean ready_ ;
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bool ready
       *&#64;&#64;
       *&#64;&#64;     True if the inference server is ready, false it not ready.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional bool ready = 1;</code>
       */
      public boolean getReady() {
        return ready_;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bool ready
       *&#64;&#64;
       *&#64;&#64;     True if the inference server is ready, false it not ready.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional bool ready = 1;</code>
       */
      public Builder setReady(boolean value) {

        ready_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bool ready
       *&#64;&#64;
       *&#64;&#64;     True if the inference server is ready, false it not ready.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional bool ready = 1;</code>
       */
      public Builder clearReady() {

        ready_ = false;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.ServerReadyResponse)
    }

    // @@protoc_insertion_point(class_scope:inference.ServerReadyResponse)
    private static final GrpcService.ServerReadyResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.ServerReadyResponse();
    }

    public static GrpcService.ServerReadyResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ServerReadyResponse>
        PARSER = new com.google.protobuf.AbstractParser<ServerReadyResponse>() {
      public ServerReadyResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new ServerReadyResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ServerReadyResponse> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<ServerReadyResponse> getParserForType() {
      return PARSER;
    }

    public GrpcService.ServerReadyResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ModelReadyRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.ModelReadyRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the model to check for readiness.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    String getName();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the model to check for readiness.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string version
     *&#64;&#64;
     *&#64;&#64;     The version of the model to check for readiness. If not given the
     *&#64;&#64;     server will choose a version based on the model and internal policy.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string version = 2;</code>
     */
    String getVersion();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string version
     *&#64;&#64;
     *&#64;&#64;     The version of the model to check for readiness. If not given the
     *&#64;&#64;     server will choose a version based on the model and internal policy.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string version = 2;</code>
     */
    com.google.protobuf.ByteString
        getVersionBytes();
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message ModelReadyRequest
   *&#64;&#64;
   *&#64;&#64;   Request message for ModelReady.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.ModelReadyRequest}
   */
  public  static final class ModelReadyRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.ModelReadyRequest)
      ModelReadyRequestOrBuilder {
    // Use ModelReadyRequest.newBuilder() to construct.
    private ModelReadyRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ModelReadyRequest() {
      name_ = "";
      version_ = "";
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ModelReadyRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              String s = input.readStringRequireUtf8();

              name_ = s;
              break;
            }
            case 18: {
              String s = input.readStringRequireUtf8();

              version_ = s;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_ModelReadyRequest_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_ModelReadyRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.ModelReadyRequest.class, GrpcService.ModelReadyRequest.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile Object name_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the model to check for readiness.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    public String getName() {
      Object ref = name_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the model to check for readiness.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      Object ref = name_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VERSION_FIELD_NUMBER = 2;
    private volatile Object version_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string version
     *&#64;&#64;
     *&#64;&#64;     The version of the model to check for readiness. If not given the
     *&#64;&#64;     server will choose a version based on the model and internal policy.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string version = 2;</code>
     */
    public String getVersion() {
      Object ref = version_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        version_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string version
     *&#64;&#64;
     *&#64;&#64;     The version of the model to check for readiness. If not given the
     *&#64;&#64;     server will choose a version based on the model and internal policy.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string version = 2;</code>
     */
    public com.google.protobuf.ByteString
        getVersionBytes() {
      Object ref = version_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        version_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (!getVersionBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, version_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (!getVersionBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, version_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.ModelReadyRequest)) {
        return super.equals(obj);
      }
      GrpcService.ModelReadyRequest other = (GrpcService.ModelReadyRequest) obj;

      boolean result = true;
      result = result && getName()
          .equals(other.getName());
      result = result && getVersion()
          .equals(other.getVersion());
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getVersion().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.ModelReadyRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ModelReadyRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ModelReadyRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ModelReadyRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ModelReadyRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ModelReadyRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ModelReadyRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.ModelReadyRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ModelReadyRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ModelReadyRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.ModelReadyRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message ModelReadyRequest
     *&#64;&#64;
     *&#64;&#64;   Request message for ModelReady.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.ModelReadyRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.ModelReadyRequest)
        GrpcService.ModelReadyRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_ModelReadyRequest_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_ModelReadyRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.ModelReadyRequest.class, GrpcService.ModelReadyRequest.Builder.class);
      }

      // Construct using GrpcService.ModelReadyRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        name_ = "";

        version_ = "";

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_ModelReadyRequest_descriptor;
      }

      public GrpcService.ModelReadyRequest getDefaultInstanceForType() {
        return GrpcService.ModelReadyRequest.getDefaultInstance();
      }

      public GrpcService.ModelReadyRequest build() {
        GrpcService.ModelReadyRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.ModelReadyRequest buildPartial() {
        GrpcService.ModelReadyRequest result = new GrpcService.ModelReadyRequest(this);
        result.name_ = name_;
        result.version_ = version_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.ModelReadyRequest) {
          return mergeFrom((GrpcService.ModelReadyRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.ModelReadyRequest other) {
        if (other == GrpcService.ModelReadyRequest.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (!other.getVersion().isEmpty()) {
          version_ = other.version_;
          onChanged();
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.ModelReadyRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.ModelReadyRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private Object name_ = "";
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the model to check for readiness.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public String getName() {
        Object ref = name_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the model to check for readiness.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the model to check for readiness.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder setName(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the model to check for readiness.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder clearName() {

        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the model to check for readiness.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        name_ = value;
        onChanged();
        return this;
      }

      private Object version_ = "";
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;     The version of the model to check for readiness. If not given the
       *&#64;&#64;     server will choose a version based on the model and internal policy.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public String getVersion() {
        Object ref = version_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          version_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;     The version of the model to check for readiness. If not given the
       *&#64;&#64;     server will choose a version based on the model and internal policy.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public com.google.protobuf.ByteString
          getVersionBytes() {
        Object ref = version_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          version_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;     The version of the model to check for readiness. If not given the
       *&#64;&#64;     server will choose a version based on the model and internal policy.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public Builder setVersion(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        version_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;     The version of the model to check for readiness. If not given the
       *&#64;&#64;     server will choose a version based on the model and internal policy.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public Builder clearVersion() {

        version_ = getDefaultInstance().getVersion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;     The version of the model to check for readiness. If not given the
       *&#64;&#64;     server will choose a version based on the model and internal policy.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public Builder setVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        version_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.ModelReadyRequest)
    }

    // @@protoc_insertion_point(class_scope:inference.ModelReadyRequest)
    private static final GrpcService.ModelReadyRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.ModelReadyRequest();
    }

    public static GrpcService.ModelReadyRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ModelReadyRequest>
        PARSER = new com.google.protobuf.AbstractParser<ModelReadyRequest>() {
      public ModelReadyRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new ModelReadyRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ModelReadyRequest> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<ModelReadyRequest> getParserForType() {
      return PARSER;
    }

    public GrpcService.ModelReadyRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ModelReadyResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.ModelReadyResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: bool ready
     *&#64;&#64;
     *&#64;&#64;     True if the model is ready, false it not ready.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional bool ready = 1;</code>
     */
    boolean getReady();
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message ModelReadyResponse
   *&#64;&#64;
   *&#64;&#64;   Response message for ModelReady.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.ModelReadyResponse}
   */
  public  static final class ModelReadyResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.ModelReadyResponse)
      ModelReadyResponseOrBuilder {
    // Use ModelReadyResponse.newBuilder() to construct.
    private ModelReadyResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ModelReadyResponse() {
      ready_ = false;
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ModelReadyResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 8: {

              ready_ = input.readBool();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_ModelReadyResponse_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_ModelReadyResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.ModelReadyResponse.class, GrpcService.ModelReadyResponse.Builder.class);
    }

    public static final int READY_FIELD_NUMBER = 1;
    private boolean ready_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: bool ready
     *&#64;&#64;
     *&#64;&#64;     True if the model is ready, false it not ready.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional bool ready = 1;</code>
     */
    public boolean getReady() {
      return ready_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (ready_ != false) {
        output.writeBool(1, ready_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (ready_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, ready_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.ModelReadyResponse)) {
        return super.equals(obj);
      }
      GrpcService.ModelReadyResponse other = (GrpcService.ModelReadyResponse) obj;

      boolean result = true;
      result = result && (getReady()
          == other.getReady());
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (37 * hash) + READY_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getReady());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.ModelReadyResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ModelReadyResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ModelReadyResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ModelReadyResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ModelReadyResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ModelReadyResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ModelReadyResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.ModelReadyResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ModelReadyResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ModelReadyResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.ModelReadyResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message ModelReadyResponse
     *&#64;&#64;
     *&#64;&#64;   Response message for ModelReady.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.ModelReadyResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.ModelReadyResponse)
        GrpcService.ModelReadyResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_ModelReadyResponse_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_ModelReadyResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.ModelReadyResponse.class, GrpcService.ModelReadyResponse.Builder.class);
      }

      // Construct using GrpcService.ModelReadyResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        ready_ = false;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_ModelReadyResponse_descriptor;
      }

      public GrpcService.ModelReadyResponse getDefaultInstanceForType() {
        return GrpcService.ModelReadyResponse.getDefaultInstance();
      }

      public GrpcService.ModelReadyResponse build() {
        GrpcService.ModelReadyResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.ModelReadyResponse buildPartial() {
        GrpcService.ModelReadyResponse result = new GrpcService.ModelReadyResponse(this);
        result.ready_ = ready_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.ModelReadyResponse) {
          return mergeFrom((GrpcService.ModelReadyResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.ModelReadyResponse other) {
        if (other == GrpcService.ModelReadyResponse.getDefaultInstance()) return this;
        if (other.getReady() != false) {
          setReady(other.getReady());
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.ModelReadyResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.ModelReadyResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private boolean ready_ ;
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bool ready
       *&#64;&#64;
       *&#64;&#64;     True if the model is ready, false it not ready.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional bool ready = 1;</code>
       */
      public boolean getReady() {
        return ready_;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bool ready
       *&#64;&#64;
       *&#64;&#64;     True if the model is ready, false it not ready.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional bool ready = 1;</code>
       */
      public Builder setReady(boolean value) {

        ready_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bool ready
       *&#64;&#64;
       *&#64;&#64;     True if the model is ready, false it not ready.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional bool ready = 1;</code>
       */
      public Builder clearReady() {

        ready_ = false;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.ModelReadyResponse)
    }

    // @@protoc_insertion_point(class_scope:inference.ModelReadyResponse)
    private static final GrpcService.ModelReadyResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.ModelReadyResponse();
    }

    public static GrpcService.ModelReadyResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ModelReadyResponse>
        PARSER = new com.google.protobuf.AbstractParser<ModelReadyResponse>() {
      public ModelReadyResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new ModelReadyResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ModelReadyResponse> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<ModelReadyResponse> getParserForType() {
      return PARSER;
    }

    public GrpcService.ModelReadyResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ServerMetadataRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.ServerMetadataRequest)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message ServerMetadataRequest
   *&#64;&#64;
   *&#64;&#64;   Request message for ServerMetadata.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.ServerMetadataRequest}
   */
  public  static final class ServerMetadataRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.ServerMetadataRequest)
      ServerMetadataRequestOrBuilder {
    // Use ServerMetadataRequest.newBuilder() to construct.
    private ServerMetadataRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ServerMetadataRequest() {
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ServerMetadataRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_ServerMetadataRequest_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_ServerMetadataRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.ServerMetadataRequest.class, GrpcService.ServerMetadataRequest.Builder.class);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.ServerMetadataRequest)) {
        return super.equals(obj);
      }
      GrpcService.ServerMetadataRequest other = (GrpcService.ServerMetadataRequest) obj;

      boolean result = true;
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.ServerMetadataRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ServerMetadataRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ServerMetadataRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ServerMetadataRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ServerMetadataRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ServerMetadataRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ServerMetadataRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.ServerMetadataRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ServerMetadataRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ServerMetadataRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.ServerMetadataRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message ServerMetadataRequest
     *&#64;&#64;
     *&#64;&#64;   Request message for ServerMetadata.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.ServerMetadataRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.ServerMetadataRequest)
        GrpcService.ServerMetadataRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_ServerMetadataRequest_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_ServerMetadataRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.ServerMetadataRequest.class, GrpcService.ServerMetadataRequest.Builder.class);
      }

      // Construct using GrpcService.ServerMetadataRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_ServerMetadataRequest_descriptor;
      }

      public GrpcService.ServerMetadataRequest getDefaultInstanceForType() {
        return GrpcService.ServerMetadataRequest.getDefaultInstance();
      }

      public GrpcService.ServerMetadataRequest build() {
        GrpcService.ServerMetadataRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.ServerMetadataRequest buildPartial() {
        GrpcService.ServerMetadataRequest result = new GrpcService.ServerMetadataRequest(this);
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.ServerMetadataRequest) {
          return mergeFrom((GrpcService.ServerMetadataRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.ServerMetadataRequest other) {
        if (other == GrpcService.ServerMetadataRequest.getDefaultInstance()) return this;
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.ServerMetadataRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.ServerMetadataRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.ServerMetadataRequest)
    }

    // @@protoc_insertion_point(class_scope:inference.ServerMetadataRequest)
    private static final GrpcService.ServerMetadataRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.ServerMetadataRequest();
    }

    public static GrpcService.ServerMetadataRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ServerMetadataRequest>
        PARSER = new com.google.protobuf.AbstractParser<ServerMetadataRequest>() {
      public ServerMetadataRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new ServerMetadataRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ServerMetadataRequest> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<ServerMetadataRequest> getParserForType() {
      return PARSER;
    }

    public GrpcService.ServerMetadataRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ServerMetadataResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.ServerMetadataResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The server name.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    String getName();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The server name.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string version
     *&#64;&#64;
     *&#64;&#64;     The server version.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string version = 2;</code>
     */
    String getVersion();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string version
     *&#64;&#64;
     *&#64;&#64;     The server version.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string version = 2;</code>
     */
    com.google.protobuf.ByteString
        getVersionBytes();

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string extensions (repeated)
     *&#64;&#64;
     *&#64;&#64;     The extensions supported by the server.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated string extensions = 3;</code>
     */
    java.util.List<String>
        getExtensionsList();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string extensions (repeated)
     *&#64;&#64;
     *&#64;&#64;     The extensions supported by the server.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated string extensions = 3;</code>
     */
    int getExtensionsCount();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string extensions (repeated)
     *&#64;&#64;
     *&#64;&#64;     The extensions supported by the server.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated string extensions = 3;</code>
     */
    String getExtensions(int index);
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string extensions (repeated)
     *&#64;&#64;
     *&#64;&#64;     The extensions supported by the server.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated string extensions = 3;</code>
     */
    com.google.protobuf.ByteString
        getExtensionsBytes(int index);
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message ServerMetadataResponse
   *&#64;&#64;
   *&#64;&#64;   Response message for ServerMetadata.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.ServerMetadataResponse}
   */
  public  static final class ServerMetadataResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.ServerMetadataResponse)
      ServerMetadataResponseOrBuilder {
    // Use ServerMetadataResponse.newBuilder() to construct.
    private ServerMetadataResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ServerMetadataResponse() {
      name_ = "";
      version_ = "";
      extensions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ServerMetadataResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              String s = input.readStringRequireUtf8();

              name_ = s;
              break;
            }
            case 18: {
              String s = input.readStringRequireUtf8();

              version_ = s;
              break;
            }
            case 26: {
              String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                extensions_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000004;
              }
              extensions_.add(s);
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          extensions_ = extensions_.getUnmodifiableView();
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_ServerMetadataResponse_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_ServerMetadataResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.ServerMetadataResponse.class, GrpcService.ServerMetadataResponse.Builder.class);
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    private volatile Object name_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The server name.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    public String getName() {
      Object ref = name_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The server name.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      Object ref = name_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VERSION_FIELD_NUMBER = 2;
    private volatile Object version_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string version
     *&#64;&#64;
     *&#64;&#64;     The server version.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string version = 2;</code>
     */
    public String getVersion() {
      Object ref = version_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        version_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string version
     *&#64;&#64;
     *&#64;&#64;     The server version.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string version = 2;</code>
     */
    public com.google.protobuf.ByteString
        getVersionBytes() {
      Object ref = version_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        version_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EXTENSIONS_FIELD_NUMBER = 3;
    private com.google.protobuf.LazyStringList extensions_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string extensions (repeated)
     *&#64;&#64;
     *&#64;&#64;     The extensions supported by the server.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated string extensions = 3;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getExtensionsList() {
      return extensions_;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string extensions (repeated)
     *&#64;&#64;
     *&#64;&#64;     The extensions supported by the server.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated string extensions = 3;</code>
     */
    public int getExtensionsCount() {
      return extensions_.size();
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string extensions (repeated)
     *&#64;&#64;
     *&#64;&#64;     The extensions supported by the server.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated string extensions = 3;</code>
     */
    public String getExtensions(int index) {
      return extensions_.get(index);
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string extensions (repeated)
     *&#64;&#64;
     *&#64;&#64;     The extensions supported by the server.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated string extensions = 3;</code>
     */
    public com.google.protobuf.ByteString
        getExtensionsBytes(int index) {
      return extensions_.getByteString(index);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (!getVersionBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, version_);
      }
      for (int i = 0; i < extensions_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, extensions_.getRaw(i));
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (!getVersionBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, version_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < extensions_.size(); i++) {
          dataSize += computeStringSizeNoTag(extensions_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getExtensionsList().size();
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.ServerMetadataResponse)) {
        return super.equals(obj);
      }
      GrpcService.ServerMetadataResponse other = (GrpcService.ServerMetadataResponse) obj;

      boolean result = true;
      result = result && getName()
          .equals(other.getName());
      result = result && getVersion()
          .equals(other.getVersion());
      result = result && getExtensionsList()
          .equals(other.getExtensionsList());
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getVersion().hashCode();
      if (getExtensionsCount() > 0) {
        hash = (37 * hash) + EXTENSIONS_FIELD_NUMBER;
        hash = (53 * hash) + getExtensionsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.ServerMetadataResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ServerMetadataResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ServerMetadataResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ServerMetadataResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ServerMetadataResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ServerMetadataResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ServerMetadataResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.ServerMetadataResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ServerMetadataResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ServerMetadataResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.ServerMetadataResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message ServerMetadataResponse
     *&#64;&#64;
     *&#64;&#64;   Response message for ServerMetadata.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.ServerMetadataResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.ServerMetadataResponse)
        GrpcService.ServerMetadataResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_ServerMetadataResponse_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_ServerMetadataResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.ServerMetadataResponse.class, GrpcService.ServerMetadataResponse.Builder.class);
      }

      // Construct using GrpcService.ServerMetadataResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        name_ = "";

        version_ = "";

        extensions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_ServerMetadataResponse_descriptor;
      }

      public GrpcService.ServerMetadataResponse getDefaultInstanceForType() {
        return GrpcService.ServerMetadataResponse.getDefaultInstance();
      }

      public GrpcService.ServerMetadataResponse build() {
        GrpcService.ServerMetadataResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.ServerMetadataResponse buildPartial() {
        GrpcService.ServerMetadataResponse result = new GrpcService.ServerMetadataResponse(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        result.name_ = name_;
        result.version_ = version_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          extensions_ = extensions_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.extensions_ = extensions_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.ServerMetadataResponse) {
          return mergeFrom((GrpcService.ServerMetadataResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.ServerMetadataResponse other) {
        if (other == GrpcService.ServerMetadataResponse.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (!other.getVersion().isEmpty()) {
          version_ = other.version_;
          onChanged();
        }
        if (!other.extensions_.isEmpty()) {
          if (extensions_.isEmpty()) {
            extensions_ = other.extensions_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureExtensionsIsMutable();
            extensions_.addAll(other.extensions_);
          }
          onChanged();
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.ServerMetadataResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.ServerMetadataResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private Object name_ = "";
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The server name.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public String getName() {
        Object ref = name_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The server name.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The server name.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder setName(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The server name.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder clearName() {

        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The server name.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        name_ = value;
        onChanged();
        return this;
      }

      private Object version_ = "";
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;     The server version.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public String getVersion() {
        Object ref = version_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          version_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;     The server version.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public com.google.protobuf.ByteString
          getVersionBytes() {
        Object ref = version_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          version_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;     The server version.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public Builder setVersion(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        version_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;     The server version.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public Builder clearVersion() {

        version_ = getDefaultInstance().getVersion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;     The server version.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public Builder setVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        version_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList extensions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureExtensionsIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          extensions_ = new com.google.protobuf.LazyStringArrayList(extensions_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string extensions (repeated)
       *&#64;&#64;
       *&#64;&#64;     The extensions supported by the server.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated string extensions = 3;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getExtensionsList() {
        return extensions_.getUnmodifiableView();
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string extensions (repeated)
       *&#64;&#64;
       *&#64;&#64;     The extensions supported by the server.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated string extensions = 3;</code>
       */
      public int getExtensionsCount() {
        return extensions_.size();
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string extensions (repeated)
       *&#64;&#64;
       *&#64;&#64;     The extensions supported by the server.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated string extensions = 3;</code>
       */
      public String getExtensions(int index) {
        return extensions_.get(index);
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string extensions (repeated)
       *&#64;&#64;
       *&#64;&#64;     The extensions supported by the server.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated string extensions = 3;</code>
       */
      public com.google.protobuf.ByteString
          getExtensionsBytes(int index) {
        return extensions_.getByteString(index);
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string extensions (repeated)
       *&#64;&#64;
       *&#64;&#64;     The extensions supported by the server.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated string extensions = 3;</code>
       */
      public Builder setExtensions(
          int index, String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureExtensionsIsMutable();
        extensions_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string extensions (repeated)
       *&#64;&#64;
       *&#64;&#64;     The extensions supported by the server.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated string extensions = 3;</code>
       */
      public Builder addExtensions(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureExtensionsIsMutable();
        extensions_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string extensions (repeated)
       *&#64;&#64;
       *&#64;&#64;     The extensions supported by the server.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated string extensions = 3;</code>
       */
      public Builder addAllExtensions(
          Iterable<String> values) {
        ensureExtensionsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, extensions_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string extensions (repeated)
       *&#64;&#64;
       *&#64;&#64;     The extensions supported by the server.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated string extensions = 3;</code>
       */
      public Builder clearExtensions() {
        extensions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string extensions (repeated)
       *&#64;&#64;
       *&#64;&#64;     The extensions supported by the server.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated string extensions = 3;</code>
       */
      public Builder addExtensionsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureExtensionsIsMutable();
        extensions_.add(value);
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.ServerMetadataResponse)
    }

    // @@protoc_insertion_point(class_scope:inference.ServerMetadataResponse)
    private static final GrpcService.ServerMetadataResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.ServerMetadataResponse();
    }

    public static GrpcService.ServerMetadataResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ServerMetadataResponse>
        PARSER = new com.google.protobuf.AbstractParser<ServerMetadataResponse>() {
      public ServerMetadataResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new ServerMetadataResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ServerMetadataResponse> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<ServerMetadataResponse> getParserForType() {
      return PARSER;
    }

    public GrpcService.ServerMetadataResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ModelMetadataRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.ModelMetadataRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the model.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    String getName();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the model.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string version
     *&#64;&#64;
     *&#64;&#64;     The version of the model to check for readiness. If not
     *&#64;&#64;     given the server will choose a version based on the
     *&#64;&#64;     model and internal policy.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string version = 2;</code>
     */
    String getVersion();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string version
     *&#64;&#64;
     *&#64;&#64;     The version of the model to check for readiness. If not
     *&#64;&#64;     given the server will choose a version based on the
     *&#64;&#64;     model and internal policy.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string version = 2;</code>
     */
    com.google.protobuf.ByteString
        getVersionBytes();
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message ModelMetadataRequest
   *&#64;&#64;
   *&#64;&#64;   Request message for ModelMetadata.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.ModelMetadataRequest}
   */
  public  static final class ModelMetadataRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.ModelMetadataRequest)
      ModelMetadataRequestOrBuilder {
    // Use ModelMetadataRequest.newBuilder() to construct.
    private ModelMetadataRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ModelMetadataRequest() {
      name_ = "";
      version_ = "";
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ModelMetadataRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              String s = input.readStringRequireUtf8();

              name_ = s;
              break;
            }
            case 18: {
              String s = input.readStringRequireUtf8();

              version_ = s;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_ModelMetadataRequest_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_ModelMetadataRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.ModelMetadataRequest.class, GrpcService.ModelMetadataRequest.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile Object name_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the model.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    public String getName() {
      Object ref = name_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the model.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      Object ref = name_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VERSION_FIELD_NUMBER = 2;
    private volatile Object version_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string version
     *&#64;&#64;
     *&#64;&#64;     The version of the model to check for readiness. If not
     *&#64;&#64;     given the server will choose a version based on the
     *&#64;&#64;     model and internal policy.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string version = 2;</code>
     */
    public String getVersion() {
      Object ref = version_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        version_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string version
     *&#64;&#64;
     *&#64;&#64;     The version of the model to check for readiness. If not
     *&#64;&#64;     given the server will choose a version based on the
     *&#64;&#64;     model and internal policy.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string version = 2;</code>
     */
    public com.google.protobuf.ByteString
        getVersionBytes() {
      Object ref = version_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        version_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (!getVersionBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, version_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (!getVersionBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, version_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.ModelMetadataRequest)) {
        return super.equals(obj);
      }
      GrpcService.ModelMetadataRequest other = (GrpcService.ModelMetadataRequest) obj;

      boolean result = true;
      result = result && getName()
          .equals(other.getName());
      result = result && getVersion()
          .equals(other.getVersion());
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getVersion().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.ModelMetadataRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ModelMetadataRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ModelMetadataRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ModelMetadataRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ModelMetadataRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ModelMetadataRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ModelMetadataRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.ModelMetadataRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ModelMetadataRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ModelMetadataRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.ModelMetadataRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message ModelMetadataRequest
     *&#64;&#64;
     *&#64;&#64;   Request message for ModelMetadata.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.ModelMetadataRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.ModelMetadataRequest)
        GrpcService.ModelMetadataRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_ModelMetadataRequest_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_ModelMetadataRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.ModelMetadataRequest.class, GrpcService.ModelMetadataRequest.Builder.class);
      }

      // Construct using GrpcService.ModelMetadataRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        name_ = "";

        version_ = "";

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_ModelMetadataRequest_descriptor;
      }

      public GrpcService.ModelMetadataRequest getDefaultInstanceForType() {
        return GrpcService.ModelMetadataRequest.getDefaultInstance();
      }

      public GrpcService.ModelMetadataRequest build() {
        GrpcService.ModelMetadataRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.ModelMetadataRequest buildPartial() {
        GrpcService.ModelMetadataRequest result = new GrpcService.ModelMetadataRequest(this);
        result.name_ = name_;
        result.version_ = version_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.ModelMetadataRequest) {
          return mergeFrom((GrpcService.ModelMetadataRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.ModelMetadataRequest other) {
        if (other == GrpcService.ModelMetadataRequest.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (!other.getVersion().isEmpty()) {
          version_ = other.version_;
          onChanged();
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.ModelMetadataRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.ModelMetadataRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private Object name_ = "";
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public String getName() {
        Object ref = name_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder setName(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder clearName() {

        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        name_ = value;
        onChanged();
        return this;
      }

      private Object version_ = "";
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;     The version of the model to check for readiness. If not
       *&#64;&#64;     given the server will choose a version based on the
       *&#64;&#64;     model and internal policy.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public String getVersion() {
        Object ref = version_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          version_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;     The version of the model to check for readiness. If not
       *&#64;&#64;     given the server will choose a version based on the
       *&#64;&#64;     model and internal policy.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public com.google.protobuf.ByteString
          getVersionBytes() {
        Object ref = version_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          version_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;     The version of the model to check for readiness. If not
       *&#64;&#64;     given the server will choose a version based on the
       *&#64;&#64;     model and internal policy.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public Builder setVersion(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        version_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;     The version of the model to check for readiness. If not
       *&#64;&#64;     given the server will choose a version based on the
       *&#64;&#64;     model and internal policy.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public Builder clearVersion() {

        version_ = getDefaultInstance().getVersion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;     The version of the model to check for readiness. If not
       *&#64;&#64;     given the server will choose a version based on the
       *&#64;&#64;     model and internal policy.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public Builder setVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        version_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.ModelMetadataRequest)
    }

    // @@protoc_insertion_point(class_scope:inference.ModelMetadataRequest)
    private static final GrpcService.ModelMetadataRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.ModelMetadataRequest();
    }

    public static GrpcService.ModelMetadataRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ModelMetadataRequest>
        PARSER = new com.google.protobuf.AbstractParser<ModelMetadataRequest>() {
      public ModelMetadataRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new ModelMetadataRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ModelMetadataRequest> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<ModelMetadataRequest> getParserForType() {
      return PARSER;
    }

    public GrpcService.ModelMetadataRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ModelMetadataResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.ModelMetadataResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The model name.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    String getName();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The model name.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string versions (repeated)
     *&#64;&#64;
     *&#64;&#64;     The versions of the model.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated string versions = 2;</code>
     */
    java.util.List<String>
        getVersionsList();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string versions (repeated)
     *&#64;&#64;
     *&#64;&#64;     The versions of the model.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated string versions = 2;</code>
     */
    int getVersionsCount();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string versions (repeated)
     *&#64;&#64;
     *&#64;&#64;     The versions of the model.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated string versions = 2;</code>
     */
    String getVersions(int index);
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string versions (repeated)
     *&#64;&#64;
     *&#64;&#64;     The versions of the model.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated string versions = 2;</code>
     */
    com.google.protobuf.ByteString
        getVersionsBytes(int index);

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string platform
     *&#64;&#64;
     *&#64;&#64;     The model's platform.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string platform = 3;</code>
     */
    String getPlatform();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string platform
     *&#64;&#64;
     *&#64;&#64;     The model's platform.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string platform = 3;</code>
     */
    com.google.protobuf.ByteString
        getPlatformBytes();

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: TensorMetadata inputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The model's inputs.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelMetadataResponse.TensorMetadata inputs = 4;</code>
     */
    java.util.List<GrpcService.ModelMetadataResponse.TensorMetadata>
        getInputsList();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: TensorMetadata inputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The model's inputs.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelMetadataResponse.TensorMetadata inputs = 4;</code>
     */
    GrpcService.ModelMetadataResponse.TensorMetadata getInputs(int index);
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: TensorMetadata inputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The model's inputs.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelMetadataResponse.TensorMetadata inputs = 4;</code>
     */
    int getInputsCount();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: TensorMetadata inputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The model's inputs.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelMetadataResponse.TensorMetadata inputs = 4;</code>
     */
    java.util.List<? extends GrpcService.ModelMetadataResponse.TensorMetadataOrBuilder>
        getInputsOrBuilderList();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: TensorMetadata inputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The model's inputs.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelMetadataResponse.TensorMetadata inputs = 4;</code>
     */
    GrpcService.ModelMetadataResponse.TensorMetadataOrBuilder getInputsOrBuilder(
            int index);

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: TensorMetadata outputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The model's outputs.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelMetadataResponse.TensorMetadata outputs = 5;</code>
     */
    java.util.List<GrpcService.ModelMetadataResponse.TensorMetadata>
        getOutputsList();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: TensorMetadata outputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The model's outputs.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelMetadataResponse.TensorMetadata outputs = 5;</code>
     */
    GrpcService.ModelMetadataResponse.TensorMetadata getOutputs(int index);
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: TensorMetadata outputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The model's outputs.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelMetadataResponse.TensorMetadata outputs = 5;</code>
     */
    int getOutputsCount();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: TensorMetadata outputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The model's outputs.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelMetadataResponse.TensorMetadata outputs = 5;</code>
     */
    java.util.List<? extends GrpcService.ModelMetadataResponse.TensorMetadataOrBuilder>
        getOutputsOrBuilderList();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: TensorMetadata outputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The model's outputs.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelMetadataResponse.TensorMetadata outputs = 5;</code>
     */
    GrpcService.ModelMetadataResponse.TensorMetadataOrBuilder getOutputsOrBuilder(
            int index);
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message ModelMetadataResponse
   *&#64;&#64;
   *&#64;&#64;   Response message for ModelMetadata.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.ModelMetadataResponse}
   */
  public  static final class ModelMetadataResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.ModelMetadataResponse)
      ModelMetadataResponseOrBuilder {
    // Use ModelMetadataResponse.newBuilder() to construct.
    private ModelMetadataResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ModelMetadataResponse() {
      name_ = "";
      versions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      platform_ = "";
      inputs_ = java.util.Collections.emptyList();
      outputs_ = java.util.Collections.emptyList();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ModelMetadataResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              String s = input.readStringRequireUtf8();

              name_ = s;
              break;
            }
            case 18: {
              String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                versions_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              versions_.add(s);
              break;
            }
            case 26: {
              String s = input.readStringRequireUtf8();

              platform_ = s;
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                inputs_ = new java.util.ArrayList<GrpcService.ModelMetadataResponse.TensorMetadata>();
                mutable_bitField0_ |= 0x00000008;
              }
              inputs_.add(
                  input.readMessage(GrpcService.ModelMetadataResponse.TensorMetadata.parser(), extensionRegistry));
              break;
            }
            case 42: {
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                outputs_ = new java.util.ArrayList<GrpcService.ModelMetadataResponse.TensorMetadata>();
                mutable_bitField0_ |= 0x00000010;
              }
              outputs_.add(
                  input.readMessage(GrpcService.ModelMetadataResponse.TensorMetadata.parser(), extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          versions_ = versions_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          inputs_ = java.util.Collections.unmodifiableList(inputs_);
        }
        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
          outputs_ = java.util.Collections.unmodifiableList(outputs_);
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_ModelMetadataResponse_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_ModelMetadataResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.ModelMetadataResponse.class, GrpcService.ModelMetadataResponse.Builder.class);
    }

    public interface TensorMetadataOrBuilder extends
        // @@protoc_insertion_point(interface_extends:inference.ModelMetadataResponse.TensorMetadata)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;       The tensor name.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      String getName();
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;       The tensor name.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      com.google.protobuf.ByteString
          getNameBytes();

      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string datatype
       *&#64;&#64;
       *&#64;&#64;       The tensor data type.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string datatype = 2;</code>
       */
      String getDatatype();
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string datatype
       *&#64;&#64;
       *&#64;&#64;       The tensor data type.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string datatype = 2;</code>
       */
      com.google.protobuf.ByteString
          getDatatypeBytes();

      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
       *&#64;&#64;
       *&#64;&#64;       The tensor shape. A variable-size dimension is represented
       *&#64;&#64;       by a -1 value.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int64 shape = 3;</code>
       */
      java.util.List<Long> getShapeList();
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
       *&#64;&#64;
       *&#64;&#64;       The tensor shape. A variable-size dimension is represented
       *&#64;&#64;       by a -1 value.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int64 shape = 3;</code>
       */
      int getShapeCount();
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
       *&#64;&#64;
       *&#64;&#64;       The tensor shape. A variable-size dimension is represented
       *&#64;&#64;       by a -1 value.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int64 shape = 3;</code>
       */
      long getShape(int index);
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: message TensorMetadata
     *&#64;&#64;
     *&#64;&#64;     Metadata for a tensor.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.ModelMetadataResponse.TensorMetadata}
     */
    public  static final class TensorMetadata extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:inference.ModelMetadataResponse.TensorMetadata)
        TensorMetadataOrBuilder {
      // Use TensorMetadata.newBuilder() to construct.
      private TensorMetadata(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private TensorMetadata() {
        name_ = "";
        datatype_ = "";
        shape_ = java.util.Collections.emptyList();
      }

      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
      }
      private TensorMetadata(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!input.skipField(tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                String s = input.readStringRequireUtf8();

                name_ = s;
                break;
              }
              case 18: {
                String s = input.readStringRequireUtf8();

                datatype_ = s;
                break;
              }
              case 24: {
                if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                  shape_ = new java.util.ArrayList<Long>();
                  mutable_bitField0_ |= 0x00000004;
                }
                shape_.add(input.readInt64());
                break;
              }
              case 26: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000004) == 0x00000004) && input.getBytesUntilLimit() > 0) {
                  shape_ = new java.util.ArrayList<Long>();
                  mutable_bitField0_ |= 0x00000004;
                }
                while (input.getBytesUntilLimit() > 0) {
                  shape_.add(input.readInt64());
                }
                input.popLimit(limit);
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
            shape_ = java.util.Collections.unmodifiableList(shape_);
          }
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_ModelMetadataResponse_TensorMetadata_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_ModelMetadataResponse_TensorMetadata_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.ModelMetadataResponse.TensorMetadata.class, GrpcService.ModelMetadataResponse.TensorMetadata.Builder.class);
      }

      private int bitField0_;
      public static final int NAME_FIELD_NUMBER = 1;
      private volatile Object name_;
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;       The tensor name.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public String getName() {
        Object ref = name_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          name_ = s;
          return s;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;       The tensor name.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int DATATYPE_FIELD_NUMBER = 2;
      private volatile Object datatype_;
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string datatype
       *&#64;&#64;
       *&#64;&#64;       The tensor data type.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string datatype = 2;</code>
       */
      public String getDatatype() {
        Object ref = datatype_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          datatype_ = s;
          return s;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string datatype
       *&#64;&#64;
       *&#64;&#64;       The tensor data type.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string datatype = 2;</code>
       */
      public com.google.protobuf.ByteString
          getDatatypeBytes() {
        Object ref = datatype_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          datatype_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int SHAPE_FIELD_NUMBER = 3;
      private java.util.List<Long> shape_;
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
       *&#64;&#64;
       *&#64;&#64;       The tensor shape. A variable-size dimension is represented
       *&#64;&#64;       by a -1 value.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int64 shape = 3;</code>
       */
      public java.util.List<Long>
          getShapeList() {
        return shape_;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
       *&#64;&#64;
       *&#64;&#64;       The tensor shape. A variable-size dimension is represented
       *&#64;&#64;       by a -1 value.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int64 shape = 3;</code>
       */
      public int getShapeCount() {
        return shape_.size();
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
       *&#64;&#64;
       *&#64;&#64;       The tensor shape. A variable-size dimension is represented
       *&#64;&#64;       by a -1 value.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int64 shape = 3;</code>
       */
      public long getShape(int index) {
        return shape_.get(index);
      }
      private int shapeMemoizedSerializedSize = -1;

      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (!getNameBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
        }
        if (!getDatatypeBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, datatype_);
        }
        if (getShapeList().size() > 0) {
          output.writeUInt32NoTag(26);
          output.writeUInt32NoTag(shapeMemoizedSerializedSize);
        }
        for (int i = 0; i < shape_.size(); i++) {
          output.writeInt64NoTag(shape_.get(i));
        }
      }

      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (!getNameBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
        }
        if (!getDatatypeBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, datatype_);
        }
        {
          int dataSize = 0;
          for (int i = 0; i < shape_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeInt64SizeNoTag(shape_.get(i));
          }
          size += dataSize;
          if (!getShapeList().isEmpty()) {
            size += 1;
            size += com.google.protobuf.CodedOutputStream
                .computeInt32SizeNoTag(dataSize);
          }
          shapeMemoizedSerializedSize = dataSize;
        }
        memoizedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof GrpcService.ModelMetadataResponse.TensorMetadata)) {
          return super.equals(obj);
        }
        GrpcService.ModelMetadataResponse.TensorMetadata other = (GrpcService.ModelMetadataResponse.TensorMetadata) obj;

        boolean result = true;
        result = result && getName()
            .equals(other.getName());
        result = result && getDatatype()
            .equals(other.getDatatype());
        result = result && getShapeList()
            .equals(other.getShapeList());
        return result;
      }

      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
        hash = (37 * hash) + DATATYPE_FIELD_NUMBER;
        hash = (53 * hash) + getDatatype().hashCode();
        if (getShapeCount() > 0) {
          hash = (37 * hash) + SHAPE_FIELD_NUMBER;
          hash = (53 * hash) + getShapeList().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static GrpcService.ModelMetadataResponse.TensorMetadata parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static GrpcService.ModelMetadataResponse.TensorMetadata parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static GrpcService.ModelMetadataResponse.TensorMetadata parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static GrpcService.ModelMetadataResponse.TensorMetadata parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static GrpcService.ModelMetadataResponse.TensorMetadata parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static GrpcService.ModelMetadataResponse.TensorMetadata parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static GrpcService.ModelMetadataResponse.TensorMetadata parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static GrpcService.ModelMetadataResponse.TensorMetadata parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static GrpcService.ModelMetadataResponse.TensorMetadata parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static GrpcService.ModelMetadataResponse.TensorMetadata parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(GrpcService.ModelMetadataResponse.TensorMetadata prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @Override
      protected Builder newBuilderForType(
          BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: message TensorMetadata
       *&#64;&#64;
       *&#64;&#64;     Metadata for a tensor.
       *&#64;&#64;
       * </pre>
       *
       * Protobuf type {@code inference.ModelMetadataResponse.TensorMetadata}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:inference.ModelMetadataResponse.TensorMetadata)
          GrpcService.ModelMetadataResponse.TensorMetadataOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return GrpcService.internal_static_inference_ModelMetadataResponse_TensorMetadata_descriptor;
        }

        protected FieldAccessorTable
            internalGetFieldAccessorTable() {
          return GrpcService.internal_static_inference_ModelMetadataResponse_TensorMetadata_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  GrpcService.ModelMetadataResponse.TensorMetadata.class, GrpcService.ModelMetadataResponse.TensorMetadata.Builder.class);
        }

        // Construct using GrpcService.ModelMetadataResponse.TensorMetadata.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          name_ = "";

          datatype_ = "";

          shape_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return GrpcService.internal_static_inference_ModelMetadataResponse_TensorMetadata_descriptor;
        }

        public GrpcService.ModelMetadataResponse.TensorMetadata getDefaultInstanceForType() {
          return GrpcService.ModelMetadataResponse.TensorMetadata.getDefaultInstance();
        }

        public GrpcService.ModelMetadataResponse.TensorMetadata build() {
          GrpcService.ModelMetadataResponse.TensorMetadata result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public GrpcService.ModelMetadataResponse.TensorMetadata buildPartial() {
          GrpcService.ModelMetadataResponse.TensorMetadata result = new GrpcService.ModelMetadataResponse.TensorMetadata(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          result.name_ = name_;
          result.datatype_ = datatype_;
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            shape_ = java.util.Collections.unmodifiableList(shape_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.shape_ = shape_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof GrpcService.ModelMetadataResponse.TensorMetadata) {
            return mergeFrom((GrpcService.ModelMetadataResponse.TensorMetadata)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(GrpcService.ModelMetadataResponse.TensorMetadata other) {
          if (other == GrpcService.ModelMetadataResponse.TensorMetadata.getDefaultInstance()) return this;
          if (!other.getName().isEmpty()) {
            name_ = other.name_;
            onChanged();
          }
          if (!other.getDatatype().isEmpty()) {
            datatype_ = other.datatype_;
            onChanged();
          }
          if (!other.shape_.isEmpty()) {
            if (shape_.isEmpty()) {
              shape_ = other.shape_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureShapeIsMutable();
              shape_.addAll(other.shape_);
            }
            onChanged();
          }
          onChanged();
          return this;
        }

        public final boolean isInitialized() {
          return true;
        }

        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          GrpcService.ModelMetadataResponse.TensorMetadata parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (GrpcService.ModelMetadataResponse.TensorMetadata) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private Object name_ = "";
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The tensor name.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public String getName() {
          Object ref = name_;
          if (!(ref instanceof String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            String s = bs.toStringUtf8();
            name_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The tensor name.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public com.google.protobuf.ByteString
            getNameBytes() {
          Object ref = name_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8(
                    (String) ref);
            name_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The tensor name.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public Builder setName(
            String value) {
          if (value == null) {
    throw new NullPointerException();
  }

          name_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The tensor name.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public Builder clearName() {

          name_ = getDefaultInstance().getName();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The tensor name.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public Builder setNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

          name_ = value;
          onChanged();
          return this;
        }

        private Object datatype_ = "";
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string datatype
         *&#64;&#64;
         *&#64;&#64;       The tensor data type.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string datatype = 2;</code>
         */
        public String getDatatype() {
          Object ref = datatype_;
          if (!(ref instanceof String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            String s = bs.toStringUtf8();
            datatype_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string datatype
         *&#64;&#64;
         *&#64;&#64;       The tensor data type.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string datatype = 2;</code>
         */
        public com.google.protobuf.ByteString
            getDatatypeBytes() {
          Object ref = datatype_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8(
                    (String) ref);
            datatype_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string datatype
         *&#64;&#64;
         *&#64;&#64;       The tensor data type.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string datatype = 2;</code>
         */
        public Builder setDatatype(
            String value) {
          if (value == null) {
    throw new NullPointerException();
  }

          datatype_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string datatype
         *&#64;&#64;
         *&#64;&#64;       The tensor data type.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string datatype = 2;</code>
         */
        public Builder clearDatatype() {

          datatype_ = getDefaultInstance().getDatatype();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string datatype
         *&#64;&#64;
         *&#64;&#64;       The tensor data type.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string datatype = 2;</code>
         */
        public Builder setDatatypeBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

          datatype_ = value;
          onChanged();
          return this;
        }

        private java.util.List<Long> shape_ = java.util.Collections.emptyList();
        private void ensureShapeIsMutable() {
          if (!((bitField0_ & 0x00000004) == 0x00000004)) {
            shape_ = new java.util.ArrayList<Long>(shape_);
            bitField0_ |= 0x00000004;
           }
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
         *&#64;&#64;
         *&#64;&#64;       The tensor shape. A variable-size dimension is represented
         *&#64;&#64;       by a -1 value.
         *&#64;&#64;
         * </pre>
         *
         * <code>repeated int64 shape = 3;</code>
         */
        public java.util.List<Long>
            getShapeList() {
          return java.util.Collections.unmodifiableList(shape_);
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
         *&#64;&#64;
         *&#64;&#64;       The tensor shape. A variable-size dimension is represented
         *&#64;&#64;       by a -1 value.
         *&#64;&#64;
         * </pre>
         *
         * <code>repeated int64 shape = 3;</code>
         */
        public int getShapeCount() {
          return shape_.size();
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
         *&#64;&#64;
         *&#64;&#64;       The tensor shape. A variable-size dimension is represented
         *&#64;&#64;       by a -1 value.
         *&#64;&#64;
         * </pre>
         *
         * <code>repeated int64 shape = 3;</code>
         */
        public long getShape(int index) {
          return shape_.get(index);
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
         *&#64;&#64;
         *&#64;&#64;       The tensor shape. A variable-size dimension is represented
         *&#64;&#64;       by a -1 value.
         *&#64;&#64;
         * </pre>
         *
         * <code>repeated int64 shape = 3;</code>
         */
        public Builder setShape(
            int index, long value) {
          ensureShapeIsMutable();
          shape_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
         *&#64;&#64;
         *&#64;&#64;       The tensor shape. A variable-size dimension is represented
         *&#64;&#64;       by a -1 value.
         *&#64;&#64;
         * </pre>
         *
         * <code>repeated int64 shape = 3;</code>
         */
        public Builder addShape(long value) {
          ensureShapeIsMutable();
          shape_.add(value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
         *&#64;&#64;
         *&#64;&#64;       The tensor shape. A variable-size dimension is represented
         *&#64;&#64;       by a -1 value.
         *&#64;&#64;
         * </pre>
         *
         * <code>repeated int64 shape = 3;</code>
         */
        public Builder addAllShape(
            Iterable<? extends Long> values) {
          ensureShapeIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, shape_);
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
         *&#64;&#64;
         *&#64;&#64;       The tensor shape. A variable-size dimension is represented
         *&#64;&#64;       by a -1 value.
         *&#64;&#64;
         * </pre>
         *
         * <code>repeated int64 shape = 3;</code>
         */
        public Builder clearShape() {
          shape_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return this;
        }

        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return this;
        }


        // @@protoc_insertion_point(builder_scope:inference.ModelMetadataResponse.TensorMetadata)
      }

      // @@protoc_insertion_point(class_scope:inference.ModelMetadataResponse.TensorMetadata)
      private static final GrpcService.ModelMetadataResponse.TensorMetadata DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new GrpcService.ModelMetadataResponse.TensorMetadata();
      }

      public static GrpcService.ModelMetadataResponse.TensorMetadata getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<TensorMetadata>
          PARSER = new com.google.protobuf.AbstractParser<TensorMetadata>() {
        public TensorMetadata parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new TensorMetadata(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<TensorMetadata> parser() {
        return PARSER;
      }

      @Override
      public com.google.protobuf.Parser<TensorMetadata> getParserForType() {
        return PARSER;
      }

      public GrpcService.ModelMetadataResponse.TensorMetadata getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    private volatile Object name_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The model name.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    public String getName() {
      Object ref = name_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The model name.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      Object ref = name_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VERSIONS_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList versions_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string versions (repeated)
     *&#64;&#64;
     *&#64;&#64;     The versions of the model.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated string versions = 2;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getVersionsList() {
      return versions_;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string versions (repeated)
     *&#64;&#64;
     *&#64;&#64;     The versions of the model.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated string versions = 2;</code>
     */
    public int getVersionsCount() {
      return versions_.size();
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string versions (repeated)
     *&#64;&#64;
     *&#64;&#64;     The versions of the model.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated string versions = 2;</code>
     */
    public String getVersions(int index) {
      return versions_.get(index);
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string versions (repeated)
     *&#64;&#64;
     *&#64;&#64;     The versions of the model.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated string versions = 2;</code>
     */
    public com.google.protobuf.ByteString
        getVersionsBytes(int index) {
      return versions_.getByteString(index);
    }

    public static final int PLATFORM_FIELD_NUMBER = 3;
    private volatile Object platform_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string platform
     *&#64;&#64;
     *&#64;&#64;     The model's platform.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string platform = 3;</code>
     */
    public String getPlatform() {
      Object ref = platform_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        platform_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string platform
     *&#64;&#64;
     *&#64;&#64;     The model's platform.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string platform = 3;</code>
     */
    public com.google.protobuf.ByteString
        getPlatformBytes() {
      Object ref = platform_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        platform_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int INPUTS_FIELD_NUMBER = 4;
    private java.util.List<GrpcService.ModelMetadataResponse.TensorMetadata> inputs_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: TensorMetadata inputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The model's inputs.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelMetadataResponse.TensorMetadata inputs = 4;</code>
     */
    public java.util.List<GrpcService.ModelMetadataResponse.TensorMetadata> getInputsList() {
      return inputs_;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: TensorMetadata inputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The model's inputs.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelMetadataResponse.TensorMetadata inputs = 4;</code>
     */
    public java.util.List<? extends GrpcService.ModelMetadataResponse.TensorMetadataOrBuilder>
        getInputsOrBuilderList() {
      return inputs_;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: TensorMetadata inputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The model's inputs.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelMetadataResponse.TensorMetadata inputs = 4;</code>
     */
    public int getInputsCount() {
      return inputs_.size();
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: TensorMetadata inputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The model's inputs.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelMetadataResponse.TensorMetadata inputs = 4;</code>
     */
    public GrpcService.ModelMetadataResponse.TensorMetadata getInputs(int index) {
      return inputs_.get(index);
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: TensorMetadata inputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The model's inputs.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelMetadataResponse.TensorMetadata inputs = 4;</code>
     */
    public GrpcService.ModelMetadataResponse.TensorMetadataOrBuilder getInputsOrBuilder(
        int index) {
      return inputs_.get(index);
    }

    public static final int OUTPUTS_FIELD_NUMBER = 5;
    private java.util.List<GrpcService.ModelMetadataResponse.TensorMetadata> outputs_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: TensorMetadata outputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The model's outputs.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelMetadataResponse.TensorMetadata outputs = 5;</code>
     */
    public java.util.List<GrpcService.ModelMetadataResponse.TensorMetadata> getOutputsList() {
      return outputs_;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: TensorMetadata outputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The model's outputs.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelMetadataResponse.TensorMetadata outputs = 5;</code>
     */
    public java.util.List<? extends GrpcService.ModelMetadataResponse.TensorMetadataOrBuilder>
        getOutputsOrBuilderList() {
      return outputs_;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: TensorMetadata outputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The model's outputs.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelMetadataResponse.TensorMetadata outputs = 5;</code>
     */
    public int getOutputsCount() {
      return outputs_.size();
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: TensorMetadata outputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The model's outputs.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelMetadataResponse.TensorMetadata outputs = 5;</code>
     */
    public GrpcService.ModelMetadataResponse.TensorMetadata getOutputs(int index) {
      return outputs_.get(index);
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: TensorMetadata outputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The model's outputs.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelMetadataResponse.TensorMetadata outputs = 5;</code>
     */
    public GrpcService.ModelMetadataResponse.TensorMetadataOrBuilder getOutputsOrBuilder(
        int index) {
      return outputs_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      for (int i = 0; i < versions_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, versions_.getRaw(i));
      }
      if (!getPlatformBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, platform_);
      }
      for (int i = 0; i < inputs_.size(); i++) {
        output.writeMessage(4, inputs_.get(i));
      }
      for (int i = 0; i < outputs_.size(); i++) {
        output.writeMessage(5, outputs_.get(i));
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < versions_.size(); i++) {
          dataSize += computeStringSizeNoTag(versions_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getVersionsList().size();
      }
      if (!getPlatformBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, platform_);
      }
      for (int i = 0; i < inputs_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, inputs_.get(i));
      }
      for (int i = 0; i < outputs_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, outputs_.get(i));
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.ModelMetadataResponse)) {
        return super.equals(obj);
      }
      GrpcService.ModelMetadataResponse other = (GrpcService.ModelMetadataResponse) obj;

      boolean result = true;
      result = result && getName()
          .equals(other.getName());
      result = result && getVersionsList()
          .equals(other.getVersionsList());
      result = result && getPlatform()
          .equals(other.getPlatform());
      result = result && getInputsList()
          .equals(other.getInputsList());
      result = result && getOutputsList()
          .equals(other.getOutputsList());
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      if (getVersionsCount() > 0) {
        hash = (37 * hash) + VERSIONS_FIELD_NUMBER;
        hash = (53 * hash) + getVersionsList().hashCode();
      }
      hash = (37 * hash) + PLATFORM_FIELD_NUMBER;
      hash = (53 * hash) + getPlatform().hashCode();
      if (getInputsCount() > 0) {
        hash = (37 * hash) + INPUTS_FIELD_NUMBER;
        hash = (53 * hash) + getInputsList().hashCode();
      }
      if (getOutputsCount() > 0) {
        hash = (37 * hash) + OUTPUTS_FIELD_NUMBER;
        hash = (53 * hash) + getOutputsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.ModelMetadataResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ModelMetadataResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ModelMetadataResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ModelMetadataResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ModelMetadataResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ModelMetadataResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ModelMetadataResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.ModelMetadataResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ModelMetadataResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ModelMetadataResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.ModelMetadataResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message ModelMetadataResponse
     *&#64;&#64;
     *&#64;&#64;   Response message for ModelMetadata.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.ModelMetadataResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.ModelMetadataResponse)
        GrpcService.ModelMetadataResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_ModelMetadataResponse_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_ModelMetadataResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.ModelMetadataResponse.class, GrpcService.ModelMetadataResponse.Builder.class);
      }

      // Construct using GrpcService.ModelMetadataResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getInputsFieldBuilder();
          getOutputsFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        name_ = "";

        versions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        platform_ = "";

        if (inputsBuilder_ == null) {
          inputs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
        } else {
          inputsBuilder_.clear();
        }
        if (outputsBuilder_ == null) {
          outputs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
        } else {
          outputsBuilder_.clear();
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_ModelMetadataResponse_descriptor;
      }

      public GrpcService.ModelMetadataResponse getDefaultInstanceForType() {
        return GrpcService.ModelMetadataResponse.getDefaultInstance();
      }

      public GrpcService.ModelMetadataResponse build() {
        GrpcService.ModelMetadataResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.ModelMetadataResponse buildPartial() {
        GrpcService.ModelMetadataResponse result = new GrpcService.ModelMetadataResponse(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        result.name_ = name_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          versions_ = versions_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.versions_ = versions_;
        result.platform_ = platform_;
        if (inputsBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            inputs_ = java.util.Collections.unmodifiableList(inputs_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.inputs_ = inputs_;
        } else {
          result.inputs_ = inputsBuilder_.build();
        }
        if (outputsBuilder_ == null) {
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            outputs_ = java.util.Collections.unmodifiableList(outputs_);
            bitField0_ = (bitField0_ & ~0x00000010);
          }
          result.outputs_ = outputs_;
        } else {
          result.outputs_ = outputsBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.ModelMetadataResponse) {
          return mergeFrom((GrpcService.ModelMetadataResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.ModelMetadataResponse other) {
        if (other == GrpcService.ModelMetadataResponse.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (!other.versions_.isEmpty()) {
          if (versions_.isEmpty()) {
            versions_ = other.versions_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureVersionsIsMutable();
            versions_.addAll(other.versions_);
          }
          onChanged();
        }
        if (!other.getPlatform().isEmpty()) {
          platform_ = other.platform_;
          onChanged();
        }
        if (inputsBuilder_ == null) {
          if (!other.inputs_.isEmpty()) {
            if (inputs_.isEmpty()) {
              inputs_ = other.inputs_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureInputsIsMutable();
              inputs_.addAll(other.inputs_);
            }
            onChanged();
          }
        } else {
          if (!other.inputs_.isEmpty()) {
            if (inputsBuilder_.isEmpty()) {
              inputsBuilder_.dispose();
              inputsBuilder_ = null;
              inputs_ = other.inputs_;
              bitField0_ = (bitField0_ & ~0x00000008);
              inputsBuilder_ =
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getInputsFieldBuilder() : null;
            } else {
              inputsBuilder_.addAllMessages(other.inputs_);
            }
          }
        }
        if (outputsBuilder_ == null) {
          if (!other.outputs_.isEmpty()) {
            if (outputs_.isEmpty()) {
              outputs_ = other.outputs_;
              bitField0_ = (bitField0_ & ~0x00000010);
            } else {
              ensureOutputsIsMutable();
              outputs_.addAll(other.outputs_);
            }
            onChanged();
          }
        } else {
          if (!other.outputs_.isEmpty()) {
            if (outputsBuilder_.isEmpty()) {
              outputsBuilder_.dispose();
              outputsBuilder_ = null;
              outputs_ = other.outputs_;
              bitField0_ = (bitField0_ & ~0x00000010);
              outputsBuilder_ =
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getOutputsFieldBuilder() : null;
            } else {
              outputsBuilder_.addAllMessages(other.outputs_);
            }
          }
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.ModelMetadataResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.ModelMetadataResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private Object name_ = "";
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The model name.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public String getName() {
        Object ref = name_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The model name.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The model name.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder setName(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The model name.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder clearName() {

        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The model name.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        name_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList versions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureVersionsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          versions_ = new com.google.protobuf.LazyStringArrayList(versions_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string versions (repeated)
       *&#64;&#64;
       *&#64;&#64;     The versions of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated string versions = 2;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getVersionsList() {
        return versions_.getUnmodifiableView();
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string versions (repeated)
       *&#64;&#64;
       *&#64;&#64;     The versions of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated string versions = 2;</code>
       */
      public int getVersionsCount() {
        return versions_.size();
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string versions (repeated)
       *&#64;&#64;
       *&#64;&#64;     The versions of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated string versions = 2;</code>
       */
      public String getVersions(int index) {
        return versions_.get(index);
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string versions (repeated)
       *&#64;&#64;
       *&#64;&#64;     The versions of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated string versions = 2;</code>
       */
      public com.google.protobuf.ByteString
          getVersionsBytes(int index) {
        return versions_.getByteString(index);
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string versions (repeated)
       *&#64;&#64;
       *&#64;&#64;     The versions of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated string versions = 2;</code>
       */
      public Builder setVersions(
          int index, String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureVersionsIsMutable();
        versions_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string versions (repeated)
       *&#64;&#64;
       *&#64;&#64;     The versions of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated string versions = 2;</code>
       */
      public Builder addVersions(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureVersionsIsMutable();
        versions_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string versions (repeated)
       *&#64;&#64;
       *&#64;&#64;     The versions of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated string versions = 2;</code>
       */
      public Builder addAllVersions(
          Iterable<String> values) {
        ensureVersionsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, versions_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string versions (repeated)
       *&#64;&#64;
       *&#64;&#64;     The versions of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated string versions = 2;</code>
       */
      public Builder clearVersions() {
        versions_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string versions (repeated)
       *&#64;&#64;
       *&#64;&#64;     The versions of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated string versions = 2;</code>
       */
      public Builder addVersionsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureVersionsIsMutable();
        versions_.add(value);
        onChanged();
        return this;
      }

      private Object platform_ = "";
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string platform
       *&#64;&#64;
       *&#64;&#64;     The model's platform.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string platform = 3;</code>
       */
      public String getPlatform() {
        Object ref = platform_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          platform_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string platform
       *&#64;&#64;
       *&#64;&#64;     The model's platform.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string platform = 3;</code>
       */
      public com.google.protobuf.ByteString
          getPlatformBytes() {
        Object ref = platform_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          platform_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string platform
       *&#64;&#64;
       *&#64;&#64;     The model's platform.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string platform = 3;</code>
       */
      public Builder setPlatform(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        platform_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string platform
       *&#64;&#64;
       *&#64;&#64;     The model's platform.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string platform = 3;</code>
       */
      public Builder clearPlatform() {

        platform_ = getDefaultInstance().getPlatform();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string platform
       *&#64;&#64;
       *&#64;&#64;     The model's platform.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string platform = 3;</code>
       */
      public Builder setPlatformBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        platform_ = value;
        onChanged();
        return this;
      }

      private java.util.List<GrpcService.ModelMetadataResponse.TensorMetadata> inputs_ =
        java.util.Collections.emptyList();
      private void ensureInputsIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          inputs_ = new java.util.ArrayList<GrpcService.ModelMetadataResponse.TensorMetadata>(inputs_);
          bitField0_ |= 0x00000008;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          GrpcService.ModelMetadataResponse.TensorMetadata, GrpcService.ModelMetadataResponse.TensorMetadata.Builder, GrpcService.ModelMetadataResponse.TensorMetadataOrBuilder> inputsBuilder_;

      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's inputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata inputs = 4;</code>
       */
      public java.util.List<GrpcService.ModelMetadataResponse.TensorMetadata> getInputsList() {
        if (inputsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(inputs_);
        } else {
          return inputsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's inputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata inputs = 4;</code>
       */
      public int getInputsCount() {
        if (inputsBuilder_ == null) {
          return inputs_.size();
        } else {
          return inputsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's inputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata inputs = 4;</code>
       */
      public GrpcService.ModelMetadataResponse.TensorMetadata getInputs(int index) {
        if (inputsBuilder_ == null) {
          return inputs_.get(index);
        } else {
          return inputsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's inputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata inputs = 4;</code>
       */
      public Builder setInputs(
          int index, GrpcService.ModelMetadataResponse.TensorMetadata value) {
        if (inputsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInputsIsMutable();
          inputs_.set(index, value);
          onChanged();
        } else {
          inputsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's inputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata inputs = 4;</code>
       */
      public Builder setInputs(
          int index, GrpcService.ModelMetadataResponse.TensorMetadata.Builder builderForValue) {
        if (inputsBuilder_ == null) {
          ensureInputsIsMutable();
          inputs_.set(index, builderForValue.build());
          onChanged();
        } else {
          inputsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's inputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata inputs = 4;</code>
       */
      public Builder addInputs(GrpcService.ModelMetadataResponse.TensorMetadata value) {
        if (inputsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInputsIsMutable();
          inputs_.add(value);
          onChanged();
        } else {
          inputsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's inputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata inputs = 4;</code>
       */
      public Builder addInputs(
          int index, GrpcService.ModelMetadataResponse.TensorMetadata value) {
        if (inputsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInputsIsMutable();
          inputs_.add(index, value);
          onChanged();
        } else {
          inputsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's inputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata inputs = 4;</code>
       */
      public Builder addInputs(
          GrpcService.ModelMetadataResponse.TensorMetadata.Builder builderForValue) {
        if (inputsBuilder_ == null) {
          ensureInputsIsMutable();
          inputs_.add(builderForValue.build());
          onChanged();
        } else {
          inputsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's inputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata inputs = 4;</code>
       */
      public Builder addInputs(
          int index, GrpcService.ModelMetadataResponse.TensorMetadata.Builder builderForValue) {
        if (inputsBuilder_ == null) {
          ensureInputsIsMutable();
          inputs_.add(index, builderForValue.build());
          onChanged();
        } else {
          inputsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's inputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata inputs = 4;</code>
       */
      public Builder addAllInputs(
          Iterable<? extends GrpcService.ModelMetadataResponse.TensorMetadata> values) {
        if (inputsBuilder_ == null) {
          ensureInputsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, inputs_);
          onChanged();
        } else {
          inputsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's inputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata inputs = 4;</code>
       */
      public Builder clearInputs() {
        if (inputsBuilder_ == null) {
          inputs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          inputsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's inputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata inputs = 4;</code>
       */
      public Builder removeInputs(int index) {
        if (inputsBuilder_ == null) {
          ensureInputsIsMutable();
          inputs_.remove(index);
          onChanged();
        } else {
          inputsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's inputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata inputs = 4;</code>
       */
      public GrpcService.ModelMetadataResponse.TensorMetadata.Builder getInputsBuilder(
          int index) {
        return getInputsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's inputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata inputs = 4;</code>
       */
      public GrpcService.ModelMetadataResponse.TensorMetadataOrBuilder getInputsOrBuilder(
          int index) {
        if (inputsBuilder_ == null) {
          return inputs_.get(index);  } else {
          return inputsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's inputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata inputs = 4;</code>
       */
      public java.util.List<? extends GrpcService.ModelMetadataResponse.TensorMetadataOrBuilder>
           getInputsOrBuilderList() {
        if (inputsBuilder_ != null) {
          return inputsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(inputs_);
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's inputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata inputs = 4;</code>
       */
      public GrpcService.ModelMetadataResponse.TensorMetadata.Builder addInputsBuilder() {
        return getInputsFieldBuilder().addBuilder(
            GrpcService.ModelMetadataResponse.TensorMetadata.getDefaultInstance());
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's inputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata inputs = 4;</code>
       */
      public GrpcService.ModelMetadataResponse.TensorMetadata.Builder addInputsBuilder(
          int index) {
        return getInputsFieldBuilder().addBuilder(
            index, GrpcService.ModelMetadataResponse.TensorMetadata.getDefaultInstance());
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's inputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata inputs = 4;</code>
       */
      public java.util.List<GrpcService.ModelMetadataResponse.TensorMetadata.Builder>
           getInputsBuilderList() {
        return getInputsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          GrpcService.ModelMetadataResponse.TensorMetadata, GrpcService.ModelMetadataResponse.TensorMetadata.Builder, GrpcService.ModelMetadataResponse.TensorMetadataOrBuilder>
          getInputsFieldBuilder() {
        if (inputsBuilder_ == null) {
          inputsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              GrpcService.ModelMetadataResponse.TensorMetadata, GrpcService.ModelMetadataResponse.TensorMetadata.Builder, GrpcService.ModelMetadataResponse.TensorMetadataOrBuilder>(
                  inputs_,
                  ((bitField0_ & 0x00000008) == 0x00000008),
                  getParentForChildren(),
                  isClean());
          inputs_ = null;
        }
        return inputsBuilder_;
      }

      private java.util.List<GrpcService.ModelMetadataResponse.TensorMetadata> outputs_ =
        java.util.Collections.emptyList();
      private void ensureOutputsIsMutable() {
        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
          outputs_ = new java.util.ArrayList<GrpcService.ModelMetadataResponse.TensorMetadata>(outputs_);
          bitField0_ |= 0x00000010;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          GrpcService.ModelMetadataResponse.TensorMetadata, GrpcService.ModelMetadataResponse.TensorMetadata.Builder, GrpcService.ModelMetadataResponse.TensorMetadataOrBuilder> outputsBuilder_;

      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's outputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata outputs = 5;</code>
       */
      public java.util.List<GrpcService.ModelMetadataResponse.TensorMetadata> getOutputsList() {
        if (outputsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(outputs_);
        } else {
          return outputsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's outputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata outputs = 5;</code>
       */
      public int getOutputsCount() {
        if (outputsBuilder_ == null) {
          return outputs_.size();
        } else {
          return outputsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's outputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata outputs = 5;</code>
       */
      public GrpcService.ModelMetadataResponse.TensorMetadata getOutputs(int index) {
        if (outputsBuilder_ == null) {
          return outputs_.get(index);
        } else {
          return outputsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's outputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata outputs = 5;</code>
       */
      public Builder setOutputs(
          int index, GrpcService.ModelMetadataResponse.TensorMetadata value) {
        if (outputsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOutputsIsMutable();
          outputs_.set(index, value);
          onChanged();
        } else {
          outputsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's outputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata outputs = 5;</code>
       */
      public Builder setOutputs(
          int index, GrpcService.ModelMetadataResponse.TensorMetadata.Builder builderForValue) {
        if (outputsBuilder_ == null) {
          ensureOutputsIsMutable();
          outputs_.set(index, builderForValue.build());
          onChanged();
        } else {
          outputsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's outputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata outputs = 5;</code>
       */
      public Builder addOutputs(GrpcService.ModelMetadataResponse.TensorMetadata value) {
        if (outputsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOutputsIsMutable();
          outputs_.add(value);
          onChanged();
        } else {
          outputsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's outputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata outputs = 5;</code>
       */
      public Builder addOutputs(
          int index, GrpcService.ModelMetadataResponse.TensorMetadata value) {
        if (outputsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOutputsIsMutable();
          outputs_.add(index, value);
          onChanged();
        } else {
          outputsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's outputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata outputs = 5;</code>
       */
      public Builder addOutputs(
          GrpcService.ModelMetadataResponse.TensorMetadata.Builder builderForValue) {
        if (outputsBuilder_ == null) {
          ensureOutputsIsMutable();
          outputs_.add(builderForValue.build());
          onChanged();
        } else {
          outputsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's outputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata outputs = 5;</code>
       */
      public Builder addOutputs(
          int index, GrpcService.ModelMetadataResponse.TensorMetadata.Builder builderForValue) {
        if (outputsBuilder_ == null) {
          ensureOutputsIsMutable();
          outputs_.add(index, builderForValue.build());
          onChanged();
        } else {
          outputsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's outputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata outputs = 5;</code>
       */
      public Builder addAllOutputs(
          Iterable<? extends GrpcService.ModelMetadataResponse.TensorMetadata> values) {
        if (outputsBuilder_ == null) {
          ensureOutputsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, outputs_);
          onChanged();
        } else {
          outputsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's outputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata outputs = 5;</code>
       */
      public Builder clearOutputs() {
        if (outputsBuilder_ == null) {
          outputs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
          onChanged();
        } else {
          outputsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's outputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata outputs = 5;</code>
       */
      public Builder removeOutputs(int index) {
        if (outputsBuilder_ == null) {
          ensureOutputsIsMutable();
          outputs_.remove(index);
          onChanged();
        } else {
          outputsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's outputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata outputs = 5;</code>
       */
      public GrpcService.ModelMetadataResponse.TensorMetadata.Builder getOutputsBuilder(
          int index) {
        return getOutputsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's outputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata outputs = 5;</code>
       */
      public GrpcService.ModelMetadataResponse.TensorMetadataOrBuilder getOutputsOrBuilder(
          int index) {
        if (outputsBuilder_ == null) {
          return outputs_.get(index);  } else {
          return outputsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's outputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata outputs = 5;</code>
       */
      public java.util.List<? extends GrpcService.ModelMetadataResponse.TensorMetadataOrBuilder>
           getOutputsOrBuilderList() {
        if (outputsBuilder_ != null) {
          return outputsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(outputs_);
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's outputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata outputs = 5;</code>
       */
      public GrpcService.ModelMetadataResponse.TensorMetadata.Builder addOutputsBuilder() {
        return getOutputsFieldBuilder().addBuilder(
            GrpcService.ModelMetadataResponse.TensorMetadata.getDefaultInstance());
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's outputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata outputs = 5;</code>
       */
      public GrpcService.ModelMetadataResponse.TensorMetadata.Builder addOutputsBuilder(
          int index) {
        return getOutputsFieldBuilder().addBuilder(
            index, GrpcService.ModelMetadataResponse.TensorMetadata.getDefaultInstance());
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: TensorMetadata outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The model's outputs.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelMetadataResponse.TensorMetadata outputs = 5;</code>
       */
      public java.util.List<GrpcService.ModelMetadataResponse.TensorMetadata.Builder>
           getOutputsBuilderList() {
        return getOutputsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          GrpcService.ModelMetadataResponse.TensorMetadata, GrpcService.ModelMetadataResponse.TensorMetadata.Builder, GrpcService.ModelMetadataResponse.TensorMetadataOrBuilder>
          getOutputsFieldBuilder() {
        if (outputsBuilder_ == null) {
          outputsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              GrpcService.ModelMetadataResponse.TensorMetadata, GrpcService.ModelMetadataResponse.TensorMetadata.Builder, GrpcService.ModelMetadataResponse.TensorMetadataOrBuilder>(
                  outputs_,
                  ((bitField0_ & 0x00000010) == 0x00000010),
                  getParentForChildren(),
                  isClean());
          outputs_ = null;
        }
        return outputsBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.ModelMetadataResponse)
    }

    // @@protoc_insertion_point(class_scope:inference.ModelMetadataResponse)
    private static final GrpcService.ModelMetadataResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.ModelMetadataResponse();
    }

    public static GrpcService.ModelMetadataResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ModelMetadataResponse>
        PARSER = new com.google.protobuf.AbstractParser<ModelMetadataResponse>() {
      public ModelMetadataResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new ModelMetadataResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ModelMetadataResponse> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<ModelMetadataResponse> getParserForType() {
      return PARSER;
    }

    public GrpcService.ModelMetadataResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface InferParameterOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.InferParameter)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;    .. cpp:var:: bool bool_param
     *&#64;&#64;
     *&#64;&#64;       A boolean parameter value.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional bool bool_param = 1;</code>
     */
    boolean getBoolParam();

    /**
     * <pre>
     *&#64;&#64;    .. cpp:var:: int64 int64_param
     *&#64;&#64;
     *&#64;&#64;       An int64 parameter value.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional int64 int64_param = 2;</code>
     */
    long getInt64Param();

    /**
     * <pre>
     *&#64;&#64;    .. cpp:var:: string string_param
     *&#64;&#64;
     *&#64;&#64;       A string parameter value.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string string_param = 3;</code>
     */
    String getStringParam();
    /**
     * <pre>
     *&#64;&#64;    .. cpp:var:: string string_param
     *&#64;&#64;
     *&#64;&#64;       A string parameter value.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string string_param = 3;</code>
     */
    com.google.protobuf.ByteString
        getStringParamBytes();

    public GrpcService.InferParameter.ParameterChoiceCase getParameterChoiceCase();
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message InferParameter
   *&#64;&#64;
   *&#64;&#64;   An inference parameter value.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.InferParameter}
   */
  public  static final class InferParameter extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.InferParameter)
      InferParameterOrBuilder {
    // Use InferParameter.newBuilder() to construct.
    private InferParameter(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private InferParameter() {
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private InferParameter(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              parameterChoiceCase_ = 1;
              parameterChoice_ = input.readBool();
              break;
            }
            case 16: {
              parameterChoiceCase_ = 2;
              parameterChoice_ = input.readInt64();
              break;
            }
            case 26: {
              String s = input.readStringRequireUtf8();
              parameterChoiceCase_ = 3;
              parameterChoice_ = s;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_InferParameter_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_InferParameter_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.InferParameter.class, GrpcService.InferParameter.Builder.class);
    }

    private int parameterChoiceCase_ = 0;
    private Object parameterChoice_;
    public enum ParameterChoiceCase
        implements com.google.protobuf.Internal.EnumLite {
      BOOL_PARAM(1),
      INT64_PARAM(2),
      STRING_PARAM(3),
      PARAMETERCHOICE_NOT_SET(0);
      private final int value;
      private ParameterChoiceCase(int value) {
        this.value = value;
      }
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @Deprecated
      public static ParameterChoiceCase valueOf(int value) {
        return forNumber(value);
      }

      public static ParameterChoiceCase forNumber(int value) {
        switch (value) {
          case 1: return BOOL_PARAM;
          case 2: return INT64_PARAM;
          case 3: return STRING_PARAM;
          case 0: return PARAMETERCHOICE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public ParameterChoiceCase
    getParameterChoiceCase() {
      return ParameterChoiceCase.forNumber(
          parameterChoiceCase_);
    }

    public static final int BOOL_PARAM_FIELD_NUMBER = 1;
    /**
     * <pre>
     *&#64;&#64;    .. cpp:var:: bool bool_param
     *&#64;&#64;
     *&#64;&#64;       A boolean parameter value.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional bool bool_param = 1;</code>
     */
    public boolean getBoolParam() {
      if (parameterChoiceCase_ == 1) {
        return (Boolean) parameterChoice_;
      }
      return false;
    }

    public static final int INT64_PARAM_FIELD_NUMBER = 2;
    /**
     * <pre>
     *&#64;&#64;    .. cpp:var:: int64 int64_param
     *&#64;&#64;
     *&#64;&#64;       An int64 parameter value.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional int64 int64_param = 2;</code>
     */
    public long getInt64Param() {
      if (parameterChoiceCase_ == 2) {
        return (Long) parameterChoice_;
      }
      return 0L;
    }

    public static final int STRING_PARAM_FIELD_NUMBER = 3;
    /**
     * <pre>
     *&#64;&#64;    .. cpp:var:: string string_param
     *&#64;&#64;
     *&#64;&#64;       A string parameter value.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string string_param = 3;</code>
     */
    public String getStringParam() {
      Object ref = "";
      if (parameterChoiceCase_ == 3) {
        ref = parameterChoice_;
      }
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (parameterChoiceCase_ == 3) {
          parameterChoice_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;    .. cpp:var:: string string_param
     *&#64;&#64;
     *&#64;&#64;       A string parameter value.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string string_param = 3;</code>
     */
    public com.google.protobuf.ByteString
        getStringParamBytes() {
      Object ref = "";
      if (parameterChoiceCase_ == 3) {
        ref = parameterChoice_;
      }
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        if (parameterChoiceCase_ == 3) {
          parameterChoice_ = b;
        }
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (parameterChoiceCase_ == 1) {
        output.writeBool(
            1, (boolean)((Boolean) parameterChoice_));
      }
      if (parameterChoiceCase_ == 2) {
        output.writeInt64(
            2, (long)((Long) parameterChoice_));
      }
      if (parameterChoiceCase_ == 3) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, parameterChoice_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (parameterChoiceCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(
              1, (boolean)((Boolean) parameterChoice_));
      }
      if (parameterChoiceCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(
              2, (long)((Long) parameterChoice_));
      }
      if (parameterChoiceCase_ == 3) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, parameterChoice_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.InferParameter)) {
        return super.equals(obj);
      }
      GrpcService.InferParameter other = (GrpcService.InferParameter) obj;

      boolean result = true;
      result = result && getParameterChoiceCase().equals(
          other.getParameterChoiceCase());
      if (!result) return false;
      switch (parameterChoiceCase_) {
        case 1:
          result = result && (getBoolParam()
              == other.getBoolParam());
          break;
        case 2:
          result = result && (getInt64Param()
              == other.getInt64Param());
          break;
        case 3:
          result = result && getStringParam()
              .equals(other.getStringParam());
          break;
        case 0:
        default:
      }
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      switch (parameterChoiceCase_) {
        case 1:
          hash = (37 * hash) + BOOL_PARAM_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getBoolParam());
          break;
        case 2:
          hash = (37 * hash) + INT64_PARAM_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getInt64Param());
          break;
        case 3:
          hash = (37 * hash) + STRING_PARAM_FIELD_NUMBER;
          hash = (53 * hash) + getStringParam().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.InferParameter parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.InferParameter parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.InferParameter parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.InferParameter parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.InferParameter parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.InferParameter parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.InferParameter parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.InferParameter parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.InferParameter parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.InferParameter parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.InferParameter prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message InferParameter
     *&#64;&#64;
     *&#64;&#64;   An inference parameter value.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.InferParameter}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.InferParameter)
        GrpcService.InferParameterOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_InferParameter_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_InferParameter_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.InferParameter.class, GrpcService.InferParameter.Builder.class);
      }

      // Construct using GrpcService.InferParameter.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        parameterChoiceCase_ = 0;
        parameterChoice_ = null;
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_InferParameter_descriptor;
      }

      public GrpcService.InferParameter getDefaultInstanceForType() {
        return GrpcService.InferParameter.getDefaultInstance();
      }

      public GrpcService.InferParameter build() {
        GrpcService.InferParameter result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.InferParameter buildPartial() {
        GrpcService.InferParameter result = new GrpcService.InferParameter(this);
        if (parameterChoiceCase_ == 1) {
          result.parameterChoice_ = parameterChoice_;
        }
        if (parameterChoiceCase_ == 2) {
          result.parameterChoice_ = parameterChoice_;
        }
        if (parameterChoiceCase_ == 3) {
          result.parameterChoice_ = parameterChoice_;
        }
        result.parameterChoiceCase_ = parameterChoiceCase_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.InferParameter) {
          return mergeFrom((GrpcService.InferParameter)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.InferParameter other) {
        if (other == GrpcService.InferParameter.getDefaultInstance()) return this;
        switch (other.getParameterChoiceCase()) {
          case BOOL_PARAM: {
            setBoolParam(other.getBoolParam());
            break;
          }
          case INT64_PARAM: {
            setInt64Param(other.getInt64Param());
            break;
          }
          case STRING_PARAM: {
            parameterChoiceCase_ = 3;
            parameterChoice_ = other.parameterChoice_;
            onChanged();
            break;
          }
          case PARAMETERCHOICE_NOT_SET: {
            break;
          }
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.InferParameter parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.InferParameter) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int parameterChoiceCase_ = 0;
      private Object parameterChoice_;
      public ParameterChoiceCase
          getParameterChoiceCase() {
        return ParameterChoiceCase.forNumber(
            parameterChoiceCase_);
      }

      public Builder clearParameterChoice() {
        parameterChoiceCase_ = 0;
        parameterChoice_ = null;
        onChanged();
        return this;
      }


      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: bool bool_param
       *&#64;&#64;
       *&#64;&#64;       A boolean parameter value.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional bool bool_param = 1;</code>
       */
      public boolean getBoolParam() {
        if (parameterChoiceCase_ == 1) {
          return (Boolean) parameterChoice_;
        }
        return false;
      }
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: bool bool_param
       *&#64;&#64;
       *&#64;&#64;       A boolean parameter value.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional bool bool_param = 1;</code>
       */
      public Builder setBoolParam(boolean value) {
        parameterChoiceCase_ = 1;
        parameterChoice_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: bool bool_param
       *&#64;&#64;
       *&#64;&#64;       A boolean parameter value.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional bool bool_param = 1;</code>
       */
      public Builder clearBoolParam() {
        if (parameterChoiceCase_ == 1) {
          parameterChoiceCase_ = 0;
          parameterChoice_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: int64 int64_param
       *&#64;&#64;
       *&#64;&#64;       An int64 parameter value.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional int64 int64_param = 2;</code>
       */
      public long getInt64Param() {
        if (parameterChoiceCase_ == 2) {
          return (Long) parameterChoice_;
        }
        return 0L;
      }
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: int64 int64_param
       *&#64;&#64;
       *&#64;&#64;       An int64 parameter value.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional int64 int64_param = 2;</code>
       */
      public Builder setInt64Param(long value) {
        parameterChoiceCase_ = 2;
        parameterChoice_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: int64 int64_param
       *&#64;&#64;
       *&#64;&#64;       An int64 parameter value.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional int64 int64_param = 2;</code>
       */
      public Builder clearInt64Param() {
        if (parameterChoiceCase_ == 2) {
          parameterChoiceCase_ = 0;
          parameterChoice_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: string string_param
       *&#64;&#64;
       *&#64;&#64;       A string parameter value.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string string_param = 3;</code>
       */
      public String getStringParam() {
        Object ref = "";
        if (parameterChoiceCase_ == 3) {
          ref = parameterChoice_;
        }
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (parameterChoiceCase_ == 3) {
            parameterChoice_ = s;
          }
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: string string_param
       *&#64;&#64;
       *&#64;&#64;       A string parameter value.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string string_param = 3;</code>
       */
      public com.google.protobuf.ByteString
          getStringParamBytes() {
        Object ref = "";
        if (parameterChoiceCase_ == 3) {
          ref = parameterChoice_;
        }
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          if (parameterChoiceCase_ == 3) {
            parameterChoice_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: string string_param
       *&#64;&#64;
       *&#64;&#64;       A string parameter value.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string string_param = 3;</code>
       */
      public Builder setStringParam(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  parameterChoiceCase_ = 3;
        parameterChoice_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: string string_param
       *&#64;&#64;
       *&#64;&#64;       A string parameter value.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string string_param = 3;</code>
       */
      public Builder clearStringParam() {
        if (parameterChoiceCase_ == 3) {
          parameterChoiceCase_ = 0;
          parameterChoice_ = null;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: string string_param
       *&#64;&#64;
       *&#64;&#64;       A string parameter value.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string string_param = 3;</code>
       */
      public Builder setStringParamBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        parameterChoiceCase_ = 3;
        parameterChoice_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.InferParameter)
    }

    // @@protoc_insertion_point(class_scope:inference.InferParameter)
    private static final GrpcService.InferParameter DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.InferParameter();
    }

    public static GrpcService.InferParameter getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<InferParameter>
        PARSER = new com.google.protobuf.AbstractParser<InferParameter>() {
      public InferParameter parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new InferParameter(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<InferParameter> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<InferParameter> getParserForType() {
      return PARSER;
    }

    public GrpcService.InferParameter getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface InferTensorContentsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.InferTensorContents)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: bool bool_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for BOOL data type. The size must match what is
     *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
     *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated bool bool_contents = 1;</code>
     */
    java.util.List<Boolean> getBoolContentsList();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: bool bool_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for BOOL data type. The size must match what is
     *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
     *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated bool bool_contents = 1;</code>
     */
    int getBoolContentsCount();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: bool bool_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for BOOL data type. The size must match what is
     *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
     *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated bool bool_contents = 1;</code>
     */
    boolean getBoolContents(int index);

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: int32 int_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for INT8, INT16, and INT32 data types. The size
     *&#64;&#64;     must match what is expected by the tensor's shape. The contents
     *&#64;&#64;     must be the flattened, one-dimensional, row-major order of the
     *&#64;&#64;     tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated int32 int_contents = 2;</code>
     */
    java.util.List<Integer> getIntContentsList();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: int32 int_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for INT8, INT16, and INT32 data types. The size
     *&#64;&#64;     must match what is expected by the tensor's shape. The contents
     *&#64;&#64;     must be the flattened, one-dimensional, row-major order of the
     *&#64;&#64;     tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated int32 int_contents = 2;</code>
     */
    int getIntContentsCount();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: int32 int_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for INT8, INT16, and INT32 data types. The size
     *&#64;&#64;     must match what is expected by the tensor's shape. The contents
     *&#64;&#64;     must be the flattened, one-dimensional, row-major order of the
     *&#64;&#64;     tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated int32 int_contents = 2;</code>
     */
    int getIntContents(int index);

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: int64 int64_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for INT64 data types. The size must match what
     *&#64;&#64;     is expected by the tensor's shape. The contents must be the
     *&#64;&#64;     flattened, one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated int64 int64_contents = 3;</code>
     */
    java.util.List<Long> getInt64ContentsList();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: int64 int64_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for INT64 data types. The size must match what
     *&#64;&#64;     is expected by the tensor's shape. The contents must be the
     *&#64;&#64;     flattened, one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated int64 int64_contents = 3;</code>
     */
    int getInt64ContentsCount();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: int64 int64_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for INT64 data types. The size must match what
     *&#64;&#64;     is expected by the tensor's shape. The contents must be the
     *&#64;&#64;     flattened, one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated int64 int64_contents = 3;</code>
     */
    long getInt64Contents(int index);

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: uint32 uint_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for UINT8, UINT16, and UINT32 data types. The size
     *&#64;&#64;     must match what is expected by the tensor's shape. The contents
     *&#64;&#64;     must be the flattened, one-dimensional, row-major order of the
     *&#64;&#64;     tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated uint32 uint_contents = 4;</code>
     */
    java.util.List<Integer> getUintContentsList();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: uint32 uint_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for UINT8, UINT16, and UINT32 data types. The size
     *&#64;&#64;     must match what is expected by the tensor's shape. The contents
     *&#64;&#64;     must be the flattened, one-dimensional, row-major order of the
     *&#64;&#64;     tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated uint32 uint_contents = 4;</code>
     */
    int getUintContentsCount();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: uint32 uint_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for UINT8, UINT16, and UINT32 data types. The size
     *&#64;&#64;     must match what is expected by the tensor's shape. The contents
     *&#64;&#64;     must be the flattened, one-dimensional, row-major order of the
     *&#64;&#64;     tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated uint32 uint_contents = 4;</code>
     */
    int getUintContents(int index);

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: uint64 uint64_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for UINT64 data types. The size must match what
     *&#64;&#64;     is expected by the tensor's shape. The contents must be the
     *&#64;&#64;     flattened, one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated uint64 uint64_contents = 5;</code>
     */
    java.util.List<Long> getUint64ContentsList();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: uint64 uint64_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for UINT64 data types. The size must match what
     *&#64;&#64;     is expected by the tensor's shape. The contents must be the
     *&#64;&#64;     flattened, one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated uint64 uint64_contents = 5;</code>
     */
    int getUint64ContentsCount();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: uint64 uint64_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for UINT64 data types. The size must match what
     *&#64;&#64;     is expected by the tensor's shape. The contents must be the
     *&#64;&#64;     flattened, one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated uint64 uint64_contents = 5;</code>
     */
    long getUint64Contents(int index);

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: float fp32_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for FP32 data type. The size must match what is
     *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
     *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated float fp32_contents = 6;</code>
     */
    java.util.List<Float> getFp32ContentsList();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: float fp32_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for FP32 data type. The size must match what is
     *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
     *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated float fp32_contents = 6;</code>
     */
    int getFp32ContentsCount();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: float fp32_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for FP32 data type. The size must match what is
     *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
     *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated float fp32_contents = 6;</code>
     */
    float getFp32Contents(int index);

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: double fp64_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for FP64 data type. The size must match what is
     *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
     *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated double fp64_contents = 7;</code>
     */
    java.util.List<Double> getFp64ContentsList();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: double fp64_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for FP64 data type. The size must match what is
     *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
     *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated double fp64_contents = 7;</code>
     */
    int getFp64ContentsCount();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: double fp64_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for FP64 data type. The size must match what is
     *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
     *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated double fp64_contents = 7;</code>
     */
    double getFp64Contents(int index);

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: bytes byte_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for BYTES data type. The size must match what is
     *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
     *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated bytes byte_contents = 8;</code>
     */
    java.util.List<com.google.protobuf.ByteString> getByteContentsList();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: bytes byte_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for BYTES data type. The size must match what is
     *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
     *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated bytes byte_contents = 8;</code>
     */
    int getByteContentsCount();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: bytes byte_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for BYTES data type. The size must match what is
     *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
     *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated bytes byte_contents = 8;</code>
     */
    com.google.protobuf.ByteString getByteContents(int index);
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message InferTensorContents
   *&#64;&#64;
   *&#64;&#64;   The data contained in a tensor represented by the repeated type
   *&#64;&#64;   that matches the tensor's data type. Protobuf oneof is not used
   *&#64;&#64;   because oneofs cannot contain repeated fields.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.InferTensorContents}
   */
  public  static final class InferTensorContents extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.InferTensorContents)
      InferTensorContentsOrBuilder {
    // Use InferTensorContents.newBuilder() to construct.
    private InferTensorContents(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private InferTensorContents() {
      boolContents_ = java.util.Collections.emptyList();
      intContents_ = java.util.Collections.emptyList();
      int64Contents_ = java.util.Collections.emptyList();
      uintContents_ = java.util.Collections.emptyList();
      uint64Contents_ = java.util.Collections.emptyList();
      fp32Contents_ = java.util.Collections.emptyList();
      fp64Contents_ = java.util.Collections.emptyList();
      byteContents_ = java.util.Collections.emptyList();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private InferTensorContents(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                boolContents_ = new java.util.ArrayList<Boolean>();
                mutable_bitField0_ |= 0x00000001;
              }
              boolContents_.add(input.readBool());
              break;
            }
            case 10: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001) && input.getBytesUntilLimit() > 0) {
                boolContents_ = new java.util.ArrayList<Boolean>();
                mutable_bitField0_ |= 0x00000001;
              }
              while (input.getBytesUntilLimit() > 0) {
                boolContents_.add(input.readBool());
              }
              input.popLimit(limit);
              break;
            }
            case 16: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                intContents_ = new java.util.ArrayList<Integer>();
                mutable_bitField0_ |= 0x00000002;
              }
              intContents_.add(input.readInt32());
              break;
            }
            case 18: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002) && input.getBytesUntilLimit() > 0) {
                intContents_ = new java.util.ArrayList<Integer>();
                mutable_bitField0_ |= 0x00000002;
              }
              while (input.getBytesUntilLimit() > 0) {
                intContents_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 24: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                int64Contents_ = new java.util.ArrayList<Long>();
                mutable_bitField0_ |= 0x00000004;
              }
              int64Contents_.add(input.readInt64());
              break;
            }
            case 26: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004) && input.getBytesUntilLimit() > 0) {
                int64Contents_ = new java.util.ArrayList<Long>();
                mutable_bitField0_ |= 0x00000004;
              }
              while (input.getBytesUntilLimit() > 0) {
                int64Contents_.add(input.readInt64());
              }
              input.popLimit(limit);
              break;
            }
            case 32: {
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                uintContents_ = new java.util.ArrayList<Integer>();
                mutable_bitField0_ |= 0x00000008;
              }
              uintContents_.add(input.readUInt32());
              break;
            }
            case 34: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008) && input.getBytesUntilLimit() > 0) {
                uintContents_ = new java.util.ArrayList<Integer>();
                mutable_bitField0_ |= 0x00000008;
              }
              while (input.getBytesUntilLimit() > 0) {
                uintContents_.add(input.readUInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 40: {
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                uint64Contents_ = new java.util.ArrayList<Long>();
                mutable_bitField0_ |= 0x00000010;
              }
              uint64Contents_.add(input.readUInt64());
              break;
            }
            case 42: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010) && input.getBytesUntilLimit() > 0) {
                uint64Contents_ = new java.util.ArrayList<Long>();
                mutable_bitField0_ |= 0x00000010;
              }
              while (input.getBytesUntilLimit() > 0) {
                uint64Contents_.add(input.readUInt64());
              }
              input.popLimit(limit);
              break;
            }
            case 53: {
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                fp32Contents_ = new java.util.ArrayList<Float>();
                mutable_bitField0_ |= 0x00000020;
              }
              fp32Contents_.add(input.readFloat());
              break;
            }
            case 50: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020) && input.getBytesUntilLimit() > 0) {
                fp32Contents_ = new java.util.ArrayList<Float>();
                mutable_bitField0_ |= 0x00000020;
              }
              while (input.getBytesUntilLimit() > 0) {
                fp32Contents_.add(input.readFloat());
              }
              input.popLimit(limit);
              break;
            }
            case 57: {
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                fp64Contents_ = new java.util.ArrayList<Double>();
                mutable_bitField0_ |= 0x00000040;
              }
              fp64Contents_.add(input.readDouble());
              break;
            }
            case 58: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040) && input.getBytesUntilLimit() > 0) {
                fp64Contents_ = new java.util.ArrayList<Double>();
                mutable_bitField0_ |= 0x00000040;
              }
              while (input.getBytesUntilLimit() > 0) {
                fp64Contents_.add(input.readDouble());
              }
              input.popLimit(limit);
              break;
            }
            case 66: {
              if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
                byteContents_ = new java.util.ArrayList<com.google.protobuf.ByteString>();
                mutable_bitField0_ |= 0x00000080;
              }
              byteContents_.add(input.readBytes());
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          boolContents_ = java.util.Collections.unmodifiableList(boolContents_);
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          intContents_ = java.util.Collections.unmodifiableList(intContents_);
        }
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          int64Contents_ = java.util.Collections.unmodifiableList(int64Contents_);
        }
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          uintContents_ = java.util.Collections.unmodifiableList(uintContents_);
        }
        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
          uint64Contents_ = java.util.Collections.unmodifiableList(uint64Contents_);
        }
        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
          fp32Contents_ = java.util.Collections.unmodifiableList(fp32Contents_);
        }
        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
          fp64Contents_ = java.util.Collections.unmodifiableList(fp64Contents_);
        }
        if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
          byteContents_ = java.util.Collections.unmodifiableList(byteContents_);
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_InferTensorContents_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_InferTensorContents_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.InferTensorContents.class, GrpcService.InferTensorContents.Builder.class);
    }

    public static final int BOOL_CONTENTS_FIELD_NUMBER = 1;
    private java.util.List<Boolean> boolContents_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: bool bool_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for BOOL data type. The size must match what is
     *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
     *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated bool bool_contents = 1;</code>
     */
    public java.util.List<Boolean>
        getBoolContentsList() {
      return boolContents_;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: bool bool_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for BOOL data type. The size must match what is
     *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
     *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated bool bool_contents = 1;</code>
     */
    public int getBoolContentsCount() {
      return boolContents_.size();
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: bool bool_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for BOOL data type. The size must match what is
     *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
     *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated bool bool_contents = 1;</code>
     */
    public boolean getBoolContents(int index) {
      return boolContents_.get(index);
    }
    private int boolContentsMemoizedSerializedSize = -1;

    public static final int INT_CONTENTS_FIELD_NUMBER = 2;
    private java.util.List<Integer> intContents_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: int32 int_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for INT8, INT16, and INT32 data types. The size
     *&#64;&#64;     must match what is expected by the tensor's shape. The contents
     *&#64;&#64;     must be the flattened, one-dimensional, row-major order of the
     *&#64;&#64;     tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated int32 int_contents = 2;</code>
     */
    public java.util.List<Integer>
        getIntContentsList() {
      return intContents_;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: int32 int_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for INT8, INT16, and INT32 data types. The size
     *&#64;&#64;     must match what is expected by the tensor's shape. The contents
     *&#64;&#64;     must be the flattened, one-dimensional, row-major order of the
     *&#64;&#64;     tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated int32 int_contents = 2;</code>
     */
    public int getIntContentsCount() {
      return intContents_.size();
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: int32 int_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for INT8, INT16, and INT32 data types. The size
     *&#64;&#64;     must match what is expected by the tensor's shape. The contents
     *&#64;&#64;     must be the flattened, one-dimensional, row-major order of the
     *&#64;&#64;     tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated int32 int_contents = 2;</code>
     */
    public int getIntContents(int index) {
      return intContents_.get(index);
    }
    private int intContentsMemoizedSerializedSize = -1;

    public static final int INT64_CONTENTS_FIELD_NUMBER = 3;
    private java.util.List<Long> int64Contents_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: int64 int64_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for INT64 data types. The size must match what
     *&#64;&#64;     is expected by the tensor's shape. The contents must be the
     *&#64;&#64;     flattened, one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated int64 int64_contents = 3;</code>
     */
    public java.util.List<Long>
        getInt64ContentsList() {
      return int64Contents_;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: int64 int64_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for INT64 data types. The size must match what
     *&#64;&#64;     is expected by the tensor's shape. The contents must be the
     *&#64;&#64;     flattened, one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated int64 int64_contents = 3;</code>
     */
    public int getInt64ContentsCount() {
      return int64Contents_.size();
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: int64 int64_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for INT64 data types. The size must match what
     *&#64;&#64;     is expected by the tensor's shape. The contents must be the
     *&#64;&#64;     flattened, one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated int64 int64_contents = 3;</code>
     */
    public long getInt64Contents(int index) {
      return int64Contents_.get(index);
    }
    private int int64ContentsMemoizedSerializedSize = -1;

    public static final int UINT_CONTENTS_FIELD_NUMBER = 4;
    private java.util.List<Integer> uintContents_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: uint32 uint_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for UINT8, UINT16, and UINT32 data types. The size
     *&#64;&#64;     must match what is expected by the tensor's shape. The contents
     *&#64;&#64;     must be the flattened, one-dimensional, row-major order of the
     *&#64;&#64;     tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated uint32 uint_contents = 4;</code>
     */
    public java.util.List<Integer>
        getUintContentsList() {
      return uintContents_;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: uint32 uint_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for UINT8, UINT16, and UINT32 data types. The size
     *&#64;&#64;     must match what is expected by the tensor's shape. The contents
     *&#64;&#64;     must be the flattened, one-dimensional, row-major order of the
     *&#64;&#64;     tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated uint32 uint_contents = 4;</code>
     */
    public int getUintContentsCount() {
      return uintContents_.size();
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: uint32 uint_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for UINT8, UINT16, and UINT32 data types. The size
     *&#64;&#64;     must match what is expected by the tensor's shape. The contents
     *&#64;&#64;     must be the flattened, one-dimensional, row-major order of the
     *&#64;&#64;     tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated uint32 uint_contents = 4;</code>
     */
    public int getUintContents(int index) {
      return uintContents_.get(index);
    }
    private int uintContentsMemoizedSerializedSize = -1;

    public static final int UINT64_CONTENTS_FIELD_NUMBER = 5;
    private java.util.List<Long> uint64Contents_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: uint64 uint64_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for UINT64 data types. The size must match what
     *&#64;&#64;     is expected by the tensor's shape. The contents must be the
     *&#64;&#64;     flattened, one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated uint64 uint64_contents = 5;</code>
     */
    public java.util.List<Long>
        getUint64ContentsList() {
      return uint64Contents_;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: uint64 uint64_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for UINT64 data types. The size must match what
     *&#64;&#64;     is expected by the tensor's shape. The contents must be the
     *&#64;&#64;     flattened, one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated uint64 uint64_contents = 5;</code>
     */
    public int getUint64ContentsCount() {
      return uint64Contents_.size();
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: uint64 uint64_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for UINT64 data types. The size must match what
     *&#64;&#64;     is expected by the tensor's shape. The contents must be the
     *&#64;&#64;     flattened, one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated uint64 uint64_contents = 5;</code>
     */
    public long getUint64Contents(int index) {
      return uint64Contents_.get(index);
    }
    private int uint64ContentsMemoizedSerializedSize = -1;

    public static final int FP32_CONTENTS_FIELD_NUMBER = 6;
    private java.util.List<Float> fp32Contents_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: float fp32_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for FP32 data type. The size must match what is
     *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
     *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated float fp32_contents = 6;</code>
     */
    public java.util.List<Float>
        getFp32ContentsList() {
      return fp32Contents_;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: float fp32_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for FP32 data type. The size must match what is
     *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
     *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated float fp32_contents = 6;</code>
     */
    public int getFp32ContentsCount() {
      return fp32Contents_.size();
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: float fp32_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for FP32 data type. The size must match what is
     *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
     *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated float fp32_contents = 6;</code>
     */
    public float getFp32Contents(int index) {
      return fp32Contents_.get(index);
    }
    private int fp32ContentsMemoizedSerializedSize = -1;

    public static final int FP64_CONTENTS_FIELD_NUMBER = 7;
    private java.util.List<Double> fp64Contents_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: double fp64_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for FP64 data type. The size must match what is
     *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
     *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated double fp64_contents = 7;</code>
     */
    public java.util.List<Double>
        getFp64ContentsList() {
      return fp64Contents_;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: double fp64_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for FP64 data type. The size must match what is
     *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
     *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated double fp64_contents = 7;</code>
     */
    public int getFp64ContentsCount() {
      return fp64Contents_.size();
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: double fp64_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for FP64 data type. The size must match what is
     *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
     *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated double fp64_contents = 7;</code>
     */
    public double getFp64Contents(int index) {
      return fp64Contents_.get(index);
    }
    private int fp64ContentsMemoizedSerializedSize = -1;

    public static final int BYTE_CONTENTS_FIELD_NUMBER = 8;
    private java.util.List<com.google.protobuf.ByteString> byteContents_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: bytes byte_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for BYTES data type. The size must match what is
     *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
     *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated bytes byte_contents = 8;</code>
     */
    public java.util.List<com.google.protobuf.ByteString>
        getByteContentsList() {
      return byteContents_;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: bytes byte_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for BYTES data type. The size must match what is
     *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
     *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated bytes byte_contents = 8;</code>
     */
    public int getByteContentsCount() {
      return byteContents_.size();
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: bytes byte_contents (repeated)
     *&#64;&#64;
     *&#64;&#64;     Representation for BYTES data type. The size must match what is
     *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
     *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated bytes byte_contents = 8;</code>
     */
    public com.google.protobuf.ByteString getByteContents(int index) {
      return byteContents_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (getBoolContentsList().size() > 0) {
        output.writeUInt32NoTag(10);
        output.writeUInt32NoTag(boolContentsMemoizedSerializedSize);
      }
      for (int i = 0; i < boolContents_.size(); i++) {
        output.writeBoolNoTag(boolContents_.get(i));
      }
      if (getIntContentsList().size() > 0) {
        output.writeUInt32NoTag(18);
        output.writeUInt32NoTag(intContentsMemoizedSerializedSize);
      }
      for (int i = 0; i < intContents_.size(); i++) {
        output.writeInt32NoTag(intContents_.get(i));
      }
      if (getInt64ContentsList().size() > 0) {
        output.writeUInt32NoTag(26);
        output.writeUInt32NoTag(int64ContentsMemoizedSerializedSize);
      }
      for (int i = 0; i < int64Contents_.size(); i++) {
        output.writeInt64NoTag(int64Contents_.get(i));
      }
      if (getUintContentsList().size() > 0) {
        output.writeUInt32NoTag(34);
        output.writeUInt32NoTag(uintContentsMemoizedSerializedSize);
      }
      for (int i = 0; i < uintContents_.size(); i++) {
        output.writeUInt32NoTag(uintContents_.get(i));
      }
      if (getUint64ContentsList().size() > 0) {
        output.writeUInt32NoTag(42);
        output.writeUInt32NoTag(uint64ContentsMemoizedSerializedSize);
      }
      for (int i = 0; i < uint64Contents_.size(); i++) {
        output.writeUInt64NoTag(uint64Contents_.get(i));
      }
      if (getFp32ContentsList().size() > 0) {
        output.writeUInt32NoTag(50);
        output.writeUInt32NoTag(fp32ContentsMemoizedSerializedSize);
      }
      for (int i = 0; i < fp32Contents_.size(); i++) {
        output.writeFloatNoTag(fp32Contents_.get(i));
      }
      if (getFp64ContentsList().size() > 0) {
        output.writeUInt32NoTag(58);
        output.writeUInt32NoTag(fp64ContentsMemoizedSerializedSize);
      }
      for (int i = 0; i < fp64Contents_.size(); i++) {
        output.writeDoubleNoTag(fp64Contents_.get(i));
      }
      for (int i = 0; i < byteContents_.size(); i++) {
        output.writeBytes(8, byteContents_.get(i));
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        dataSize = 1 * getBoolContentsList().size();
        size += dataSize;
        if (!getBoolContentsList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        boolContentsMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < intContents_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(intContents_.get(i));
        }
        size += dataSize;
        if (!getIntContentsList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        intContentsMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < int64Contents_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt64SizeNoTag(int64Contents_.get(i));
        }
        size += dataSize;
        if (!getInt64ContentsList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        int64ContentsMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < uintContents_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(uintContents_.get(i));
        }
        size += dataSize;
        if (!getUintContentsList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        uintContentsMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < uint64Contents_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt64SizeNoTag(uint64Contents_.get(i));
        }
        size += dataSize;
        if (!getUint64ContentsList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        uint64ContentsMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 4 * getFp32ContentsList().size();
        size += dataSize;
        if (!getFp32ContentsList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        fp32ContentsMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 8 * getFp64ContentsList().size();
        size += dataSize;
        if (!getFp64ContentsList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        fp64ContentsMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < byteContents_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(byteContents_.get(i));
        }
        size += dataSize;
        size += 1 * getByteContentsList().size();
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.InferTensorContents)) {
        return super.equals(obj);
      }
      GrpcService.InferTensorContents other = (GrpcService.InferTensorContents) obj;

      boolean result = true;
      result = result && getBoolContentsList()
          .equals(other.getBoolContentsList());
      result = result && getIntContentsList()
          .equals(other.getIntContentsList());
      result = result && getInt64ContentsList()
          .equals(other.getInt64ContentsList());
      result = result && getUintContentsList()
          .equals(other.getUintContentsList());
      result = result && getUint64ContentsList()
          .equals(other.getUint64ContentsList());
      result = result && getFp32ContentsList()
          .equals(other.getFp32ContentsList());
      result = result && getFp64ContentsList()
          .equals(other.getFp64ContentsList());
      result = result && getByteContentsList()
          .equals(other.getByteContentsList());
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (getBoolContentsCount() > 0) {
        hash = (37 * hash) + BOOL_CONTENTS_FIELD_NUMBER;
        hash = (53 * hash) + getBoolContentsList().hashCode();
      }
      if (getIntContentsCount() > 0) {
        hash = (37 * hash) + INT_CONTENTS_FIELD_NUMBER;
        hash = (53 * hash) + getIntContentsList().hashCode();
      }
      if (getInt64ContentsCount() > 0) {
        hash = (37 * hash) + INT64_CONTENTS_FIELD_NUMBER;
        hash = (53 * hash) + getInt64ContentsList().hashCode();
      }
      if (getUintContentsCount() > 0) {
        hash = (37 * hash) + UINT_CONTENTS_FIELD_NUMBER;
        hash = (53 * hash) + getUintContentsList().hashCode();
      }
      if (getUint64ContentsCount() > 0) {
        hash = (37 * hash) + UINT64_CONTENTS_FIELD_NUMBER;
        hash = (53 * hash) + getUint64ContentsList().hashCode();
      }
      if (getFp32ContentsCount() > 0) {
        hash = (37 * hash) + FP32_CONTENTS_FIELD_NUMBER;
        hash = (53 * hash) + getFp32ContentsList().hashCode();
      }
      if (getFp64ContentsCount() > 0) {
        hash = (37 * hash) + FP64_CONTENTS_FIELD_NUMBER;
        hash = (53 * hash) + getFp64ContentsList().hashCode();
      }
      if (getByteContentsCount() > 0) {
        hash = (37 * hash) + BYTE_CONTENTS_FIELD_NUMBER;
        hash = (53 * hash) + getByteContentsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.InferTensorContents parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.InferTensorContents parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.InferTensorContents parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.InferTensorContents parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.InferTensorContents parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.InferTensorContents parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.InferTensorContents parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.InferTensorContents parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.InferTensorContents parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.InferTensorContents parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.InferTensorContents prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message InferTensorContents
     *&#64;&#64;
     *&#64;&#64;   The data contained in a tensor represented by the repeated type
     *&#64;&#64;   that matches the tensor's data type. Protobuf oneof is not used
     *&#64;&#64;   because oneofs cannot contain repeated fields.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.InferTensorContents}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.InferTensorContents)
        GrpcService.InferTensorContentsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_InferTensorContents_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_InferTensorContents_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.InferTensorContents.class, GrpcService.InferTensorContents.Builder.class);
      }

      // Construct using GrpcService.InferTensorContents.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        boolContents_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        intContents_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        int64Contents_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        uintContents_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);
        uint64Contents_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);
        fp32Contents_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);
        fp64Contents_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);
        byteContents_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000080);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_InferTensorContents_descriptor;
      }

      public GrpcService.InferTensorContents getDefaultInstanceForType() {
        return GrpcService.InferTensorContents.getDefaultInstance();
      }

      public GrpcService.InferTensorContents build() {
        GrpcService.InferTensorContents result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.InferTensorContents buildPartial() {
        GrpcService.InferTensorContents result = new GrpcService.InferTensorContents(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          boolContents_ = java.util.Collections.unmodifiableList(boolContents_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.boolContents_ = boolContents_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          intContents_ = java.util.Collections.unmodifiableList(intContents_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.intContents_ = intContents_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          int64Contents_ = java.util.Collections.unmodifiableList(int64Contents_);
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.int64Contents_ = int64Contents_;
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          uintContents_ = java.util.Collections.unmodifiableList(uintContents_);
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.uintContents_ = uintContents_;
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          uint64Contents_ = java.util.Collections.unmodifiableList(uint64Contents_);
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.uint64Contents_ = uint64Contents_;
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          fp32Contents_ = java.util.Collections.unmodifiableList(fp32Contents_);
          bitField0_ = (bitField0_ & ~0x00000020);
        }
        result.fp32Contents_ = fp32Contents_;
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          fp64Contents_ = java.util.Collections.unmodifiableList(fp64Contents_);
          bitField0_ = (bitField0_ & ~0x00000040);
        }
        result.fp64Contents_ = fp64Contents_;
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          byteContents_ = java.util.Collections.unmodifiableList(byteContents_);
          bitField0_ = (bitField0_ & ~0x00000080);
        }
        result.byteContents_ = byteContents_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.InferTensorContents) {
          return mergeFrom((GrpcService.InferTensorContents)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.InferTensorContents other) {
        if (other == GrpcService.InferTensorContents.getDefaultInstance()) return this;
        if (!other.boolContents_.isEmpty()) {
          if (boolContents_.isEmpty()) {
            boolContents_ = other.boolContents_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureBoolContentsIsMutable();
            boolContents_.addAll(other.boolContents_);
          }
          onChanged();
        }
        if (!other.intContents_.isEmpty()) {
          if (intContents_.isEmpty()) {
            intContents_ = other.intContents_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureIntContentsIsMutable();
            intContents_.addAll(other.intContents_);
          }
          onChanged();
        }
        if (!other.int64Contents_.isEmpty()) {
          if (int64Contents_.isEmpty()) {
            int64Contents_ = other.int64Contents_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureInt64ContentsIsMutable();
            int64Contents_.addAll(other.int64Contents_);
          }
          onChanged();
        }
        if (!other.uintContents_.isEmpty()) {
          if (uintContents_.isEmpty()) {
            uintContents_ = other.uintContents_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureUintContentsIsMutable();
            uintContents_.addAll(other.uintContents_);
          }
          onChanged();
        }
        if (!other.uint64Contents_.isEmpty()) {
          if (uint64Contents_.isEmpty()) {
            uint64Contents_ = other.uint64Contents_;
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            ensureUint64ContentsIsMutable();
            uint64Contents_.addAll(other.uint64Contents_);
          }
          onChanged();
        }
        if (!other.fp32Contents_.isEmpty()) {
          if (fp32Contents_.isEmpty()) {
            fp32Contents_ = other.fp32Contents_;
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            ensureFp32ContentsIsMutable();
            fp32Contents_.addAll(other.fp32Contents_);
          }
          onChanged();
        }
        if (!other.fp64Contents_.isEmpty()) {
          if (fp64Contents_.isEmpty()) {
            fp64Contents_ = other.fp64Contents_;
            bitField0_ = (bitField0_ & ~0x00000040);
          } else {
            ensureFp64ContentsIsMutable();
            fp64Contents_.addAll(other.fp64Contents_);
          }
          onChanged();
        }
        if (!other.byteContents_.isEmpty()) {
          if (byteContents_.isEmpty()) {
            byteContents_ = other.byteContents_;
            bitField0_ = (bitField0_ & ~0x00000080);
          } else {
            ensureByteContentsIsMutable();
            byteContents_.addAll(other.byteContents_);
          }
          onChanged();
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.InferTensorContents parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.InferTensorContents) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<Boolean> boolContents_ = java.util.Collections.emptyList();
      private void ensureBoolContentsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          boolContents_ = new java.util.ArrayList<Boolean>(boolContents_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bool bool_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for BOOL data type. The size must match what is
       *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
       *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated bool bool_contents = 1;</code>
       */
      public java.util.List<Boolean>
          getBoolContentsList() {
        return java.util.Collections.unmodifiableList(boolContents_);
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bool bool_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for BOOL data type. The size must match what is
       *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
       *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated bool bool_contents = 1;</code>
       */
      public int getBoolContentsCount() {
        return boolContents_.size();
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bool bool_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for BOOL data type. The size must match what is
       *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
       *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated bool bool_contents = 1;</code>
       */
      public boolean getBoolContents(int index) {
        return boolContents_.get(index);
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bool bool_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for BOOL data type. The size must match what is
       *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
       *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated bool bool_contents = 1;</code>
       */
      public Builder setBoolContents(
          int index, boolean value) {
        ensureBoolContentsIsMutable();
        boolContents_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bool bool_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for BOOL data type. The size must match what is
       *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
       *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated bool bool_contents = 1;</code>
       */
      public Builder addBoolContents(boolean value) {
        ensureBoolContentsIsMutable();
        boolContents_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bool bool_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for BOOL data type. The size must match what is
       *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
       *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated bool bool_contents = 1;</code>
       */
      public Builder addAllBoolContents(
          Iterable<? extends Boolean> values) {
        ensureBoolContentsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, boolContents_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bool bool_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for BOOL data type. The size must match what is
       *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
       *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated bool bool_contents = 1;</code>
       */
      public Builder clearBoolContents() {
        boolContents_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }

      private java.util.List<Integer> intContents_ = java.util.Collections.emptyList();
      private void ensureIntContentsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          intContents_ = new java.util.ArrayList<Integer>(intContents_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: int32 int_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for INT8, INT16, and INT32 data types. The size
       *&#64;&#64;     must match what is expected by the tensor's shape. The contents
       *&#64;&#64;     must be the flattened, one-dimensional, row-major order of the
       *&#64;&#64;     tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int32 int_contents = 2;</code>
       */
      public java.util.List<Integer>
          getIntContentsList() {
        return java.util.Collections.unmodifiableList(intContents_);
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: int32 int_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for INT8, INT16, and INT32 data types. The size
       *&#64;&#64;     must match what is expected by the tensor's shape. The contents
       *&#64;&#64;     must be the flattened, one-dimensional, row-major order of the
       *&#64;&#64;     tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int32 int_contents = 2;</code>
       */
      public int getIntContentsCount() {
        return intContents_.size();
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: int32 int_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for INT8, INT16, and INT32 data types. The size
       *&#64;&#64;     must match what is expected by the tensor's shape. The contents
       *&#64;&#64;     must be the flattened, one-dimensional, row-major order of the
       *&#64;&#64;     tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int32 int_contents = 2;</code>
       */
      public int getIntContents(int index) {
        return intContents_.get(index);
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: int32 int_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for INT8, INT16, and INT32 data types. The size
       *&#64;&#64;     must match what is expected by the tensor's shape. The contents
       *&#64;&#64;     must be the flattened, one-dimensional, row-major order of the
       *&#64;&#64;     tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int32 int_contents = 2;</code>
       */
      public Builder setIntContents(
          int index, int value) {
        ensureIntContentsIsMutable();
        intContents_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: int32 int_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for INT8, INT16, and INT32 data types. The size
       *&#64;&#64;     must match what is expected by the tensor's shape. The contents
       *&#64;&#64;     must be the flattened, one-dimensional, row-major order of the
       *&#64;&#64;     tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int32 int_contents = 2;</code>
       */
      public Builder addIntContents(int value) {
        ensureIntContentsIsMutable();
        intContents_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: int32 int_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for INT8, INT16, and INT32 data types. The size
       *&#64;&#64;     must match what is expected by the tensor's shape. The contents
       *&#64;&#64;     must be the flattened, one-dimensional, row-major order of the
       *&#64;&#64;     tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int32 int_contents = 2;</code>
       */
      public Builder addAllIntContents(
          Iterable<? extends Integer> values) {
        ensureIntContentsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, intContents_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: int32 int_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for INT8, INT16, and INT32 data types. The size
       *&#64;&#64;     must match what is expected by the tensor's shape. The contents
       *&#64;&#64;     must be the flattened, one-dimensional, row-major order of the
       *&#64;&#64;     tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int32 int_contents = 2;</code>
       */
      public Builder clearIntContents() {
        intContents_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }

      private java.util.List<Long> int64Contents_ = java.util.Collections.emptyList();
      private void ensureInt64ContentsIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          int64Contents_ = new java.util.ArrayList<Long>(int64Contents_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: int64 int64_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for INT64 data types. The size must match what
       *&#64;&#64;     is expected by the tensor's shape. The contents must be the
       *&#64;&#64;     flattened, one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int64 int64_contents = 3;</code>
       */
      public java.util.List<Long>
          getInt64ContentsList() {
        return java.util.Collections.unmodifiableList(int64Contents_);
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: int64 int64_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for INT64 data types. The size must match what
       *&#64;&#64;     is expected by the tensor's shape. The contents must be the
       *&#64;&#64;     flattened, one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int64 int64_contents = 3;</code>
       */
      public int getInt64ContentsCount() {
        return int64Contents_.size();
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: int64 int64_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for INT64 data types. The size must match what
       *&#64;&#64;     is expected by the tensor's shape. The contents must be the
       *&#64;&#64;     flattened, one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int64 int64_contents = 3;</code>
       */
      public long getInt64Contents(int index) {
        return int64Contents_.get(index);
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: int64 int64_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for INT64 data types. The size must match what
       *&#64;&#64;     is expected by the tensor's shape. The contents must be the
       *&#64;&#64;     flattened, one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int64 int64_contents = 3;</code>
       */
      public Builder setInt64Contents(
          int index, long value) {
        ensureInt64ContentsIsMutable();
        int64Contents_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: int64 int64_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for INT64 data types. The size must match what
       *&#64;&#64;     is expected by the tensor's shape. The contents must be the
       *&#64;&#64;     flattened, one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int64 int64_contents = 3;</code>
       */
      public Builder addInt64Contents(long value) {
        ensureInt64ContentsIsMutable();
        int64Contents_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: int64 int64_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for INT64 data types. The size must match what
       *&#64;&#64;     is expected by the tensor's shape. The contents must be the
       *&#64;&#64;     flattened, one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int64 int64_contents = 3;</code>
       */
      public Builder addAllInt64Contents(
          Iterable<? extends Long> values) {
        ensureInt64ContentsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, int64Contents_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: int64 int64_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for INT64 data types. The size must match what
       *&#64;&#64;     is expected by the tensor's shape. The contents must be the
       *&#64;&#64;     flattened, one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int64 int64_contents = 3;</code>
       */
      public Builder clearInt64Contents() {
        int64Contents_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }

      private java.util.List<Integer> uintContents_ = java.util.Collections.emptyList();
      private void ensureUintContentsIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          uintContents_ = new java.util.ArrayList<Integer>(uintContents_);
          bitField0_ |= 0x00000008;
         }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: uint32 uint_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for UINT8, UINT16, and UINT32 data types. The size
       *&#64;&#64;     must match what is expected by the tensor's shape. The contents
       *&#64;&#64;     must be the flattened, one-dimensional, row-major order of the
       *&#64;&#64;     tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated uint32 uint_contents = 4;</code>
       */
      public java.util.List<Integer>
          getUintContentsList() {
        return java.util.Collections.unmodifiableList(uintContents_);
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: uint32 uint_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for UINT8, UINT16, and UINT32 data types. The size
       *&#64;&#64;     must match what is expected by the tensor's shape. The contents
       *&#64;&#64;     must be the flattened, one-dimensional, row-major order of the
       *&#64;&#64;     tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated uint32 uint_contents = 4;</code>
       */
      public int getUintContentsCount() {
        return uintContents_.size();
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: uint32 uint_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for UINT8, UINT16, and UINT32 data types. The size
       *&#64;&#64;     must match what is expected by the tensor's shape. The contents
       *&#64;&#64;     must be the flattened, one-dimensional, row-major order of the
       *&#64;&#64;     tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated uint32 uint_contents = 4;</code>
       */
      public int getUintContents(int index) {
        return uintContents_.get(index);
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: uint32 uint_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for UINT8, UINT16, and UINT32 data types. The size
       *&#64;&#64;     must match what is expected by the tensor's shape. The contents
       *&#64;&#64;     must be the flattened, one-dimensional, row-major order of the
       *&#64;&#64;     tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated uint32 uint_contents = 4;</code>
       */
      public Builder setUintContents(
          int index, int value) {
        ensureUintContentsIsMutable();
        uintContents_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: uint32 uint_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for UINT8, UINT16, and UINT32 data types. The size
       *&#64;&#64;     must match what is expected by the tensor's shape. The contents
       *&#64;&#64;     must be the flattened, one-dimensional, row-major order of the
       *&#64;&#64;     tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated uint32 uint_contents = 4;</code>
       */
      public Builder addUintContents(int value) {
        ensureUintContentsIsMutable();
        uintContents_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: uint32 uint_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for UINT8, UINT16, and UINT32 data types. The size
       *&#64;&#64;     must match what is expected by the tensor's shape. The contents
       *&#64;&#64;     must be the flattened, one-dimensional, row-major order of the
       *&#64;&#64;     tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated uint32 uint_contents = 4;</code>
       */
      public Builder addAllUintContents(
          Iterable<? extends Integer> values) {
        ensureUintContentsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, uintContents_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: uint32 uint_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for UINT8, UINT16, and UINT32 data types. The size
       *&#64;&#64;     must match what is expected by the tensor's shape. The contents
       *&#64;&#64;     must be the flattened, one-dimensional, row-major order of the
       *&#64;&#64;     tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated uint32 uint_contents = 4;</code>
       */
      public Builder clearUintContents() {
        uintContents_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }

      private java.util.List<Long> uint64Contents_ = java.util.Collections.emptyList();
      private void ensureUint64ContentsIsMutable() {
        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
          uint64Contents_ = new java.util.ArrayList<Long>(uint64Contents_);
          bitField0_ |= 0x00000010;
         }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: uint64 uint64_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for UINT64 data types. The size must match what
       *&#64;&#64;     is expected by the tensor's shape. The contents must be the
       *&#64;&#64;     flattened, one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated uint64 uint64_contents = 5;</code>
       */
      public java.util.List<Long>
          getUint64ContentsList() {
        return java.util.Collections.unmodifiableList(uint64Contents_);
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: uint64 uint64_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for UINT64 data types. The size must match what
       *&#64;&#64;     is expected by the tensor's shape. The contents must be the
       *&#64;&#64;     flattened, one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated uint64 uint64_contents = 5;</code>
       */
      public int getUint64ContentsCount() {
        return uint64Contents_.size();
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: uint64 uint64_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for UINT64 data types. The size must match what
       *&#64;&#64;     is expected by the tensor's shape. The contents must be the
       *&#64;&#64;     flattened, one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated uint64 uint64_contents = 5;</code>
       */
      public long getUint64Contents(int index) {
        return uint64Contents_.get(index);
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: uint64 uint64_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for UINT64 data types. The size must match what
       *&#64;&#64;     is expected by the tensor's shape. The contents must be the
       *&#64;&#64;     flattened, one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated uint64 uint64_contents = 5;</code>
       */
      public Builder setUint64Contents(
          int index, long value) {
        ensureUint64ContentsIsMutable();
        uint64Contents_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: uint64 uint64_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for UINT64 data types. The size must match what
       *&#64;&#64;     is expected by the tensor's shape. The contents must be the
       *&#64;&#64;     flattened, one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated uint64 uint64_contents = 5;</code>
       */
      public Builder addUint64Contents(long value) {
        ensureUint64ContentsIsMutable();
        uint64Contents_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: uint64 uint64_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for UINT64 data types. The size must match what
       *&#64;&#64;     is expected by the tensor's shape. The contents must be the
       *&#64;&#64;     flattened, one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated uint64 uint64_contents = 5;</code>
       */
      public Builder addAllUint64Contents(
          Iterable<? extends Long> values) {
        ensureUint64ContentsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, uint64Contents_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: uint64 uint64_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for UINT64 data types. The size must match what
       *&#64;&#64;     is expected by the tensor's shape. The contents must be the
       *&#64;&#64;     flattened, one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated uint64 uint64_contents = 5;</code>
       */
      public Builder clearUint64Contents() {
        uint64Contents_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }

      private java.util.List<Float> fp32Contents_ = java.util.Collections.emptyList();
      private void ensureFp32ContentsIsMutable() {
        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
          fp32Contents_ = new java.util.ArrayList<Float>(fp32Contents_);
          bitField0_ |= 0x00000020;
         }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: float fp32_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for FP32 data type. The size must match what is
       *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
       *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated float fp32_contents = 6;</code>
       */
      public java.util.List<Float>
          getFp32ContentsList() {
        return java.util.Collections.unmodifiableList(fp32Contents_);
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: float fp32_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for FP32 data type. The size must match what is
       *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
       *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated float fp32_contents = 6;</code>
       */
      public int getFp32ContentsCount() {
        return fp32Contents_.size();
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: float fp32_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for FP32 data type. The size must match what is
       *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
       *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated float fp32_contents = 6;</code>
       */
      public float getFp32Contents(int index) {
        return fp32Contents_.get(index);
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: float fp32_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for FP32 data type. The size must match what is
       *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
       *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated float fp32_contents = 6;</code>
       */
      public Builder setFp32Contents(
          int index, float value) {
        ensureFp32ContentsIsMutable();
        fp32Contents_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: float fp32_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for FP32 data type. The size must match what is
       *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
       *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated float fp32_contents = 6;</code>
       */
      public Builder addFp32Contents(float value) {
        ensureFp32ContentsIsMutable();
        fp32Contents_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: float fp32_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for FP32 data type. The size must match what is
       *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
       *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated float fp32_contents = 6;</code>
       */
      public Builder addAllFp32Contents(
          Iterable<? extends Float> values) {
        ensureFp32ContentsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, fp32Contents_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: float fp32_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for FP32 data type. The size must match what is
       *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
       *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated float fp32_contents = 6;</code>
       */
      public Builder clearFp32Contents() {
        fp32Contents_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }

      private java.util.List<Double> fp64Contents_ = java.util.Collections.emptyList();
      private void ensureFp64ContentsIsMutable() {
        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
          fp64Contents_ = new java.util.ArrayList<Double>(fp64Contents_);
          bitField0_ |= 0x00000040;
         }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: double fp64_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for FP64 data type. The size must match what is
       *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
       *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated double fp64_contents = 7;</code>
       */
      public java.util.List<Double>
          getFp64ContentsList() {
        return java.util.Collections.unmodifiableList(fp64Contents_);
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: double fp64_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for FP64 data type. The size must match what is
       *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
       *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated double fp64_contents = 7;</code>
       */
      public int getFp64ContentsCount() {
        return fp64Contents_.size();
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: double fp64_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for FP64 data type. The size must match what is
       *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
       *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated double fp64_contents = 7;</code>
       */
      public double getFp64Contents(int index) {
        return fp64Contents_.get(index);
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: double fp64_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for FP64 data type. The size must match what is
       *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
       *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated double fp64_contents = 7;</code>
       */
      public Builder setFp64Contents(
          int index, double value) {
        ensureFp64ContentsIsMutable();
        fp64Contents_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: double fp64_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for FP64 data type. The size must match what is
       *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
       *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated double fp64_contents = 7;</code>
       */
      public Builder addFp64Contents(double value) {
        ensureFp64ContentsIsMutable();
        fp64Contents_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: double fp64_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for FP64 data type. The size must match what is
       *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
       *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated double fp64_contents = 7;</code>
       */
      public Builder addAllFp64Contents(
          Iterable<? extends Double> values) {
        ensureFp64ContentsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, fp64Contents_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: double fp64_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for FP64 data type. The size must match what is
       *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
       *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated double fp64_contents = 7;</code>
       */
      public Builder clearFp64Contents() {
        fp64Contents_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }

      private java.util.List<com.google.protobuf.ByteString> byteContents_ = java.util.Collections.emptyList();
      private void ensureByteContentsIsMutable() {
        if (!((bitField0_ & 0x00000080) == 0x00000080)) {
          byteContents_ = new java.util.ArrayList<com.google.protobuf.ByteString>(byteContents_);
          bitField0_ |= 0x00000080;
         }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bytes byte_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for BYTES data type. The size must match what is
       *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
       *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated bytes byte_contents = 8;</code>
       */
      public java.util.List<com.google.protobuf.ByteString>
          getByteContentsList() {
        return java.util.Collections.unmodifiableList(byteContents_);
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bytes byte_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for BYTES data type. The size must match what is
       *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
       *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated bytes byte_contents = 8;</code>
       */
      public int getByteContentsCount() {
        return byteContents_.size();
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bytes byte_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for BYTES data type. The size must match what is
       *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
       *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated bytes byte_contents = 8;</code>
       */
      public com.google.protobuf.ByteString getByteContents(int index) {
        return byteContents_.get(index);
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bytes byte_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for BYTES data type. The size must match what is
       *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
       *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated bytes byte_contents = 8;</code>
       */
      public Builder setByteContents(
          int index, com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureByteContentsIsMutable();
        byteContents_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bytes byte_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for BYTES data type. The size must match what is
       *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
       *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated bytes byte_contents = 8;</code>
       */
      public Builder addByteContents(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureByteContentsIsMutable();
        byteContents_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bytes byte_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for BYTES data type. The size must match what is
       *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
       *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated bytes byte_contents = 8;</code>
       */
      public Builder addAllByteContents(
          Iterable<? extends com.google.protobuf.ByteString> values) {
        ensureByteContentsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, byteContents_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bytes byte_contents (repeated)
       *&#64;&#64;
       *&#64;&#64;     Representation for BYTES data type. The size must match what is
       *&#64;&#64;     expected by the tensor's shape. The contents must be the flattened,
       *&#64;&#64;     one-dimensional, row-major order of the tensor elements.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated bytes byte_contents = 8;</code>
       */
      public Builder clearByteContents() {
        byteContents_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.InferTensorContents)
    }

    // @@protoc_insertion_point(class_scope:inference.InferTensorContents)
    private static final GrpcService.InferTensorContents DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.InferTensorContents();
    }

    public static GrpcService.InferTensorContents getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<InferTensorContents>
        PARSER = new com.google.protobuf.AbstractParser<InferTensorContents>() {
      public InferTensorContents parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new InferTensorContents(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<InferTensorContents> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<InferTensorContents> getParserForType() {
      return PARSER;
    }

    public GrpcService.InferTensorContents getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ModelInferRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.ModelInferRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string model_name
     *&#64;&#64;
     *&#64;&#64;     The name of the model to use for inferencing.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string model_name = 1;</code>
     */
    String getModelName();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string model_name
     *&#64;&#64;
     *&#64;&#64;     The name of the model to use for inferencing.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string model_name = 1;</code>
     */
    com.google.protobuf.ByteString
        getModelNameBytes();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string model_version
     *&#64;&#64;
     *&#64;&#64;     The version of the model to use for inference. If not
     *&#64;&#64;     given the latest/most-recent version of the model is used.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string model_version = 2;</code>
     */
    String getModelVersion();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string model_version
     *&#64;&#64;
     *&#64;&#64;     The version of the model to use for inference. If not
     *&#64;&#64;     given the latest/most-recent version of the model is used.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string model_version = 2;</code>
     */
    com.google.protobuf.ByteString
        getModelVersionBytes();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string id
     *&#64;&#64;
     *&#64;&#64;     Optional identifier for the request. If specified will be
     *&#64;&#64;     returned in the response.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string id = 3;</code>
     */
    String getId();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string id
     *&#64;&#64;
     *&#64;&#64;     Optional identifier for the request. If specified will be
     *&#64;&#64;     returned in the response.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string id = 3;</code>
     */
    com.google.protobuf.ByteString
        getIdBytes();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
     *&#64;&#64;
     *&#64;&#64;     Optional inference parameters.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
     */
    int getParametersCount();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
     *&#64;&#64;
     *&#64;&#64;     Optional inference parameters.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
     */
    boolean containsParameters(
            String key);
    /**
     * Use {@link #getParametersMap()} instead.
     */
    @Deprecated
    java.util.Map<String, GrpcService.InferParameter>
    getParameters();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
     *&#64;&#64;
     *&#64;&#64;     Optional inference parameters.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
     */
    java.util.Map<String, GrpcService.InferParameter>
    getParametersMap();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
     *&#64;&#64;
     *&#64;&#64;     Optional inference parameters.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
     */

    GrpcService.InferParameter getParametersOrDefault(
            String key,
            GrpcService.InferParameter defaultValue);
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
     *&#64;&#64;
     *&#64;&#64;     Optional inference parameters.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
     */

    GrpcService.InferParameter getParametersOrThrow(
            String key);

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: InferInputTensor inputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The input tensors for the inference.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelInferRequest.InferInputTensor inputs = 5;</code>
     */
    java.util.List<GrpcService.ModelInferRequest.InferInputTensor>
        getInputsList();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: InferInputTensor inputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The input tensors for the inference.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelInferRequest.InferInputTensor inputs = 5;</code>
     */
    GrpcService.ModelInferRequest.InferInputTensor getInputs(int index);
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: InferInputTensor inputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The input tensors for the inference.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelInferRequest.InferInputTensor inputs = 5;</code>
     */
    int getInputsCount();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: InferInputTensor inputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The input tensors for the inference.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelInferRequest.InferInputTensor inputs = 5;</code>
     */
    java.util.List<? extends GrpcService.ModelInferRequest.InferInputTensorOrBuilder>
        getInputsOrBuilderList();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: InferInputTensor inputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The input tensors for the inference.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelInferRequest.InferInputTensor inputs = 5;</code>
     */
    GrpcService.ModelInferRequest.InferInputTensorOrBuilder getInputsOrBuilder(
            int index);

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: InferRequestedOutputTensor outputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The requested output tensors for the inference. Optional, if not
     *&#64;&#64;     specified all outputs specified in the model config will be
     *&#64;&#64;     returned.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelInferRequest.InferRequestedOutputTensor outputs = 6;</code>
     */
    java.util.List<GrpcService.ModelInferRequest.InferRequestedOutputTensor>
        getOutputsList();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: InferRequestedOutputTensor outputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The requested output tensors for the inference. Optional, if not
     *&#64;&#64;     specified all outputs specified in the model config will be
     *&#64;&#64;     returned.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelInferRequest.InferRequestedOutputTensor outputs = 6;</code>
     */
    GrpcService.ModelInferRequest.InferRequestedOutputTensor getOutputs(int index);
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: InferRequestedOutputTensor outputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The requested output tensors for the inference. Optional, if not
     *&#64;&#64;     specified all outputs specified in the model config will be
     *&#64;&#64;     returned.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelInferRequest.InferRequestedOutputTensor outputs = 6;</code>
     */
    int getOutputsCount();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: InferRequestedOutputTensor outputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The requested output tensors for the inference. Optional, if not
     *&#64;&#64;     specified all outputs specified in the model config will be
     *&#64;&#64;     returned.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelInferRequest.InferRequestedOutputTensor outputs = 6;</code>
     */
    java.util.List<? extends GrpcService.ModelInferRequest.InferRequestedOutputTensorOrBuilder>
        getOutputsOrBuilderList();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: InferRequestedOutputTensor outputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The requested output tensors for the inference. Optional, if not
     *&#64;&#64;     specified all outputs specified in the model config will be
     *&#64;&#64;     returned.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelInferRequest.InferRequestedOutputTensor outputs = 6;</code>
     */
    GrpcService.ModelInferRequest.InferRequestedOutputTensorOrBuilder getOutputsOrBuilder(
            int index);

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: bytes raw_input_contents
     *&#64;&#64;
     *&#64;&#64;     The data contained in an input tensor can be represented in
     *&#64;&#64;     "raw" bytes form or in the repeated type that matches the
     *&#64;&#64;     tensor's data type. Using the "raw" bytes form will
     *&#64;&#64;     typically allow higher performance due to the way protobuf
     *&#64;&#64;     allocation and reuse interacts with GRPC. For example, see
     *&#64;&#64;     https://github.com/grpc/grpc/issues/23231.
     *&#64;&#64;
     *&#64;&#64;     To use the raw representation 'raw_input_contents' must be
     *&#64;&#64;     initialized with data for each tensor in the same order as
     *&#64;&#64;     'inputs'. For each tensor, the size of this content must
     *&#64;&#64;     match what is expected by the tensor's shape and data
     *&#64;&#64;     type. The raw data must be the flattened, one-dimensional,
     *&#64;&#64;     row-major order of the tensor elements without any stride
     *&#64;&#64;     or padding between the elements. Note that the FP16 data
     *&#64;&#64;     type must be represented as raw content as there is no
     *&#64;&#64;     specific data type for a 16-bit float type.
     *&#64;&#64;
     *&#64;&#64;     If this field is specified then InferInputTensor::contents
     *&#64;&#64;     must not be specified for any input tensor.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated bytes raw_input_contents = 7;</code>
     */
    java.util.List<com.google.protobuf.ByteString> getRawInputContentsList();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: bytes raw_input_contents
     *&#64;&#64;
     *&#64;&#64;     The data contained in an input tensor can be represented in
     *&#64;&#64;     "raw" bytes form or in the repeated type that matches the
     *&#64;&#64;     tensor's data type. Using the "raw" bytes form will
     *&#64;&#64;     typically allow higher performance due to the way protobuf
     *&#64;&#64;     allocation and reuse interacts with GRPC. For example, see
     *&#64;&#64;     https://github.com/grpc/grpc/issues/23231.
     *&#64;&#64;
     *&#64;&#64;     To use the raw representation 'raw_input_contents' must be
     *&#64;&#64;     initialized with data for each tensor in the same order as
     *&#64;&#64;     'inputs'. For each tensor, the size of this content must
     *&#64;&#64;     match what is expected by the tensor's shape and data
     *&#64;&#64;     type. The raw data must be the flattened, one-dimensional,
     *&#64;&#64;     row-major order of the tensor elements without any stride
     *&#64;&#64;     or padding between the elements. Note that the FP16 data
     *&#64;&#64;     type must be represented as raw content as there is no
     *&#64;&#64;     specific data type for a 16-bit float type.
     *&#64;&#64;
     *&#64;&#64;     If this field is specified then InferInputTensor::contents
     *&#64;&#64;     must not be specified for any input tensor.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated bytes raw_input_contents = 7;</code>
     */
    int getRawInputContentsCount();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: bytes raw_input_contents
     *&#64;&#64;
     *&#64;&#64;     The data contained in an input tensor can be represented in
     *&#64;&#64;     "raw" bytes form or in the repeated type that matches the
     *&#64;&#64;     tensor's data type. Using the "raw" bytes form will
     *&#64;&#64;     typically allow higher performance due to the way protobuf
     *&#64;&#64;     allocation and reuse interacts with GRPC. For example, see
     *&#64;&#64;     https://github.com/grpc/grpc/issues/23231.
     *&#64;&#64;
     *&#64;&#64;     To use the raw representation 'raw_input_contents' must be
     *&#64;&#64;     initialized with data for each tensor in the same order as
     *&#64;&#64;     'inputs'. For each tensor, the size of this content must
     *&#64;&#64;     match what is expected by the tensor's shape and data
     *&#64;&#64;     type. The raw data must be the flattened, one-dimensional,
     *&#64;&#64;     row-major order of the tensor elements without any stride
     *&#64;&#64;     or padding between the elements. Note that the FP16 data
     *&#64;&#64;     type must be represented as raw content as there is no
     *&#64;&#64;     specific data type for a 16-bit float type.
     *&#64;&#64;
     *&#64;&#64;     If this field is specified then InferInputTensor::contents
     *&#64;&#64;     must not be specified for any input tensor.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated bytes raw_input_contents = 7;</code>
     */
    com.google.protobuf.ByteString getRawInputContents(int index);
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message ModelInferRequest
   *&#64;&#64;
   *&#64;&#64;   Request message for ModelInfer.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.ModelInferRequest}
   */
  public  static final class ModelInferRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.ModelInferRequest)
      ModelInferRequestOrBuilder {
    // Use ModelInferRequest.newBuilder() to construct.
    private ModelInferRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ModelInferRequest() {
      modelName_ = "";
      modelVersion_ = "";
      id_ = "";
      inputs_ = java.util.Collections.emptyList();
      outputs_ = java.util.Collections.emptyList();
      rawInputContents_ = java.util.Collections.emptyList();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ModelInferRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              String s = input.readStringRequireUtf8();

              modelName_ = s;
              break;
            }
            case 18: {
              String s = input.readStringRequireUtf8();

              modelVersion_ = s;
              break;
            }
            case 26: {
              String s = input.readStringRequireUtf8();

              id_ = s;
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                parameters_ = com.google.protobuf.MapField.newMapField(
                    ParametersDefaultEntryHolder.defaultEntry);
                mutable_bitField0_ |= 0x00000008;
              }
              com.google.protobuf.MapEntry<String, GrpcService.InferParameter>
              parameters = input.readMessage(
                  ParametersDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
              parameters_.getMutableMap().put(parameters.getKey(), parameters.getValue());
              break;
            }
            case 42: {
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                inputs_ = new java.util.ArrayList<GrpcService.ModelInferRequest.InferInputTensor>();
                mutable_bitField0_ |= 0x00000010;
              }
              inputs_.add(
                  input.readMessage(GrpcService.ModelInferRequest.InferInputTensor.parser(), extensionRegistry));
              break;
            }
            case 50: {
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                outputs_ = new java.util.ArrayList<GrpcService.ModelInferRequest.InferRequestedOutputTensor>();
                mutable_bitField0_ |= 0x00000020;
              }
              outputs_.add(
                  input.readMessage(GrpcService.ModelInferRequest.InferRequestedOutputTensor.parser(), extensionRegistry));
              break;
            }
            case 58: {
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                rawInputContents_ = new java.util.ArrayList<com.google.protobuf.ByteString>();
                mutable_bitField0_ |= 0x00000040;
              }
              rawInputContents_.add(input.readBytes());
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
          inputs_ = java.util.Collections.unmodifiableList(inputs_);
        }
        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
          outputs_ = java.util.Collections.unmodifiableList(outputs_);
        }
        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
          rawInputContents_ = java.util.Collections.unmodifiableList(rawInputContents_);
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_ModelInferRequest_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 4:
          return internalGetParameters();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_ModelInferRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.ModelInferRequest.class, GrpcService.ModelInferRequest.Builder.class);
    }

    public interface InferInputTensorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:inference.ModelInferRequest.InferInputTensor)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;       The tensor name.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      String getName();
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;       The tensor name.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      com.google.protobuf.ByteString
          getNameBytes();

      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string datatype
       *&#64;&#64;
       *&#64;&#64;       The tensor data type.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string datatype = 2;</code>
       */
      String getDatatype();
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string datatype
       *&#64;&#64;
       *&#64;&#64;       The tensor data type.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string datatype = 2;</code>
       */
      com.google.protobuf.ByteString
          getDatatypeBytes();

      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
       *&#64;&#64;
       *&#64;&#64;       The tensor shape.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int64 shape = 3;</code>
       */
      java.util.List<Long> getShapeList();
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
       *&#64;&#64;
       *&#64;&#64;       The tensor shape.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int64 shape = 3;</code>
       */
      int getShapeCount();
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
       *&#64;&#64;
       *&#64;&#64;       The tensor shape.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int64 shape = 3;</code>
       */
      long getShape(int index);

      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;       Optional inference input tensor parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */
      int getParametersCount();
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;       Optional inference input tensor parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */
      boolean containsParameters(
              String key);
      /**
       * Use {@link #getParametersMap()} instead.
       */
      @Deprecated
      java.util.Map<String, GrpcService.InferParameter>
      getParameters();
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;       Optional inference input tensor parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */
      java.util.Map<String, GrpcService.InferParameter>
      getParametersMap();
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;       Optional inference input tensor parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */

      GrpcService.InferParameter getParametersOrDefault(
              String key,
              GrpcService.InferParameter defaultValue);
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;       Optional inference input tensor parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */

      GrpcService.InferParameter getParametersOrThrow(
              String key);

      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: InferTensorContents contents
       *&#64;&#64;
       *&#64;&#64;       The tensor contents using a data-type format. This field
       *&#64;&#64;       must not be specified if tensor contents are being specified
       *&#64;&#64;       in ModelInferRequest.raw_input_contents.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.InferTensorContents contents = 5;</code>
       */
      boolean hasContents();
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: InferTensorContents contents
       *&#64;&#64;
       *&#64;&#64;       The tensor contents using a data-type format. This field
       *&#64;&#64;       must not be specified if tensor contents are being specified
       *&#64;&#64;       in ModelInferRequest.raw_input_contents.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.InferTensorContents contents = 5;</code>
       */
      GrpcService.InferTensorContents getContents();
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: InferTensorContents contents
       *&#64;&#64;
       *&#64;&#64;       The tensor contents using a data-type format. This field
       *&#64;&#64;       must not be specified if tensor contents are being specified
       *&#64;&#64;       in ModelInferRequest.raw_input_contents.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.InferTensorContents contents = 5;</code>
       */
      GrpcService.InferTensorContentsOrBuilder getContentsOrBuilder();
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: message InferInputTensor
     *&#64;&#64;
     *&#64;&#64;     An input tensor for an inference request.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.ModelInferRequest.InferInputTensor}
     */
    public  static final class InferInputTensor extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:inference.ModelInferRequest.InferInputTensor)
        InferInputTensorOrBuilder {
      // Use InferInputTensor.newBuilder() to construct.
      private InferInputTensor(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private InferInputTensor() {
        name_ = "";
        datatype_ = "";
        shape_ = java.util.Collections.emptyList();
      }

      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
      }
      private InferInputTensor(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!input.skipField(tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                String s = input.readStringRequireUtf8();

                name_ = s;
                break;
              }
              case 18: {
                String s = input.readStringRequireUtf8();

                datatype_ = s;
                break;
              }
              case 24: {
                if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                  shape_ = new java.util.ArrayList<Long>();
                  mutable_bitField0_ |= 0x00000004;
                }
                shape_.add(input.readInt64());
                break;
              }
              case 26: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000004) == 0x00000004) && input.getBytesUntilLimit() > 0) {
                  shape_ = new java.util.ArrayList<Long>();
                  mutable_bitField0_ |= 0x00000004;
                }
                while (input.getBytesUntilLimit() > 0) {
                  shape_.add(input.readInt64());
                }
                input.popLimit(limit);
                break;
              }
              case 34: {
                if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                  parameters_ = com.google.protobuf.MapField.newMapField(
                      ParametersDefaultEntryHolder.defaultEntry);
                  mutable_bitField0_ |= 0x00000008;
                }
                com.google.protobuf.MapEntry<String, GrpcService.InferParameter>
                parameters = input.readMessage(
                    ParametersDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                parameters_.getMutableMap().put(parameters.getKey(), parameters.getValue());
                break;
              }
              case 42: {
                GrpcService.InferTensorContents.Builder subBuilder = null;
                if (contents_ != null) {
                  subBuilder = contents_.toBuilder();
                }
                contents_ = input.readMessage(GrpcService.InferTensorContents.parser(), extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(contents_);
                  contents_ = subBuilder.buildPartial();
                }

                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
            shape_ = java.util.Collections.unmodifiableList(shape_);
          }
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_ModelInferRequest_InferInputTensor_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 4:
            return internalGetParameters();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_ModelInferRequest_InferInputTensor_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.ModelInferRequest.InferInputTensor.class, GrpcService.ModelInferRequest.InferInputTensor.Builder.class);
      }

      private int bitField0_;
      public static final int NAME_FIELD_NUMBER = 1;
      private volatile Object name_;
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;       The tensor name.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public String getName() {
        Object ref = name_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          name_ = s;
          return s;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;       The tensor name.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int DATATYPE_FIELD_NUMBER = 2;
      private volatile Object datatype_;
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string datatype
       *&#64;&#64;
       *&#64;&#64;       The tensor data type.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string datatype = 2;</code>
       */
      public String getDatatype() {
        Object ref = datatype_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          datatype_ = s;
          return s;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string datatype
       *&#64;&#64;
       *&#64;&#64;       The tensor data type.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string datatype = 2;</code>
       */
      public com.google.protobuf.ByteString
          getDatatypeBytes() {
        Object ref = datatype_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          datatype_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int SHAPE_FIELD_NUMBER = 3;
      private java.util.List<Long> shape_;
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
       *&#64;&#64;
       *&#64;&#64;       The tensor shape.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int64 shape = 3;</code>
       */
      public java.util.List<Long>
          getShapeList() {
        return shape_;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
       *&#64;&#64;
       *&#64;&#64;       The tensor shape.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int64 shape = 3;</code>
       */
      public int getShapeCount() {
        return shape_.size();
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
       *&#64;&#64;
       *&#64;&#64;       The tensor shape.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int64 shape = 3;</code>
       */
      public long getShape(int index) {
        return shape_.get(index);
      }
      private int shapeMemoizedSerializedSize = -1;

      public static final int PARAMETERS_FIELD_NUMBER = 4;
      private static final class ParametersDefaultEntryHolder {
        static final com.google.protobuf.MapEntry<
            String, GrpcService.InferParameter> defaultEntry =
                com.google.protobuf.MapEntry
                .<String, GrpcService.InferParameter>newDefaultInstance(
                    GrpcService.internal_static_inference_ModelInferRequest_InferInputTensor_ParametersEntry_descriptor,
                    com.google.protobuf.WireFormat.FieldType.STRING,
                    "",
                    com.google.protobuf.WireFormat.FieldType.MESSAGE,
                    GrpcService.InferParameter.getDefaultInstance());
      }
      private com.google.protobuf.MapField<
          String, GrpcService.InferParameter> parameters_;
      private com.google.protobuf.MapField<String, GrpcService.InferParameter>
      internalGetParameters() {
        if (parameters_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              ParametersDefaultEntryHolder.defaultEntry);
        }
        return parameters_;
      }

      public int getParametersCount() {
        return internalGetParameters().getMap().size();
      }
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;       Optional inference input tensor parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */

      public boolean containsParameters(
          String key) {
        if (key == null) { throw new NullPointerException(); }
        return internalGetParameters().getMap().containsKey(key);
      }
      /**
       * Use {@link #getParametersMap()} instead.
       */
      @Deprecated
      public java.util.Map<String, GrpcService.InferParameter> getParameters() {
        return getParametersMap();
      }
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;       Optional inference input tensor parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */

      public java.util.Map<String, GrpcService.InferParameter> getParametersMap() {
        return internalGetParameters().getMap();
      }
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;       Optional inference input tensor parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */

      public GrpcService.InferParameter getParametersOrDefault(
          String key,
          GrpcService.InferParameter defaultValue) {
        if (key == null) { throw new NullPointerException(); }
        java.util.Map<String, GrpcService.InferParameter> map =
            internalGetParameters().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;       Optional inference input tensor parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */

      public GrpcService.InferParameter getParametersOrThrow(
          String key) {
        if (key == null) { throw new NullPointerException(); }
        java.util.Map<String, GrpcService.InferParameter> map =
            internalGetParameters().getMap();
        if (!map.containsKey(key)) {
          throw new IllegalArgumentException();
        }
        return map.get(key);
      }

      public static final int CONTENTS_FIELD_NUMBER = 5;
      private GrpcService.InferTensorContents contents_;
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: InferTensorContents contents
       *&#64;&#64;
       *&#64;&#64;       The tensor contents using a data-type format. This field
       *&#64;&#64;       must not be specified if tensor contents are being specified
       *&#64;&#64;       in ModelInferRequest.raw_input_contents.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.InferTensorContents contents = 5;</code>
       */
      public boolean hasContents() {
        return contents_ != null;
      }
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: InferTensorContents contents
       *&#64;&#64;
       *&#64;&#64;       The tensor contents using a data-type format. This field
       *&#64;&#64;       must not be specified if tensor contents are being specified
       *&#64;&#64;       in ModelInferRequest.raw_input_contents.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.InferTensorContents contents = 5;</code>
       */
      public GrpcService.InferTensorContents getContents() {
        return contents_ == null ? GrpcService.InferTensorContents.getDefaultInstance() : contents_;
      }
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: InferTensorContents contents
       *&#64;&#64;
       *&#64;&#64;       The tensor contents using a data-type format. This field
       *&#64;&#64;       must not be specified if tensor contents are being specified
       *&#64;&#64;       in ModelInferRequest.raw_input_contents.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.InferTensorContents contents = 5;</code>
       */
      public GrpcService.InferTensorContentsOrBuilder getContentsOrBuilder() {
        return getContents();
      }

      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (!getNameBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
        }
        if (!getDatatypeBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, datatype_);
        }
        if (getShapeList().size() > 0) {
          output.writeUInt32NoTag(26);
          output.writeUInt32NoTag(shapeMemoizedSerializedSize);
        }
        for (int i = 0; i < shape_.size(); i++) {
          output.writeInt64NoTag(shape_.get(i));
        }
        for (java.util.Map.Entry<String, GrpcService.InferParameter> entry
             : internalGetParameters().getMap().entrySet()) {
          com.google.protobuf.MapEntry<String, GrpcService.InferParameter>
          parameters = ParametersDefaultEntryHolder.defaultEntry.newBuilderForType()
              .setKey(entry.getKey())
              .setValue(entry.getValue())
              .build();
          output.writeMessage(4, parameters);
        }
        if (contents_ != null) {
          output.writeMessage(5, getContents());
        }
      }

      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (!getNameBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
        }
        if (!getDatatypeBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, datatype_);
        }
        {
          int dataSize = 0;
          for (int i = 0; i < shape_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeInt64SizeNoTag(shape_.get(i));
          }
          size += dataSize;
          if (!getShapeList().isEmpty()) {
            size += 1;
            size += com.google.protobuf.CodedOutputStream
                .computeInt32SizeNoTag(dataSize);
          }
          shapeMemoizedSerializedSize = dataSize;
        }
        for (java.util.Map.Entry<String, GrpcService.InferParameter> entry
             : internalGetParameters().getMap().entrySet()) {
          com.google.protobuf.MapEntry<String, GrpcService.InferParameter>
          parameters = ParametersDefaultEntryHolder.defaultEntry.newBuilderForType()
              .setKey(entry.getKey())
              .setValue(entry.getValue())
              .build();
          size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(4, parameters);
        }
        if (contents_ != null) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, getContents());
        }
        memoizedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof GrpcService.ModelInferRequest.InferInputTensor)) {
          return super.equals(obj);
        }
        GrpcService.ModelInferRequest.InferInputTensor other = (GrpcService.ModelInferRequest.InferInputTensor) obj;

        boolean result = true;
        result = result && getName()
            .equals(other.getName());
        result = result && getDatatype()
            .equals(other.getDatatype());
        result = result && getShapeList()
            .equals(other.getShapeList());
        result = result && internalGetParameters().equals(
            other.internalGetParameters());
        result = result && (hasContents() == other.hasContents());
        if (hasContents()) {
          result = result && getContents()
              .equals(other.getContents());
        }
        return result;
      }

      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
        hash = (37 * hash) + DATATYPE_FIELD_NUMBER;
        hash = (53 * hash) + getDatatype().hashCode();
        if (getShapeCount() > 0) {
          hash = (37 * hash) + SHAPE_FIELD_NUMBER;
          hash = (53 * hash) + getShapeList().hashCode();
        }
        if (!internalGetParameters().getMap().isEmpty()) {
          hash = (37 * hash) + PARAMETERS_FIELD_NUMBER;
          hash = (53 * hash) + internalGetParameters().hashCode();
        }
        if (hasContents()) {
          hash = (37 * hash) + CONTENTS_FIELD_NUMBER;
          hash = (53 * hash) + getContents().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static GrpcService.ModelInferRequest.InferInputTensor parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static GrpcService.ModelInferRequest.InferInputTensor parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static GrpcService.ModelInferRequest.InferInputTensor parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static GrpcService.ModelInferRequest.InferInputTensor parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static GrpcService.ModelInferRequest.InferInputTensor parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static GrpcService.ModelInferRequest.InferInputTensor parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static GrpcService.ModelInferRequest.InferInputTensor parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static GrpcService.ModelInferRequest.InferInputTensor parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static GrpcService.ModelInferRequest.InferInputTensor parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static GrpcService.ModelInferRequest.InferInputTensor parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(GrpcService.ModelInferRequest.InferInputTensor prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @Override
      protected Builder newBuilderForType(
          BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: message InferInputTensor
       *&#64;&#64;
       *&#64;&#64;     An input tensor for an inference request.
       *&#64;&#64;
       * </pre>
       *
       * Protobuf type {@code inference.ModelInferRequest.InferInputTensor}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:inference.ModelInferRequest.InferInputTensor)
          GrpcService.ModelInferRequest.InferInputTensorOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return GrpcService.internal_static_inference_ModelInferRequest_InferInputTensor_descriptor;
        }

        @SuppressWarnings({"rawtypes"})
        protected com.google.protobuf.MapField internalGetMapField(
            int number) {
          switch (number) {
            case 4:
              return internalGetParameters();
            default:
              throw new RuntimeException(
                  "Invalid map field number: " + number);
          }
        }
        @SuppressWarnings({"rawtypes"})
        protected com.google.protobuf.MapField internalGetMutableMapField(
            int number) {
          switch (number) {
            case 4:
              return internalGetMutableParameters();
            default:
              throw new RuntimeException(
                  "Invalid map field number: " + number);
          }
        }
        protected FieldAccessorTable
            internalGetFieldAccessorTable() {
          return GrpcService.internal_static_inference_ModelInferRequest_InferInputTensor_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  GrpcService.ModelInferRequest.InferInputTensor.class, GrpcService.ModelInferRequest.InferInputTensor.Builder.class);
        }

        // Construct using GrpcService.ModelInferRequest.InferInputTensor.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          name_ = "";

          datatype_ = "";

          shape_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          internalGetMutableParameters().clear();
          if (contentsBuilder_ == null) {
            contents_ = null;
          } else {
            contents_ = null;
            contentsBuilder_ = null;
          }
          return this;
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return GrpcService.internal_static_inference_ModelInferRequest_InferInputTensor_descriptor;
        }

        public GrpcService.ModelInferRequest.InferInputTensor getDefaultInstanceForType() {
          return GrpcService.ModelInferRequest.InferInputTensor.getDefaultInstance();
        }

        public GrpcService.ModelInferRequest.InferInputTensor build() {
          GrpcService.ModelInferRequest.InferInputTensor result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public GrpcService.ModelInferRequest.InferInputTensor buildPartial() {
          GrpcService.ModelInferRequest.InferInputTensor result = new GrpcService.ModelInferRequest.InferInputTensor(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          result.name_ = name_;
          result.datatype_ = datatype_;
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            shape_ = java.util.Collections.unmodifiableList(shape_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.shape_ = shape_;
          result.parameters_ = internalGetParameters();
          result.parameters_.makeImmutable();
          if (contentsBuilder_ == null) {
            result.contents_ = contents_;
          } else {
            result.contents_ = contentsBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof GrpcService.ModelInferRequest.InferInputTensor) {
            return mergeFrom((GrpcService.ModelInferRequest.InferInputTensor)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(GrpcService.ModelInferRequest.InferInputTensor other) {
          if (other == GrpcService.ModelInferRequest.InferInputTensor.getDefaultInstance()) return this;
          if (!other.getName().isEmpty()) {
            name_ = other.name_;
            onChanged();
          }
          if (!other.getDatatype().isEmpty()) {
            datatype_ = other.datatype_;
            onChanged();
          }
          if (!other.shape_.isEmpty()) {
            if (shape_.isEmpty()) {
              shape_ = other.shape_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureShapeIsMutable();
              shape_.addAll(other.shape_);
            }
            onChanged();
          }
          internalGetMutableParameters().mergeFrom(
              other.internalGetParameters());
          if (other.hasContents()) {
            mergeContents(other.getContents());
          }
          onChanged();
          return this;
        }

        public final boolean isInitialized() {
          return true;
        }

        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          GrpcService.ModelInferRequest.InferInputTensor parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (GrpcService.ModelInferRequest.InferInputTensor) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private Object name_ = "";
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The tensor name.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public String getName() {
          Object ref = name_;
          if (!(ref instanceof String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            String s = bs.toStringUtf8();
            name_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The tensor name.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public com.google.protobuf.ByteString
            getNameBytes() {
          Object ref = name_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8(
                    (String) ref);
            name_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The tensor name.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public Builder setName(
            String value) {
          if (value == null) {
    throw new NullPointerException();
  }

          name_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The tensor name.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public Builder clearName() {

          name_ = getDefaultInstance().getName();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The tensor name.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public Builder setNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

          name_ = value;
          onChanged();
          return this;
        }

        private Object datatype_ = "";
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string datatype
         *&#64;&#64;
         *&#64;&#64;       The tensor data type.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string datatype = 2;</code>
         */
        public String getDatatype() {
          Object ref = datatype_;
          if (!(ref instanceof String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            String s = bs.toStringUtf8();
            datatype_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string datatype
         *&#64;&#64;
         *&#64;&#64;       The tensor data type.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string datatype = 2;</code>
         */
        public com.google.protobuf.ByteString
            getDatatypeBytes() {
          Object ref = datatype_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8(
                    (String) ref);
            datatype_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string datatype
         *&#64;&#64;
         *&#64;&#64;       The tensor data type.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string datatype = 2;</code>
         */
        public Builder setDatatype(
            String value) {
          if (value == null) {
    throw new NullPointerException();
  }

          datatype_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string datatype
         *&#64;&#64;
         *&#64;&#64;       The tensor data type.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string datatype = 2;</code>
         */
        public Builder clearDatatype() {

          datatype_ = getDefaultInstance().getDatatype();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string datatype
         *&#64;&#64;
         *&#64;&#64;       The tensor data type.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string datatype = 2;</code>
         */
        public Builder setDatatypeBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

          datatype_ = value;
          onChanged();
          return this;
        }

        private java.util.List<Long> shape_ = java.util.Collections.emptyList();
        private void ensureShapeIsMutable() {
          if (!((bitField0_ & 0x00000004) == 0x00000004)) {
            shape_ = new java.util.ArrayList<Long>(shape_);
            bitField0_ |= 0x00000004;
           }
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
         *&#64;&#64;
         *&#64;&#64;       The tensor shape.
         *&#64;&#64;
         * </pre>
         *
         * <code>repeated int64 shape = 3;</code>
         */
        public java.util.List<Long>
            getShapeList() {
          return java.util.Collections.unmodifiableList(shape_);
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
         *&#64;&#64;
         *&#64;&#64;       The tensor shape.
         *&#64;&#64;
         * </pre>
         *
         * <code>repeated int64 shape = 3;</code>
         */
        public int getShapeCount() {
          return shape_.size();
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
         *&#64;&#64;
         *&#64;&#64;       The tensor shape.
         *&#64;&#64;
         * </pre>
         *
         * <code>repeated int64 shape = 3;</code>
         */
        public long getShape(int index) {
          return shape_.get(index);
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
         *&#64;&#64;
         *&#64;&#64;       The tensor shape.
         *&#64;&#64;
         * </pre>
         *
         * <code>repeated int64 shape = 3;</code>
         */
        public Builder setShape(
            int index, long value) {
          ensureShapeIsMutable();
          shape_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
         *&#64;&#64;
         *&#64;&#64;       The tensor shape.
         *&#64;&#64;
         * </pre>
         *
         * <code>repeated int64 shape = 3;</code>
         */
        public Builder addShape(long value) {
          ensureShapeIsMutable();
          shape_.add(value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
         *&#64;&#64;
         *&#64;&#64;       The tensor shape.
         *&#64;&#64;
         * </pre>
         *
         * <code>repeated int64 shape = 3;</code>
         */
        public Builder addAllShape(
            Iterable<? extends Long> values) {
          ensureShapeIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, shape_);
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
         *&#64;&#64;
         *&#64;&#64;       The tensor shape.
         *&#64;&#64;
         * </pre>
         *
         * <code>repeated int64 shape = 3;</code>
         */
        public Builder clearShape() {
          shape_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
          return this;
        }

        private com.google.protobuf.MapField<
            String, GrpcService.InferParameter> parameters_;
        private com.google.protobuf.MapField<String, GrpcService.InferParameter>
        internalGetParameters() {
          if (parameters_ == null) {
            return com.google.protobuf.MapField.emptyMapField(
                ModelInferRequest.ParametersDefaultEntryHolder.defaultEntry);
          }
          return parameters_;
        }
        private com.google.protobuf.MapField<String, GrpcService.InferParameter>
        internalGetMutableParameters() {
          onChanged();;
          if (parameters_ == null) {
            parameters_ = com.google.protobuf.MapField.newMapField(
                ModelInferRequest.ParametersDefaultEntryHolder.defaultEntry);
          }
          if (!parameters_.isMutable()) {
            parameters_ = parameters_.copy();
          }
          return parameters_;
        }

        public int getParametersCount() {
          return internalGetParameters().getMap().size();
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
         *&#64;&#64;
         *&#64;&#64;       Optional inference input tensor parameters.
         *&#64;&#64;
         * </pre>
         *
         * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
         */

        public boolean containsParameters(
            String key) {
          if (key == null) { throw new NullPointerException(); }
          return internalGetParameters().getMap().containsKey(key);
        }
        /**
         * Use {@link #getParametersMap()} instead.
         */
        @Deprecated
        public java.util.Map<String, GrpcService.InferParameter> getParameters() {
          return getParametersMap();
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
         *&#64;&#64;
         *&#64;&#64;       Optional inference input tensor parameters.
         *&#64;&#64;
         * </pre>
         *
         * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
         */

        public java.util.Map<String, GrpcService.InferParameter> getParametersMap() {
          return internalGetParameters().getMap();
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
         *&#64;&#64;
         *&#64;&#64;       Optional inference input tensor parameters.
         *&#64;&#64;
         * </pre>
         *
         * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
         */

        public GrpcService.InferParameter getParametersOrDefault(
            String key,
            GrpcService.InferParameter defaultValue) {
          if (key == null) { throw new NullPointerException(); }
          java.util.Map<String, GrpcService.InferParameter> map =
              internalGetParameters().getMap();
          return map.containsKey(key) ? map.get(key) : defaultValue;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
         *&#64;&#64;
         *&#64;&#64;       Optional inference input tensor parameters.
         *&#64;&#64;
         * </pre>
         *
         * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
         */

        public GrpcService.InferParameter getParametersOrThrow(
            String key) {
          if (key == null) { throw new NullPointerException(); }
          java.util.Map<String, GrpcService.InferParameter> map =
              internalGetParameters().getMap();
          if (!map.containsKey(key)) {
            throw new IllegalArgumentException();
          }
          return map.get(key);
        }

        public Builder clearParameters() {
          getMutableParameters().clear();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
         *&#64;&#64;
         *&#64;&#64;       Optional inference input tensor parameters.
         *&#64;&#64;
         * </pre>
         *
         * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
         */

        public Builder removeParameters(
            String key) {
          if (key == null) { throw new NullPointerException(); }
          getMutableParameters().remove(key);
          return this;
        }
        /**
         * Use alternate mutation accessors instead.
         */
        @Deprecated
        public java.util.Map<String, GrpcService.InferParameter>
        getMutableParameters() {
          return internalGetMutableParameters().getMutableMap();
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
         *&#64;&#64;
         *&#64;&#64;       Optional inference input tensor parameters.
         *&#64;&#64;
         * </pre>
         *
         * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
         */
        public Builder putParameters(
            String key,
            GrpcService.InferParameter value) {
          if (key == null) { throw new NullPointerException(); }
          if (value == null) { throw new NullPointerException(); }
          getMutableParameters().put(key, value);
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
         *&#64;&#64;
         *&#64;&#64;       Optional inference input tensor parameters.
         *&#64;&#64;
         * </pre>
         *
         * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
         */

        public Builder putAllParameters(
            java.util.Map<String, GrpcService.InferParameter> values) {
          getMutableParameters().putAll(values);
          return this;
        }

        private GrpcService.InferTensorContents contents_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            GrpcService.InferTensorContents, GrpcService.InferTensorContents.Builder, GrpcService.InferTensorContentsOrBuilder> contentsBuilder_;
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: InferTensorContents contents
         *&#64;&#64;
         *&#64;&#64;       The tensor contents using a data-type format. This field
         *&#64;&#64;       must not be specified if tensor contents are being specified
         *&#64;&#64;       in ModelInferRequest.raw_input_contents.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional .inference.InferTensorContents contents = 5;</code>
         */
        public boolean hasContents() {
          return contentsBuilder_ != null || contents_ != null;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: InferTensorContents contents
         *&#64;&#64;
         *&#64;&#64;       The tensor contents using a data-type format. This field
         *&#64;&#64;       must not be specified if tensor contents are being specified
         *&#64;&#64;       in ModelInferRequest.raw_input_contents.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional .inference.InferTensorContents contents = 5;</code>
         */
        public GrpcService.InferTensorContents getContents() {
          if (contentsBuilder_ == null) {
            return contents_ == null ? GrpcService.InferTensorContents.getDefaultInstance() : contents_;
          } else {
            return contentsBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: InferTensorContents contents
         *&#64;&#64;
         *&#64;&#64;       The tensor contents using a data-type format. This field
         *&#64;&#64;       must not be specified if tensor contents are being specified
         *&#64;&#64;       in ModelInferRequest.raw_input_contents.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional .inference.InferTensorContents contents = 5;</code>
         */
        public Builder setContents(GrpcService.InferTensorContents value) {
          if (contentsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            contents_ = value;
            onChanged();
          } else {
            contentsBuilder_.setMessage(value);
          }

          return this;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: InferTensorContents contents
         *&#64;&#64;
         *&#64;&#64;       The tensor contents using a data-type format. This field
         *&#64;&#64;       must not be specified if tensor contents are being specified
         *&#64;&#64;       in ModelInferRequest.raw_input_contents.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional .inference.InferTensorContents contents = 5;</code>
         */
        public Builder setContents(
            GrpcService.InferTensorContents.Builder builderForValue) {
          if (contentsBuilder_ == null) {
            contents_ = builderForValue.build();
            onChanged();
          } else {
            contentsBuilder_.setMessage(builderForValue.build());
          }

          return this;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: InferTensorContents contents
         *&#64;&#64;
         *&#64;&#64;       The tensor contents using a data-type format. This field
         *&#64;&#64;       must not be specified if tensor contents are being specified
         *&#64;&#64;       in ModelInferRequest.raw_input_contents.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional .inference.InferTensorContents contents = 5;</code>
         */
        public Builder mergeContents(GrpcService.InferTensorContents value) {
          if (contentsBuilder_ == null) {
            if (contents_ != null) {
              contents_ =
                GrpcService.InferTensorContents.newBuilder(contents_).mergeFrom(value).buildPartial();
            } else {
              contents_ = value;
            }
            onChanged();
          } else {
            contentsBuilder_.mergeFrom(value);
          }

          return this;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: InferTensorContents contents
         *&#64;&#64;
         *&#64;&#64;       The tensor contents using a data-type format. This field
         *&#64;&#64;       must not be specified if tensor contents are being specified
         *&#64;&#64;       in ModelInferRequest.raw_input_contents.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional .inference.InferTensorContents contents = 5;</code>
         */
        public Builder clearContents() {
          if (contentsBuilder_ == null) {
            contents_ = null;
            onChanged();
          } else {
            contents_ = null;
            contentsBuilder_ = null;
          }

          return this;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: InferTensorContents contents
         *&#64;&#64;
         *&#64;&#64;       The tensor contents using a data-type format. This field
         *&#64;&#64;       must not be specified if tensor contents are being specified
         *&#64;&#64;       in ModelInferRequest.raw_input_contents.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional .inference.InferTensorContents contents = 5;</code>
         */
        public GrpcService.InferTensorContents.Builder getContentsBuilder() {

          onChanged();
          return getContentsFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: InferTensorContents contents
         *&#64;&#64;
         *&#64;&#64;       The tensor contents using a data-type format. This field
         *&#64;&#64;       must not be specified if tensor contents are being specified
         *&#64;&#64;       in ModelInferRequest.raw_input_contents.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional .inference.InferTensorContents contents = 5;</code>
         */
        public GrpcService.InferTensorContentsOrBuilder getContentsOrBuilder() {
          if (contentsBuilder_ != null) {
            return contentsBuilder_.getMessageOrBuilder();
          } else {
            return contents_ == null ?
                GrpcService.InferTensorContents.getDefaultInstance() : contents_;
          }
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: InferTensorContents contents
         *&#64;&#64;
         *&#64;&#64;       The tensor contents using a data-type format. This field
         *&#64;&#64;       must not be specified if tensor contents are being specified
         *&#64;&#64;       in ModelInferRequest.raw_input_contents.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional .inference.InferTensorContents contents = 5;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            GrpcService.InferTensorContents, GrpcService.InferTensorContents.Builder, GrpcService.InferTensorContentsOrBuilder>
            getContentsFieldBuilder() {
          if (contentsBuilder_ == null) {
            contentsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                GrpcService.InferTensorContents, GrpcService.InferTensorContents.Builder, GrpcService.InferTensorContentsOrBuilder>(
                    getContents(),
                    getParentForChildren(),
                    isClean());
            contents_ = null;
          }
          return contentsBuilder_;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return this;
        }

        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return this;
        }


        // @@protoc_insertion_point(builder_scope:inference.ModelInferRequest.InferInputTensor)
      }

      // @@protoc_insertion_point(class_scope:inference.ModelInferRequest.InferInputTensor)
      private static final GrpcService.ModelInferRequest.InferInputTensor DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new GrpcService.ModelInferRequest.InferInputTensor();
      }

      public static GrpcService.ModelInferRequest.InferInputTensor getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<InferInputTensor>
          PARSER = new com.google.protobuf.AbstractParser<InferInputTensor>() {
        public InferInputTensor parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new InferInputTensor(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<InferInputTensor> parser() {
        return PARSER;
      }

      @Override
      public com.google.protobuf.Parser<InferInputTensor> getParserForType() {
        return PARSER;
      }

      public GrpcService.ModelInferRequest.InferInputTensor getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface InferRequestedOutputTensorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:inference.ModelInferRequest.InferRequestedOutputTensor)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;       The tensor name.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      String getName();
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;       The tensor name.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      com.google.protobuf.ByteString
          getNameBytes();

      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;       Optional requested output tensor parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 2;</code>
       */
      int getParametersCount();
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;       Optional requested output tensor parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 2;</code>
       */
      boolean containsParameters(
              String key);
      /**
       * Use {@link #getParametersMap()} instead.
       */
      @Deprecated
      java.util.Map<String, GrpcService.InferParameter>
      getParameters();
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;       Optional requested output tensor parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 2;</code>
       */
      java.util.Map<String, GrpcService.InferParameter>
      getParametersMap();
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;       Optional requested output tensor parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 2;</code>
       */

      GrpcService.InferParameter getParametersOrDefault(
              String key,
              GrpcService.InferParameter defaultValue);
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;       Optional requested output tensor parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 2;</code>
       */

      GrpcService.InferParameter getParametersOrThrow(
              String key);
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: message InferRequestedOutputTensor
     *&#64;&#64;
     *&#64;&#64;     An output tensor requested for an inference request.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.ModelInferRequest.InferRequestedOutputTensor}
     */
    public  static final class InferRequestedOutputTensor extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:inference.ModelInferRequest.InferRequestedOutputTensor)
        InferRequestedOutputTensorOrBuilder {
      // Use InferRequestedOutputTensor.newBuilder() to construct.
      private InferRequestedOutputTensor(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private InferRequestedOutputTensor() {
        name_ = "";
      }

      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
      }
      private InferRequestedOutputTensor(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!input.skipField(tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                String s = input.readStringRequireUtf8();

                name_ = s;
                break;
              }
              case 18: {
                if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                  parameters_ = com.google.protobuf.MapField.newMapField(
                      ParametersDefaultEntryHolder.defaultEntry);
                  mutable_bitField0_ |= 0x00000002;
                }
                com.google.protobuf.MapEntry<String, GrpcService.InferParameter>
                parameters = input.readMessage(
                    ParametersDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                parameters_.getMutableMap().put(parameters.getKey(), parameters.getValue());
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_ModelInferRequest_InferRequestedOutputTensor_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 2:
            return internalGetParameters();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_ModelInferRequest_InferRequestedOutputTensor_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.ModelInferRequest.InferRequestedOutputTensor.class, GrpcService.ModelInferRequest.InferRequestedOutputTensor.Builder.class);
      }

      private int bitField0_;
      public static final int NAME_FIELD_NUMBER = 1;
      private volatile Object name_;
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;       The tensor name.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public String getName() {
        Object ref = name_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          name_ = s;
          return s;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;       The tensor name.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int PARAMETERS_FIELD_NUMBER = 2;
      private static final class ParametersDefaultEntryHolder {
        static final com.google.protobuf.MapEntry<
            String, GrpcService.InferParameter> defaultEntry =
                com.google.protobuf.MapEntry
                .<String, GrpcService.InferParameter>newDefaultInstance(
                    GrpcService.internal_static_inference_ModelInferRequest_InferRequestedOutputTensor_ParametersEntry_descriptor,
                    com.google.protobuf.WireFormat.FieldType.STRING,
                    "",
                    com.google.protobuf.WireFormat.FieldType.MESSAGE,
                    GrpcService.InferParameter.getDefaultInstance());
      }
      private com.google.protobuf.MapField<
          String, GrpcService.InferParameter> parameters_;
      private com.google.protobuf.MapField<String, GrpcService.InferParameter>
      internalGetParameters() {
        if (parameters_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              ParametersDefaultEntryHolder.defaultEntry);
        }
        return parameters_;
      }

      public int getParametersCount() {
        return internalGetParameters().getMap().size();
      }
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;       Optional requested output tensor parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 2;</code>
       */

      public boolean containsParameters(
          String key) {
        if (key == null) { throw new NullPointerException(); }
        return internalGetParameters().getMap().containsKey(key);
      }
      /**
       * Use {@link #getParametersMap()} instead.
       */
      @Deprecated
      public java.util.Map<String, GrpcService.InferParameter> getParameters() {
        return getParametersMap();
      }
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;       Optional requested output tensor parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 2;</code>
       */

      public java.util.Map<String, GrpcService.InferParameter> getParametersMap() {
        return internalGetParameters().getMap();
      }
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;       Optional requested output tensor parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 2;</code>
       */

      public GrpcService.InferParameter getParametersOrDefault(
          String key,
          GrpcService.InferParameter defaultValue) {
        if (key == null) { throw new NullPointerException(); }
        java.util.Map<String, GrpcService.InferParameter> map =
            internalGetParameters().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;       Optional requested output tensor parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 2;</code>
       */

      public GrpcService.InferParameter getParametersOrThrow(
          String key) {
        if (key == null) { throw new NullPointerException(); }
        java.util.Map<String, GrpcService.InferParameter> map =
            internalGetParameters().getMap();
        if (!map.containsKey(key)) {
          throw new IllegalArgumentException();
        }
        return map.get(key);
      }

      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (!getNameBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
        }
        for (java.util.Map.Entry<String, GrpcService.InferParameter> entry
             : internalGetParameters().getMap().entrySet()) {
          com.google.protobuf.MapEntry<String, GrpcService.InferParameter>
          parameters = ParametersDefaultEntryHolder.defaultEntry.newBuilderForType()
              .setKey(entry.getKey())
              .setValue(entry.getValue())
              .build();
          output.writeMessage(2, parameters);
        }
      }

      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (!getNameBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
        }
        for (java.util.Map.Entry<String, GrpcService.InferParameter> entry
             : internalGetParameters().getMap().entrySet()) {
          com.google.protobuf.MapEntry<String, GrpcService.InferParameter>
          parameters = ParametersDefaultEntryHolder.defaultEntry.newBuilderForType()
              .setKey(entry.getKey())
              .setValue(entry.getValue())
              .build();
          size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(2, parameters);
        }
        memoizedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof GrpcService.ModelInferRequest.InferRequestedOutputTensor)) {
          return super.equals(obj);
        }
        GrpcService.ModelInferRequest.InferRequestedOutputTensor other = (GrpcService.ModelInferRequest.InferRequestedOutputTensor) obj;

        boolean result = true;
        result = result && getName()
            .equals(other.getName());
        result = result && internalGetParameters().equals(
            other.internalGetParameters());
        return result;
      }

      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
        if (!internalGetParameters().getMap().isEmpty()) {
          hash = (37 * hash) + PARAMETERS_FIELD_NUMBER;
          hash = (53 * hash) + internalGetParameters().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static GrpcService.ModelInferRequest.InferRequestedOutputTensor parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static GrpcService.ModelInferRequest.InferRequestedOutputTensor parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static GrpcService.ModelInferRequest.InferRequestedOutputTensor parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static GrpcService.ModelInferRequest.InferRequestedOutputTensor parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static GrpcService.ModelInferRequest.InferRequestedOutputTensor parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static GrpcService.ModelInferRequest.InferRequestedOutputTensor parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static GrpcService.ModelInferRequest.InferRequestedOutputTensor parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static GrpcService.ModelInferRequest.InferRequestedOutputTensor parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static GrpcService.ModelInferRequest.InferRequestedOutputTensor parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static GrpcService.ModelInferRequest.InferRequestedOutputTensor parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(GrpcService.ModelInferRequest.InferRequestedOutputTensor prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @Override
      protected Builder newBuilderForType(
          BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: message InferRequestedOutputTensor
       *&#64;&#64;
       *&#64;&#64;     An output tensor requested for an inference request.
       *&#64;&#64;
       * </pre>
       *
       * Protobuf type {@code inference.ModelInferRequest.InferRequestedOutputTensor}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:inference.ModelInferRequest.InferRequestedOutputTensor)
          GrpcService.ModelInferRequest.InferRequestedOutputTensorOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return GrpcService.internal_static_inference_ModelInferRequest_InferRequestedOutputTensor_descriptor;
        }

        @SuppressWarnings({"rawtypes"})
        protected com.google.protobuf.MapField internalGetMapField(
            int number) {
          switch (number) {
            case 2:
              return internalGetParameters();
            default:
              throw new RuntimeException(
                  "Invalid map field number: " + number);
          }
        }
        @SuppressWarnings({"rawtypes"})
        protected com.google.protobuf.MapField internalGetMutableMapField(
            int number) {
          switch (number) {
            case 2:
              return internalGetMutableParameters();
            default:
              throw new RuntimeException(
                  "Invalid map field number: " + number);
          }
        }
        protected FieldAccessorTable
            internalGetFieldAccessorTable() {
          return GrpcService.internal_static_inference_ModelInferRequest_InferRequestedOutputTensor_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  GrpcService.ModelInferRequest.InferRequestedOutputTensor.class, GrpcService.ModelInferRequest.InferRequestedOutputTensor.Builder.class);
        }

        // Construct using GrpcService.ModelInferRequest.InferRequestedOutputTensor.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          name_ = "";

          internalGetMutableParameters().clear();
          return this;
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return GrpcService.internal_static_inference_ModelInferRequest_InferRequestedOutputTensor_descriptor;
        }

        public GrpcService.ModelInferRequest.InferRequestedOutputTensor getDefaultInstanceForType() {
          return GrpcService.ModelInferRequest.InferRequestedOutputTensor.getDefaultInstance();
        }

        public GrpcService.ModelInferRequest.InferRequestedOutputTensor build() {
          GrpcService.ModelInferRequest.InferRequestedOutputTensor result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public GrpcService.ModelInferRequest.InferRequestedOutputTensor buildPartial() {
          GrpcService.ModelInferRequest.InferRequestedOutputTensor result = new GrpcService.ModelInferRequest.InferRequestedOutputTensor(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          result.name_ = name_;
          result.parameters_ = internalGetParameters();
          result.parameters_.makeImmutable();
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof GrpcService.ModelInferRequest.InferRequestedOutputTensor) {
            return mergeFrom((GrpcService.ModelInferRequest.InferRequestedOutputTensor)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(GrpcService.ModelInferRequest.InferRequestedOutputTensor other) {
          if (other == GrpcService.ModelInferRequest.InferRequestedOutputTensor.getDefaultInstance()) return this;
          if (!other.getName().isEmpty()) {
            name_ = other.name_;
            onChanged();
          }
          internalGetMutableParameters().mergeFrom(
              other.internalGetParameters());
          onChanged();
          return this;
        }

        public final boolean isInitialized() {
          return true;
        }

        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          GrpcService.ModelInferRequest.InferRequestedOutputTensor parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (GrpcService.ModelInferRequest.InferRequestedOutputTensor) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private Object name_ = "";
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The tensor name.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public String getName() {
          Object ref = name_;
          if (!(ref instanceof String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            String s = bs.toStringUtf8();
            name_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The tensor name.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public com.google.protobuf.ByteString
            getNameBytes() {
          Object ref = name_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8(
                    (String) ref);
            name_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The tensor name.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public Builder setName(
            String value) {
          if (value == null) {
    throw new NullPointerException();
  }

          name_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The tensor name.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public Builder clearName() {

          name_ = getDefaultInstance().getName();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The tensor name.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public Builder setNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

          name_ = value;
          onChanged();
          return this;
        }

        private com.google.protobuf.MapField<
            String, GrpcService.InferParameter> parameters_;
        private com.google.protobuf.MapField<String, GrpcService.InferParameter>
        internalGetParameters() {
          if (parameters_ == null) {
            return com.google.protobuf.MapField.emptyMapField(
                InferInputTensor.ParametersDefaultEntryHolder.defaultEntry);
          }
          return parameters_;
        }
        private com.google.protobuf.MapField<String, GrpcService.InferParameter>
        internalGetMutableParameters() {
          onChanged();;
          if (parameters_ == null) {
            parameters_ = com.google.protobuf.MapField.newMapField(
                InferInputTensor.ParametersDefaultEntryHolder.defaultEntry);
          }
          if (!parameters_.isMutable()) {
            parameters_ = parameters_.copy();
          }
          return parameters_;
        }

        public int getParametersCount() {
          return internalGetParameters().getMap().size();
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
         *&#64;&#64;
         *&#64;&#64;       Optional requested output tensor parameters.
         *&#64;&#64;
         * </pre>
         *
         * <code>map&lt;string, .inference.InferParameter&gt; parameters = 2;</code>
         */

        public boolean containsParameters(
            String key) {
          if (key == null) { throw new NullPointerException(); }
          return internalGetParameters().getMap().containsKey(key);
        }
        /**
         * Use {@link #getParametersMap()} instead.
         */
        @Deprecated
        public java.util.Map<String, GrpcService.InferParameter> getParameters() {
          return getParametersMap();
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
         *&#64;&#64;
         *&#64;&#64;       Optional requested output tensor parameters.
         *&#64;&#64;
         * </pre>
         *
         * <code>map&lt;string, .inference.InferParameter&gt; parameters = 2;</code>
         */

        public java.util.Map<String, GrpcService.InferParameter> getParametersMap() {
          return internalGetParameters().getMap();
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
         *&#64;&#64;
         *&#64;&#64;       Optional requested output tensor parameters.
         *&#64;&#64;
         * </pre>
         *
         * <code>map&lt;string, .inference.InferParameter&gt; parameters = 2;</code>
         */

        public GrpcService.InferParameter getParametersOrDefault(
            String key,
            GrpcService.InferParameter defaultValue) {
          if (key == null) { throw new NullPointerException(); }
          java.util.Map<String, GrpcService.InferParameter> map =
              internalGetParameters().getMap();
          return map.containsKey(key) ? map.get(key) : defaultValue;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
         *&#64;&#64;
         *&#64;&#64;       Optional requested output tensor parameters.
         *&#64;&#64;
         * </pre>
         *
         * <code>map&lt;string, .inference.InferParameter&gt; parameters = 2;</code>
         */

        public GrpcService.InferParameter getParametersOrThrow(
            String key) {
          if (key == null) { throw new NullPointerException(); }
          java.util.Map<String, GrpcService.InferParameter> map =
              internalGetParameters().getMap();
          if (!map.containsKey(key)) {
            throw new IllegalArgumentException();
          }
          return map.get(key);
        }

        public Builder clearParameters() {
          getMutableParameters().clear();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
         *&#64;&#64;
         *&#64;&#64;       Optional requested output tensor parameters.
         *&#64;&#64;
         * </pre>
         *
         * <code>map&lt;string, .inference.InferParameter&gt; parameters = 2;</code>
         */

        public Builder removeParameters(
            String key) {
          if (key == null) { throw new NullPointerException(); }
          getMutableParameters().remove(key);
          return this;
        }
        /**
         * Use alternate mutation accessors instead.
         */
        @Deprecated
        public java.util.Map<String, GrpcService.InferParameter>
        getMutableParameters() {
          return internalGetMutableParameters().getMutableMap();
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
         *&#64;&#64;
         *&#64;&#64;       Optional requested output tensor parameters.
         *&#64;&#64;
         * </pre>
         *
         * <code>map&lt;string, .inference.InferParameter&gt; parameters = 2;</code>
         */
        public Builder putParameters(
            String key,
            GrpcService.InferParameter value) {
          if (key == null) { throw new NullPointerException(); }
          if (value == null) { throw new NullPointerException(); }
          getMutableParameters().put(key, value);
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
         *&#64;&#64;
         *&#64;&#64;       Optional requested output tensor parameters.
         *&#64;&#64;
         * </pre>
         *
         * <code>map&lt;string, .inference.InferParameter&gt; parameters = 2;</code>
         */

        public Builder putAllParameters(
            java.util.Map<String, GrpcService.InferParameter> values) {
          getMutableParameters().putAll(values);
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return this;
        }

        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return this;
        }


        // @@protoc_insertion_point(builder_scope:inference.ModelInferRequest.InferRequestedOutputTensor)
      }

      // @@protoc_insertion_point(class_scope:inference.ModelInferRequest.InferRequestedOutputTensor)
      private static final GrpcService.ModelInferRequest.InferRequestedOutputTensor DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new GrpcService.ModelInferRequest.InferRequestedOutputTensor();
      }

      public static GrpcService.ModelInferRequest.InferRequestedOutputTensor getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<InferRequestedOutputTensor>
          PARSER = new com.google.protobuf.AbstractParser<InferRequestedOutputTensor>() {
        public InferRequestedOutputTensor parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new InferRequestedOutputTensor(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<InferRequestedOutputTensor> parser() {
        return PARSER;
      }

      @Override
      public com.google.protobuf.Parser<InferRequestedOutputTensor> getParserForType() {
        return PARSER;
      }

      public GrpcService.ModelInferRequest.InferRequestedOutputTensor getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int bitField0_;
    public static final int MODEL_NAME_FIELD_NUMBER = 1;
    private volatile Object modelName_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string model_name
     *&#64;&#64;
     *&#64;&#64;     The name of the model to use for inferencing.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string model_name = 1;</code>
     */
    public String getModelName() {
      Object ref = modelName_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        modelName_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string model_name
     *&#64;&#64;
     *&#64;&#64;     The name of the model to use for inferencing.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string model_name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getModelNameBytes() {
      Object ref = modelName_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        modelName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MODEL_VERSION_FIELD_NUMBER = 2;
    private volatile Object modelVersion_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string model_version
     *&#64;&#64;
     *&#64;&#64;     The version of the model to use for inference. If not
     *&#64;&#64;     given the latest/most-recent version of the model is used.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string model_version = 2;</code>
     */
    public String getModelVersion() {
      Object ref = modelVersion_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        modelVersion_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string model_version
     *&#64;&#64;
     *&#64;&#64;     The version of the model to use for inference. If not
     *&#64;&#64;     given the latest/most-recent version of the model is used.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string model_version = 2;</code>
     */
    public com.google.protobuf.ByteString
        getModelVersionBytes() {
      Object ref = modelVersion_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        modelVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ID_FIELD_NUMBER = 3;
    private volatile Object id_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string id
     *&#64;&#64;
     *&#64;&#64;     Optional identifier for the request. If specified will be
     *&#64;&#64;     returned in the response.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string id = 3;</code>
     */
    public String getId() {
      Object ref = id_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        id_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string id
     *&#64;&#64;
     *&#64;&#64;     Optional identifier for the request. If specified will be
     *&#64;&#64;     returned in the response.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string id = 3;</code>
     */
    public com.google.protobuf.ByteString
        getIdBytes() {
      Object ref = id_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PARAMETERS_FIELD_NUMBER = 4;
    private static final class ParametersDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          String, GrpcService.InferParameter> defaultEntry =
              com.google.protobuf.MapEntry
              .<String, GrpcService.InferParameter>newDefaultInstance(
                  GrpcService.internal_static_inference_ModelInferRequest_ParametersEntry_descriptor,
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  GrpcService.InferParameter.getDefaultInstance());
    }
    private com.google.protobuf.MapField<
        String, GrpcService.InferParameter> parameters_;
    private com.google.protobuf.MapField<String, GrpcService.InferParameter>
    internalGetParameters() {
      if (parameters_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            ParametersDefaultEntryHolder.defaultEntry);
      }
      return parameters_;
    }

    public int getParametersCount() {
      return internalGetParameters().getMap().size();
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
     *&#64;&#64;
     *&#64;&#64;     Optional inference parameters.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
     */

    public boolean containsParameters(
        String key) {
      if (key == null) { throw new NullPointerException(); }
      return internalGetParameters().getMap().containsKey(key);
    }
    /**
     * Use {@link #getParametersMap()} instead.
     */
    @Deprecated
    public java.util.Map<String, GrpcService.InferParameter> getParameters() {
      return getParametersMap();
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
     *&#64;&#64;
     *&#64;&#64;     Optional inference parameters.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
     */

    public java.util.Map<String, GrpcService.InferParameter> getParametersMap() {
      return internalGetParameters().getMap();
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
     *&#64;&#64;
     *&#64;&#64;     Optional inference parameters.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
     */

    public GrpcService.InferParameter getParametersOrDefault(
        String key,
        GrpcService.InferParameter defaultValue) {
      if (key == null) { throw new NullPointerException(); }
      java.util.Map<String, GrpcService.InferParameter> map =
          internalGetParameters().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
     *&#64;&#64;
     *&#64;&#64;     Optional inference parameters.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
     */

    public GrpcService.InferParameter getParametersOrThrow(
        String key) {
      if (key == null) { throw new NullPointerException(); }
      java.util.Map<String, GrpcService.InferParameter> map =
          internalGetParameters().getMap();
      if (!map.containsKey(key)) {
        throw new IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int INPUTS_FIELD_NUMBER = 5;
    private java.util.List<GrpcService.ModelInferRequest.InferInputTensor> inputs_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: InferInputTensor inputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The input tensors for the inference.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelInferRequest.InferInputTensor inputs = 5;</code>
     */
    public java.util.List<GrpcService.ModelInferRequest.InferInputTensor> getInputsList() {
      return inputs_;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: InferInputTensor inputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The input tensors for the inference.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelInferRequest.InferInputTensor inputs = 5;</code>
     */
    public java.util.List<? extends GrpcService.ModelInferRequest.InferInputTensorOrBuilder>
        getInputsOrBuilderList() {
      return inputs_;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: InferInputTensor inputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The input tensors for the inference.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelInferRequest.InferInputTensor inputs = 5;</code>
     */
    public int getInputsCount() {
      return inputs_.size();
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: InferInputTensor inputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The input tensors for the inference.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelInferRequest.InferInputTensor inputs = 5;</code>
     */
    public GrpcService.ModelInferRequest.InferInputTensor getInputs(int index) {
      return inputs_.get(index);
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: InferInputTensor inputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The input tensors for the inference.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelInferRequest.InferInputTensor inputs = 5;</code>
     */
    public GrpcService.ModelInferRequest.InferInputTensorOrBuilder getInputsOrBuilder(
        int index) {
      return inputs_.get(index);
    }

    public static final int OUTPUTS_FIELD_NUMBER = 6;
    private java.util.List<GrpcService.ModelInferRequest.InferRequestedOutputTensor> outputs_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: InferRequestedOutputTensor outputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The requested output tensors for the inference. Optional, if not
     *&#64;&#64;     specified all outputs specified in the model config will be
     *&#64;&#64;     returned.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelInferRequest.InferRequestedOutputTensor outputs = 6;</code>
     */
    public java.util.List<GrpcService.ModelInferRequest.InferRequestedOutputTensor> getOutputsList() {
      return outputs_;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: InferRequestedOutputTensor outputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The requested output tensors for the inference. Optional, if not
     *&#64;&#64;     specified all outputs specified in the model config will be
     *&#64;&#64;     returned.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelInferRequest.InferRequestedOutputTensor outputs = 6;</code>
     */
    public java.util.List<? extends GrpcService.ModelInferRequest.InferRequestedOutputTensorOrBuilder>
        getOutputsOrBuilderList() {
      return outputs_;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: InferRequestedOutputTensor outputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The requested output tensors for the inference. Optional, if not
     *&#64;&#64;     specified all outputs specified in the model config will be
     *&#64;&#64;     returned.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelInferRequest.InferRequestedOutputTensor outputs = 6;</code>
     */
    public int getOutputsCount() {
      return outputs_.size();
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: InferRequestedOutputTensor outputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The requested output tensors for the inference. Optional, if not
     *&#64;&#64;     specified all outputs specified in the model config will be
     *&#64;&#64;     returned.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelInferRequest.InferRequestedOutputTensor outputs = 6;</code>
     */
    public GrpcService.ModelInferRequest.InferRequestedOutputTensor getOutputs(int index) {
      return outputs_.get(index);
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: InferRequestedOutputTensor outputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The requested output tensors for the inference. Optional, if not
     *&#64;&#64;     specified all outputs specified in the model config will be
     *&#64;&#64;     returned.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelInferRequest.InferRequestedOutputTensor outputs = 6;</code>
     */
    public GrpcService.ModelInferRequest.InferRequestedOutputTensorOrBuilder getOutputsOrBuilder(
        int index) {
      return outputs_.get(index);
    }

    public static final int RAW_INPUT_CONTENTS_FIELD_NUMBER = 7;
    private java.util.List<com.google.protobuf.ByteString> rawInputContents_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: bytes raw_input_contents
     *&#64;&#64;
     *&#64;&#64;     The data contained in an input tensor can be represented in
     *&#64;&#64;     "raw" bytes form or in the repeated type that matches the
     *&#64;&#64;     tensor's data type. Using the "raw" bytes form will
     *&#64;&#64;     typically allow higher performance due to the way protobuf
     *&#64;&#64;     allocation and reuse interacts with GRPC. For example, see
     *&#64;&#64;     https://github.com/grpc/grpc/issues/23231.
     *&#64;&#64;
     *&#64;&#64;     To use the raw representation 'raw_input_contents' must be
     *&#64;&#64;     initialized with data for each tensor in the same order as
     *&#64;&#64;     'inputs'. For each tensor, the size of this content must
     *&#64;&#64;     match what is expected by the tensor's shape and data
     *&#64;&#64;     type. The raw data must be the flattened, one-dimensional,
     *&#64;&#64;     row-major order of the tensor elements without any stride
     *&#64;&#64;     or padding between the elements. Note that the FP16 data
     *&#64;&#64;     type must be represented as raw content as there is no
     *&#64;&#64;     specific data type for a 16-bit float type.
     *&#64;&#64;
     *&#64;&#64;     If this field is specified then InferInputTensor::contents
     *&#64;&#64;     must not be specified for any input tensor.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated bytes raw_input_contents = 7;</code>
     */
    public java.util.List<com.google.protobuf.ByteString>
        getRawInputContentsList() {
      return rawInputContents_;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: bytes raw_input_contents
     *&#64;&#64;
     *&#64;&#64;     The data contained in an input tensor can be represented in
     *&#64;&#64;     "raw" bytes form or in the repeated type that matches the
     *&#64;&#64;     tensor's data type. Using the "raw" bytes form will
     *&#64;&#64;     typically allow higher performance due to the way protobuf
     *&#64;&#64;     allocation and reuse interacts with GRPC. For example, see
     *&#64;&#64;     https://github.com/grpc/grpc/issues/23231.
     *&#64;&#64;
     *&#64;&#64;     To use the raw representation 'raw_input_contents' must be
     *&#64;&#64;     initialized with data for each tensor in the same order as
     *&#64;&#64;     'inputs'. For each tensor, the size of this content must
     *&#64;&#64;     match what is expected by the tensor's shape and data
     *&#64;&#64;     type. The raw data must be the flattened, one-dimensional,
     *&#64;&#64;     row-major order of the tensor elements without any stride
     *&#64;&#64;     or padding between the elements. Note that the FP16 data
     *&#64;&#64;     type must be represented as raw content as there is no
     *&#64;&#64;     specific data type for a 16-bit float type.
     *&#64;&#64;
     *&#64;&#64;     If this field is specified then InferInputTensor::contents
     *&#64;&#64;     must not be specified for any input tensor.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated bytes raw_input_contents = 7;</code>
     */
    public int getRawInputContentsCount() {
      return rawInputContents_.size();
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: bytes raw_input_contents
     *&#64;&#64;
     *&#64;&#64;     The data contained in an input tensor can be represented in
     *&#64;&#64;     "raw" bytes form or in the repeated type that matches the
     *&#64;&#64;     tensor's data type. Using the "raw" bytes form will
     *&#64;&#64;     typically allow higher performance due to the way protobuf
     *&#64;&#64;     allocation and reuse interacts with GRPC. For example, see
     *&#64;&#64;     https://github.com/grpc/grpc/issues/23231.
     *&#64;&#64;
     *&#64;&#64;     To use the raw representation 'raw_input_contents' must be
     *&#64;&#64;     initialized with data for each tensor in the same order as
     *&#64;&#64;     'inputs'. For each tensor, the size of this content must
     *&#64;&#64;     match what is expected by the tensor's shape and data
     *&#64;&#64;     type. The raw data must be the flattened, one-dimensional,
     *&#64;&#64;     row-major order of the tensor elements without any stride
     *&#64;&#64;     or padding between the elements. Note that the FP16 data
     *&#64;&#64;     type must be represented as raw content as there is no
     *&#64;&#64;     specific data type for a 16-bit float type.
     *&#64;&#64;
     *&#64;&#64;     If this field is specified then InferInputTensor::contents
     *&#64;&#64;     must not be specified for any input tensor.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated bytes raw_input_contents = 7;</code>
     */
    public com.google.protobuf.ByteString getRawInputContents(int index) {
      return rawInputContents_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getModelNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, modelName_);
      }
      if (!getModelVersionBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, modelVersion_);
      }
      if (!getIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, id_);
      }
      for (java.util.Map.Entry<String, GrpcService.InferParameter> entry
           : internalGetParameters().getMap().entrySet()) {
        com.google.protobuf.MapEntry<String, GrpcService.InferParameter>
        parameters = ParametersDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        output.writeMessage(4, parameters);
      }
      for (int i = 0; i < inputs_.size(); i++) {
        output.writeMessage(5, inputs_.get(i));
      }
      for (int i = 0; i < outputs_.size(); i++) {
        output.writeMessage(6, outputs_.get(i));
      }
      for (int i = 0; i < rawInputContents_.size(); i++) {
        output.writeBytes(7, rawInputContents_.get(i));
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getModelNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, modelName_);
      }
      if (!getModelVersionBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, modelVersion_);
      }
      if (!getIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, id_);
      }
      for (java.util.Map.Entry<String, GrpcService.InferParameter> entry
           : internalGetParameters().getMap().entrySet()) {
        com.google.protobuf.MapEntry<String, GrpcService.InferParameter>
        parameters = ParametersDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, parameters);
      }
      for (int i = 0; i < inputs_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, inputs_.get(i));
      }
      for (int i = 0; i < outputs_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, outputs_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < rawInputContents_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(rawInputContents_.get(i));
        }
        size += dataSize;
        size += 1 * getRawInputContentsList().size();
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.ModelInferRequest)) {
        return super.equals(obj);
      }
      GrpcService.ModelInferRequest other = (GrpcService.ModelInferRequest) obj;

      boolean result = true;
      result = result && getModelName()
          .equals(other.getModelName());
      result = result && getModelVersion()
          .equals(other.getModelVersion());
      result = result && getId()
          .equals(other.getId());
      result = result && internalGetParameters().equals(
          other.internalGetParameters());
      result = result && getInputsList()
          .equals(other.getInputsList());
      result = result && getOutputsList()
          .equals(other.getOutputsList());
      result = result && getRawInputContentsList()
          .equals(other.getRawInputContentsList());
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (37 * hash) + MODEL_NAME_FIELD_NUMBER;
      hash = (53 * hash) + getModelName().hashCode();
      hash = (37 * hash) + MODEL_VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getModelVersion().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getId().hashCode();
      if (!internalGetParameters().getMap().isEmpty()) {
        hash = (37 * hash) + PARAMETERS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetParameters().hashCode();
      }
      if (getInputsCount() > 0) {
        hash = (37 * hash) + INPUTS_FIELD_NUMBER;
        hash = (53 * hash) + getInputsList().hashCode();
      }
      if (getOutputsCount() > 0) {
        hash = (37 * hash) + OUTPUTS_FIELD_NUMBER;
        hash = (53 * hash) + getOutputsList().hashCode();
      }
      if (getRawInputContentsCount() > 0) {
        hash = (37 * hash) + RAW_INPUT_CONTENTS_FIELD_NUMBER;
        hash = (53 * hash) + getRawInputContentsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.ModelInferRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ModelInferRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ModelInferRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ModelInferRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ModelInferRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ModelInferRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ModelInferRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.ModelInferRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ModelInferRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ModelInferRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.ModelInferRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message ModelInferRequest
     *&#64;&#64;
     *&#64;&#64;   Request message for ModelInfer.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.ModelInferRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.ModelInferRequest)
        GrpcService.ModelInferRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_ModelInferRequest_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 4:
            return internalGetParameters();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 4:
            return internalGetMutableParameters();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_ModelInferRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.ModelInferRequest.class, GrpcService.ModelInferRequest.Builder.class);
      }

      // Construct using GrpcService.ModelInferRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getInputsFieldBuilder();
          getOutputsFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        modelName_ = "";

        modelVersion_ = "";

        id_ = "";

        internalGetMutableParameters().clear();
        if (inputsBuilder_ == null) {
          inputs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
        } else {
          inputsBuilder_.clear();
        }
        if (outputsBuilder_ == null) {
          outputs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
        } else {
          outputsBuilder_.clear();
        }
        rawInputContents_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_ModelInferRequest_descriptor;
      }

      public GrpcService.ModelInferRequest getDefaultInstanceForType() {
        return GrpcService.ModelInferRequest.getDefaultInstance();
      }

      public GrpcService.ModelInferRequest build() {
        GrpcService.ModelInferRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.ModelInferRequest buildPartial() {
        GrpcService.ModelInferRequest result = new GrpcService.ModelInferRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        result.modelName_ = modelName_;
        result.modelVersion_ = modelVersion_;
        result.id_ = id_;
        result.parameters_ = internalGetParameters();
        result.parameters_.makeImmutable();
        if (inputsBuilder_ == null) {
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            inputs_ = java.util.Collections.unmodifiableList(inputs_);
            bitField0_ = (bitField0_ & ~0x00000010);
          }
          result.inputs_ = inputs_;
        } else {
          result.inputs_ = inputsBuilder_.build();
        }
        if (outputsBuilder_ == null) {
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            outputs_ = java.util.Collections.unmodifiableList(outputs_);
            bitField0_ = (bitField0_ & ~0x00000020);
          }
          result.outputs_ = outputs_;
        } else {
          result.outputs_ = outputsBuilder_.build();
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          rawInputContents_ = java.util.Collections.unmodifiableList(rawInputContents_);
          bitField0_ = (bitField0_ & ~0x00000040);
        }
        result.rawInputContents_ = rawInputContents_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.ModelInferRequest) {
          return mergeFrom((GrpcService.ModelInferRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.ModelInferRequest other) {
        if (other == GrpcService.ModelInferRequest.getDefaultInstance()) return this;
        if (!other.getModelName().isEmpty()) {
          modelName_ = other.modelName_;
          onChanged();
        }
        if (!other.getModelVersion().isEmpty()) {
          modelVersion_ = other.modelVersion_;
          onChanged();
        }
        if (!other.getId().isEmpty()) {
          id_ = other.id_;
          onChanged();
        }
        internalGetMutableParameters().mergeFrom(
            other.internalGetParameters());
        if (inputsBuilder_ == null) {
          if (!other.inputs_.isEmpty()) {
            if (inputs_.isEmpty()) {
              inputs_ = other.inputs_;
              bitField0_ = (bitField0_ & ~0x00000010);
            } else {
              ensureInputsIsMutable();
              inputs_.addAll(other.inputs_);
            }
            onChanged();
          }
        } else {
          if (!other.inputs_.isEmpty()) {
            if (inputsBuilder_.isEmpty()) {
              inputsBuilder_.dispose();
              inputsBuilder_ = null;
              inputs_ = other.inputs_;
              bitField0_ = (bitField0_ & ~0x00000010);
              inputsBuilder_ =
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getInputsFieldBuilder() : null;
            } else {
              inputsBuilder_.addAllMessages(other.inputs_);
            }
          }
        }
        if (outputsBuilder_ == null) {
          if (!other.outputs_.isEmpty()) {
            if (outputs_.isEmpty()) {
              outputs_ = other.outputs_;
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              ensureOutputsIsMutable();
              outputs_.addAll(other.outputs_);
            }
            onChanged();
          }
        } else {
          if (!other.outputs_.isEmpty()) {
            if (outputsBuilder_.isEmpty()) {
              outputsBuilder_.dispose();
              outputsBuilder_ = null;
              outputs_ = other.outputs_;
              bitField0_ = (bitField0_ & ~0x00000020);
              outputsBuilder_ =
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getOutputsFieldBuilder() : null;
            } else {
              outputsBuilder_.addAllMessages(other.outputs_);
            }
          }
        }
        if (!other.rawInputContents_.isEmpty()) {
          if (rawInputContents_.isEmpty()) {
            rawInputContents_ = other.rawInputContents_;
            bitField0_ = (bitField0_ & ~0x00000040);
          } else {
            ensureRawInputContentsIsMutable();
            rawInputContents_.addAll(other.rawInputContents_);
          }
          onChanged();
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.ModelInferRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.ModelInferRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private Object modelName_ = "";
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string model_name
       *&#64;&#64;
       *&#64;&#64;     The name of the model to use for inferencing.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string model_name = 1;</code>
       */
      public String getModelName() {
        Object ref = modelName_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          modelName_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string model_name
       *&#64;&#64;
       *&#64;&#64;     The name of the model to use for inferencing.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string model_name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getModelNameBytes() {
        Object ref = modelName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          modelName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string model_name
       *&#64;&#64;
       *&#64;&#64;     The name of the model to use for inferencing.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string model_name = 1;</code>
       */
      public Builder setModelName(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        modelName_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string model_name
       *&#64;&#64;
       *&#64;&#64;     The name of the model to use for inferencing.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string model_name = 1;</code>
       */
      public Builder clearModelName() {

        modelName_ = getDefaultInstance().getModelName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string model_name
       *&#64;&#64;
       *&#64;&#64;     The name of the model to use for inferencing.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string model_name = 1;</code>
       */
      public Builder setModelNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        modelName_ = value;
        onChanged();
        return this;
      }

      private Object modelVersion_ = "";
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string model_version
       *&#64;&#64;
       *&#64;&#64;     The version of the model to use for inference. If not
       *&#64;&#64;     given the latest/most-recent version of the model is used.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string model_version = 2;</code>
       */
      public String getModelVersion() {
        Object ref = modelVersion_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          modelVersion_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string model_version
       *&#64;&#64;
       *&#64;&#64;     The version of the model to use for inference. If not
       *&#64;&#64;     given the latest/most-recent version of the model is used.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string model_version = 2;</code>
       */
      public com.google.protobuf.ByteString
          getModelVersionBytes() {
        Object ref = modelVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          modelVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string model_version
       *&#64;&#64;
       *&#64;&#64;     The version of the model to use for inference. If not
       *&#64;&#64;     given the latest/most-recent version of the model is used.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string model_version = 2;</code>
       */
      public Builder setModelVersion(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        modelVersion_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string model_version
       *&#64;&#64;
       *&#64;&#64;     The version of the model to use for inference. If not
       *&#64;&#64;     given the latest/most-recent version of the model is used.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string model_version = 2;</code>
       */
      public Builder clearModelVersion() {

        modelVersion_ = getDefaultInstance().getModelVersion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string model_version
       *&#64;&#64;
       *&#64;&#64;     The version of the model to use for inference. If not
       *&#64;&#64;     given the latest/most-recent version of the model is used.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string model_version = 2;</code>
       */
      public Builder setModelVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        modelVersion_ = value;
        onChanged();
        return this;
      }

      private Object id_ = "";
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string id
       *&#64;&#64;
       *&#64;&#64;     Optional identifier for the request. If specified will be
       *&#64;&#64;     returned in the response.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string id = 3;</code>
       */
      public String getId() {
        Object ref = id_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          id_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string id
       *&#64;&#64;
       *&#64;&#64;     Optional identifier for the request. If specified will be
       *&#64;&#64;     returned in the response.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string id = 3;</code>
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string id
       *&#64;&#64;
       *&#64;&#64;     Optional identifier for the request. If specified will be
       *&#64;&#64;     returned in the response.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string id = 3;</code>
       */
      public Builder setId(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string id
       *&#64;&#64;
       *&#64;&#64;     Optional identifier for the request. If specified will be
       *&#64;&#64;     returned in the response.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string id = 3;</code>
       */
      public Builder clearId() {

        id_ = getDefaultInstance().getId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string id
       *&#64;&#64;
       *&#64;&#64;     Optional identifier for the request. If specified will be
       *&#64;&#64;     returned in the response.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string id = 3;</code>
       */
      public Builder setIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        id_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.MapField<
          String, GrpcService.InferParameter> parameters_;
      private com.google.protobuf.MapField<String, GrpcService.InferParameter>
      internalGetParameters() {
        if (parameters_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              ParametersDefaultEntryHolder.defaultEntry);
        }
        return parameters_;
      }
      private com.google.protobuf.MapField<String, GrpcService.InferParameter>
      internalGetMutableParameters() {
        onChanged();;
        if (parameters_ == null) {
          parameters_ = com.google.protobuf.MapField.newMapField(
              ParametersDefaultEntryHolder.defaultEntry);
        }
        if (!parameters_.isMutable()) {
          parameters_ = parameters_.copy();
        }
        return parameters_;
      }

      public int getParametersCount() {
        return internalGetParameters().getMap().size();
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;     Optional inference parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */

      public boolean containsParameters(
          String key) {
        if (key == null) { throw new NullPointerException(); }
        return internalGetParameters().getMap().containsKey(key);
      }
      /**
       * Use {@link #getParametersMap()} instead.
       */
      @Deprecated
      public java.util.Map<String, GrpcService.InferParameter> getParameters() {
        return getParametersMap();
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;     Optional inference parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */

      public java.util.Map<String, GrpcService.InferParameter> getParametersMap() {
        return internalGetParameters().getMap();
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;     Optional inference parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */

      public GrpcService.InferParameter getParametersOrDefault(
          String key,
          GrpcService.InferParameter defaultValue) {
        if (key == null) { throw new NullPointerException(); }
        java.util.Map<String, GrpcService.InferParameter> map =
            internalGetParameters().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;     Optional inference parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */

      public GrpcService.InferParameter getParametersOrThrow(
          String key) {
        if (key == null) { throw new NullPointerException(); }
        java.util.Map<String, GrpcService.InferParameter> map =
            internalGetParameters().getMap();
        if (!map.containsKey(key)) {
          throw new IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearParameters() {
        getMutableParameters().clear();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;     Optional inference parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */

      public Builder removeParameters(
          String key) {
        if (key == null) { throw new NullPointerException(); }
        getMutableParameters().remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @Deprecated
      public java.util.Map<String, GrpcService.InferParameter>
      getMutableParameters() {
        return internalGetMutableParameters().getMutableMap();
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;     Optional inference parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */
      public Builder putParameters(
          String key,
          GrpcService.InferParameter value) {
        if (key == null) { throw new NullPointerException(); }
        if (value == null) { throw new NullPointerException(); }
        getMutableParameters().put(key, value);
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;     Optional inference parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */

      public Builder putAllParameters(
          java.util.Map<String, GrpcService.InferParameter> values) {
        getMutableParameters().putAll(values);
        return this;
      }

      private java.util.List<GrpcService.ModelInferRequest.InferInputTensor> inputs_ =
        java.util.Collections.emptyList();
      private void ensureInputsIsMutable() {
        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
          inputs_ = new java.util.ArrayList<GrpcService.ModelInferRequest.InferInputTensor>(inputs_);
          bitField0_ |= 0x00000010;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          GrpcService.ModelInferRequest.InferInputTensor, GrpcService.ModelInferRequest.InferInputTensor.Builder, GrpcService.ModelInferRequest.InferInputTensorOrBuilder> inputsBuilder_;

      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferInputTensor inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The input tensors for the inference.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferInputTensor inputs = 5;</code>
       */
      public java.util.List<GrpcService.ModelInferRequest.InferInputTensor> getInputsList() {
        if (inputsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(inputs_);
        } else {
          return inputsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferInputTensor inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The input tensors for the inference.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferInputTensor inputs = 5;</code>
       */
      public int getInputsCount() {
        if (inputsBuilder_ == null) {
          return inputs_.size();
        } else {
          return inputsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferInputTensor inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The input tensors for the inference.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferInputTensor inputs = 5;</code>
       */
      public GrpcService.ModelInferRequest.InferInputTensor getInputs(int index) {
        if (inputsBuilder_ == null) {
          return inputs_.get(index);
        } else {
          return inputsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferInputTensor inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The input tensors for the inference.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferInputTensor inputs = 5;</code>
       */
      public Builder setInputs(
          int index, GrpcService.ModelInferRequest.InferInputTensor value) {
        if (inputsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInputsIsMutable();
          inputs_.set(index, value);
          onChanged();
        } else {
          inputsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferInputTensor inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The input tensors for the inference.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferInputTensor inputs = 5;</code>
       */
      public Builder setInputs(
          int index, GrpcService.ModelInferRequest.InferInputTensor.Builder builderForValue) {
        if (inputsBuilder_ == null) {
          ensureInputsIsMutable();
          inputs_.set(index, builderForValue.build());
          onChanged();
        } else {
          inputsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferInputTensor inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The input tensors for the inference.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferInputTensor inputs = 5;</code>
       */
      public Builder addInputs(GrpcService.ModelInferRequest.InferInputTensor value) {
        if (inputsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInputsIsMutable();
          inputs_.add(value);
          onChanged();
        } else {
          inputsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferInputTensor inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The input tensors for the inference.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferInputTensor inputs = 5;</code>
       */
      public Builder addInputs(
          int index, GrpcService.ModelInferRequest.InferInputTensor value) {
        if (inputsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInputsIsMutable();
          inputs_.add(index, value);
          onChanged();
        } else {
          inputsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferInputTensor inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The input tensors for the inference.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferInputTensor inputs = 5;</code>
       */
      public Builder addInputs(
          GrpcService.ModelInferRequest.InferInputTensor.Builder builderForValue) {
        if (inputsBuilder_ == null) {
          ensureInputsIsMutable();
          inputs_.add(builderForValue.build());
          onChanged();
        } else {
          inputsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferInputTensor inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The input tensors for the inference.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferInputTensor inputs = 5;</code>
       */
      public Builder addInputs(
          int index, GrpcService.ModelInferRequest.InferInputTensor.Builder builderForValue) {
        if (inputsBuilder_ == null) {
          ensureInputsIsMutable();
          inputs_.add(index, builderForValue.build());
          onChanged();
        } else {
          inputsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferInputTensor inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The input tensors for the inference.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferInputTensor inputs = 5;</code>
       */
      public Builder addAllInputs(
          Iterable<? extends GrpcService.ModelInferRequest.InferInputTensor> values) {
        if (inputsBuilder_ == null) {
          ensureInputsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, inputs_);
          onChanged();
        } else {
          inputsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferInputTensor inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The input tensors for the inference.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferInputTensor inputs = 5;</code>
       */
      public Builder clearInputs() {
        if (inputsBuilder_ == null) {
          inputs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
          onChanged();
        } else {
          inputsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferInputTensor inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The input tensors for the inference.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferInputTensor inputs = 5;</code>
       */
      public Builder removeInputs(int index) {
        if (inputsBuilder_ == null) {
          ensureInputsIsMutable();
          inputs_.remove(index);
          onChanged();
        } else {
          inputsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferInputTensor inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The input tensors for the inference.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferInputTensor inputs = 5;</code>
       */
      public GrpcService.ModelInferRequest.InferInputTensor.Builder getInputsBuilder(
          int index) {
        return getInputsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferInputTensor inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The input tensors for the inference.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferInputTensor inputs = 5;</code>
       */
      public GrpcService.ModelInferRequest.InferInputTensorOrBuilder getInputsOrBuilder(
          int index) {
        if (inputsBuilder_ == null) {
          return inputs_.get(index);  } else {
          return inputsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferInputTensor inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The input tensors for the inference.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferInputTensor inputs = 5;</code>
       */
      public java.util.List<? extends GrpcService.ModelInferRequest.InferInputTensorOrBuilder>
           getInputsOrBuilderList() {
        if (inputsBuilder_ != null) {
          return inputsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(inputs_);
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferInputTensor inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The input tensors for the inference.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferInputTensor inputs = 5;</code>
       */
      public GrpcService.ModelInferRequest.InferInputTensor.Builder addInputsBuilder() {
        return getInputsFieldBuilder().addBuilder(
            GrpcService.ModelInferRequest.InferInputTensor.getDefaultInstance());
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferInputTensor inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The input tensors for the inference.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferInputTensor inputs = 5;</code>
       */
      public GrpcService.ModelInferRequest.InferInputTensor.Builder addInputsBuilder(
          int index) {
        return getInputsFieldBuilder().addBuilder(
            index, GrpcService.ModelInferRequest.InferInputTensor.getDefaultInstance());
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferInputTensor inputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The input tensors for the inference.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferInputTensor inputs = 5;</code>
       */
      public java.util.List<GrpcService.ModelInferRequest.InferInputTensor.Builder>
           getInputsBuilderList() {
        return getInputsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          GrpcService.ModelInferRequest.InferInputTensor, GrpcService.ModelInferRequest.InferInputTensor.Builder, GrpcService.ModelInferRequest.InferInputTensorOrBuilder>
          getInputsFieldBuilder() {
        if (inputsBuilder_ == null) {
          inputsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              GrpcService.ModelInferRequest.InferInputTensor, GrpcService.ModelInferRequest.InferInputTensor.Builder, GrpcService.ModelInferRequest.InferInputTensorOrBuilder>(
                  inputs_,
                  ((bitField0_ & 0x00000010) == 0x00000010),
                  getParentForChildren(),
                  isClean());
          inputs_ = null;
        }
        return inputsBuilder_;
      }

      private java.util.List<GrpcService.ModelInferRequest.InferRequestedOutputTensor> outputs_ =
        java.util.Collections.emptyList();
      private void ensureOutputsIsMutable() {
        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
          outputs_ = new java.util.ArrayList<GrpcService.ModelInferRequest.InferRequestedOutputTensor>(outputs_);
          bitField0_ |= 0x00000020;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          GrpcService.ModelInferRequest.InferRequestedOutputTensor, GrpcService.ModelInferRequest.InferRequestedOutputTensor.Builder, GrpcService.ModelInferRequest.InferRequestedOutputTensorOrBuilder> outputsBuilder_;

      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferRequestedOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The requested output tensors for the inference. Optional, if not
       *&#64;&#64;     specified all outputs specified in the model config will be
       *&#64;&#64;     returned.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferRequestedOutputTensor outputs = 6;</code>
       */
      public java.util.List<GrpcService.ModelInferRequest.InferRequestedOutputTensor> getOutputsList() {
        if (outputsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(outputs_);
        } else {
          return outputsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferRequestedOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The requested output tensors for the inference. Optional, if not
       *&#64;&#64;     specified all outputs specified in the model config will be
       *&#64;&#64;     returned.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferRequestedOutputTensor outputs = 6;</code>
       */
      public int getOutputsCount() {
        if (outputsBuilder_ == null) {
          return outputs_.size();
        } else {
          return outputsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferRequestedOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The requested output tensors for the inference. Optional, if not
       *&#64;&#64;     specified all outputs specified in the model config will be
       *&#64;&#64;     returned.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferRequestedOutputTensor outputs = 6;</code>
       */
      public GrpcService.ModelInferRequest.InferRequestedOutputTensor getOutputs(int index) {
        if (outputsBuilder_ == null) {
          return outputs_.get(index);
        } else {
          return outputsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferRequestedOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The requested output tensors for the inference. Optional, if not
       *&#64;&#64;     specified all outputs specified in the model config will be
       *&#64;&#64;     returned.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferRequestedOutputTensor outputs = 6;</code>
       */
      public Builder setOutputs(
          int index, GrpcService.ModelInferRequest.InferRequestedOutputTensor value) {
        if (outputsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOutputsIsMutable();
          outputs_.set(index, value);
          onChanged();
        } else {
          outputsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferRequestedOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The requested output tensors for the inference. Optional, if not
       *&#64;&#64;     specified all outputs specified in the model config will be
       *&#64;&#64;     returned.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferRequestedOutputTensor outputs = 6;</code>
       */
      public Builder setOutputs(
          int index, GrpcService.ModelInferRequest.InferRequestedOutputTensor.Builder builderForValue) {
        if (outputsBuilder_ == null) {
          ensureOutputsIsMutable();
          outputs_.set(index, builderForValue.build());
          onChanged();
        } else {
          outputsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferRequestedOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The requested output tensors for the inference. Optional, if not
       *&#64;&#64;     specified all outputs specified in the model config will be
       *&#64;&#64;     returned.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferRequestedOutputTensor outputs = 6;</code>
       */
      public Builder addOutputs(GrpcService.ModelInferRequest.InferRequestedOutputTensor value) {
        if (outputsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOutputsIsMutable();
          outputs_.add(value);
          onChanged();
        } else {
          outputsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferRequestedOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The requested output tensors for the inference. Optional, if not
       *&#64;&#64;     specified all outputs specified in the model config will be
       *&#64;&#64;     returned.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferRequestedOutputTensor outputs = 6;</code>
       */
      public Builder addOutputs(
          int index, GrpcService.ModelInferRequest.InferRequestedOutputTensor value) {
        if (outputsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOutputsIsMutable();
          outputs_.add(index, value);
          onChanged();
        } else {
          outputsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferRequestedOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The requested output tensors for the inference. Optional, if not
       *&#64;&#64;     specified all outputs specified in the model config will be
       *&#64;&#64;     returned.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferRequestedOutputTensor outputs = 6;</code>
       */
      public Builder addOutputs(
          GrpcService.ModelInferRequest.InferRequestedOutputTensor.Builder builderForValue) {
        if (outputsBuilder_ == null) {
          ensureOutputsIsMutable();
          outputs_.add(builderForValue.build());
          onChanged();
        } else {
          outputsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferRequestedOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The requested output tensors for the inference. Optional, if not
       *&#64;&#64;     specified all outputs specified in the model config will be
       *&#64;&#64;     returned.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferRequestedOutputTensor outputs = 6;</code>
       */
      public Builder addOutputs(
          int index, GrpcService.ModelInferRequest.InferRequestedOutputTensor.Builder builderForValue) {
        if (outputsBuilder_ == null) {
          ensureOutputsIsMutable();
          outputs_.add(index, builderForValue.build());
          onChanged();
        } else {
          outputsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferRequestedOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The requested output tensors for the inference. Optional, if not
       *&#64;&#64;     specified all outputs specified in the model config will be
       *&#64;&#64;     returned.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferRequestedOutputTensor outputs = 6;</code>
       */
      public Builder addAllOutputs(
          Iterable<? extends GrpcService.ModelInferRequest.InferRequestedOutputTensor> values) {
        if (outputsBuilder_ == null) {
          ensureOutputsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, outputs_);
          onChanged();
        } else {
          outputsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferRequestedOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The requested output tensors for the inference. Optional, if not
       *&#64;&#64;     specified all outputs specified in the model config will be
       *&#64;&#64;     returned.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferRequestedOutputTensor outputs = 6;</code>
       */
      public Builder clearOutputs() {
        if (outputsBuilder_ == null) {
          outputs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
          onChanged();
        } else {
          outputsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferRequestedOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The requested output tensors for the inference. Optional, if not
       *&#64;&#64;     specified all outputs specified in the model config will be
       *&#64;&#64;     returned.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferRequestedOutputTensor outputs = 6;</code>
       */
      public Builder removeOutputs(int index) {
        if (outputsBuilder_ == null) {
          ensureOutputsIsMutable();
          outputs_.remove(index);
          onChanged();
        } else {
          outputsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferRequestedOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The requested output tensors for the inference. Optional, if not
       *&#64;&#64;     specified all outputs specified in the model config will be
       *&#64;&#64;     returned.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferRequestedOutputTensor outputs = 6;</code>
       */
      public GrpcService.ModelInferRequest.InferRequestedOutputTensor.Builder getOutputsBuilder(
          int index) {
        return getOutputsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferRequestedOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The requested output tensors for the inference. Optional, if not
       *&#64;&#64;     specified all outputs specified in the model config will be
       *&#64;&#64;     returned.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferRequestedOutputTensor outputs = 6;</code>
       */
      public GrpcService.ModelInferRequest.InferRequestedOutputTensorOrBuilder getOutputsOrBuilder(
          int index) {
        if (outputsBuilder_ == null) {
          return outputs_.get(index);  } else {
          return outputsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferRequestedOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The requested output tensors for the inference. Optional, if not
       *&#64;&#64;     specified all outputs specified in the model config will be
       *&#64;&#64;     returned.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferRequestedOutputTensor outputs = 6;</code>
       */
      public java.util.List<? extends GrpcService.ModelInferRequest.InferRequestedOutputTensorOrBuilder>
           getOutputsOrBuilderList() {
        if (outputsBuilder_ != null) {
          return outputsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(outputs_);
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferRequestedOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The requested output tensors for the inference. Optional, if not
       *&#64;&#64;     specified all outputs specified in the model config will be
       *&#64;&#64;     returned.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferRequestedOutputTensor outputs = 6;</code>
       */
      public GrpcService.ModelInferRequest.InferRequestedOutputTensor.Builder addOutputsBuilder() {
        return getOutputsFieldBuilder().addBuilder(
            GrpcService.ModelInferRequest.InferRequestedOutputTensor.getDefaultInstance());
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferRequestedOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The requested output tensors for the inference. Optional, if not
       *&#64;&#64;     specified all outputs specified in the model config will be
       *&#64;&#64;     returned.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferRequestedOutputTensor outputs = 6;</code>
       */
      public GrpcService.ModelInferRequest.InferRequestedOutputTensor.Builder addOutputsBuilder(
          int index) {
        return getOutputsFieldBuilder().addBuilder(
            index, GrpcService.ModelInferRequest.InferRequestedOutputTensor.getDefaultInstance());
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferRequestedOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The requested output tensors for the inference. Optional, if not
       *&#64;&#64;     specified all outputs specified in the model config will be
       *&#64;&#64;     returned.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferRequest.InferRequestedOutputTensor outputs = 6;</code>
       */
      public java.util.List<GrpcService.ModelInferRequest.InferRequestedOutputTensor.Builder>
           getOutputsBuilderList() {
        return getOutputsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          GrpcService.ModelInferRequest.InferRequestedOutputTensor, GrpcService.ModelInferRequest.InferRequestedOutputTensor.Builder, GrpcService.ModelInferRequest.InferRequestedOutputTensorOrBuilder>
          getOutputsFieldBuilder() {
        if (outputsBuilder_ == null) {
          outputsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              GrpcService.ModelInferRequest.InferRequestedOutputTensor, GrpcService.ModelInferRequest.InferRequestedOutputTensor.Builder, GrpcService.ModelInferRequest.InferRequestedOutputTensorOrBuilder>(
                  outputs_,
                  ((bitField0_ & 0x00000020) == 0x00000020),
                  getParentForChildren(),
                  isClean());
          outputs_ = null;
        }
        return outputsBuilder_;
      }

      private java.util.List<com.google.protobuf.ByteString> rawInputContents_ = java.util.Collections.emptyList();
      private void ensureRawInputContentsIsMutable() {
        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
          rawInputContents_ = new java.util.ArrayList<com.google.protobuf.ByteString>(rawInputContents_);
          bitField0_ |= 0x00000040;
         }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bytes raw_input_contents
       *&#64;&#64;
       *&#64;&#64;     The data contained in an input tensor can be represented in
       *&#64;&#64;     "raw" bytes form or in the repeated type that matches the
       *&#64;&#64;     tensor's data type. Using the "raw" bytes form will
       *&#64;&#64;     typically allow higher performance due to the way protobuf
       *&#64;&#64;     allocation and reuse interacts with GRPC. For example, see
       *&#64;&#64;     https://github.com/grpc/grpc/issues/23231.
       *&#64;&#64;
       *&#64;&#64;     To use the raw representation 'raw_input_contents' must be
       *&#64;&#64;     initialized with data for each tensor in the same order as
       *&#64;&#64;     'inputs'. For each tensor, the size of this content must
       *&#64;&#64;     match what is expected by the tensor's shape and data
       *&#64;&#64;     type. The raw data must be the flattened, one-dimensional,
       *&#64;&#64;     row-major order of the tensor elements without any stride
       *&#64;&#64;     or padding between the elements. Note that the FP16 data
       *&#64;&#64;     type must be represented as raw content as there is no
       *&#64;&#64;     specific data type for a 16-bit float type.
       *&#64;&#64;
       *&#64;&#64;     If this field is specified then InferInputTensor::contents
       *&#64;&#64;     must not be specified for any input tensor.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated bytes raw_input_contents = 7;</code>
       */
      public java.util.List<com.google.protobuf.ByteString>
          getRawInputContentsList() {
        return java.util.Collections.unmodifiableList(rawInputContents_);
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bytes raw_input_contents
       *&#64;&#64;
       *&#64;&#64;     The data contained in an input tensor can be represented in
       *&#64;&#64;     "raw" bytes form or in the repeated type that matches the
       *&#64;&#64;     tensor's data type. Using the "raw" bytes form will
       *&#64;&#64;     typically allow higher performance due to the way protobuf
       *&#64;&#64;     allocation and reuse interacts with GRPC. For example, see
       *&#64;&#64;     https://github.com/grpc/grpc/issues/23231.
       *&#64;&#64;
       *&#64;&#64;     To use the raw representation 'raw_input_contents' must be
       *&#64;&#64;     initialized with data for each tensor in the same order as
       *&#64;&#64;     'inputs'. For each tensor, the size of this content must
       *&#64;&#64;     match what is expected by the tensor's shape and data
       *&#64;&#64;     type. The raw data must be the flattened, one-dimensional,
       *&#64;&#64;     row-major order of the tensor elements without any stride
       *&#64;&#64;     or padding between the elements. Note that the FP16 data
       *&#64;&#64;     type must be represented as raw content as there is no
       *&#64;&#64;     specific data type for a 16-bit float type.
       *&#64;&#64;
       *&#64;&#64;     If this field is specified then InferInputTensor::contents
       *&#64;&#64;     must not be specified for any input tensor.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated bytes raw_input_contents = 7;</code>
       */
      public int getRawInputContentsCount() {
        return rawInputContents_.size();
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bytes raw_input_contents
       *&#64;&#64;
       *&#64;&#64;     The data contained in an input tensor can be represented in
       *&#64;&#64;     "raw" bytes form or in the repeated type that matches the
       *&#64;&#64;     tensor's data type. Using the "raw" bytes form will
       *&#64;&#64;     typically allow higher performance due to the way protobuf
       *&#64;&#64;     allocation and reuse interacts with GRPC. For example, see
       *&#64;&#64;     https://github.com/grpc/grpc/issues/23231.
       *&#64;&#64;
       *&#64;&#64;     To use the raw representation 'raw_input_contents' must be
       *&#64;&#64;     initialized with data for each tensor in the same order as
       *&#64;&#64;     'inputs'. For each tensor, the size of this content must
       *&#64;&#64;     match what is expected by the tensor's shape and data
       *&#64;&#64;     type. The raw data must be the flattened, one-dimensional,
       *&#64;&#64;     row-major order of the tensor elements without any stride
       *&#64;&#64;     or padding between the elements. Note that the FP16 data
       *&#64;&#64;     type must be represented as raw content as there is no
       *&#64;&#64;     specific data type for a 16-bit float type.
       *&#64;&#64;
       *&#64;&#64;     If this field is specified then InferInputTensor::contents
       *&#64;&#64;     must not be specified for any input tensor.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated bytes raw_input_contents = 7;</code>
       */
      public com.google.protobuf.ByteString getRawInputContents(int index) {
        return rawInputContents_.get(index);
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bytes raw_input_contents
       *&#64;&#64;
       *&#64;&#64;     The data contained in an input tensor can be represented in
       *&#64;&#64;     "raw" bytes form or in the repeated type that matches the
       *&#64;&#64;     tensor's data type. Using the "raw" bytes form will
       *&#64;&#64;     typically allow higher performance due to the way protobuf
       *&#64;&#64;     allocation and reuse interacts with GRPC. For example, see
       *&#64;&#64;     https://github.com/grpc/grpc/issues/23231.
       *&#64;&#64;
       *&#64;&#64;     To use the raw representation 'raw_input_contents' must be
       *&#64;&#64;     initialized with data for each tensor in the same order as
       *&#64;&#64;     'inputs'. For each tensor, the size of this content must
       *&#64;&#64;     match what is expected by the tensor's shape and data
       *&#64;&#64;     type. The raw data must be the flattened, one-dimensional,
       *&#64;&#64;     row-major order of the tensor elements without any stride
       *&#64;&#64;     or padding between the elements. Note that the FP16 data
       *&#64;&#64;     type must be represented as raw content as there is no
       *&#64;&#64;     specific data type for a 16-bit float type.
       *&#64;&#64;
       *&#64;&#64;     If this field is specified then InferInputTensor::contents
       *&#64;&#64;     must not be specified for any input tensor.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated bytes raw_input_contents = 7;</code>
       */
      public Builder setRawInputContents(
          int index, com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureRawInputContentsIsMutable();
        rawInputContents_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bytes raw_input_contents
       *&#64;&#64;
       *&#64;&#64;     The data contained in an input tensor can be represented in
       *&#64;&#64;     "raw" bytes form or in the repeated type that matches the
       *&#64;&#64;     tensor's data type. Using the "raw" bytes form will
       *&#64;&#64;     typically allow higher performance due to the way protobuf
       *&#64;&#64;     allocation and reuse interacts with GRPC. For example, see
       *&#64;&#64;     https://github.com/grpc/grpc/issues/23231.
       *&#64;&#64;
       *&#64;&#64;     To use the raw representation 'raw_input_contents' must be
       *&#64;&#64;     initialized with data for each tensor in the same order as
       *&#64;&#64;     'inputs'. For each tensor, the size of this content must
       *&#64;&#64;     match what is expected by the tensor's shape and data
       *&#64;&#64;     type. The raw data must be the flattened, one-dimensional,
       *&#64;&#64;     row-major order of the tensor elements without any stride
       *&#64;&#64;     or padding between the elements. Note that the FP16 data
       *&#64;&#64;     type must be represented as raw content as there is no
       *&#64;&#64;     specific data type for a 16-bit float type.
       *&#64;&#64;
       *&#64;&#64;     If this field is specified then InferInputTensor::contents
       *&#64;&#64;     must not be specified for any input tensor.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated bytes raw_input_contents = 7;</code>
       */
      public Builder addRawInputContents(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureRawInputContentsIsMutable();
        rawInputContents_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bytes raw_input_contents
       *&#64;&#64;
       *&#64;&#64;     The data contained in an input tensor can be represented in
       *&#64;&#64;     "raw" bytes form or in the repeated type that matches the
       *&#64;&#64;     tensor's data type. Using the "raw" bytes form will
       *&#64;&#64;     typically allow higher performance due to the way protobuf
       *&#64;&#64;     allocation and reuse interacts with GRPC. For example, see
       *&#64;&#64;     https://github.com/grpc/grpc/issues/23231.
       *&#64;&#64;
       *&#64;&#64;     To use the raw representation 'raw_input_contents' must be
       *&#64;&#64;     initialized with data for each tensor in the same order as
       *&#64;&#64;     'inputs'. For each tensor, the size of this content must
       *&#64;&#64;     match what is expected by the tensor's shape and data
       *&#64;&#64;     type. The raw data must be the flattened, one-dimensional,
       *&#64;&#64;     row-major order of the tensor elements without any stride
       *&#64;&#64;     or padding between the elements. Note that the FP16 data
       *&#64;&#64;     type must be represented as raw content as there is no
       *&#64;&#64;     specific data type for a 16-bit float type.
       *&#64;&#64;
       *&#64;&#64;     If this field is specified then InferInputTensor::contents
       *&#64;&#64;     must not be specified for any input tensor.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated bytes raw_input_contents = 7;</code>
       */
      public Builder addAllRawInputContents(
          Iterable<? extends com.google.protobuf.ByteString> values) {
        ensureRawInputContentsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, rawInputContents_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bytes raw_input_contents
       *&#64;&#64;
       *&#64;&#64;     The data contained in an input tensor can be represented in
       *&#64;&#64;     "raw" bytes form or in the repeated type that matches the
       *&#64;&#64;     tensor's data type. Using the "raw" bytes form will
       *&#64;&#64;     typically allow higher performance due to the way protobuf
       *&#64;&#64;     allocation and reuse interacts with GRPC. For example, see
       *&#64;&#64;     https://github.com/grpc/grpc/issues/23231.
       *&#64;&#64;
       *&#64;&#64;     To use the raw representation 'raw_input_contents' must be
       *&#64;&#64;     initialized with data for each tensor in the same order as
       *&#64;&#64;     'inputs'. For each tensor, the size of this content must
       *&#64;&#64;     match what is expected by the tensor's shape and data
       *&#64;&#64;     type. The raw data must be the flattened, one-dimensional,
       *&#64;&#64;     row-major order of the tensor elements without any stride
       *&#64;&#64;     or padding between the elements. Note that the FP16 data
       *&#64;&#64;     type must be represented as raw content as there is no
       *&#64;&#64;     specific data type for a 16-bit float type.
       *&#64;&#64;
       *&#64;&#64;     If this field is specified then InferInputTensor::contents
       *&#64;&#64;     must not be specified for any input tensor.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated bytes raw_input_contents = 7;</code>
       */
      public Builder clearRawInputContents() {
        rawInputContents_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.ModelInferRequest)
    }

    // @@protoc_insertion_point(class_scope:inference.ModelInferRequest)
    private static final GrpcService.ModelInferRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.ModelInferRequest();
    }

    public static GrpcService.ModelInferRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ModelInferRequest>
        PARSER = new com.google.protobuf.AbstractParser<ModelInferRequest>() {
      public ModelInferRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new ModelInferRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ModelInferRequest> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<ModelInferRequest> getParserForType() {
      return PARSER;
    }

    public GrpcService.ModelInferRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ModelInferResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.ModelInferResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string model_name
     *&#64;&#64;
     *&#64;&#64;     The name of the model used for inference.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string model_name = 1;</code>
     */
    String getModelName();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string model_name
     *&#64;&#64;
     *&#64;&#64;     The name of the model used for inference.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string model_name = 1;</code>
     */
    com.google.protobuf.ByteString
        getModelNameBytes();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string model_version
     *&#64;&#64;
     *&#64;&#64;     The version of the model used for inference.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string model_version = 2;</code>
     */
    String getModelVersion();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string model_version
     *&#64;&#64;
     *&#64;&#64;     The version of the model used for inference.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string model_version = 2;</code>
     */
    com.google.protobuf.ByteString
        getModelVersionBytes();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string id
     *&#64;&#64;
     *&#64;&#64;     The id of the inference request if one was specified.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string id = 3;</code>
     */
    String getId();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string id
     *&#64;&#64;
     *&#64;&#64;     The id of the inference request if one was specified.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string id = 3;</code>
     */
    com.google.protobuf.ByteString
        getIdBytes();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
     *&#64;&#64;
     *&#64;&#64;     Optional inference response parameters.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
     */
    int getParametersCount();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
     *&#64;&#64;
     *&#64;&#64;     Optional inference response parameters.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
     */
    boolean containsParameters(
            String key);
    /**
     * Use {@link #getParametersMap()} instead.
     */
    @Deprecated
    java.util.Map<String, GrpcService.InferParameter>
    getParameters();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
     *&#64;&#64;
     *&#64;&#64;     Optional inference response parameters.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
     */
    java.util.Map<String, GrpcService.InferParameter>
    getParametersMap();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
     *&#64;&#64;
     *&#64;&#64;     Optional inference response parameters.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
     */

    GrpcService.InferParameter getParametersOrDefault(
            String key,
            GrpcService.InferParameter defaultValue);
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
     *&#64;&#64;
     *&#64;&#64;     Optional inference response parameters.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
     */

    GrpcService.InferParameter getParametersOrThrow(
            String key);

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: InferOutputTensor outputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The output tensors holding inference results.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelInferResponse.InferOutputTensor outputs = 5;</code>
     */
    java.util.List<GrpcService.ModelInferResponse.InferOutputTensor>
        getOutputsList();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: InferOutputTensor outputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The output tensors holding inference results.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelInferResponse.InferOutputTensor outputs = 5;</code>
     */
    GrpcService.ModelInferResponse.InferOutputTensor getOutputs(int index);
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: InferOutputTensor outputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The output tensors holding inference results.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelInferResponse.InferOutputTensor outputs = 5;</code>
     */
    int getOutputsCount();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: InferOutputTensor outputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The output tensors holding inference results.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelInferResponse.InferOutputTensor outputs = 5;</code>
     */
    java.util.List<? extends GrpcService.ModelInferResponse.InferOutputTensorOrBuilder>
        getOutputsOrBuilderList();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: InferOutputTensor outputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The output tensors holding inference results.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelInferResponse.InferOutputTensor outputs = 5;</code>
     */
    GrpcService.ModelInferResponse.InferOutputTensorOrBuilder getOutputsOrBuilder(
            int index);

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: bytes raw_output_contents
     *&#64;&#64;
     *&#64;&#64;     The data contained in an output tensor can be represented in
     *&#64;&#64;     "raw" bytes form or in the repeated type that matches the
     *&#64;&#64;     tensor's data type. Using the "raw" bytes form will
     *&#64;&#64;     typically allow higher performance due to the way protobuf
     *&#64;&#64;     allocation and reuse interacts with GRPC. For example, see
     *&#64;&#64;     https://github.com/grpc/grpc/issues/23231.
     *&#64;&#64;
     *&#64;&#64;     To use the raw representation 'raw_output_contents' must be
     *&#64;&#64;     initialized with data for each tensor in the same order as
     *&#64;&#64;     'outputs'. For each tensor, the size of this content must
     *&#64;&#64;     match what is expected by the tensor's shape and data
     *&#64;&#64;     type. The raw data must be the flattened, one-dimensional,
     *&#64;&#64;     row-major order of the tensor elements without any stride
     *&#64;&#64;     or padding between the elements. Note that the FP16 data
     *&#64;&#64;     type must be represented as raw content as there is no
     *&#64;&#64;     specific data type for a 16-bit float type.
     *&#64;&#64;
     *&#64;&#64;     If this field is specified then InferOutputTensor::contents
     *&#64;&#64;     must not be specified for any output tensor.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated bytes raw_output_contents = 6;</code>
     */
    java.util.List<com.google.protobuf.ByteString> getRawOutputContentsList();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: bytes raw_output_contents
     *&#64;&#64;
     *&#64;&#64;     The data contained in an output tensor can be represented in
     *&#64;&#64;     "raw" bytes form or in the repeated type that matches the
     *&#64;&#64;     tensor's data type. Using the "raw" bytes form will
     *&#64;&#64;     typically allow higher performance due to the way protobuf
     *&#64;&#64;     allocation and reuse interacts with GRPC. For example, see
     *&#64;&#64;     https://github.com/grpc/grpc/issues/23231.
     *&#64;&#64;
     *&#64;&#64;     To use the raw representation 'raw_output_contents' must be
     *&#64;&#64;     initialized with data for each tensor in the same order as
     *&#64;&#64;     'outputs'. For each tensor, the size of this content must
     *&#64;&#64;     match what is expected by the tensor's shape and data
     *&#64;&#64;     type. The raw data must be the flattened, one-dimensional,
     *&#64;&#64;     row-major order of the tensor elements without any stride
     *&#64;&#64;     or padding between the elements. Note that the FP16 data
     *&#64;&#64;     type must be represented as raw content as there is no
     *&#64;&#64;     specific data type for a 16-bit float type.
     *&#64;&#64;
     *&#64;&#64;     If this field is specified then InferOutputTensor::contents
     *&#64;&#64;     must not be specified for any output tensor.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated bytes raw_output_contents = 6;</code>
     */
    int getRawOutputContentsCount();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: bytes raw_output_contents
     *&#64;&#64;
     *&#64;&#64;     The data contained in an output tensor can be represented in
     *&#64;&#64;     "raw" bytes form or in the repeated type that matches the
     *&#64;&#64;     tensor's data type. Using the "raw" bytes form will
     *&#64;&#64;     typically allow higher performance due to the way protobuf
     *&#64;&#64;     allocation and reuse interacts with GRPC. For example, see
     *&#64;&#64;     https://github.com/grpc/grpc/issues/23231.
     *&#64;&#64;
     *&#64;&#64;     To use the raw representation 'raw_output_contents' must be
     *&#64;&#64;     initialized with data for each tensor in the same order as
     *&#64;&#64;     'outputs'. For each tensor, the size of this content must
     *&#64;&#64;     match what is expected by the tensor's shape and data
     *&#64;&#64;     type. The raw data must be the flattened, one-dimensional,
     *&#64;&#64;     row-major order of the tensor elements without any stride
     *&#64;&#64;     or padding between the elements. Note that the FP16 data
     *&#64;&#64;     type must be represented as raw content as there is no
     *&#64;&#64;     specific data type for a 16-bit float type.
     *&#64;&#64;
     *&#64;&#64;     If this field is specified then InferOutputTensor::contents
     *&#64;&#64;     must not be specified for any output tensor.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated bytes raw_output_contents = 6;</code>
     */
    com.google.protobuf.ByteString getRawOutputContents(int index);
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message ModelInferResponse
   *&#64;&#64;
   *&#64;&#64;   Response message for ModelInfer.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.ModelInferResponse}
   */
  public  static final class ModelInferResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.ModelInferResponse)
      ModelInferResponseOrBuilder {
    // Use ModelInferResponse.newBuilder() to construct.
    private ModelInferResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ModelInferResponse() {
      modelName_ = "";
      modelVersion_ = "";
      id_ = "";
      outputs_ = java.util.Collections.emptyList();
      rawOutputContents_ = java.util.Collections.emptyList();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ModelInferResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              String s = input.readStringRequireUtf8();

              modelName_ = s;
              break;
            }
            case 18: {
              String s = input.readStringRequireUtf8();

              modelVersion_ = s;
              break;
            }
            case 26: {
              String s = input.readStringRequireUtf8();

              id_ = s;
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                parameters_ = com.google.protobuf.MapField.newMapField(
                    ParametersDefaultEntryHolder.defaultEntry);
                mutable_bitField0_ |= 0x00000008;
              }
              com.google.protobuf.MapEntry<String, GrpcService.InferParameter>
              parameters = input.readMessage(
                  ParametersDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
              parameters_.getMutableMap().put(parameters.getKey(), parameters.getValue());
              break;
            }
            case 42: {
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                outputs_ = new java.util.ArrayList<GrpcService.ModelInferResponse.InferOutputTensor>();
                mutable_bitField0_ |= 0x00000010;
              }
              outputs_.add(
                  input.readMessage(GrpcService.ModelInferResponse.InferOutputTensor.parser(), extensionRegistry));
              break;
            }
            case 50: {
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                rawOutputContents_ = new java.util.ArrayList<com.google.protobuf.ByteString>();
                mutable_bitField0_ |= 0x00000020;
              }
              rawOutputContents_.add(input.readBytes());
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
          outputs_ = java.util.Collections.unmodifiableList(outputs_);
        }
        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
          rawOutputContents_ = java.util.Collections.unmodifiableList(rawOutputContents_);
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_ModelInferResponse_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 4:
          return internalGetParameters();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_ModelInferResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.ModelInferResponse.class, GrpcService.ModelInferResponse.Builder.class);
    }

    public interface InferOutputTensorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:inference.ModelInferResponse.InferOutputTensor)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;       The tensor name.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      String getName();
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;       The tensor name.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      com.google.protobuf.ByteString
          getNameBytes();

      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string datatype
       *&#64;&#64;
       *&#64;&#64;       The tensor data type.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string datatype = 2;</code>
       */
      String getDatatype();
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string datatype
       *&#64;&#64;
       *&#64;&#64;       The tensor data type.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string datatype = 2;</code>
       */
      com.google.protobuf.ByteString
          getDatatypeBytes();

      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
       *&#64;&#64;
       *&#64;&#64;       The tensor shape.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int64 shape = 3;</code>
       */
      java.util.List<Long> getShapeList();
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
       *&#64;&#64;
       *&#64;&#64;       The tensor shape.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int64 shape = 3;</code>
       */
      int getShapeCount();
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
       *&#64;&#64;
       *&#64;&#64;       The tensor shape.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int64 shape = 3;</code>
       */
      long getShape(int index);

      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;       Optional output tensor parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */
      int getParametersCount();
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;       Optional output tensor parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */
      boolean containsParameters(
              String key);
      /**
       * Use {@link #getParametersMap()} instead.
       */
      @Deprecated
      java.util.Map<String, GrpcService.InferParameter>
      getParameters();
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;       Optional output tensor parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */
      java.util.Map<String, GrpcService.InferParameter>
      getParametersMap();
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;       Optional output tensor parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */

      GrpcService.InferParameter getParametersOrDefault(
              String key,
              GrpcService.InferParameter defaultValue);
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;       Optional output tensor parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */

      GrpcService.InferParameter getParametersOrThrow(
              String key);

      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: InferTensorContents contents
       *&#64;&#64;
       *&#64;&#64;       The tensor contents using a data-type format. This field
       *&#64;&#64;       must not be specified if tensor contents are being specified
       *&#64;&#64;       in ModelInferResponse.raw_output_contents.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.InferTensorContents contents = 5;</code>
       */
      boolean hasContents();
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: InferTensorContents contents
       *&#64;&#64;
       *&#64;&#64;       The tensor contents using a data-type format. This field
       *&#64;&#64;       must not be specified if tensor contents are being specified
       *&#64;&#64;       in ModelInferResponse.raw_output_contents.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.InferTensorContents contents = 5;</code>
       */
      GrpcService.InferTensorContents getContents();
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: InferTensorContents contents
       *&#64;&#64;
       *&#64;&#64;       The tensor contents using a data-type format. This field
       *&#64;&#64;       must not be specified if tensor contents are being specified
       *&#64;&#64;       in ModelInferResponse.raw_output_contents.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.InferTensorContents contents = 5;</code>
       */
      GrpcService.InferTensorContentsOrBuilder getContentsOrBuilder();
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: message InferOutputTensor
     *&#64;&#64;
     *&#64;&#64;     An output tensor returned for an inference request.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.ModelInferResponse.InferOutputTensor}
     */
    public  static final class InferOutputTensor extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:inference.ModelInferResponse.InferOutputTensor)
        InferOutputTensorOrBuilder {
      // Use InferOutputTensor.newBuilder() to construct.
      private InferOutputTensor(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private InferOutputTensor() {
        name_ = "";
        datatype_ = "";
        shape_ = java.util.Collections.emptyList();
      }

      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
      }
      private InferOutputTensor(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!input.skipField(tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                String s = input.readStringRequireUtf8();

                name_ = s;
                break;
              }
              case 18: {
                String s = input.readStringRequireUtf8();

                datatype_ = s;
                break;
              }
              case 24: {
                if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                  shape_ = new java.util.ArrayList<Long>();
                  mutable_bitField0_ |= 0x00000004;
                }
                shape_.add(input.readInt64());
                break;
              }
              case 26: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000004) == 0x00000004) && input.getBytesUntilLimit() > 0) {
                  shape_ = new java.util.ArrayList<Long>();
                  mutable_bitField0_ |= 0x00000004;
                }
                while (input.getBytesUntilLimit() > 0) {
                  shape_.add(input.readInt64());
                }
                input.popLimit(limit);
                break;
              }
              case 34: {
                if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                  parameters_ = com.google.protobuf.MapField.newMapField(
                      ParametersDefaultEntryHolder.defaultEntry);
                  mutable_bitField0_ |= 0x00000008;
                }
                com.google.protobuf.MapEntry<String, GrpcService.InferParameter>
                parameters = input.readMessage(
                    ParametersDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                parameters_.getMutableMap().put(parameters.getKey(), parameters.getValue());
                break;
              }
              case 42: {
                GrpcService.InferTensorContents.Builder subBuilder = null;
                if (contents_ != null) {
                  subBuilder = contents_.toBuilder();
                }
                contents_ = input.readMessage(GrpcService.InferTensorContents.parser(), extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(contents_);
                  contents_ = subBuilder.buildPartial();
                }

                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
            shape_ = java.util.Collections.unmodifiableList(shape_);
          }
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_ModelInferResponse_InferOutputTensor_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 4:
            return internalGetParameters();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_ModelInferResponse_InferOutputTensor_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.ModelInferResponse.InferOutputTensor.class, GrpcService.ModelInferResponse.InferOutputTensor.Builder.class);
      }

      private int bitField0_;
      public static final int NAME_FIELD_NUMBER = 1;
      private volatile Object name_;
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;       The tensor name.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public String getName() {
        Object ref = name_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          name_ = s;
          return s;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;       The tensor name.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int DATATYPE_FIELD_NUMBER = 2;
      private volatile Object datatype_;
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string datatype
       *&#64;&#64;
       *&#64;&#64;       The tensor data type.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string datatype = 2;</code>
       */
      public String getDatatype() {
        Object ref = datatype_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          datatype_ = s;
          return s;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string datatype
       *&#64;&#64;
       *&#64;&#64;       The tensor data type.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string datatype = 2;</code>
       */
      public com.google.protobuf.ByteString
          getDatatypeBytes() {
        Object ref = datatype_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          datatype_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int SHAPE_FIELD_NUMBER = 3;
      private java.util.List<Long> shape_;
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
       *&#64;&#64;
       *&#64;&#64;       The tensor shape.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int64 shape = 3;</code>
       */
      public java.util.List<Long>
          getShapeList() {
        return shape_;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
       *&#64;&#64;
       *&#64;&#64;       The tensor shape.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int64 shape = 3;</code>
       */
      public int getShapeCount() {
        return shape_.size();
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
       *&#64;&#64;
       *&#64;&#64;       The tensor shape.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated int64 shape = 3;</code>
       */
      public long getShape(int index) {
        return shape_.get(index);
      }
      private int shapeMemoizedSerializedSize = -1;

      public static final int PARAMETERS_FIELD_NUMBER = 4;
      private static final class ParametersDefaultEntryHolder {
        static final com.google.protobuf.MapEntry<
            String, GrpcService.InferParameter> defaultEntry =
                com.google.protobuf.MapEntry
                .<String, GrpcService.InferParameter>newDefaultInstance(
                    GrpcService.internal_static_inference_ModelInferResponse_InferOutputTensor_ParametersEntry_descriptor,
                    com.google.protobuf.WireFormat.FieldType.STRING,
                    "",
                    com.google.protobuf.WireFormat.FieldType.MESSAGE,
                    GrpcService.InferParameter.getDefaultInstance());
      }
      private com.google.protobuf.MapField<
          String, GrpcService.InferParameter> parameters_;
      private com.google.protobuf.MapField<String, GrpcService.InferParameter>
      internalGetParameters() {
        if (parameters_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              ParametersDefaultEntryHolder.defaultEntry);
        }
        return parameters_;
      }

      public int getParametersCount() {
        return internalGetParameters().getMap().size();
      }
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;       Optional output tensor parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */

      public boolean containsParameters(
          String key) {
        if (key == null) { throw new NullPointerException(); }
        return internalGetParameters().getMap().containsKey(key);
      }
      /**
       * Use {@link #getParametersMap()} instead.
       */
      @Deprecated
      public java.util.Map<String, GrpcService.InferParameter> getParameters() {
        return getParametersMap();
      }
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;       Optional output tensor parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */

      public java.util.Map<String, GrpcService.InferParameter> getParametersMap() {
        return internalGetParameters().getMap();
      }
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;       Optional output tensor parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */

      public GrpcService.InferParameter getParametersOrDefault(
          String key,
          GrpcService.InferParameter defaultValue) {
        if (key == null) { throw new NullPointerException(); }
        java.util.Map<String, GrpcService.InferParameter> map =
            internalGetParameters().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;       Optional output tensor parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */

      public GrpcService.InferParameter getParametersOrThrow(
          String key) {
        if (key == null) { throw new NullPointerException(); }
        java.util.Map<String, GrpcService.InferParameter> map =
            internalGetParameters().getMap();
        if (!map.containsKey(key)) {
          throw new IllegalArgumentException();
        }
        return map.get(key);
      }

      public static final int CONTENTS_FIELD_NUMBER = 5;
      private GrpcService.InferTensorContents contents_;
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: InferTensorContents contents
       *&#64;&#64;
       *&#64;&#64;       The tensor contents using a data-type format. This field
       *&#64;&#64;       must not be specified if tensor contents are being specified
       *&#64;&#64;       in ModelInferResponse.raw_output_contents.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.InferTensorContents contents = 5;</code>
       */
      public boolean hasContents() {
        return contents_ != null;
      }
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: InferTensorContents contents
       *&#64;&#64;
       *&#64;&#64;       The tensor contents using a data-type format. This field
       *&#64;&#64;       must not be specified if tensor contents are being specified
       *&#64;&#64;       in ModelInferResponse.raw_output_contents.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.InferTensorContents contents = 5;</code>
       */
      public GrpcService.InferTensorContents getContents() {
        return contents_ == null ? GrpcService.InferTensorContents.getDefaultInstance() : contents_;
      }
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: InferTensorContents contents
       *&#64;&#64;
       *&#64;&#64;       The tensor contents using a data-type format. This field
       *&#64;&#64;       must not be specified if tensor contents are being specified
       *&#64;&#64;       in ModelInferResponse.raw_output_contents.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.InferTensorContents contents = 5;</code>
       */
      public GrpcService.InferTensorContentsOrBuilder getContentsOrBuilder() {
        return getContents();
      }

      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (!getNameBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
        }
        if (!getDatatypeBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, datatype_);
        }
        if (getShapeList().size() > 0) {
          output.writeUInt32NoTag(26);
          output.writeUInt32NoTag(shapeMemoizedSerializedSize);
        }
        for (int i = 0; i < shape_.size(); i++) {
          output.writeInt64NoTag(shape_.get(i));
        }
        for (java.util.Map.Entry<String, GrpcService.InferParameter> entry
             : internalGetParameters().getMap().entrySet()) {
          com.google.protobuf.MapEntry<String, GrpcService.InferParameter>
          parameters = ParametersDefaultEntryHolder.defaultEntry.newBuilderForType()
              .setKey(entry.getKey())
              .setValue(entry.getValue())
              .build();
          output.writeMessage(4, parameters);
        }
        if (contents_ != null) {
          output.writeMessage(5, getContents());
        }
      }

      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (!getNameBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
        }
        if (!getDatatypeBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, datatype_);
        }
        {
          int dataSize = 0;
          for (int i = 0; i < shape_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeInt64SizeNoTag(shape_.get(i));
          }
          size += dataSize;
          if (!getShapeList().isEmpty()) {
            size += 1;
            size += com.google.protobuf.CodedOutputStream
                .computeInt32SizeNoTag(dataSize);
          }
          shapeMemoizedSerializedSize = dataSize;
        }
        for (java.util.Map.Entry<String, GrpcService.InferParameter> entry
             : internalGetParameters().getMap().entrySet()) {
          com.google.protobuf.MapEntry<String, GrpcService.InferParameter>
          parameters = ParametersDefaultEntryHolder.defaultEntry.newBuilderForType()
              .setKey(entry.getKey())
              .setValue(entry.getValue())
              .build();
          size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(4, parameters);
        }
        if (contents_ != null) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, getContents());
        }
        memoizedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof GrpcService.ModelInferResponse.InferOutputTensor)) {
          return super.equals(obj);
        }
        GrpcService.ModelInferResponse.InferOutputTensor other = (GrpcService.ModelInferResponse.InferOutputTensor) obj;

        boolean result = true;
        result = result && getName()
            .equals(other.getName());
        result = result && getDatatype()
            .equals(other.getDatatype());
        result = result && getShapeList()
            .equals(other.getShapeList());
        result = result && internalGetParameters().equals(
            other.internalGetParameters());
        result = result && (hasContents() == other.hasContents());
        if (hasContents()) {
          result = result && getContents()
              .equals(other.getContents());
        }
        return result;
      }

      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
        hash = (37 * hash) + DATATYPE_FIELD_NUMBER;
        hash = (53 * hash) + getDatatype().hashCode();
        if (getShapeCount() > 0) {
          hash = (37 * hash) + SHAPE_FIELD_NUMBER;
          hash = (53 * hash) + getShapeList().hashCode();
        }
        if (!internalGetParameters().getMap().isEmpty()) {
          hash = (37 * hash) + PARAMETERS_FIELD_NUMBER;
          hash = (53 * hash) + internalGetParameters().hashCode();
        }
        if (hasContents()) {
          hash = (37 * hash) + CONTENTS_FIELD_NUMBER;
          hash = (53 * hash) + getContents().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static GrpcService.ModelInferResponse.InferOutputTensor parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static GrpcService.ModelInferResponse.InferOutputTensor parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static GrpcService.ModelInferResponse.InferOutputTensor parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static GrpcService.ModelInferResponse.InferOutputTensor parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static GrpcService.ModelInferResponse.InferOutputTensor parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static GrpcService.ModelInferResponse.InferOutputTensor parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static GrpcService.ModelInferResponse.InferOutputTensor parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static GrpcService.ModelInferResponse.InferOutputTensor parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static GrpcService.ModelInferResponse.InferOutputTensor parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static GrpcService.ModelInferResponse.InferOutputTensor parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(GrpcService.ModelInferResponse.InferOutputTensor prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @Override
      protected Builder newBuilderForType(
          BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: message InferOutputTensor
       *&#64;&#64;
       *&#64;&#64;     An output tensor returned for an inference request.
       *&#64;&#64;
       * </pre>
       *
       * Protobuf type {@code inference.ModelInferResponse.InferOutputTensor}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:inference.ModelInferResponse.InferOutputTensor)
          GrpcService.ModelInferResponse.InferOutputTensorOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return GrpcService.internal_static_inference_ModelInferResponse_InferOutputTensor_descriptor;
        }

        @SuppressWarnings({"rawtypes"})
        protected com.google.protobuf.MapField internalGetMapField(
            int number) {
          switch (number) {
            case 4:
              return internalGetParameters();
            default:
              throw new RuntimeException(
                  "Invalid map field number: " + number);
          }
        }
        @SuppressWarnings({"rawtypes"})
        protected com.google.protobuf.MapField internalGetMutableMapField(
            int number) {
          switch (number) {
            case 4:
              return internalGetMutableParameters();
            default:
              throw new RuntimeException(
                  "Invalid map field number: " + number);
          }
        }
        protected FieldAccessorTable
            internalGetFieldAccessorTable() {
          return GrpcService.internal_static_inference_ModelInferResponse_InferOutputTensor_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  GrpcService.ModelInferResponse.InferOutputTensor.class, GrpcService.ModelInferResponse.InferOutputTensor.Builder.class);
        }

        // Construct using GrpcService.ModelInferResponse.InferOutputTensor.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          name_ = "";

          datatype_ = "";

          shape_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          internalGetMutableParameters().clear();
          if (contentsBuilder_ == null) {
            contents_ = null;
          } else {
            contents_ = null;
            contentsBuilder_ = null;
          }
          return this;
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return GrpcService.internal_static_inference_ModelInferResponse_InferOutputTensor_descriptor;
        }

        public GrpcService.ModelInferResponse.InferOutputTensor getDefaultInstanceForType() {
          return GrpcService.ModelInferResponse.InferOutputTensor.getDefaultInstance();
        }

        public GrpcService.ModelInferResponse.InferOutputTensor build() {
          GrpcService.ModelInferResponse.InferOutputTensor result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public GrpcService.ModelInferResponse.InferOutputTensor buildPartial() {
          GrpcService.ModelInferResponse.InferOutputTensor result = new GrpcService.ModelInferResponse.InferOutputTensor(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          result.name_ = name_;
          result.datatype_ = datatype_;
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            shape_ = java.util.Collections.unmodifiableList(shape_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.shape_ = shape_;
          result.parameters_ = internalGetParameters();
          result.parameters_.makeImmutable();
          if (contentsBuilder_ == null) {
            result.contents_ = contents_;
          } else {
            result.contents_ = contentsBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }

        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof GrpcService.ModelInferResponse.InferOutputTensor) {
            return mergeFrom((GrpcService.ModelInferResponse.InferOutputTensor)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(GrpcService.ModelInferResponse.InferOutputTensor other) {
          if (other == GrpcService.ModelInferResponse.InferOutputTensor.getDefaultInstance()) return this;
          if (!other.getName().isEmpty()) {
            name_ = other.name_;
            onChanged();
          }
          if (!other.getDatatype().isEmpty()) {
            datatype_ = other.datatype_;
            onChanged();
          }
          if (!other.shape_.isEmpty()) {
            if (shape_.isEmpty()) {
              shape_ = other.shape_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureShapeIsMutable();
              shape_.addAll(other.shape_);
            }
            onChanged();
          }
          internalGetMutableParameters().mergeFrom(
              other.internalGetParameters());
          if (other.hasContents()) {
            mergeContents(other.getContents());
          }
          onChanged();
          return this;
        }

        public final boolean isInitialized() {
          return true;
        }

        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          GrpcService.ModelInferResponse.InferOutputTensor parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (GrpcService.ModelInferResponse.InferOutputTensor) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private Object name_ = "";
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The tensor name.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public String getName() {
          Object ref = name_;
          if (!(ref instanceof String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            String s = bs.toStringUtf8();
            name_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The tensor name.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public com.google.protobuf.ByteString
            getNameBytes() {
          Object ref = name_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8(
                    (String) ref);
            name_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The tensor name.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public Builder setName(
            String value) {
          if (value == null) {
    throw new NullPointerException();
  }

          name_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The tensor name.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public Builder clearName() {

          name_ = getDefaultInstance().getName();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The tensor name.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public Builder setNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

          name_ = value;
          onChanged();
          return this;
        }

        private Object datatype_ = "";
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string datatype
         *&#64;&#64;
         *&#64;&#64;       The tensor data type.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string datatype = 2;</code>
         */
        public String getDatatype() {
          Object ref = datatype_;
          if (!(ref instanceof String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            String s = bs.toStringUtf8();
            datatype_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string datatype
         *&#64;&#64;
         *&#64;&#64;       The tensor data type.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string datatype = 2;</code>
         */
        public com.google.protobuf.ByteString
            getDatatypeBytes() {
          Object ref = datatype_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8(
                    (String) ref);
            datatype_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string datatype
         *&#64;&#64;
         *&#64;&#64;       The tensor data type.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string datatype = 2;</code>
         */
        public Builder setDatatype(
            String value) {
          if (value == null) {
    throw new NullPointerException();
  }

          datatype_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string datatype
         *&#64;&#64;
         *&#64;&#64;       The tensor data type.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string datatype = 2;</code>
         */
        public Builder clearDatatype() {

          datatype_ = getDefaultInstance().getDatatype();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string datatype
         *&#64;&#64;
         *&#64;&#64;       The tensor data type.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string datatype = 2;</code>
         */
        public Builder setDatatypeBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

          datatype_ = value;
          onChanged();
          return this;
        }

        private java.util.List<Long> shape_ = java.util.Collections.emptyList();
        private void ensureShapeIsMutable() {
          if (!((bitField0_ & 0x00000004) == 0x00000004)) {
            shape_ = new java.util.ArrayList<Long>(shape_);
            bitField0_ |= 0x00000004;
           }
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
         *&#64;&#64;
         *&#64;&#64;       The tensor shape.
         *&#64;&#64;
         * </pre>
         *
         * <code>repeated int64 shape = 3;</code>
         */
        public java.util.List<Long>
            getShapeList() {
          return java.util.Collections.unmodifiableList(shape_);
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
         *&#64;&#64;
         *&#64;&#64;       The tensor shape.
         *&#64;&#64;
         * </pre>
         *
         * <code>repeated int64 shape = 3;</code>
         */
        public int getShapeCount() {
          return shape_.size();
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
         *&#64;&#64;
         *&#64;&#64;       The tensor shape.
         *&#64;&#64;
         * </pre>
         *
         * <code>repeated int64 shape = 3;</code>
         */
        public long getShape(int index) {
          return shape_.get(index);
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
         *&#64;&#64;
         *&#64;&#64;       The tensor shape.
         *&#64;&#64;
         * </pre>
         *
         * <code>repeated int64 shape = 3;</code>
         */
        public Builder setShape(
            int index, long value) {
          ensureShapeIsMutable();
          shape_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
         *&#64;&#64;
         *&#64;&#64;       The tensor shape.
         *&#64;&#64;
         * </pre>
         *
         * <code>repeated int64 shape = 3;</code>
         */
        public Builder addShape(long value) {
          ensureShapeIsMutable();
          shape_.add(value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
         *&#64;&#64;
         *&#64;&#64;       The tensor shape.
         *&#64;&#64;
         * </pre>
         *
         * <code>repeated int64 shape = 3;</code>
         */
        public Builder addAllShape(
            Iterable<? extends Long> values) {
          ensureShapeIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, shape_);
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: int64 shape (repeated)
         *&#64;&#64;
         *&#64;&#64;       The tensor shape.
         *&#64;&#64;
         * </pre>
         *
         * <code>repeated int64 shape = 3;</code>
         */
        public Builder clearShape() {
          shape_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
          return this;
        }

        private com.google.protobuf.MapField<
            String, GrpcService.InferParameter> parameters_;
        private com.google.protobuf.MapField<String, GrpcService.InferParameter>
        internalGetParameters() {
          if (parameters_ == null) {
            return com.google.protobuf.MapField.emptyMapField(
                ModelInferRequest.InferInputTensor.ParametersDefaultEntryHolder.defaultEntry);
          }
          return parameters_;
        }
        private com.google.protobuf.MapField<String, GrpcService.InferParameter>
        internalGetMutableParameters() {
          onChanged();;
          if (parameters_ == null) {
            parameters_ = com.google.protobuf.MapField.newMapField(
                ModelInferRequest.InferInputTensor.ParametersDefaultEntryHolder.defaultEntry);
          }
          if (!parameters_.isMutable()) {
            parameters_ = parameters_.copy();
          }
          return parameters_;
        }

        public int getParametersCount() {
          return internalGetParameters().getMap().size();
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
         *&#64;&#64;
         *&#64;&#64;       Optional output tensor parameters.
         *&#64;&#64;
         * </pre>
         *
         * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
         */

        public boolean containsParameters(
            String key) {
          if (key == null) { throw new NullPointerException(); }
          return internalGetParameters().getMap().containsKey(key);
        }
        /**
         * Use {@link #getParametersMap()} instead.
         */
        @Deprecated
        public java.util.Map<String, GrpcService.InferParameter> getParameters() {
          return getParametersMap();
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
         *&#64;&#64;
         *&#64;&#64;       Optional output tensor parameters.
         *&#64;&#64;
         * </pre>
         *
         * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
         */

        public java.util.Map<String, GrpcService.InferParameter> getParametersMap() {
          return internalGetParameters().getMap();
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
         *&#64;&#64;
         *&#64;&#64;       Optional output tensor parameters.
         *&#64;&#64;
         * </pre>
         *
         * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
         */

        public GrpcService.InferParameter getParametersOrDefault(
            String key,
            GrpcService.InferParameter defaultValue) {
          if (key == null) { throw new NullPointerException(); }
          java.util.Map<String, GrpcService.InferParameter> map =
              internalGetParameters().getMap();
          return map.containsKey(key) ? map.get(key) : defaultValue;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
         *&#64;&#64;
         *&#64;&#64;       Optional output tensor parameters.
         *&#64;&#64;
         * </pre>
         *
         * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
         */

        public GrpcService.InferParameter getParametersOrThrow(
            String key) {
          if (key == null) { throw new NullPointerException(); }
          java.util.Map<String, GrpcService.InferParameter> map =
              internalGetParameters().getMap();
          if (!map.containsKey(key)) {
            throw new IllegalArgumentException();
          }
          return map.get(key);
        }

        public Builder clearParameters() {
          getMutableParameters().clear();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
         *&#64;&#64;
         *&#64;&#64;       Optional output tensor parameters.
         *&#64;&#64;
         * </pre>
         *
         * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
         */

        public Builder removeParameters(
            String key) {
          if (key == null) { throw new NullPointerException(); }
          getMutableParameters().remove(key);
          return this;
        }
        /**
         * Use alternate mutation accessors instead.
         */
        @Deprecated
        public java.util.Map<String, GrpcService.InferParameter>
        getMutableParameters() {
          return internalGetMutableParameters().getMutableMap();
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
         *&#64;&#64;
         *&#64;&#64;       Optional output tensor parameters.
         *&#64;&#64;
         * </pre>
         *
         * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
         */
        public Builder putParameters(
            String key,
            GrpcService.InferParameter value) {
          if (key == null) { throw new NullPointerException(); }
          if (value == null) { throw new NullPointerException(); }
          getMutableParameters().put(key, value);
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: map&lt;string,InferParameter&gt; parameters
         *&#64;&#64;
         *&#64;&#64;       Optional output tensor parameters.
         *&#64;&#64;
         * </pre>
         *
         * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
         */

        public Builder putAllParameters(
            java.util.Map<String, GrpcService.InferParameter> values) {
          getMutableParameters().putAll(values);
          return this;
        }

        private GrpcService.InferTensorContents contents_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            GrpcService.InferTensorContents, GrpcService.InferTensorContents.Builder, GrpcService.InferTensorContentsOrBuilder> contentsBuilder_;
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: InferTensorContents contents
         *&#64;&#64;
         *&#64;&#64;       The tensor contents using a data-type format. This field
         *&#64;&#64;       must not be specified if tensor contents are being specified
         *&#64;&#64;       in ModelInferResponse.raw_output_contents.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional .inference.InferTensorContents contents = 5;</code>
         */
        public boolean hasContents() {
          return contentsBuilder_ != null || contents_ != null;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: InferTensorContents contents
         *&#64;&#64;
         *&#64;&#64;       The tensor contents using a data-type format. This field
         *&#64;&#64;       must not be specified if tensor contents are being specified
         *&#64;&#64;       in ModelInferResponse.raw_output_contents.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional .inference.InferTensorContents contents = 5;</code>
         */
        public GrpcService.InferTensorContents getContents() {
          if (contentsBuilder_ == null) {
            return contents_ == null ? GrpcService.InferTensorContents.getDefaultInstance() : contents_;
          } else {
            return contentsBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: InferTensorContents contents
         *&#64;&#64;
         *&#64;&#64;       The tensor contents using a data-type format. This field
         *&#64;&#64;       must not be specified if tensor contents are being specified
         *&#64;&#64;       in ModelInferResponse.raw_output_contents.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional .inference.InferTensorContents contents = 5;</code>
         */
        public Builder setContents(GrpcService.InferTensorContents value) {
          if (contentsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            contents_ = value;
            onChanged();
          } else {
            contentsBuilder_.setMessage(value);
          }

          return this;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: InferTensorContents contents
         *&#64;&#64;
         *&#64;&#64;       The tensor contents using a data-type format. This field
         *&#64;&#64;       must not be specified if tensor contents are being specified
         *&#64;&#64;       in ModelInferResponse.raw_output_contents.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional .inference.InferTensorContents contents = 5;</code>
         */
        public Builder setContents(
            GrpcService.InferTensorContents.Builder builderForValue) {
          if (contentsBuilder_ == null) {
            contents_ = builderForValue.build();
            onChanged();
          } else {
            contentsBuilder_.setMessage(builderForValue.build());
          }

          return this;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: InferTensorContents contents
         *&#64;&#64;
         *&#64;&#64;       The tensor contents using a data-type format. This field
         *&#64;&#64;       must not be specified if tensor contents are being specified
         *&#64;&#64;       in ModelInferResponse.raw_output_contents.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional .inference.InferTensorContents contents = 5;</code>
         */
        public Builder mergeContents(GrpcService.InferTensorContents value) {
          if (contentsBuilder_ == null) {
            if (contents_ != null) {
              contents_ =
                GrpcService.InferTensorContents.newBuilder(contents_).mergeFrom(value).buildPartial();
            } else {
              contents_ = value;
            }
            onChanged();
          } else {
            contentsBuilder_.mergeFrom(value);
          }

          return this;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: InferTensorContents contents
         *&#64;&#64;
         *&#64;&#64;       The tensor contents using a data-type format. This field
         *&#64;&#64;       must not be specified if tensor contents are being specified
         *&#64;&#64;       in ModelInferResponse.raw_output_contents.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional .inference.InferTensorContents contents = 5;</code>
         */
        public Builder clearContents() {
          if (contentsBuilder_ == null) {
            contents_ = null;
            onChanged();
          } else {
            contents_ = null;
            contentsBuilder_ = null;
          }

          return this;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: InferTensorContents contents
         *&#64;&#64;
         *&#64;&#64;       The tensor contents using a data-type format. This field
         *&#64;&#64;       must not be specified if tensor contents are being specified
         *&#64;&#64;       in ModelInferResponse.raw_output_contents.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional .inference.InferTensorContents contents = 5;</code>
         */
        public GrpcService.InferTensorContents.Builder getContentsBuilder() {

          onChanged();
          return getContentsFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: InferTensorContents contents
         *&#64;&#64;
         *&#64;&#64;       The tensor contents using a data-type format. This field
         *&#64;&#64;       must not be specified if tensor contents are being specified
         *&#64;&#64;       in ModelInferResponse.raw_output_contents.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional .inference.InferTensorContents contents = 5;</code>
         */
        public GrpcService.InferTensorContentsOrBuilder getContentsOrBuilder() {
          if (contentsBuilder_ != null) {
            return contentsBuilder_.getMessageOrBuilder();
          } else {
            return contents_ == null ?
                GrpcService.InferTensorContents.getDefaultInstance() : contents_;
          }
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: InferTensorContents contents
         *&#64;&#64;
         *&#64;&#64;       The tensor contents using a data-type format. This field
         *&#64;&#64;       must not be specified if tensor contents are being specified
         *&#64;&#64;       in ModelInferResponse.raw_output_contents.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional .inference.InferTensorContents contents = 5;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            GrpcService.InferTensorContents, GrpcService.InferTensorContents.Builder, GrpcService.InferTensorContentsOrBuilder>
            getContentsFieldBuilder() {
          if (contentsBuilder_ == null) {
            contentsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                GrpcService.InferTensorContents, GrpcService.InferTensorContents.Builder, GrpcService.InferTensorContentsOrBuilder>(
                    getContents(),
                    getParentForChildren(),
                    isClean());
            contents_ = null;
          }
          return contentsBuilder_;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return this;
        }

        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return this;
        }


        // @@protoc_insertion_point(builder_scope:inference.ModelInferResponse.InferOutputTensor)
      }

      // @@protoc_insertion_point(class_scope:inference.ModelInferResponse.InferOutputTensor)
      private static final GrpcService.ModelInferResponse.InferOutputTensor DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new GrpcService.ModelInferResponse.InferOutputTensor();
      }

      public static GrpcService.ModelInferResponse.InferOutputTensor getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<InferOutputTensor>
          PARSER = new com.google.protobuf.AbstractParser<InferOutputTensor>() {
        public InferOutputTensor parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new InferOutputTensor(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<InferOutputTensor> parser() {
        return PARSER;
      }

      @Override
      public com.google.protobuf.Parser<InferOutputTensor> getParserForType() {
        return PARSER;
      }

      public GrpcService.ModelInferResponse.InferOutputTensor getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int bitField0_;
    public static final int MODEL_NAME_FIELD_NUMBER = 1;
    private volatile Object modelName_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string model_name
     *&#64;&#64;
     *&#64;&#64;     The name of the model used for inference.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string model_name = 1;</code>
     */
    public String getModelName() {
      Object ref = modelName_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        modelName_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string model_name
     *&#64;&#64;
     *&#64;&#64;     The name of the model used for inference.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string model_name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getModelNameBytes() {
      Object ref = modelName_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        modelName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MODEL_VERSION_FIELD_NUMBER = 2;
    private volatile Object modelVersion_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string model_version
     *&#64;&#64;
     *&#64;&#64;     The version of the model used for inference.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string model_version = 2;</code>
     */
    public String getModelVersion() {
      Object ref = modelVersion_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        modelVersion_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string model_version
     *&#64;&#64;
     *&#64;&#64;     The version of the model used for inference.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string model_version = 2;</code>
     */
    public com.google.protobuf.ByteString
        getModelVersionBytes() {
      Object ref = modelVersion_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        modelVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ID_FIELD_NUMBER = 3;
    private volatile Object id_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string id
     *&#64;&#64;
     *&#64;&#64;     The id of the inference request if one was specified.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string id = 3;</code>
     */
    public String getId() {
      Object ref = id_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        id_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string id
     *&#64;&#64;
     *&#64;&#64;     The id of the inference request if one was specified.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string id = 3;</code>
     */
    public com.google.protobuf.ByteString
        getIdBytes() {
      Object ref = id_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PARAMETERS_FIELD_NUMBER = 4;
    private static final class ParametersDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          String, GrpcService.InferParameter> defaultEntry =
              com.google.protobuf.MapEntry
              .<String, GrpcService.InferParameter>newDefaultInstance(
                  GrpcService.internal_static_inference_ModelInferResponse_ParametersEntry_descriptor,
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  GrpcService.InferParameter.getDefaultInstance());
    }
    private com.google.protobuf.MapField<
        String, GrpcService.InferParameter> parameters_;
    private com.google.protobuf.MapField<String, GrpcService.InferParameter>
    internalGetParameters() {
      if (parameters_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            ParametersDefaultEntryHolder.defaultEntry);
      }
      return parameters_;
    }

    public int getParametersCount() {
      return internalGetParameters().getMap().size();
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
     *&#64;&#64;
     *&#64;&#64;     Optional inference response parameters.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
     */

    public boolean containsParameters(
        String key) {
      if (key == null) { throw new NullPointerException(); }
      return internalGetParameters().getMap().containsKey(key);
    }
    /**
     * Use {@link #getParametersMap()} instead.
     */
    @Deprecated
    public java.util.Map<String, GrpcService.InferParameter> getParameters() {
      return getParametersMap();
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
     *&#64;&#64;
     *&#64;&#64;     Optional inference response parameters.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
     */

    public java.util.Map<String, GrpcService.InferParameter> getParametersMap() {
      return internalGetParameters().getMap();
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
     *&#64;&#64;
     *&#64;&#64;     Optional inference response parameters.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
     */

    public GrpcService.InferParameter getParametersOrDefault(
        String key,
        GrpcService.InferParameter defaultValue) {
      if (key == null) { throw new NullPointerException(); }
      java.util.Map<String, GrpcService.InferParameter> map =
          internalGetParameters().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
     *&#64;&#64;
     *&#64;&#64;     Optional inference response parameters.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
     */

    public GrpcService.InferParameter getParametersOrThrow(
        String key) {
      if (key == null) { throw new NullPointerException(); }
      java.util.Map<String, GrpcService.InferParameter> map =
          internalGetParameters().getMap();
      if (!map.containsKey(key)) {
        throw new IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int OUTPUTS_FIELD_NUMBER = 5;
    private java.util.List<GrpcService.ModelInferResponse.InferOutputTensor> outputs_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: InferOutputTensor outputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The output tensors holding inference results.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelInferResponse.InferOutputTensor outputs = 5;</code>
     */
    public java.util.List<GrpcService.ModelInferResponse.InferOutputTensor> getOutputsList() {
      return outputs_;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: InferOutputTensor outputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The output tensors holding inference results.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelInferResponse.InferOutputTensor outputs = 5;</code>
     */
    public java.util.List<? extends GrpcService.ModelInferResponse.InferOutputTensorOrBuilder>
        getOutputsOrBuilderList() {
      return outputs_;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: InferOutputTensor outputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The output tensors holding inference results.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelInferResponse.InferOutputTensor outputs = 5;</code>
     */
    public int getOutputsCount() {
      return outputs_.size();
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: InferOutputTensor outputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The output tensors holding inference results.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelInferResponse.InferOutputTensor outputs = 5;</code>
     */
    public GrpcService.ModelInferResponse.InferOutputTensor getOutputs(int index) {
      return outputs_.get(index);
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: InferOutputTensor outputs (repeated)
     *&#64;&#64;
     *&#64;&#64;     The output tensors holding inference results.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelInferResponse.InferOutputTensor outputs = 5;</code>
     */
    public GrpcService.ModelInferResponse.InferOutputTensorOrBuilder getOutputsOrBuilder(
        int index) {
      return outputs_.get(index);
    }

    public static final int RAW_OUTPUT_CONTENTS_FIELD_NUMBER = 6;
    private java.util.List<com.google.protobuf.ByteString> rawOutputContents_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: bytes raw_output_contents
     *&#64;&#64;
     *&#64;&#64;     The data contained in an output tensor can be represented in
     *&#64;&#64;     "raw" bytes form or in the repeated type that matches the
     *&#64;&#64;     tensor's data type. Using the "raw" bytes form will
     *&#64;&#64;     typically allow higher performance due to the way protobuf
     *&#64;&#64;     allocation and reuse interacts with GRPC. For example, see
     *&#64;&#64;     https://github.com/grpc/grpc/issues/23231.
     *&#64;&#64;
     *&#64;&#64;     To use the raw representation 'raw_output_contents' must be
     *&#64;&#64;     initialized with data for each tensor in the same order as
     *&#64;&#64;     'outputs'. For each tensor, the size of this content must
     *&#64;&#64;     match what is expected by the tensor's shape and data
     *&#64;&#64;     type. The raw data must be the flattened, one-dimensional,
     *&#64;&#64;     row-major order of the tensor elements without any stride
     *&#64;&#64;     or padding between the elements. Note that the FP16 data
     *&#64;&#64;     type must be represented as raw content as there is no
     *&#64;&#64;     specific data type for a 16-bit float type.
     *&#64;&#64;
     *&#64;&#64;     If this field is specified then InferOutputTensor::contents
     *&#64;&#64;     must not be specified for any output tensor.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated bytes raw_output_contents = 6;</code>
     */
    public java.util.List<com.google.protobuf.ByteString>
        getRawOutputContentsList() {
      return rawOutputContents_;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: bytes raw_output_contents
     *&#64;&#64;
     *&#64;&#64;     The data contained in an output tensor can be represented in
     *&#64;&#64;     "raw" bytes form or in the repeated type that matches the
     *&#64;&#64;     tensor's data type. Using the "raw" bytes form will
     *&#64;&#64;     typically allow higher performance due to the way protobuf
     *&#64;&#64;     allocation and reuse interacts with GRPC. For example, see
     *&#64;&#64;     https://github.com/grpc/grpc/issues/23231.
     *&#64;&#64;
     *&#64;&#64;     To use the raw representation 'raw_output_contents' must be
     *&#64;&#64;     initialized with data for each tensor in the same order as
     *&#64;&#64;     'outputs'. For each tensor, the size of this content must
     *&#64;&#64;     match what is expected by the tensor's shape and data
     *&#64;&#64;     type. The raw data must be the flattened, one-dimensional,
     *&#64;&#64;     row-major order of the tensor elements without any stride
     *&#64;&#64;     or padding between the elements. Note that the FP16 data
     *&#64;&#64;     type must be represented as raw content as there is no
     *&#64;&#64;     specific data type for a 16-bit float type.
     *&#64;&#64;
     *&#64;&#64;     If this field is specified then InferOutputTensor::contents
     *&#64;&#64;     must not be specified for any output tensor.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated bytes raw_output_contents = 6;</code>
     */
    public int getRawOutputContentsCount() {
      return rawOutputContents_.size();
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: bytes raw_output_contents
     *&#64;&#64;
     *&#64;&#64;     The data contained in an output tensor can be represented in
     *&#64;&#64;     "raw" bytes form or in the repeated type that matches the
     *&#64;&#64;     tensor's data type. Using the "raw" bytes form will
     *&#64;&#64;     typically allow higher performance due to the way protobuf
     *&#64;&#64;     allocation and reuse interacts with GRPC. For example, see
     *&#64;&#64;     https://github.com/grpc/grpc/issues/23231.
     *&#64;&#64;
     *&#64;&#64;     To use the raw representation 'raw_output_contents' must be
     *&#64;&#64;     initialized with data for each tensor in the same order as
     *&#64;&#64;     'outputs'. For each tensor, the size of this content must
     *&#64;&#64;     match what is expected by the tensor's shape and data
     *&#64;&#64;     type. The raw data must be the flattened, one-dimensional,
     *&#64;&#64;     row-major order of the tensor elements without any stride
     *&#64;&#64;     or padding between the elements. Note that the FP16 data
     *&#64;&#64;     type must be represented as raw content as there is no
     *&#64;&#64;     specific data type for a 16-bit float type.
     *&#64;&#64;
     *&#64;&#64;     If this field is specified then InferOutputTensor::contents
     *&#64;&#64;     must not be specified for any output tensor.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated bytes raw_output_contents = 6;</code>
     */
    public com.google.protobuf.ByteString getRawOutputContents(int index) {
      return rawOutputContents_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getModelNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, modelName_);
      }
      if (!getModelVersionBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, modelVersion_);
      }
      if (!getIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, id_);
      }
      for (java.util.Map.Entry<String, GrpcService.InferParameter> entry
           : internalGetParameters().getMap().entrySet()) {
        com.google.protobuf.MapEntry<String, GrpcService.InferParameter>
        parameters = ParametersDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        output.writeMessage(4, parameters);
      }
      for (int i = 0; i < outputs_.size(); i++) {
        output.writeMessage(5, outputs_.get(i));
      }
      for (int i = 0; i < rawOutputContents_.size(); i++) {
        output.writeBytes(6, rawOutputContents_.get(i));
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getModelNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, modelName_);
      }
      if (!getModelVersionBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, modelVersion_);
      }
      if (!getIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, id_);
      }
      for (java.util.Map.Entry<String, GrpcService.InferParameter> entry
           : internalGetParameters().getMap().entrySet()) {
        com.google.protobuf.MapEntry<String, GrpcService.InferParameter>
        parameters = ParametersDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, parameters);
      }
      for (int i = 0; i < outputs_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, outputs_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < rawOutputContents_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(rawOutputContents_.get(i));
        }
        size += dataSize;
        size += 1 * getRawOutputContentsList().size();
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.ModelInferResponse)) {
        return super.equals(obj);
      }
      GrpcService.ModelInferResponse other = (GrpcService.ModelInferResponse) obj;

      boolean result = true;
      result = result && getModelName()
          .equals(other.getModelName());
      result = result && getModelVersion()
          .equals(other.getModelVersion());
      result = result && getId()
          .equals(other.getId());
      result = result && internalGetParameters().equals(
          other.internalGetParameters());
      result = result && getOutputsList()
          .equals(other.getOutputsList());
      result = result && getRawOutputContentsList()
          .equals(other.getRawOutputContentsList());
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (37 * hash) + MODEL_NAME_FIELD_NUMBER;
      hash = (53 * hash) + getModelName().hashCode();
      hash = (37 * hash) + MODEL_VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getModelVersion().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getId().hashCode();
      if (!internalGetParameters().getMap().isEmpty()) {
        hash = (37 * hash) + PARAMETERS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetParameters().hashCode();
      }
      if (getOutputsCount() > 0) {
        hash = (37 * hash) + OUTPUTS_FIELD_NUMBER;
        hash = (53 * hash) + getOutputsList().hashCode();
      }
      if (getRawOutputContentsCount() > 0) {
        hash = (37 * hash) + RAW_OUTPUT_CONTENTS_FIELD_NUMBER;
        hash = (53 * hash) + getRawOutputContentsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.ModelInferResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ModelInferResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ModelInferResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ModelInferResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ModelInferResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ModelInferResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ModelInferResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.ModelInferResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ModelInferResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ModelInferResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.ModelInferResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message ModelInferResponse
     *&#64;&#64;
     *&#64;&#64;   Response message for ModelInfer.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.ModelInferResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.ModelInferResponse)
        GrpcService.ModelInferResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_ModelInferResponse_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 4:
            return internalGetParameters();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 4:
            return internalGetMutableParameters();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_ModelInferResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.ModelInferResponse.class, GrpcService.ModelInferResponse.Builder.class);
      }

      // Construct using GrpcService.ModelInferResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getOutputsFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        modelName_ = "";

        modelVersion_ = "";

        id_ = "";

        internalGetMutableParameters().clear();
        if (outputsBuilder_ == null) {
          outputs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
        } else {
          outputsBuilder_.clear();
        }
        rawOutputContents_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_ModelInferResponse_descriptor;
      }

      public GrpcService.ModelInferResponse getDefaultInstanceForType() {
        return GrpcService.ModelInferResponse.getDefaultInstance();
      }

      public GrpcService.ModelInferResponse build() {
        GrpcService.ModelInferResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.ModelInferResponse buildPartial() {
        GrpcService.ModelInferResponse result = new GrpcService.ModelInferResponse(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        result.modelName_ = modelName_;
        result.modelVersion_ = modelVersion_;
        result.id_ = id_;
        result.parameters_ = internalGetParameters();
        result.parameters_.makeImmutable();
        if (outputsBuilder_ == null) {
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            outputs_ = java.util.Collections.unmodifiableList(outputs_);
            bitField0_ = (bitField0_ & ~0x00000010);
          }
          result.outputs_ = outputs_;
        } else {
          result.outputs_ = outputsBuilder_.build();
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          rawOutputContents_ = java.util.Collections.unmodifiableList(rawOutputContents_);
          bitField0_ = (bitField0_ & ~0x00000020);
        }
        result.rawOutputContents_ = rawOutputContents_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.ModelInferResponse) {
          return mergeFrom((GrpcService.ModelInferResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.ModelInferResponse other) {
        if (other == GrpcService.ModelInferResponse.getDefaultInstance()) return this;
        if (!other.getModelName().isEmpty()) {
          modelName_ = other.modelName_;
          onChanged();
        }
        if (!other.getModelVersion().isEmpty()) {
          modelVersion_ = other.modelVersion_;
          onChanged();
        }
        if (!other.getId().isEmpty()) {
          id_ = other.id_;
          onChanged();
        }
        internalGetMutableParameters().mergeFrom(
            other.internalGetParameters());
        if (outputsBuilder_ == null) {
          if (!other.outputs_.isEmpty()) {
            if (outputs_.isEmpty()) {
              outputs_ = other.outputs_;
              bitField0_ = (bitField0_ & ~0x00000010);
            } else {
              ensureOutputsIsMutable();
              outputs_.addAll(other.outputs_);
            }
            onChanged();
          }
        } else {
          if (!other.outputs_.isEmpty()) {
            if (outputsBuilder_.isEmpty()) {
              outputsBuilder_.dispose();
              outputsBuilder_ = null;
              outputs_ = other.outputs_;
              bitField0_ = (bitField0_ & ~0x00000010);
              outputsBuilder_ =
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getOutputsFieldBuilder() : null;
            } else {
              outputsBuilder_.addAllMessages(other.outputs_);
            }
          }
        }
        if (!other.rawOutputContents_.isEmpty()) {
          if (rawOutputContents_.isEmpty()) {
            rawOutputContents_ = other.rawOutputContents_;
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            ensureRawOutputContentsIsMutable();
            rawOutputContents_.addAll(other.rawOutputContents_);
          }
          onChanged();
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.ModelInferResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.ModelInferResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private Object modelName_ = "";
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string model_name
       *&#64;&#64;
       *&#64;&#64;     The name of the model used for inference.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string model_name = 1;</code>
       */
      public String getModelName() {
        Object ref = modelName_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          modelName_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string model_name
       *&#64;&#64;
       *&#64;&#64;     The name of the model used for inference.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string model_name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getModelNameBytes() {
        Object ref = modelName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          modelName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string model_name
       *&#64;&#64;
       *&#64;&#64;     The name of the model used for inference.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string model_name = 1;</code>
       */
      public Builder setModelName(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        modelName_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string model_name
       *&#64;&#64;
       *&#64;&#64;     The name of the model used for inference.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string model_name = 1;</code>
       */
      public Builder clearModelName() {

        modelName_ = getDefaultInstance().getModelName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string model_name
       *&#64;&#64;
       *&#64;&#64;     The name of the model used for inference.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string model_name = 1;</code>
       */
      public Builder setModelNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        modelName_ = value;
        onChanged();
        return this;
      }

      private Object modelVersion_ = "";
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string model_version
       *&#64;&#64;
       *&#64;&#64;     The version of the model used for inference.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string model_version = 2;</code>
       */
      public String getModelVersion() {
        Object ref = modelVersion_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          modelVersion_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string model_version
       *&#64;&#64;
       *&#64;&#64;     The version of the model used for inference.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string model_version = 2;</code>
       */
      public com.google.protobuf.ByteString
          getModelVersionBytes() {
        Object ref = modelVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          modelVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string model_version
       *&#64;&#64;
       *&#64;&#64;     The version of the model used for inference.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string model_version = 2;</code>
       */
      public Builder setModelVersion(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        modelVersion_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string model_version
       *&#64;&#64;
       *&#64;&#64;     The version of the model used for inference.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string model_version = 2;</code>
       */
      public Builder clearModelVersion() {

        modelVersion_ = getDefaultInstance().getModelVersion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string model_version
       *&#64;&#64;
       *&#64;&#64;     The version of the model used for inference.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string model_version = 2;</code>
       */
      public Builder setModelVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        modelVersion_ = value;
        onChanged();
        return this;
      }

      private Object id_ = "";
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string id
       *&#64;&#64;
       *&#64;&#64;     The id of the inference request if one was specified.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string id = 3;</code>
       */
      public String getId() {
        Object ref = id_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          id_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string id
       *&#64;&#64;
       *&#64;&#64;     The id of the inference request if one was specified.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string id = 3;</code>
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string id
       *&#64;&#64;
       *&#64;&#64;     The id of the inference request if one was specified.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string id = 3;</code>
       */
      public Builder setId(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string id
       *&#64;&#64;
       *&#64;&#64;     The id of the inference request if one was specified.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string id = 3;</code>
       */
      public Builder clearId() {

        id_ = getDefaultInstance().getId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string id
       *&#64;&#64;
       *&#64;&#64;     The id of the inference request if one was specified.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string id = 3;</code>
       */
      public Builder setIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        id_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.MapField<
          String, GrpcService.InferParameter> parameters_;
      private com.google.protobuf.MapField<String, GrpcService.InferParameter>
      internalGetParameters() {
        if (parameters_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              ParametersDefaultEntryHolder.defaultEntry);
        }
        return parameters_;
      }
      private com.google.protobuf.MapField<String, GrpcService.InferParameter>
      internalGetMutableParameters() {
        onChanged();;
        if (parameters_ == null) {
          parameters_ = com.google.protobuf.MapField.newMapField(
              ParametersDefaultEntryHolder.defaultEntry);
        }
        if (!parameters_.isMutable()) {
          parameters_ = parameters_.copy();
        }
        return parameters_;
      }

      public int getParametersCount() {
        return internalGetParameters().getMap().size();
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;     Optional inference response parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */

      public boolean containsParameters(
          String key) {
        if (key == null) { throw new NullPointerException(); }
        return internalGetParameters().getMap().containsKey(key);
      }
      /**
       * Use {@link #getParametersMap()} instead.
       */
      @Deprecated
      public java.util.Map<String, GrpcService.InferParameter> getParameters() {
        return getParametersMap();
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;     Optional inference response parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */

      public java.util.Map<String, GrpcService.InferParameter> getParametersMap() {
        return internalGetParameters().getMap();
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;     Optional inference response parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */

      public GrpcService.InferParameter getParametersOrDefault(
          String key,
          GrpcService.InferParameter defaultValue) {
        if (key == null) { throw new NullPointerException(); }
        java.util.Map<String, GrpcService.InferParameter> map =
            internalGetParameters().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;     Optional inference response parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */

      public GrpcService.InferParameter getParametersOrThrow(
          String key) {
        if (key == null) { throw new NullPointerException(); }
        java.util.Map<String, GrpcService.InferParameter> map =
            internalGetParameters().getMap();
        if (!map.containsKey(key)) {
          throw new IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearParameters() {
        getMutableParameters().clear();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;     Optional inference response parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */

      public Builder removeParameters(
          String key) {
        if (key == null) { throw new NullPointerException(); }
        getMutableParameters().remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @Deprecated
      public java.util.Map<String, GrpcService.InferParameter>
      getMutableParameters() {
        return internalGetMutableParameters().getMutableMap();
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;     Optional inference response parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */
      public Builder putParameters(
          String key,
          GrpcService.InferParameter value) {
        if (key == null) { throw new NullPointerException(); }
        if (value == null) { throw new NullPointerException(); }
        getMutableParameters().put(key, value);
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: map&lt;string,InferParameter&gt; parameters
       *&#64;&#64;
       *&#64;&#64;     Optional inference response parameters.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.InferParameter&gt; parameters = 4;</code>
       */

      public Builder putAllParameters(
          java.util.Map<String, GrpcService.InferParameter> values) {
        getMutableParameters().putAll(values);
        return this;
      }

      private java.util.List<GrpcService.ModelInferResponse.InferOutputTensor> outputs_ =
        java.util.Collections.emptyList();
      private void ensureOutputsIsMutable() {
        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
          outputs_ = new java.util.ArrayList<GrpcService.ModelInferResponse.InferOutputTensor>(outputs_);
          bitField0_ |= 0x00000010;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          GrpcService.ModelInferResponse.InferOutputTensor, GrpcService.ModelInferResponse.InferOutputTensor.Builder, GrpcService.ModelInferResponse.InferOutputTensorOrBuilder> outputsBuilder_;

      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The output tensors holding inference results.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferResponse.InferOutputTensor outputs = 5;</code>
       */
      public java.util.List<GrpcService.ModelInferResponse.InferOutputTensor> getOutputsList() {
        if (outputsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(outputs_);
        } else {
          return outputsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The output tensors holding inference results.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferResponse.InferOutputTensor outputs = 5;</code>
       */
      public int getOutputsCount() {
        if (outputsBuilder_ == null) {
          return outputs_.size();
        } else {
          return outputsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The output tensors holding inference results.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferResponse.InferOutputTensor outputs = 5;</code>
       */
      public GrpcService.ModelInferResponse.InferOutputTensor getOutputs(int index) {
        if (outputsBuilder_ == null) {
          return outputs_.get(index);
        } else {
          return outputsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The output tensors holding inference results.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferResponse.InferOutputTensor outputs = 5;</code>
       */
      public Builder setOutputs(
          int index, GrpcService.ModelInferResponse.InferOutputTensor value) {
        if (outputsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOutputsIsMutable();
          outputs_.set(index, value);
          onChanged();
        } else {
          outputsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The output tensors holding inference results.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferResponse.InferOutputTensor outputs = 5;</code>
       */
      public Builder setOutputs(
          int index, GrpcService.ModelInferResponse.InferOutputTensor.Builder builderForValue) {
        if (outputsBuilder_ == null) {
          ensureOutputsIsMutable();
          outputs_.set(index, builderForValue.build());
          onChanged();
        } else {
          outputsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The output tensors holding inference results.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferResponse.InferOutputTensor outputs = 5;</code>
       */
      public Builder addOutputs(GrpcService.ModelInferResponse.InferOutputTensor value) {
        if (outputsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOutputsIsMutable();
          outputs_.add(value);
          onChanged();
        } else {
          outputsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The output tensors holding inference results.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferResponse.InferOutputTensor outputs = 5;</code>
       */
      public Builder addOutputs(
          int index, GrpcService.ModelInferResponse.InferOutputTensor value) {
        if (outputsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureOutputsIsMutable();
          outputs_.add(index, value);
          onChanged();
        } else {
          outputsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The output tensors holding inference results.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferResponse.InferOutputTensor outputs = 5;</code>
       */
      public Builder addOutputs(
          GrpcService.ModelInferResponse.InferOutputTensor.Builder builderForValue) {
        if (outputsBuilder_ == null) {
          ensureOutputsIsMutable();
          outputs_.add(builderForValue.build());
          onChanged();
        } else {
          outputsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The output tensors holding inference results.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferResponse.InferOutputTensor outputs = 5;</code>
       */
      public Builder addOutputs(
          int index, GrpcService.ModelInferResponse.InferOutputTensor.Builder builderForValue) {
        if (outputsBuilder_ == null) {
          ensureOutputsIsMutable();
          outputs_.add(index, builderForValue.build());
          onChanged();
        } else {
          outputsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The output tensors holding inference results.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferResponse.InferOutputTensor outputs = 5;</code>
       */
      public Builder addAllOutputs(
          Iterable<? extends GrpcService.ModelInferResponse.InferOutputTensor> values) {
        if (outputsBuilder_ == null) {
          ensureOutputsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, outputs_);
          onChanged();
        } else {
          outputsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The output tensors holding inference results.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferResponse.InferOutputTensor outputs = 5;</code>
       */
      public Builder clearOutputs() {
        if (outputsBuilder_ == null) {
          outputs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
          onChanged();
        } else {
          outputsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The output tensors holding inference results.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferResponse.InferOutputTensor outputs = 5;</code>
       */
      public Builder removeOutputs(int index) {
        if (outputsBuilder_ == null) {
          ensureOutputsIsMutable();
          outputs_.remove(index);
          onChanged();
        } else {
          outputsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The output tensors holding inference results.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferResponse.InferOutputTensor outputs = 5;</code>
       */
      public GrpcService.ModelInferResponse.InferOutputTensor.Builder getOutputsBuilder(
          int index) {
        return getOutputsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The output tensors holding inference results.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferResponse.InferOutputTensor outputs = 5;</code>
       */
      public GrpcService.ModelInferResponse.InferOutputTensorOrBuilder getOutputsOrBuilder(
          int index) {
        if (outputsBuilder_ == null) {
          return outputs_.get(index);  } else {
          return outputsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The output tensors holding inference results.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferResponse.InferOutputTensor outputs = 5;</code>
       */
      public java.util.List<? extends GrpcService.ModelInferResponse.InferOutputTensorOrBuilder>
           getOutputsOrBuilderList() {
        if (outputsBuilder_ != null) {
          return outputsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(outputs_);
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The output tensors holding inference results.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferResponse.InferOutputTensor outputs = 5;</code>
       */
      public GrpcService.ModelInferResponse.InferOutputTensor.Builder addOutputsBuilder() {
        return getOutputsFieldBuilder().addBuilder(
            GrpcService.ModelInferResponse.InferOutputTensor.getDefaultInstance());
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The output tensors holding inference results.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferResponse.InferOutputTensor outputs = 5;</code>
       */
      public GrpcService.ModelInferResponse.InferOutputTensor.Builder addOutputsBuilder(
          int index) {
        return getOutputsFieldBuilder().addBuilder(
            index, GrpcService.ModelInferResponse.InferOutputTensor.getDefaultInstance());
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: InferOutputTensor outputs (repeated)
       *&#64;&#64;
       *&#64;&#64;     The output tensors holding inference results.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelInferResponse.InferOutputTensor outputs = 5;</code>
       */
      public java.util.List<GrpcService.ModelInferResponse.InferOutputTensor.Builder>
           getOutputsBuilderList() {
        return getOutputsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          GrpcService.ModelInferResponse.InferOutputTensor, GrpcService.ModelInferResponse.InferOutputTensor.Builder, GrpcService.ModelInferResponse.InferOutputTensorOrBuilder>
          getOutputsFieldBuilder() {
        if (outputsBuilder_ == null) {
          outputsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              GrpcService.ModelInferResponse.InferOutputTensor, GrpcService.ModelInferResponse.InferOutputTensor.Builder, GrpcService.ModelInferResponse.InferOutputTensorOrBuilder>(
                  outputs_,
                  ((bitField0_ & 0x00000010) == 0x00000010),
                  getParentForChildren(),
                  isClean());
          outputs_ = null;
        }
        return outputsBuilder_;
      }

      private java.util.List<com.google.protobuf.ByteString> rawOutputContents_ = java.util.Collections.emptyList();
      private void ensureRawOutputContentsIsMutable() {
        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
          rawOutputContents_ = new java.util.ArrayList<com.google.protobuf.ByteString>(rawOutputContents_);
          bitField0_ |= 0x00000020;
         }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bytes raw_output_contents
       *&#64;&#64;
       *&#64;&#64;     The data contained in an output tensor can be represented in
       *&#64;&#64;     "raw" bytes form or in the repeated type that matches the
       *&#64;&#64;     tensor's data type. Using the "raw" bytes form will
       *&#64;&#64;     typically allow higher performance due to the way protobuf
       *&#64;&#64;     allocation and reuse interacts with GRPC. For example, see
       *&#64;&#64;     https://github.com/grpc/grpc/issues/23231.
       *&#64;&#64;
       *&#64;&#64;     To use the raw representation 'raw_output_contents' must be
       *&#64;&#64;     initialized with data for each tensor in the same order as
       *&#64;&#64;     'outputs'. For each tensor, the size of this content must
       *&#64;&#64;     match what is expected by the tensor's shape and data
       *&#64;&#64;     type. The raw data must be the flattened, one-dimensional,
       *&#64;&#64;     row-major order of the tensor elements without any stride
       *&#64;&#64;     or padding between the elements. Note that the FP16 data
       *&#64;&#64;     type must be represented as raw content as there is no
       *&#64;&#64;     specific data type for a 16-bit float type.
       *&#64;&#64;
       *&#64;&#64;     If this field is specified then InferOutputTensor::contents
       *&#64;&#64;     must not be specified for any output tensor.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated bytes raw_output_contents = 6;</code>
       */
      public java.util.List<com.google.protobuf.ByteString>
          getRawOutputContentsList() {
        return java.util.Collections.unmodifiableList(rawOutputContents_);
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bytes raw_output_contents
       *&#64;&#64;
       *&#64;&#64;     The data contained in an output tensor can be represented in
       *&#64;&#64;     "raw" bytes form or in the repeated type that matches the
       *&#64;&#64;     tensor's data type. Using the "raw" bytes form will
       *&#64;&#64;     typically allow higher performance due to the way protobuf
       *&#64;&#64;     allocation and reuse interacts with GRPC. For example, see
       *&#64;&#64;     https://github.com/grpc/grpc/issues/23231.
       *&#64;&#64;
       *&#64;&#64;     To use the raw representation 'raw_output_contents' must be
       *&#64;&#64;     initialized with data for each tensor in the same order as
       *&#64;&#64;     'outputs'. For each tensor, the size of this content must
       *&#64;&#64;     match what is expected by the tensor's shape and data
       *&#64;&#64;     type. The raw data must be the flattened, one-dimensional,
       *&#64;&#64;     row-major order of the tensor elements without any stride
       *&#64;&#64;     or padding between the elements. Note that the FP16 data
       *&#64;&#64;     type must be represented as raw content as there is no
       *&#64;&#64;     specific data type for a 16-bit float type.
       *&#64;&#64;
       *&#64;&#64;     If this field is specified then InferOutputTensor::contents
       *&#64;&#64;     must not be specified for any output tensor.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated bytes raw_output_contents = 6;</code>
       */
      public int getRawOutputContentsCount() {
        return rawOutputContents_.size();
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bytes raw_output_contents
       *&#64;&#64;
       *&#64;&#64;     The data contained in an output tensor can be represented in
       *&#64;&#64;     "raw" bytes form or in the repeated type that matches the
       *&#64;&#64;     tensor's data type. Using the "raw" bytes form will
       *&#64;&#64;     typically allow higher performance due to the way protobuf
       *&#64;&#64;     allocation and reuse interacts with GRPC. For example, see
       *&#64;&#64;     https://github.com/grpc/grpc/issues/23231.
       *&#64;&#64;
       *&#64;&#64;     To use the raw representation 'raw_output_contents' must be
       *&#64;&#64;     initialized with data for each tensor in the same order as
       *&#64;&#64;     'outputs'. For each tensor, the size of this content must
       *&#64;&#64;     match what is expected by the tensor's shape and data
       *&#64;&#64;     type. The raw data must be the flattened, one-dimensional,
       *&#64;&#64;     row-major order of the tensor elements without any stride
       *&#64;&#64;     or padding between the elements. Note that the FP16 data
       *&#64;&#64;     type must be represented as raw content as there is no
       *&#64;&#64;     specific data type for a 16-bit float type.
       *&#64;&#64;
       *&#64;&#64;     If this field is specified then InferOutputTensor::contents
       *&#64;&#64;     must not be specified for any output tensor.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated bytes raw_output_contents = 6;</code>
       */
      public com.google.protobuf.ByteString getRawOutputContents(int index) {
        return rawOutputContents_.get(index);
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bytes raw_output_contents
       *&#64;&#64;
       *&#64;&#64;     The data contained in an output tensor can be represented in
       *&#64;&#64;     "raw" bytes form or in the repeated type that matches the
       *&#64;&#64;     tensor's data type. Using the "raw" bytes form will
       *&#64;&#64;     typically allow higher performance due to the way protobuf
       *&#64;&#64;     allocation and reuse interacts with GRPC. For example, see
       *&#64;&#64;     https://github.com/grpc/grpc/issues/23231.
       *&#64;&#64;
       *&#64;&#64;     To use the raw representation 'raw_output_contents' must be
       *&#64;&#64;     initialized with data for each tensor in the same order as
       *&#64;&#64;     'outputs'. For each tensor, the size of this content must
       *&#64;&#64;     match what is expected by the tensor's shape and data
       *&#64;&#64;     type. The raw data must be the flattened, one-dimensional,
       *&#64;&#64;     row-major order of the tensor elements without any stride
       *&#64;&#64;     or padding between the elements. Note that the FP16 data
       *&#64;&#64;     type must be represented as raw content as there is no
       *&#64;&#64;     specific data type for a 16-bit float type.
       *&#64;&#64;
       *&#64;&#64;     If this field is specified then InferOutputTensor::contents
       *&#64;&#64;     must not be specified for any output tensor.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated bytes raw_output_contents = 6;</code>
       */
      public Builder setRawOutputContents(
          int index, com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureRawOutputContentsIsMutable();
        rawOutputContents_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bytes raw_output_contents
       *&#64;&#64;
       *&#64;&#64;     The data contained in an output tensor can be represented in
       *&#64;&#64;     "raw" bytes form or in the repeated type that matches the
       *&#64;&#64;     tensor's data type. Using the "raw" bytes form will
       *&#64;&#64;     typically allow higher performance due to the way protobuf
       *&#64;&#64;     allocation and reuse interacts with GRPC. For example, see
       *&#64;&#64;     https://github.com/grpc/grpc/issues/23231.
       *&#64;&#64;
       *&#64;&#64;     To use the raw representation 'raw_output_contents' must be
       *&#64;&#64;     initialized with data for each tensor in the same order as
       *&#64;&#64;     'outputs'. For each tensor, the size of this content must
       *&#64;&#64;     match what is expected by the tensor's shape and data
       *&#64;&#64;     type. The raw data must be the flattened, one-dimensional,
       *&#64;&#64;     row-major order of the tensor elements without any stride
       *&#64;&#64;     or padding between the elements. Note that the FP16 data
       *&#64;&#64;     type must be represented as raw content as there is no
       *&#64;&#64;     specific data type for a 16-bit float type.
       *&#64;&#64;
       *&#64;&#64;     If this field is specified then InferOutputTensor::contents
       *&#64;&#64;     must not be specified for any output tensor.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated bytes raw_output_contents = 6;</code>
       */
      public Builder addRawOutputContents(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureRawOutputContentsIsMutable();
        rawOutputContents_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bytes raw_output_contents
       *&#64;&#64;
       *&#64;&#64;     The data contained in an output tensor can be represented in
       *&#64;&#64;     "raw" bytes form or in the repeated type that matches the
       *&#64;&#64;     tensor's data type. Using the "raw" bytes form will
       *&#64;&#64;     typically allow higher performance due to the way protobuf
       *&#64;&#64;     allocation and reuse interacts with GRPC. For example, see
       *&#64;&#64;     https://github.com/grpc/grpc/issues/23231.
       *&#64;&#64;
       *&#64;&#64;     To use the raw representation 'raw_output_contents' must be
       *&#64;&#64;     initialized with data for each tensor in the same order as
       *&#64;&#64;     'outputs'. For each tensor, the size of this content must
       *&#64;&#64;     match what is expected by the tensor's shape and data
       *&#64;&#64;     type. The raw data must be the flattened, one-dimensional,
       *&#64;&#64;     row-major order of the tensor elements without any stride
       *&#64;&#64;     or padding between the elements. Note that the FP16 data
       *&#64;&#64;     type must be represented as raw content as there is no
       *&#64;&#64;     specific data type for a 16-bit float type.
       *&#64;&#64;
       *&#64;&#64;     If this field is specified then InferOutputTensor::contents
       *&#64;&#64;     must not be specified for any output tensor.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated bytes raw_output_contents = 6;</code>
       */
      public Builder addAllRawOutputContents(
          Iterable<? extends com.google.protobuf.ByteString> values) {
        ensureRawOutputContentsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, rawOutputContents_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: bytes raw_output_contents
       *&#64;&#64;
       *&#64;&#64;     The data contained in an output tensor can be represented in
       *&#64;&#64;     "raw" bytes form or in the repeated type that matches the
       *&#64;&#64;     tensor's data type. Using the "raw" bytes form will
       *&#64;&#64;     typically allow higher performance due to the way protobuf
       *&#64;&#64;     allocation and reuse interacts with GRPC. For example, see
       *&#64;&#64;     https://github.com/grpc/grpc/issues/23231.
       *&#64;&#64;
       *&#64;&#64;     To use the raw representation 'raw_output_contents' must be
       *&#64;&#64;     initialized with data for each tensor in the same order as
       *&#64;&#64;     'outputs'. For each tensor, the size of this content must
       *&#64;&#64;     match what is expected by the tensor's shape and data
       *&#64;&#64;     type. The raw data must be the flattened, one-dimensional,
       *&#64;&#64;     row-major order of the tensor elements without any stride
       *&#64;&#64;     or padding between the elements. Note that the FP16 data
       *&#64;&#64;     type must be represented as raw content as there is no
       *&#64;&#64;     specific data type for a 16-bit float type.
       *&#64;&#64;
       *&#64;&#64;     If this field is specified then InferOutputTensor::contents
       *&#64;&#64;     must not be specified for any output tensor.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated bytes raw_output_contents = 6;</code>
       */
      public Builder clearRawOutputContents() {
        rawOutputContents_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.ModelInferResponse)
    }

    // @@protoc_insertion_point(class_scope:inference.ModelInferResponse)
    private static final GrpcService.ModelInferResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.ModelInferResponse();
    }

    public static GrpcService.ModelInferResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ModelInferResponse>
        PARSER = new com.google.protobuf.AbstractParser<ModelInferResponse>() {
      public ModelInferResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new ModelInferResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ModelInferResponse> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<ModelInferResponse> getParserForType() {
      return PARSER;
    }

    public GrpcService.ModelInferResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ModelStreamInferResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.ModelStreamInferResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string error_message
     *&#64;&#64;
     *&#64;&#64;     The message describing the error. The empty message
     *&#64;&#64;     indicates the inference was successful without errors.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string error_message = 1;</code>
     */
    String getErrorMessage();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string error_message
     *&#64;&#64;
     *&#64;&#64;     The message describing the error. The empty message
     *&#64;&#64;     indicates the inference was successful without errors.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string error_message = 1;</code>
     */
    com.google.protobuf.ByteString
        getErrorMessageBytes();

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: ModelInferResponse infer_response
     *&#64;&#64;
     *&#64;&#64;     Holds the results of the request.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.ModelInferResponse infer_response = 2;</code>
     */
    boolean hasInferResponse();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: ModelInferResponse infer_response
     *&#64;&#64;
     *&#64;&#64;     Holds the results of the request.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.ModelInferResponse infer_response = 2;</code>
     */
    GrpcService.ModelInferResponse getInferResponse();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: ModelInferResponse infer_response
     *&#64;&#64;
     *&#64;&#64;     Holds the results of the request.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.ModelInferResponse infer_response = 2;</code>
     */
    GrpcService.ModelInferResponseOrBuilder getInferResponseOrBuilder();
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message ModelStreamInferResponse
   *&#64;&#64;
   *&#64;&#64;   Response message for ModelStreamInfer.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.ModelStreamInferResponse}
   */
  public  static final class ModelStreamInferResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.ModelStreamInferResponse)
      ModelStreamInferResponseOrBuilder {
    // Use ModelStreamInferResponse.newBuilder() to construct.
    private ModelStreamInferResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ModelStreamInferResponse() {
      errorMessage_ = "";
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ModelStreamInferResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              String s = input.readStringRequireUtf8();

              errorMessage_ = s;
              break;
            }
            case 18: {
              GrpcService.ModelInferResponse.Builder subBuilder = null;
              if (inferResponse_ != null) {
                subBuilder = inferResponse_.toBuilder();
              }
              inferResponse_ = input.readMessage(GrpcService.ModelInferResponse.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(inferResponse_);
                inferResponse_ = subBuilder.buildPartial();
              }

              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_ModelStreamInferResponse_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_ModelStreamInferResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.ModelStreamInferResponse.class, GrpcService.ModelStreamInferResponse.Builder.class);
    }

    public static final int ERROR_MESSAGE_FIELD_NUMBER = 1;
    private volatile Object errorMessage_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string error_message
     *&#64;&#64;
     *&#64;&#64;     The message describing the error. The empty message
     *&#64;&#64;     indicates the inference was successful without errors.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string error_message = 1;</code>
     */
    public String getErrorMessage() {
      Object ref = errorMessage_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        errorMessage_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string error_message
     *&#64;&#64;
     *&#64;&#64;     The message describing the error. The empty message
     *&#64;&#64;     indicates the inference was successful without errors.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string error_message = 1;</code>
     */
    public com.google.protobuf.ByteString
        getErrorMessageBytes() {
      Object ref = errorMessage_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        errorMessage_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int INFER_RESPONSE_FIELD_NUMBER = 2;
    private GrpcService.ModelInferResponse inferResponse_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: ModelInferResponse infer_response
     *&#64;&#64;
     *&#64;&#64;     Holds the results of the request.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.ModelInferResponse infer_response = 2;</code>
     */
    public boolean hasInferResponse() {
      return inferResponse_ != null;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: ModelInferResponse infer_response
     *&#64;&#64;
     *&#64;&#64;     Holds the results of the request.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.ModelInferResponse infer_response = 2;</code>
     */
    public GrpcService.ModelInferResponse getInferResponse() {
      return inferResponse_ == null ? GrpcService.ModelInferResponse.getDefaultInstance() : inferResponse_;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: ModelInferResponse infer_response
     *&#64;&#64;
     *&#64;&#64;     Holds the results of the request.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.ModelInferResponse infer_response = 2;</code>
     */
    public GrpcService.ModelInferResponseOrBuilder getInferResponseOrBuilder() {
      return getInferResponse();
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getErrorMessageBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, errorMessage_);
      }
      if (inferResponse_ != null) {
        output.writeMessage(2, getInferResponse());
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getErrorMessageBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, errorMessage_);
      }
      if (inferResponse_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getInferResponse());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.ModelStreamInferResponse)) {
        return super.equals(obj);
      }
      GrpcService.ModelStreamInferResponse other = (GrpcService.ModelStreamInferResponse) obj;

      boolean result = true;
      result = result && getErrorMessage()
          .equals(other.getErrorMessage());
      result = result && (hasInferResponse() == other.hasInferResponse());
      if (hasInferResponse()) {
        result = result && getInferResponse()
            .equals(other.getInferResponse());
      }
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (37 * hash) + ERROR_MESSAGE_FIELD_NUMBER;
      hash = (53 * hash) + getErrorMessage().hashCode();
      if (hasInferResponse()) {
        hash = (37 * hash) + INFER_RESPONSE_FIELD_NUMBER;
        hash = (53 * hash) + getInferResponse().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.ModelStreamInferResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ModelStreamInferResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ModelStreamInferResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ModelStreamInferResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ModelStreamInferResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ModelStreamInferResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ModelStreamInferResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.ModelStreamInferResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ModelStreamInferResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ModelStreamInferResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.ModelStreamInferResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message ModelStreamInferResponse
     *&#64;&#64;
     *&#64;&#64;   Response message for ModelStreamInfer.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.ModelStreamInferResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.ModelStreamInferResponse)
        GrpcService.ModelStreamInferResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_ModelStreamInferResponse_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_ModelStreamInferResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.ModelStreamInferResponse.class, GrpcService.ModelStreamInferResponse.Builder.class);
      }

      // Construct using GrpcService.ModelStreamInferResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        errorMessage_ = "";

        if (inferResponseBuilder_ == null) {
          inferResponse_ = null;
        } else {
          inferResponse_ = null;
          inferResponseBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_ModelStreamInferResponse_descriptor;
      }

      public GrpcService.ModelStreamInferResponse getDefaultInstanceForType() {
        return GrpcService.ModelStreamInferResponse.getDefaultInstance();
      }

      public GrpcService.ModelStreamInferResponse build() {
        GrpcService.ModelStreamInferResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.ModelStreamInferResponse buildPartial() {
        GrpcService.ModelStreamInferResponse result = new GrpcService.ModelStreamInferResponse(this);
        result.errorMessage_ = errorMessage_;
        if (inferResponseBuilder_ == null) {
          result.inferResponse_ = inferResponse_;
        } else {
          result.inferResponse_ = inferResponseBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.ModelStreamInferResponse) {
          return mergeFrom((GrpcService.ModelStreamInferResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.ModelStreamInferResponse other) {
        if (other == GrpcService.ModelStreamInferResponse.getDefaultInstance()) return this;
        if (!other.getErrorMessage().isEmpty()) {
          errorMessage_ = other.errorMessage_;
          onChanged();
        }
        if (other.hasInferResponse()) {
          mergeInferResponse(other.getInferResponse());
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.ModelStreamInferResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.ModelStreamInferResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private Object errorMessage_ = "";
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string error_message
       *&#64;&#64;
       *&#64;&#64;     The message describing the error. The empty message
       *&#64;&#64;     indicates the inference was successful without errors.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string error_message = 1;</code>
       */
      public String getErrorMessage() {
        Object ref = errorMessage_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          errorMessage_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string error_message
       *&#64;&#64;
       *&#64;&#64;     The message describing the error. The empty message
       *&#64;&#64;     indicates the inference was successful without errors.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string error_message = 1;</code>
       */
      public com.google.protobuf.ByteString
          getErrorMessageBytes() {
        Object ref = errorMessage_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          errorMessage_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string error_message
       *&#64;&#64;
       *&#64;&#64;     The message describing the error. The empty message
       *&#64;&#64;     indicates the inference was successful without errors.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string error_message = 1;</code>
       */
      public Builder setErrorMessage(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        errorMessage_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string error_message
       *&#64;&#64;
       *&#64;&#64;     The message describing the error. The empty message
       *&#64;&#64;     indicates the inference was successful without errors.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string error_message = 1;</code>
       */
      public Builder clearErrorMessage() {

        errorMessage_ = getDefaultInstance().getErrorMessage();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string error_message
       *&#64;&#64;
       *&#64;&#64;     The message describing the error. The empty message
       *&#64;&#64;     indicates the inference was successful without errors.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string error_message = 1;</code>
       */
      public Builder setErrorMessageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        errorMessage_ = value;
        onChanged();
        return this;
      }

      private GrpcService.ModelInferResponse inferResponse_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          GrpcService.ModelInferResponse, GrpcService.ModelInferResponse.Builder, GrpcService.ModelInferResponseOrBuilder> inferResponseBuilder_;
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelInferResponse infer_response
       *&#64;&#64;
       *&#64;&#64;     Holds the results of the request.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.ModelInferResponse infer_response = 2;</code>
       */
      public boolean hasInferResponse() {
        return inferResponseBuilder_ != null || inferResponse_ != null;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelInferResponse infer_response
       *&#64;&#64;
       *&#64;&#64;     Holds the results of the request.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.ModelInferResponse infer_response = 2;</code>
       */
      public GrpcService.ModelInferResponse getInferResponse() {
        if (inferResponseBuilder_ == null) {
          return inferResponse_ == null ? GrpcService.ModelInferResponse.getDefaultInstance() : inferResponse_;
        } else {
          return inferResponseBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelInferResponse infer_response
       *&#64;&#64;
       *&#64;&#64;     Holds the results of the request.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.ModelInferResponse infer_response = 2;</code>
       */
      public Builder setInferResponse(GrpcService.ModelInferResponse value) {
        if (inferResponseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          inferResponse_ = value;
          onChanged();
        } else {
          inferResponseBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelInferResponse infer_response
       *&#64;&#64;
       *&#64;&#64;     Holds the results of the request.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.ModelInferResponse infer_response = 2;</code>
       */
      public Builder setInferResponse(
          GrpcService.ModelInferResponse.Builder builderForValue) {
        if (inferResponseBuilder_ == null) {
          inferResponse_ = builderForValue.build();
          onChanged();
        } else {
          inferResponseBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelInferResponse infer_response
       *&#64;&#64;
       *&#64;&#64;     Holds the results of the request.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.ModelInferResponse infer_response = 2;</code>
       */
      public Builder mergeInferResponse(GrpcService.ModelInferResponse value) {
        if (inferResponseBuilder_ == null) {
          if (inferResponse_ != null) {
            inferResponse_ =
              GrpcService.ModelInferResponse.newBuilder(inferResponse_).mergeFrom(value).buildPartial();
          } else {
            inferResponse_ = value;
          }
          onChanged();
        } else {
          inferResponseBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelInferResponse infer_response
       *&#64;&#64;
       *&#64;&#64;     Holds the results of the request.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.ModelInferResponse infer_response = 2;</code>
       */
      public Builder clearInferResponse() {
        if (inferResponseBuilder_ == null) {
          inferResponse_ = null;
          onChanged();
        } else {
          inferResponse_ = null;
          inferResponseBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelInferResponse infer_response
       *&#64;&#64;
       *&#64;&#64;     Holds the results of the request.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.ModelInferResponse infer_response = 2;</code>
       */
      public GrpcService.ModelInferResponse.Builder getInferResponseBuilder() {

        onChanged();
        return getInferResponseFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelInferResponse infer_response
       *&#64;&#64;
       *&#64;&#64;     Holds the results of the request.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.ModelInferResponse infer_response = 2;</code>
       */
      public GrpcService.ModelInferResponseOrBuilder getInferResponseOrBuilder() {
        if (inferResponseBuilder_ != null) {
          return inferResponseBuilder_.getMessageOrBuilder();
        } else {
          return inferResponse_ == null ?
              GrpcService.ModelInferResponse.getDefaultInstance() : inferResponse_;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelInferResponse infer_response
       *&#64;&#64;
       *&#64;&#64;     Holds the results of the request.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.ModelInferResponse infer_response = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          GrpcService.ModelInferResponse, GrpcService.ModelInferResponse.Builder, GrpcService.ModelInferResponseOrBuilder>
          getInferResponseFieldBuilder() {
        if (inferResponseBuilder_ == null) {
          inferResponseBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              GrpcService.ModelInferResponse, GrpcService.ModelInferResponse.Builder, GrpcService.ModelInferResponseOrBuilder>(
                  getInferResponse(),
                  getParentForChildren(),
                  isClean());
          inferResponse_ = null;
        }
        return inferResponseBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.ModelStreamInferResponse)
    }

    // @@protoc_insertion_point(class_scope:inference.ModelStreamInferResponse)
    private static final GrpcService.ModelStreamInferResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.ModelStreamInferResponse();
    }

    public static GrpcService.ModelStreamInferResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ModelStreamInferResponse>
        PARSER = new com.google.protobuf.AbstractParser<ModelStreamInferResponse>() {
      public ModelStreamInferResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new ModelStreamInferResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ModelStreamInferResponse> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<ModelStreamInferResponse> getParserForType() {
      return PARSER;
    }

    public GrpcService.ModelStreamInferResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ModelConfigRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.ModelConfigRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the model.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    String getName();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the model.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string version
     *&#64;&#64;
     *&#64;&#64;     The version of the model. If not given the model version
     *&#64;&#64;     is selected automatically based on the version policy.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string version = 2;</code>
     */
    String getVersion();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string version
     *&#64;&#64;
     *&#64;&#64;     The version of the model. If not given the model version
     *&#64;&#64;     is selected automatically based on the version policy.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string version = 2;</code>
     */
    com.google.protobuf.ByteString
        getVersionBytes();
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message ModelConfigRequest
   *&#64;&#64;
   *&#64;&#64;   Request message for ModelConfig.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.ModelConfigRequest}
   */
  public  static final class ModelConfigRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.ModelConfigRequest)
      ModelConfigRequestOrBuilder {
    // Use ModelConfigRequest.newBuilder() to construct.
    private ModelConfigRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ModelConfigRequest() {
      name_ = "";
      version_ = "";
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ModelConfigRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              String s = input.readStringRequireUtf8();

              name_ = s;
              break;
            }
            case 18: {
              String s = input.readStringRequireUtf8();

              version_ = s;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_ModelConfigRequest_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_ModelConfigRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.ModelConfigRequest.class, GrpcService.ModelConfigRequest.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile Object name_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the model.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    public String getName() {
      Object ref = name_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the model.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      Object ref = name_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VERSION_FIELD_NUMBER = 2;
    private volatile Object version_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string version
     *&#64;&#64;
     *&#64;&#64;     The version of the model. If not given the model version
     *&#64;&#64;     is selected automatically based on the version policy.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string version = 2;</code>
     */
    public String getVersion() {
      Object ref = version_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        version_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string version
     *&#64;&#64;
     *&#64;&#64;     The version of the model. If not given the model version
     *&#64;&#64;     is selected automatically based on the version policy.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string version = 2;</code>
     */
    public com.google.protobuf.ByteString
        getVersionBytes() {
      Object ref = version_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        version_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (!getVersionBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, version_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (!getVersionBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, version_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.ModelConfigRequest)) {
        return super.equals(obj);
      }
      GrpcService.ModelConfigRequest other = (GrpcService.ModelConfigRequest) obj;

      boolean result = true;
      result = result && getName()
          .equals(other.getName());
      result = result && getVersion()
          .equals(other.getVersion());
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getVersion().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.ModelConfigRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ModelConfigRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ModelConfigRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ModelConfigRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ModelConfigRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ModelConfigRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ModelConfigRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.ModelConfigRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ModelConfigRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ModelConfigRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.ModelConfigRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message ModelConfigRequest
     *&#64;&#64;
     *&#64;&#64;   Request message for ModelConfig.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.ModelConfigRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.ModelConfigRequest)
        GrpcService.ModelConfigRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_ModelConfigRequest_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_ModelConfigRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.ModelConfigRequest.class, GrpcService.ModelConfigRequest.Builder.class);
      }

      // Construct using GrpcService.ModelConfigRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        name_ = "";

        version_ = "";

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_ModelConfigRequest_descriptor;
      }

      public GrpcService.ModelConfigRequest getDefaultInstanceForType() {
        return GrpcService.ModelConfigRequest.getDefaultInstance();
      }

      public GrpcService.ModelConfigRequest build() {
        GrpcService.ModelConfigRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.ModelConfigRequest buildPartial() {
        GrpcService.ModelConfigRequest result = new GrpcService.ModelConfigRequest(this);
        result.name_ = name_;
        result.version_ = version_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.ModelConfigRequest) {
          return mergeFrom((GrpcService.ModelConfigRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.ModelConfigRequest other) {
        if (other == GrpcService.ModelConfigRequest.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (!other.getVersion().isEmpty()) {
          version_ = other.version_;
          onChanged();
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.ModelConfigRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.ModelConfigRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private Object name_ = "";
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public String getName() {
        Object ref = name_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder setName(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder clearName() {

        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        name_ = value;
        onChanged();
        return this;
      }

      private Object version_ = "";
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;     The version of the model. If not given the model version
       *&#64;&#64;     is selected automatically based on the version policy.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public String getVersion() {
        Object ref = version_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          version_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;     The version of the model. If not given the model version
       *&#64;&#64;     is selected automatically based on the version policy.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public com.google.protobuf.ByteString
          getVersionBytes() {
        Object ref = version_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          version_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;     The version of the model. If not given the model version
       *&#64;&#64;     is selected automatically based on the version policy.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public Builder setVersion(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        version_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;     The version of the model. If not given the model version
       *&#64;&#64;     is selected automatically based on the version policy.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public Builder clearVersion() {

        version_ = getDefaultInstance().getVersion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;     The version of the model. If not given the model version
       *&#64;&#64;     is selected automatically based on the version policy.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public Builder setVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        version_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.ModelConfigRequest)
    }

    // @@protoc_insertion_point(class_scope:inference.ModelConfigRequest)
    private static final GrpcService.ModelConfigRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.ModelConfigRequest();
    }

    public static GrpcService.ModelConfigRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ModelConfigRequest>
        PARSER = new com.google.protobuf.AbstractParser<ModelConfigRequest>() {
      public ModelConfigRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new ModelConfigRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ModelConfigRequest> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<ModelConfigRequest> getParserForType() {
      return PARSER;
    }

    public GrpcService.ModelConfigRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ModelConfigResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.ModelConfigResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: ModelConfig config
     *&#64;&#64;
     *&#64;&#64;     The model configuration.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.ModelConfig config = 1;</code>
     */
    boolean hasConfig();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: ModelConfig config
     *&#64;&#64;
     *&#64;&#64;     The model configuration.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.ModelConfig config = 1;</code>
     */
    ModelConfigOuterClass.ModelConfig getConfig();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: ModelConfig config
     *&#64;&#64;
     *&#64;&#64;     The model configuration.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.ModelConfig config = 1;</code>
     */
    ModelConfigOuterClass.ModelConfigOrBuilder getConfigOrBuilder();
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message ModelConfigResponse
   *&#64;&#64;
   *&#64;&#64;   Response message for ModelConfig.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.ModelConfigResponse}
   */
  public  static final class ModelConfigResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.ModelConfigResponse)
      ModelConfigResponseOrBuilder {
    // Use ModelConfigResponse.newBuilder() to construct.
    private ModelConfigResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ModelConfigResponse() {
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ModelConfigResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              ModelConfigOuterClass.ModelConfig.Builder subBuilder = null;
              if (config_ != null) {
                subBuilder = config_.toBuilder();
              }
              config_ = input.readMessage(ModelConfigOuterClass.ModelConfig.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(config_);
                config_ = subBuilder.buildPartial();
              }

              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_ModelConfigResponse_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_ModelConfigResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.ModelConfigResponse.class, GrpcService.ModelConfigResponse.Builder.class);
    }

    public static final int CONFIG_FIELD_NUMBER = 1;
    private ModelConfigOuterClass.ModelConfig config_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: ModelConfig config
     *&#64;&#64;
     *&#64;&#64;     The model configuration.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.ModelConfig config = 1;</code>
     */
    public boolean hasConfig() {
      return config_ != null;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: ModelConfig config
     *&#64;&#64;
     *&#64;&#64;     The model configuration.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.ModelConfig config = 1;</code>
     */
    public ModelConfigOuterClass.ModelConfig getConfig() {
      return config_ == null ? ModelConfigOuterClass.ModelConfig.getDefaultInstance() : config_;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: ModelConfig config
     *&#64;&#64;
     *&#64;&#64;     The model configuration.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.ModelConfig config = 1;</code>
     */
    public ModelConfigOuterClass.ModelConfigOrBuilder getConfigOrBuilder() {
      return getConfig();
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (config_ != null) {
        output.writeMessage(1, getConfig());
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (config_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getConfig());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.ModelConfigResponse)) {
        return super.equals(obj);
      }
      GrpcService.ModelConfigResponse other = (GrpcService.ModelConfigResponse) obj;

      boolean result = true;
      result = result && (hasConfig() == other.hasConfig());
      if (hasConfig()) {
        result = result && getConfig()
            .equals(other.getConfig());
      }
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (hasConfig()) {
        hash = (37 * hash) + CONFIG_FIELD_NUMBER;
        hash = (53 * hash) + getConfig().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.ModelConfigResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ModelConfigResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ModelConfigResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ModelConfigResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ModelConfigResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ModelConfigResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ModelConfigResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.ModelConfigResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ModelConfigResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ModelConfigResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.ModelConfigResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message ModelConfigResponse
     *&#64;&#64;
     *&#64;&#64;   Response message for ModelConfig.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.ModelConfigResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.ModelConfigResponse)
        GrpcService.ModelConfigResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_ModelConfigResponse_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_ModelConfigResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.ModelConfigResponse.class, GrpcService.ModelConfigResponse.Builder.class);
      }

      // Construct using GrpcService.ModelConfigResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        if (configBuilder_ == null) {
          config_ = null;
        } else {
          config_ = null;
          configBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_ModelConfigResponse_descriptor;
      }

      public GrpcService.ModelConfigResponse getDefaultInstanceForType() {
        return GrpcService.ModelConfigResponse.getDefaultInstance();
      }

      public GrpcService.ModelConfigResponse build() {
        GrpcService.ModelConfigResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.ModelConfigResponse buildPartial() {
        GrpcService.ModelConfigResponse result = new GrpcService.ModelConfigResponse(this);
        if (configBuilder_ == null) {
          result.config_ = config_;
        } else {
          result.config_ = configBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.ModelConfigResponse) {
          return mergeFrom((GrpcService.ModelConfigResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.ModelConfigResponse other) {
        if (other == GrpcService.ModelConfigResponse.getDefaultInstance()) return this;
        if (other.hasConfig()) {
          mergeConfig(other.getConfig());
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.ModelConfigResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.ModelConfigResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private ModelConfigOuterClass.ModelConfig config_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          ModelConfigOuterClass.ModelConfig, ModelConfigOuterClass.ModelConfig.Builder, ModelConfigOuterClass.ModelConfigOrBuilder> configBuilder_;
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelConfig config
       *&#64;&#64;
       *&#64;&#64;     The model configuration.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.ModelConfig config = 1;</code>
       */
      public boolean hasConfig() {
        return configBuilder_ != null || config_ != null;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelConfig config
       *&#64;&#64;
       *&#64;&#64;     The model configuration.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.ModelConfig config = 1;</code>
       */
      public ModelConfigOuterClass.ModelConfig getConfig() {
        if (configBuilder_ == null) {
          return config_ == null ? ModelConfigOuterClass.ModelConfig.getDefaultInstance() : config_;
        } else {
          return configBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelConfig config
       *&#64;&#64;
       *&#64;&#64;     The model configuration.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.ModelConfig config = 1;</code>
       */
      public Builder setConfig(ModelConfigOuterClass.ModelConfig value) {
        if (configBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          config_ = value;
          onChanged();
        } else {
          configBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelConfig config
       *&#64;&#64;
       *&#64;&#64;     The model configuration.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.ModelConfig config = 1;</code>
       */
      public Builder setConfig(
          ModelConfigOuterClass.ModelConfig.Builder builderForValue) {
        if (configBuilder_ == null) {
          config_ = builderForValue.build();
          onChanged();
        } else {
          configBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelConfig config
       *&#64;&#64;
       *&#64;&#64;     The model configuration.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.ModelConfig config = 1;</code>
       */
      public Builder mergeConfig(ModelConfigOuterClass.ModelConfig value) {
        if (configBuilder_ == null) {
          if (config_ != null) {
            config_ =
              ModelConfigOuterClass.ModelConfig.newBuilder(config_).mergeFrom(value).buildPartial();
          } else {
            config_ = value;
          }
          onChanged();
        } else {
          configBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelConfig config
       *&#64;&#64;
       *&#64;&#64;     The model configuration.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.ModelConfig config = 1;</code>
       */
      public Builder clearConfig() {
        if (configBuilder_ == null) {
          config_ = null;
          onChanged();
        } else {
          config_ = null;
          configBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelConfig config
       *&#64;&#64;
       *&#64;&#64;     The model configuration.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.ModelConfig config = 1;</code>
       */
      public ModelConfigOuterClass.ModelConfig.Builder getConfigBuilder() {

        onChanged();
        return getConfigFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelConfig config
       *&#64;&#64;
       *&#64;&#64;     The model configuration.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.ModelConfig config = 1;</code>
       */
      public ModelConfigOuterClass.ModelConfigOrBuilder getConfigOrBuilder() {
        if (configBuilder_ != null) {
          return configBuilder_.getMessageOrBuilder();
        } else {
          return config_ == null ?
              ModelConfigOuterClass.ModelConfig.getDefaultInstance() : config_;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelConfig config
       *&#64;&#64;
       *&#64;&#64;     The model configuration.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.ModelConfig config = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ModelConfigOuterClass.ModelConfig, ModelConfigOuterClass.ModelConfig.Builder, ModelConfigOuterClass.ModelConfigOrBuilder>
          getConfigFieldBuilder() {
        if (configBuilder_ == null) {
          configBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ModelConfigOuterClass.ModelConfig, ModelConfigOuterClass.ModelConfig.Builder, ModelConfigOuterClass.ModelConfigOrBuilder>(
                  getConfig(),
                  getParentForChildren(),
                  isClean());
          config_ = null;
        }
        return configBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.ModelConfigResponse)
    }

    // @@protoc_insertion_point(class_scope:inference.ModelConfigResponse)
    private static final GrpcService.ModelConfigResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.ModelConfigResponse();
    }

    public static GrpcService.ModelConfigResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ModelConfigResponse>
        PARSER = new com.google.protobuf.AbstractParser<ModelConfigResponse>() {
      public ModelConfigResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new ModelConfigResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ModelConfigResponse> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<ModelConfigResponse> getParserForType() {
      return PARSER;
    }

    public GrpcService.ModelConfigResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ModelStatisticsRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.ModelStatisticsRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the model. If not given returns statistics for
     *&#64;&#64;     all models.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    String getName();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the model. If not given returns statistics for
     *&#64;&#64;     all models.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string version
     *&#64;&#64;
     *&#64;&#64;     The version of the model. If not given returns statistics for
     *&#64;&#64;     all model versions.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string version = 2;</code>
     */
    String getVersion();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string version
     *&#64;&#64;
     *&#64;&#64;     The version of the model. If not given returns statistics for
     *&#64;&#64;     all model versions.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string version = 2;</code>
     */
    com.google.protobuf.ByteString
        getVersionBytes();
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message ModelStatisticsRequest
   *&#64;&#64;
   *&#64;&#64;   Request message for ModelStatistics.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.ModelStatisticsRequest}
   */
  public  static final class ModelStatisticsRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.ModelStatisticsRequest)
      ModelStatisticsRequestOrBuilder {
    // Use ModelStatisticsRequest.newBuilder() to construct.
    private ModelStatisticsRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ModelStatisticsRequest() {
      name_ = "";
      version_ = "";
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ModelStatisticsRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              String s = input.readStringRequireUtf8();

              name_ = s;
              break;
            }
            case 18: {
              String s = input.readStringRequireUtf8();

              version_ = s;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_ModelStatisticsRequest_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_ModelStatisticsRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.ModelStatisticsRequest.class, GrpcService.ModelStatisticsRequest.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile Object name_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the model. If not given returns statistics for
     *&#64;&#64;     all models.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    public String getName() {
      Object ref = name_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the model. If not given returns statistics for
     *&#64;&#64;     all models.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      Object ref = name_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VERSION_FIELD_NUMBER = 2;
    private volatile Object version_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string version
     *&#64;&#64;
     *&#64;&#64;     The version of the model. If not given returns statistics for
     *&#64;&#64;     all model versions.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string version = 2;</code>
     */
    public String getVersion() {
      Object ref = version_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        version_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string version
     *&#64;&#64;
     *&#64;&#64;     The version of the model. If not given returns statistics for
     *&#64;&#64;     all model versions.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string version = 2;</code>
     */
    public com.google.protobuf.ByteString
        getVersionBytes() {
      Object ref = version_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        version_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (!getVersionBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, version_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (!getVersionBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, version_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.ModelStatisticsRequest)) {
        return super.equals(obj);
      }
      GrpcService.ModelStatisticsRequest other = (GrpcService.ModelStatisticsRequest) obj;

      boolean result = true;
      result = result && getName()
          .equals(other.getName());
      result = result && getVersion()
          .equals(other.getVersion());
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getVersion().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.ModelStatisticsRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ModelStatisticsRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ModelStatisticsRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ModelStatisticsRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ModelStatisticsRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ModelStatisticsRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ModelStatisticsRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.ModelStatisticsRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ModelStatisticsRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ModelStatisticsRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.ModelStatisticsRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message ModelStatisticsRequest
     *&#64;&#64;
     *&#64;&#64;   Request message for ModelStatistics.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.ModelStatisticsRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.ModelStatisticsRequest)
        GrpcService.ModelStatisticsRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_ModelStatisticsRequest_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_ModelStatisticsRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.ModelStatisticsRequest.class, GrpcService.ModelStatisticsRequest.Builder.class);
      }

      // Construct using GrpcService.ModelStatisticsRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        name_ = "";

        version_ = "";

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_ModelStatisticsRequest_descriptor;
      }

      public GrpcService.ModelStatisticsRequest getDefaultInstanceForType() {
        return GrpcService.ModelStatisticsRequest.getDefaultInstance();
      }

      public GrpcService.ModelStatisticsRequest build() {
        GrpcService.ModelStatisticsRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.ModelStatisticsRequest buildPartial() {
        GrpcService.ModelStatisticsRequest result = new GrpcService.ModelStatisticsRequest(this);
        result.name_ = name_;
        result.version_ = version_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.ModelStatisticsRequest) {
          return mergeFrom((GrpcService.ModelStatisticsRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.ModelStatisticsRequest other) {
        if (other == GrpcService.ModelStatisticsRequest.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (!other.getVersion().isEmpty()) {
          version_ = other.version_;
          onChanged();
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.ModelStatisticsRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.ModelStatisticsRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private Object name_ = "";
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the model. If not given returns statistics for
       *&#64;&#64;     all models.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public String getName() {
        Object ref = name_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the model. If not given returns statistics for
       *&#64;&#64;     all models.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the model. If not given returns statistics for
       *&#64;&#64;     all models.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder setName(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the model. If not given returns statistics for
       *&#64;&#64;     all models.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder clearName() {

        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the model. If not given returns statistics for
       *&#64;&#64;     all models.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        name_ = value;
        onChanged();
        return this;
      }

      private Object version_ = "";
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;     The version of the model. If not given returns statistics for
       *&#64;&#64;     all model versions.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public String getVersion() {
        Object ref = version_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          version_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;     The version of the model. If not given returns statistics for
       *&#64;&#64;     all model versions.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public com.google.protobuf.ByteString
          getVersionBytes() {
        Object ref = version_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          version_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;     The version of the model. If not given returns statistics for
       *&#64;&#64;     all model versions.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public Builder setVersion(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        version_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;     The version of the model. If not given returns statistics for
       *&#64;&#64;     all model versions.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public Builder clearVersion() {

        version_ = getDefaultInstance().getVersion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;     The version of the model. If not given returns statistics for
       *&#64;&#64;     all model versions.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public Builder setVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        version_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.ModelStatisticsRequest)
    }

    // @@protoc_insertion_point(class_scope:inference.ModelStatisticsRequest)
    private static final GrpcService.ModelStatisticsRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.ModelStatisticsRequest();
    }

    public static GrpcService.ModelStatisticsRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ModelStatisticsRequest>
        PARSER = new com.google.protobuf.AbstractParser<ModelStatisticsRequest>() {
      public ModelStatisticsRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new ModelStatisticsRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ModelStatisticsRequest> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<ModelStatisticsRequest> getParserForType() {
      return PARSER;
    }

    public GrpcService.ModelStatisticsRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface StatisticDurationOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.StatisticDuration)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: uint64 count
     *&#64;&#64;
     *&#64;&#64;     Cumulative number of times this metric occurred.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional uint64 count = 1;</code>
     */
    long getCount();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: uint64 total_time_ns
     *&#64;&#64;
     *&#64;&#64;     Total collected duration of this metric in nanoseconds.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional uint64 ns = 2;</code>
     */
    long getNs();
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message StatisticDuration
   *&#64;&#64;
   *&#64;&#64;   Statistic recording a cumulative duration metric.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.StatisticDuration}
   */
  public  static final class StatisticDuration extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.StatisticDuration)
      StatisticDurationOrBuilder {
    // Use StatisticDuration.newBuilder() to construct.
    private StatisticDuration(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private StatisticDuration() {
      count_ = 0L;
      ns_ = 0L;
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private StatisticDuration(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 8: {

              count_ = input.readUInt64();
              break;
            }
            case 16: {

              ns_ = input.readUInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_StatisticDuration_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_StatisticDuration_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.StatisticDuration.class, GrpcService.StatisticDuration.Builder.class);
    }

    public static final int COUNT_FIELD_NUMBER = 1;
    private long count_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: uint64 count
     *&#64;&#64;
     *&#64;&#64;     Cumulative number of times this metric occurred.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional uint64 count = 1;</code>
     */
    public long getCount() {
      return count_;
    }

    public static final int NS_FIELD_NUMBER = 2;
    private long ns_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: uint64 total_time_ns
     *&#64;&#64;
     *&#64;&#64;     Total collected duration of this metric in nanoseconds.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional uint64 ns = 2;</code>
     */
    public long getNs() {
      return ns_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (count_ != 0L) {
        output.writeUInt64(1, count_);
      }
      if (ns_ != 0L) {
        output.writeUInt64(2, ns_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (count_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, count_);
      }
      if (ns_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, ns_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.StatisticDuration)) {
        return super.equals(obj);
      }
      GrpcService.StatisticDuration other = (GrpcService.StatisticDuration) obj;

      boolean result = true;
      result = result && (getCount()
          == other.getCount());
      result = result && (getNs()
          == other.getNs());
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (37 * hash) + COUNT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getCount());
      hash = (37 * hash) + NS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getNs());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.StatisticDuration parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.StatisticDuration parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.StatisticDuration parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.StatisticDuration parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.StatisticDuration parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.StatisticDuration parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.StatisticDuration parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.StatisticDuration parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.StatisticDuration parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.StatisticDuration parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.StatisticDuration prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message StatisticDuration
     *&#64;&#64;
     *&#64;&#64;   Statistic recording a cumulative duration metric.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.StatisticDuration}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.StatisticDuration)
        GrpcService.StatisticDurationOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_StatisticDuration_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_StatisticDuration_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.StatisticDuration.class, GrpcService.StatisticDuration.Builder.class);
      }

      // Construct using GrpcService.StatisticDuration.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        count_ = 0L;

        ns_ = 0L;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_StatisticDuration_descriptor;
      }

      public GrpcService.StatisticDuration getDefaultInstanceForType() {
        return GrpcService.StatisticDuration.getDefaultInstance();
      }

      public GrpcService.StatisticDuration build() {
        GrpcService.StatisticDuration result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.StatisticDuration buildPartial() {
        GrpcService.StatisticDuration result = new GrpcService.StatisticDuration(this);
        result.count_ = count_;
        result.ns_ = ns_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.StatisticDuration) {
          return mergeFrom((GrpcService.StatisticDuration)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.StatisticDuration other) {
        if (other == GrpcService.StatisticDuration.getDefaultInstance()) return this;
        if (other.getCount() != 0L) {
          setCount(other.getCount());
        }
        if (other.getNs() != 0L) {
          setNs(other.getNs());
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.StatisticDuration parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.StatisticDuration) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private long count_ ;
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: uint64 count
       *&#64;&#64;
       *&#64;&#64;     Cumulative number of times this metric occurred.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 count = 1;</code>
       */
      public long getCount() {
        return count_;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: uint64 count
       *&#64;&#64;
       *&#64;&#64;     Cumulative number of times this metric occurred.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 count = 1;</code>
       */
      public Builder setCount(long value) {

        count_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: uint64 count
       *&#64;&#64;
       *&#64;&#64;     Cumulative number of times this metric occurred.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 count = 1;</code>
       */
      public Builder clearCount() {

        count_ = 0L;
        onChanged();
        return this;
      }

      private long ns_ ;
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: uint64 total_time_ns
       *&#64;&#64;
       *&#64;&#64;     Total collected duration of this metric in nanoseconds.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 ns = 2;</code>
       */
      public long getNs() {
        return ns_;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: uint64 total_time_ns
       *&#64;&#64;
       *&#64;&#64;     Total collected duration of this metric in nanoseconds.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 ns = 2;</code>
       */
      public Builder setNs(long value) {

        ns_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: uint64 total_time_ns
       *&#64;&#64;
       *&#64;&#64;     Total collected duration of this metric in nanoseconds.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 ns = 2;</code>
       */
      public Builder clearNs() {

        ns_ = 0L;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.StatisticDuration)
    }

    // @@protoc_insertion_point(class_scope:inference.StatisticDuration)
    private static final GrpcService.StatisticDuration DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.StatisticDuration();
    }

    public static GrpcService.StatisticDuration getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<StatisticDuration>
        PARSER = new com.google.protobuf.AbstractParser<StatisticDuration>() {
      public StatisticDuration parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new StatisticDuration(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<StatisticDuration> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<StatisticDuration> getParserForType() {
      return PARSER;
    }

    public GrpcService.StatisticDuration getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface InferStatisticsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.InferStatistics)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration success
     *&#64;&#64;
     *&#64;&#64;     Cumulative count and duration for successful inference
     *&#64;&#64;     request.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration success = 1;</code>
     */
    boolean hasSuccess();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration success
     *&#64;&#64;
     *&#64;&#64;     Cumulative count and duration for successful inference
     *&#64;&#64;     request.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration success = 1;</code>
     */
    GrpcService.StatisticDuration getSuccess();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration success
     *&#64;&#64;
     *&#64;&#64;     Cumulative count and duration for successful inference
     *&#64;&#64;     request.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration success = 1;</code>
     */
    GrpcService.StatisticDurationOrBuilder getSuccessOrBuilder();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration fail
     *&#64;&#64;
     *&#64;&#64;     Cumulative count and duration for failed inference
     *&#64;&#64;     request.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration fail = 2;</code>
     */
    boolean hasFail();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration fail
     *&#64;&#64;
     *&#64;&#64;     Cumulative count and duration for failed inference
     *&#64;&#64;     request.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration fail = 2;</code>
     */
    GrpcService.StatisticDuration getFail();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration fail
     *&#64;&#64;
     *&#64;&#64;     Cumulative count and duration for failed inference
     *&#64;&#64;     request.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration fail = 2;</code>
     */
    GrpcService.StatisticDurationOrBuilder getFailOrBuilder();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration queue
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration that inference requests wait in
     *&#64;&#64;     scheduling or other queues.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration queue = 3;</code>
     */
    boolean hasQueue();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration queue
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration that inference requests wait in
     *&#64;&#64;     scheduling or other queues.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration queue = 3;</code>
     */
    GrpcService.StatisticDuration getQueue();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration queue
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration that inference requests wait in
     *&#64;&#64;     scheduling or other queues.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration queue = 3;</code>
     */
    GrpcService.StatisticDurationOrBuilder getQueueOrBuilder();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_input
     *&#64;&#64;
     *&#64;&#64;    The count and cumulative duration to prepare input tensor data as
     *&#64;&#64;    required by the model framework / backend. For example, this duration
     *&#64;&#64;    should include the time to copy input tensor data to the GPU.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_input = 4;</code>
     */
    boolean hasComputeInput();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_input
     *&#64;&#64;
     *&#64;&#64;    The count and cumulative duration to prepare input tensor data as
     *&#64;&#64;    required by the model framework / backend. For example, this duration
     *&#64;&#64;    should include the time to copy input tensor data to the GPU.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_input = 4;</code>
     */
    GrpcService.StatisticDuration getComputeInput();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_input
     *&#64;&#64;
     *&#64;&#64;    The count and cumulative duration to prepare input tensor data as
     *&#64;&#64;    required by the model framework / backend. For example, this duration
     *&#64;&#64;    should include the time to copy input tensor data to the GPU.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_input = 4;</code>
     */
    GrpcService.StatisticDurationOrBuilder getComputeInputOrBuilder();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_infer
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration to execute the model.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_infer = 5;</code>
     */
    boolean hasComputeInfer();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_infer
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration to execute the model.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_infer = 5;</code>
     */
    GrpcService.StatisticDuration getComputeInfer();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_infer
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration to execute the model.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_infer = 5;</code>
     */
    GrpcService.StatisticDurationOrBuilder getComputeInferOrBuilder();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_output
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration to extract output tensor data
     *&#64;&#64;     produced by the model framework / backend. For example, this duration
     *&#64;&#64;     should include the time to copy output tensor data from the GPU.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_output = 6;</code>
     */
    boolean hasComputeOutput();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_output
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration to extract output tensor data
     *&#64;&#64;     produced by the model framework / backend. For example, this duration
     *&#64;&#64;     should include the time to copy output tensor data from the GPU.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_output = 6;</code>
     */
    GrpcService.StatisticDuration getComputeOutput();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_output
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration to extract output tensor data
     *&#64;&#64;     produced by the model framework / backend. For example, this duration
     *&#64;&#64;     should include the time to copy output tensor data from the GPU.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_output = 6;</code>
     */
    GrpcService.StatisticDurationOrBuilder getComputeOutputOrBuilder();
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message InferStatistics
   *&#64;&#64;
   *&#64;&#64;   Inference statistics.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.InferStatistics}
   */
  public  static final class InferStatistics extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.InferStatistics)
      InferStatisticsOrBuilder {
    // Use InferStatistics.newBuilder() to construct.
    private InferStatistics(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private InferStatistics() {
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private InferStatistics(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              GrpcService.StatisticDuration.Builder subBuilder = null;
              if (success_ != null) {
                subBuilder = success_.toBuilder();
              }
              success_ = input.readMessage(GrpcService.StatisticDuration.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(success_);
                success_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              GrpcService.StatisticDuration.Builder subBuilder = null;
              if (fail_ != null) {
                subBuilder = fail_.toBuilder();
              }
              fail_ = input.readMessage(GrpcService.StatisticDuration.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(fail_);
                fail_ = subBuilder.buildPartial();
              }

              break;
            }
            case 26: {
              GrpcService.StatisticDuration.Builder subBuilder = null;
              if (queue_ != null) {
                subBuilder = queue_.toBuilder();
              }
              queue_ = input.readMessage(GrpcService.StatisticDuration.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(queue_);
                queue_ = subBuilder.buildPartial();
              }

              break;
            }
            case 34: {
              GrpcService.StatisticDuration.Builder subBuilder = null;
              if (computeInput_ != null) {
                subBuilder = computeInput_.toBuilder();
              }
              computeInput_ = input.readMessage(GrpcService.StatisticDuration.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(computeInput_);
                computeInput_ = subBuilder.buildPartial();
              }

              break;
            }
            case 42: {
              GrpcService.StatisticDuration.Builder subBuilder = null;
              if (computeInfer_ != null) {
                subBuilder = computeInfer_.toBuilder();
              }
              computeInfer_ = input.readMessage(GrpcService.StatisticDuration.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(computeInfer_);
                computeInfer_ = subBuilder.buildPartial();
              }

              break;
            }
            case 50: {
              GrpcService.StatisticDuration.Builder subBuilder = null;
              if (computeOutput_ != null) {
                subBuilder = computeOutput_.toBuilder();
              }
              computeOutput_ = input.readMessage(GrpcService.StatisticDuration.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(computeOutput_);
                computeOutput_ = subBuilder.buildPartial();
              }

              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_InferStatistics_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_InferStatistics_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.InferStatistics.class, GrpcService.InferStatistics.Builder.class);
    }

    public static final int SUCCESS_FIELD_NUMBER = 1;
    private GrpcService.StatisticDuration success_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration success
     *&#64;&#64;
     *&#64;&#64;     Cumulative count and duration for successful inference
     *&#64;&#64;     request.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration success = 1;</code>
     */
    public boolean hasSuccess() {
      return success_ != null;
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration success
     *&#64;&#64;
     *&#64;&#64;     Cumulative count and duration for successful inference
     *&#64;&#64;     request.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration success = 1;</code>
     */
    public GrpcService.StatisticDuration getSuccess() {
      return success_ == null ? GrpcService.StatisticDuration.getDefaultInstance() : success_;
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration success
     *&#64;&#64;
     *&#64;&#64;     Cumulative count and duration for successful inference
     *&#64;&#64;     request.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration success = 1;</code>
     */
    public GrpcService.StatisticDurationOrBuilder getSuccessOrBuilder() {
      return getSuccess();
    }

    public static final int FAIL_FIELD_NUMBER = 2;
    private GrpcService.StatisticDuration fail_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration fail
     *&#64;&#64;
     *&#64;&#64;     Cumulative count and duration for failed inference
     *&#64;&#64;     request.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration fail = 2;</code>
     */
    public boolean hasFail() {
      return fail_ != null;
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration fail
     *&#64;&#64;
     *&#64;&#64;     Cumulative count and duration for failed inference
     *&#64;&#64;     request.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration fail = 2;</code>
     */
    public GrpcService.StatisticDuration getFail() {
      return fail_ == null ? GrpcService.StatisticDuration.getDefaultInstance() : fail_;
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration fail
     *&#64;&#64;
     *&#64;&#64;     Cumulative count and duration for failed inference
     *&#64;&#64;     request.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration fail = 2;</code>
     */
    public GrpcService.StatisticDurationOrBuilder getFailOrBuilder() {
      return getFail();
    }

    public static final int QUEUE_FIELD_NUMBER = 3;
    private GrpcService.StatisticDuration queue_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration queue
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration that inference requests wait in
     *&#64;&#64;     scheduling or other queues.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration queue = 3;</code>
     */
    public boolean hasQueue() {
      return queue_ != null;
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration queue
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration that inference requests wait in
     *&#64;&#64;     scheduling or other queues.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration queue = 3;</code>
     */
    public GrpcService.StatisticDuration getQueue() {
      return queue_ == null ? GrpcService.StatisticDuration.getDefaultInstance() : queue_;
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration queue
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration that inference requests wait in
     *&#64;&#64;     scheduling or other queues.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration queue = 3;</code>
     */
    public GrpcService.StatisticDurationOrBuilder getQueueOrBuilder() {
      return getQueue();
    }

    public static final int COMPUTE_INPUT_FIELD_NUMBER = 4;
    private GrpcService.StatisticDuration computeInput_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_input
     *&#64;&#64;
     *&#64;&#64;    The count and cumulative duration to prepare input tensor data as
     *&#64;&#64;    required by the model framework / backend. For example, this duration
     *&#64;&#64;    should include the time to copy input tensor data to the GPU.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_input = 4;</code>
     */
    public boolean hasComputeInput() {
      return computeInput_ != null;
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_input
     *&#64;&#64;
     *&#64;&#64;    The count and cumulative duration to prepare input tensor data as
     *&#64;&#64;    required by the model framework / backend. For example, this duration
     *&#64;&#64;    should include the time to copy input tensor data to the GPU.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_input = 4;</code>
     */
    public GrpcService.StatisticDuration getComputeInput() {
      return computeInput_ == null ? GrpcService.StatisticDuration.getDefaultInstance() : computeInput_;
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_input
     *&#64;&#64;
     *&#64;&#64;    The count and cumulative duration to prepare input tensor data as
     *&#64;&#64;    required by the model framework / backend. For example, this duration
     *&#64;&#64;    should include the time to copy input tensor data to the GPU.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_input = 4;</code>
     */
    public GrpcService.StatisticDurationOrBuilder getComputeInputOrBuilder() {
      return getComputeInput();
    }

    public static final int COMPUTE_INFER_FIELD_NUMBER = 5;
    private GrpcService.StatisticDuration computeInfer_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_infer
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration to execute the model.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_infer = 5;</code>
     */
    public boolean hasComputeInfer() {
      return computeInfer_ != null;
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_infer
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration to execute the model.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_infer = 5;</code>
     */
    public GrpcService.StatisticDuration getComputeInfer() {
      return computeInfer_ == null ? GrpcService.StatisticDuration.getDefaultInstance() : computeInfer_;
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_infer
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration to execute the model.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_infer = 5;</code>
     */
    public GrpcService.StatisticDurationOrBuilder getComputeInferOrBuilder() {
      return getComputeInfer();
    }

    public static final int COMPUTE_OUTPUT_FIELD_NUMBER = 6;
    private GrpcService.StatisticDuration computeOutput_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_output
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration to extract output tensor data
     *&#64;&#64;     produced by the model framework / backend. For example, this duration
     *&#64;&#64;     should include the time to copy output tensor data from the GPU.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_output = 6;</code>
     */
    public boolean hasComputeOutput() {
      return computeOutput_ != null;
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_output
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration to extract output tensor data
     *&#64;&#64;     produced by the model framework / backend. For example, this duration
     *&#64;&#64;     should include the time to copy output tensor data from the GPU.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_output = 6;</code>
     */
    public GrpcService.StatisticDuration getComputeOutput() {
      return computeOutput_ == null ? GrpcService.StatisticDuration.getDefaultInstance() : computeOutput_;
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_output
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration to extract output tensor data
     *&#64;&#64;     produced by the model framework / backend. For example, this duration
     *&#64;&#64;     should include the time to copy output tensor data from the GPU.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_output = 6;</code>
     */
    public GrpcService.StatisticDurationOrBuilder getComputeOutputOrBuilder() {
      return getComputeOutput();
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (success_ != null) {
        output.writeMessage(1, getSuccess());
      }
      if (fail_ != null) {
        output.writeMessage(2, getFail());
      }
      if (queue_ != null) {
        output.writeMessage(3, getQueue());
      }
      if (computeInput_ != null) {
        output.writeMessage(4, getComputeInput());
      }
      if (computeInfer_ != null) {
        output.writeMessage(5, getComputeInfer());
      }
      if (computeOutput_ != null) {
        output.writeMessage(6, getComputeOutput());
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (success_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getSuccess());
      }
      if (fail_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getFail());
      }
      if (queue_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getQueue());
      }
      if (computeInput_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getComputeInput());
      }
      if (computeInfer_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getComputeInfer());
      }
      if (computeOutput_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getComputeOutput());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.InferStatistics)) {
        return super.equals(obj);
      }
      GrpcService.InferStatistics other = (GrpcService.InferStatistics) obj;

      boolean result = true;
      result = result && (hasSuccess() == other.hasSuccess());
      if (hasSuccess()) {
        result = result && getSuccess()
            .equals(other.getSuccess());
      }
      result = result && (hasFail() == other.hasFail());
      if (hasFail()) {
        result = result && getFail()
            .equals(other.getFail());
      }
      result = result && (hasQueue() == other.hasQueue());
      if (hasQueue()) {
        result = result && getQueue()
            .equals(other.getQueue());
      }
      result = result && (hasComputeInput() == other.hasComputeInput());
      if (hasComputeInput()) {
        result = result && getComputeInput()
            .equals(other.getComputeInput());
      }
      result = result && (hasComputeInfer() == other.hasComputeInfer());
      if (hasComputeInfer()) {
        result = result && getComputeInfer()
            .equals(other.getComputeInfer());
      }
      result = result && (hasComputeOutput() == other.hasComputeOutput());
      if (hasComputeOutput()) {
        result = result && getComputeOutput()
            .equals(other.getComputeOutput());
      }
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (hasSuccess()) {
        hash = (37 * hash) + SUCCESS_FIELD_NUMBER;
        hash = (53 * hash) + getSuccess().hashCode();
      }
      if (hasFail()) {
        hash = (37 * hash) + FAIL_FIELD_NUMBER;
        hash = (53 * hash) + getFail().hashCode();
      }
      if (hasQueue()) {
        hash = (37 * hash) + QUEUE_FIELD_NUMBER;
        hash = (53 * hash) + getQueue().hashCode();
      }
      if (hasComputeInput()) {
        hash = (37 * hash) + COMPUTE_INPUT_FIELD_NUMBER;
        hash = (53 * hash) + getComputeInput().hashCode();
      }
      if (hasComputeInfer()) {
        hash = (37 * hash) + COMPUTE_INFER_FIELD_NUMBER;
        hash = (53 * hash) + getComputeInfer().hashCode();
      }
      if (hasComputeOutput()) {
        hash = (37 * hash) + COMPUTE_OUTPUT_FIELD_NUMBER;
        hash = (53 * hash) + getComputeOutput().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.InferStatistics parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.InferStatistics parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.InferStatistics parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.InferStatistics parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.InferStatistics parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.InferStatistics parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.InferStatistics parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.InferStatistics parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.InferStatistics parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.InferStatistics parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.InferStatistics prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message InferStatistics
     *&#64;&#64;
     *&#64;&#64;   Inference statistics.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.InferStatistics}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.InferStatistics)
        GrpcService.InferStatisticsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_InferStatistics_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_InferStatistics_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.InferStatistics.class, GrpcService.InferStatistics.Builder.class);
      }

      // Construct using GrpcService.InferStatistics.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        if (successBuilder_ == null) {
          success_ = null;
        } else {
          success_ = null;
          successBuilder_ = null;
        }
        if (failBuilder_ == null) {
          fail_ = null;
        } else {
          fail_ = null;
          failBuilder_ = null;
        }
        if (queueBuilder_ == null) {
          queue_ = null;
        } else {
          queue_ = null;
          queueBuilder_ = null;
        }
        if (computeInputBuilder_ == null) {
          computeInput_ = null;
        } else {
          computeInput_ = null;
          computeInputBuilder_ = null;
        }
        if (computeInferBuilder_ == null) {
          computeInfer_ = null;
        } else {
          computeInfer_ = null;
          computeInferBuilder_ = null;
        }
        if (computeOutputBuilder_ == null) {
          computeOutput_ = null;
        } else {
          computeOutput_ = null;
          computeOutputBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_InferStatistics_descriptor;
      }

      public GrpcService.InferStatistics getDefaultInstanceForType() {
        return GrpcService.InferStatistics.getDefaultInstance();
      }

      public GrpcService.InferStatistics build() {
        GrpcService.InferStatistics result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.InferStatistics buildPartial() {
        GrpcService.InferStatistics result = new GrpcService.InferStatistics(this);
        if (successBuilder_ == null) {
          result.success_ = success_;
        } else {
          result.success_ = successBuilder_.build();
        }
        if (failBuilder_ == null) {
          result.fail_ = fail_;
        } else {
          result.fail_ = failBuilder_.build();
        }
        if (queueBuilder_ == null) {
          result.queue_ = queue_;
        } else {
          result.queue_ = queueBuilder_.build();
        }
        if (computeInputBuilder_ == null) {
          result.computeInput_ = computeInput_;
        } else {
          result.computeInput_ = computeInputBuilder_.build();
        }
        if (computeInferBuilder_ == null) {
          result.computeInfer_ = computeInfer_;
        } else {
          result.computeInfer_ = computeInferBuilder_.build();
        }
        if (computeOutputBuilder_ == null) {
          result.computeOutput_ = computeOutput_;
        } else {
          result.computeOutput_ = computeOutputBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.InferStatistics) {
          return mergeFrom((GrpcService.InferStatistics)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.InferStatistics other) {
        if (other == GrpcService.InferStatistics.getDefaultInstance()) return this;
        if (other.hasSuccess()) {
          mergeSuccess(other.getSuccess());
        }
        if (other.hasFail()) {
          mergeFail(other.getFail());
        }
        if (other.hasQueue()) {
          mergeQueue(other.getQueue());
        }
        if (other.hasComputeInput()) {
          mergeComputeInput(other.getComputeInput());
        }
        if (other.hasComputeInfer()) {
          mergeComputeInfer(other.getComputeInfer());
        }
        if (other.hasComputeOutput()) {
          mergeComputeOutput(other.getComputeOutput());
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.InferStatistics parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.InferStatistics) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private GrpcService.StatisticDuration success_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          GrpcService.StatisticDuration, GrpcService.StatisticDuration.Builder, GrpcService.StatisticDurationOrBuilder> successBuilder_;
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration success
       *&#64;&#64;
       *&#64;&#64;     Cumulative count and duration for successful inference
       *&#64;&#64;     request.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration success = 1;</code>
       */
      public boolean hasSuccess() {
        return successBuilder_ != null || success_ != null;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration success
       *&#64;&#64;
       *&#64;&#64;     Cumulative count and duration for successful inference
       *&#64;&#64;     request.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration success = 1;</code>
       */
      public GrpcService.StatisticDuration getSuccess() {
        if (successBuilder_ == null) {
          return success_ == null ? GrpcService.StatisticDuration.getDefaultInstance() : success_;
        } else {
          return successBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration success
       *&#64;&#64;
       *&#64;&#64;     Cumulative count and duration for successful inference
       *&#64;&#64;     request.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration success = 1;</code>
       */
      public Builder setSuccess(GrpcService.StatisticDuration value) {
        if (successBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          success_ = value;
          onChanged();
        } else {
          successBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration success
       *&#64;&#64;
       *&#64;&#64;     Cumulative count and duration for successful inference
       *&#64;&#64;     request.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration success = 1;</code>
       */
      public Builder setSuccess(
          GrpcService.StatisticDuration.Builder builderForValue) {
        if (successBuilder_ == null) {
          success_ = builderForValue.build();
          onChanged();
        } else {
          successBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration success
       *&#64;&#64;
       *&#64;&#64;     Cumulative count and duration for successful inference
       *&#64;&#64;     request.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration success = 1;</code>
       */
      public Builder mergeSuccess(GrpcService.StatisticDuration value) {
        if (successBuilder_ == null) {
          if (success_ != null) {
            success_ =
              GrpcService.StatisticDuration.newBuilder(success_).mergeFrom(value).buildPartial();
          } else {
            success_ = value;
          }
          onChanged();
        } else {
          successBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration success
       *&#64;&#64;
       *&#64;&#64;     Cumulative count and duration for successful inference
       *&#64;&#64;     request.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration success = 1;</code>
       */
      public Builder clearSuccess() {
        if (successBuilder_ == null) {
          success_ = null;
          onChanged();
        } else {
          success_ = null;
          successBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration success
       *&#64;&#64;
       *&#64;&#64;     Cumulative count and duration for successful inference
       *&#64;&#64;     request.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration success = 1;</code>
       */
      public GrpcService.StatisticDuration.Builder getSuccessBuilder() {

        onChanged();
        return getSuccessFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration success
       *&#64;&#64;
       *&#64;&#64;     Cumulative count and duration for successful inference
       *&#64;&#64;     request.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration success = 1;</code>
       */
      public GrpcService.StatisticDurationOrBuilder getSuccessOrBuilder() {
        if (successBuilder_ != null) {
          return successBuilder_.getMessageOrBuilder();
        } else {
          return success_ == null ?
              GrpcService.StatisticDuration.getDefaultInstance() : success_;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration success
       *&#64;&#64;
       *&#64;&#64;     Cumulative count and duration for successful inference
       *&#64;&#64;     request.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration success = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          GrpcService.StatisticDuration, GrpcService.StatisticDuration.Builder, GrpcService.StatisticDurationOrBuilder>
          getSuccessFieldBuilder() {
        if (successBuilder_ == null) {
          successBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              GrpcService.StatisticDuration, GrpcService.StatisticDuration.Builder, GrpcService.StatisticDurationOrBuilder>(
                  getSuccess(),
                  getParentForChildren(),
                  isClean());
          success_ = null;
        }
        return successBuilder_;
      }

      private GrpcService.StatisticDuration fail_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          GrpcService.StatisticDuration, GrpcService.StatisticDuration.Builder, GrpcService.StatisticDurationOrBuilder> failBuilder_;
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration fail
       *&#64;&#64;
       *&#64;&#64;     Cumulative count and duration for failed inference
       *&#64;&#64;     request.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration fail = 2;</code>
       */
      public boolean hasFail() {
        return failBuilder_ != null || fail_ != null;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration fail
       *&#64;&#64;
       *&#64;&#64;     Cumulative count and duration for failed inference
       *&#64;&#64;     request.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration fail = 2;</code>
       */
      public GrpcService.StatisticDuration getFail() {
        if (failBuilder_ == null) {
          return fail_ == null ? GrpcService.StatisticDuration.getDefaultInstance() : fail_;
        } else {
          return failBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration fail
       *&#64;&#64;
       *&#64;&#64;     Cumulative count and duration for failed inference
       *&#64;&#64;     request.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration fail = 2;</code>
       */
      public Builder setFail(GrpcService.StatisticDuration value) {
        if (failBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          fail_ = value;
          onChanged();
        } else {
          failBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration fail
       *&#64;&#64;
       *&#64;&#64;     Cumulative count and duration for failed inference
       *&#64;&#64;     request.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration fail = 2;</code>
       */
      public Builder setFail(
          GrpcService.StatisticDuration.Builder builderForValue) {
        if (failBuilder_ == null) {
          fail_ = builderForValue.build();
          onChanged();
        } else {
          failBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration fail
       *&#64;&#64;
       *&#64;&#64;     Cumulative count and duration for failed inference
       *&#64;&#64;     request.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration fail = 2;</code>
       */
      public Builder mergeFail(GrpcService.StatisticDuration value) {
        if (failBuilder_ == null) {
          if (fail_ != null) {
            fail_ =
              GrpcService.StatisticDuration.newBuilder(fail_).mergeFrom(value).buildPartial();
          } else {
            fail_ = value;
          }
          onChanged();
        } else {
          failBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration fail
       *&#64;&#64;
       *&#64;&#64;     Cumulative count and duration for failed inference
       *&#64;&#64;     request.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration fail = 2;</code>
       */
      public Builder clearFail() {
        if (failBuilder_ == null) {
          fail_ = null;
          onChanged();
        } else {
          fail_ = null;
          failBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration fail
       *&#64;&#64;
       *&#64;&#64;     Cumulative count and duration for failed inference
       *&#64;&#64;     request.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration fail = 2;</code>
       */
      public GrpcService.StatisticDuration.Builder getFailBuilder() {

        onChanged();
        return getFailFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration fail
       *&#64;&#64;
       *&#64;&#64;     Cumulative count and duration for failed inference
       *&#64;&#64;     request.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration fail = 2;</code>
       */
      public GrpcService.StatisticDurationOrBuilder getFailOrBuilder() {
        if (failBuilder_ != null) {
          return failBuilder_.getMessageOrBuilder();
        } else {
          return fail_ == null ?
              GrpcService.StatisticDuration.getDefaultInstance() : fail_;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration fail
       *&#64;&#64;
       *&#64;&#64;     Cumulative count and duration for failed inference
       *&#64;&#64;     request.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration fail = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          GrpcService.StatisticDuration, GrpcService.StatisticDuration.Builder, GrpcService.StatisticDurationOrBuilder>
          getFailFieldBuilder() {
        if (failBuilder_ == null) {
          failBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              GrpcService.StatisticDuration, GrpcService.StatisticDuration.Builder, GrpcService.StatisticDurationOrBuilder>(
                  getFail(),
                  getParentForChildren(),
                  isClean());
          fail_ = null;
        }
        return failBuilder_;
      }

      private GrpcService.StatisticDuration queue_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          GrpcService.StatisticDuration, GrpcService.StatisticDuration.Builder, GrpcService.StatisticDurationOrBuilder> queueBuilder_;
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration queue
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration that inference requests wait in
       *&#64;&#64;     scheduling or other queues.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration queue = 3;</code>
       */
      public boolean hasQueue() {
        return queueBuilder_ != null || queue_ != null;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration queue
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration that inference requests wait in
       *&#64;&#64;     scheduling or other queues.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration queue = 3;</code>
       */
      public GrpcService.StatisticDuration getQueue() {
        if (queueBuilder_ == null) {
          return queue_ == null ? GrpcService.StatisticDuration.getDefaultInstance() : queue_;
        } else {
          return queueBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration queue
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration that inference requests wait in
       *&#64;&#64;     scheduling or other queues.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration queue = 3;</code>
       */
      public Builder setQueue(GrpcService.StatisticDuration value) {
        if (queueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          queue_ = value;
          onChanged();
        } else {
          queueBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration queue
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration that inference requests wait in
       *&#64;&#64;     scheduling or other queues.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration queue = 3;</code>
       */
      public Builder setQueue(
          GrpcService.StatisticDuration.Builder builderForValue) {
        if (queueBuilder_ == null) {
          queue_ = builderForValue.build();
          onChanged();
        } else {
          queueBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration queue
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration that inference requests wait in
       *&#64;&#64;     scheduling or other queues.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration queue = 3;</code>
       */
      public Builder mergeQueue(GrpcService.StatisticDuration value) {
        if (queueBuilder_ == null) {
          if (queue_ != null) {
            queue_ =
              GrpcService.StatisticDuration.newBuilder(queue_).mergeFrom(value).buildPartial();
          } else {
            queue_ = value;
          }
          onChanged();
        } else {
          queueBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration queue
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration that inference requests wait in
       *&#64;&#64;     scheduling or other queues.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration queue = 3;</code>
       */
      public Builder clearQueue() {
        if (queueBuilder_ == null) {
          queue_ = null;
          onChanged();
        } else {
          queue_ = null;
          queueBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration queue
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration that inference requests wait in
       *&#64;&#64;     scheduling or other queues.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration queue = 3;</code>
       */
      public GrpcService.StatisticDuration.Builder getQueueBuilder() {

        onChanged();
        return getQueueFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration queue
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration that inference requests wait in
       *&#64;&#64;     scheduling or other queues.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration queue = 3;</code>
       */
      public GrpcService.StatisticDurationOrBuilder getQueueOrBuilder() {
        if (queueBuilder_ != null) {
          return queueBuilder_.getMessageOrBuilder();
        } else {
          return queue_ == null ?
              GrpcService.StatisticDuration.getDefaultInstance() : queue_;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration queue
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration that inference requests wait in
       *&#64;&#64;     scheduling or other queues.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration queue = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          GrpcService.StatisticDuration, GrpcService.StatisticDuration.Builder, GrpcService.StatisticDurationOrBuilder>
          getQueueFieldBuilder() {
        if (queueBuilder_ == null) {
          queueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              GrpcService.StatisticDuration, GrpcService.StatisticDuration.Builder, GrpcService.StatisticDurationOrBuilder>(
                  getQueue(),
                  getParentForChildren(),
                  isClean());
          queue_ = null;
        }
        return queueBuilder_;
      }

      private GrpcService.StatisticDuration computeInput_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          GrpcService.StatisticDuration, GrpcService.StatisticDuration.Builder, GrpcService.StatisticDurationOrBuilder> computeInputBuilder_;
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_input
       *&#64;&#64;
       *&#64;&#64;    The count and cumulative duration to prepare input tensor data as
       *&#64;&#64;    required by the model framework / backend. For example, this duration
       *&#64;&#64;    should include the time to copy input tensor data to the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_input = 4;</code>
       */
      public boolean hasComputeInput() {
        return computeInputBuilder_ != null || computeInput_ != null;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_input
       *&#64;&#64;
       *&#64;&#64;    The count and cumulative duration to prepare input tensor data as
       *&#64;&#64;    required by the model framework / backend. For example, this duration
       *&#64;&#64;    should include the time to copy input tensor data to the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_input = 4;</code>
       */
      public GrpcService.StatisticDuration getComputeInput() {
        if (computeInputBuilder_ == null) {
          return computeInput_ == null ? GrpcService.StatisticDuration.getDefaultInstance() : computeInput_;
        } else {
          return computeInputBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_input
       *&#64;&#64;
       *&#64;&#64;    The count and cumulative duration to prepare input tensor data as
       *&#64;&#64;    required by the model framework / backend. For example, this duration
       *&#64;&#64;    should include the time to copy input tensor data to the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_input = 4;</code>
       */
      public Builder setComputeInput(GrpcService.StatisticDuration value) {
        if (computeInputBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          computeInput_ = value;
          onChanged();
        } else {
          computeInputBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_input
       *&#64;&#64;
       *&#64;&#64;    The count and cumulative duration to prepare input tensor data as
       *&#64;&#64;    required by the model framework / backend. For example, this duration
       *&#64;&#64;    should include the time to copy input tensor data to the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_input = 4;</code>
       */
      public Builder setComputeInput(
          GrpcService.StatisticDuration.Builder builderForValue) {
        if (computeInputBuilder_ == null) {
          computeInput_ = builderForValue.build();
          onChanged();
        } else {
          computeInputBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_input
       *&#64;&#64;
       *&#64;&#64;    The count and cumulative duration to prepare input tensor data as
       *&#64;&#64;    required by the model framework / backend. For example, this duration
       *&#64;&#64;    should include the time to copy input tensor data to the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_input = 4;</code>
       */
      public Builder mergeComputeInput(GrpcService.StatisticDuration value) {
        if (computeInputBuilder_ == null) {
          if (computeInput_ != null) {
            computeInput_ =
              GrpcService.StatisticDuration.newBuilder(computeInput_).mergeFrom(value).buildPartial();
          } else {
            computeInput_ = value;
          }
          onChanged();
        } else {
          computeInputBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_input
       *&#64;&#64;
       *&#64;&#64;    The count and cumulative duration to prepare input tensor data as
       *&#64;&#64;    required by the model framework / backend. For example, this duration
       *&#64;&#64;    should include the time to copy input tensor data to the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_input = 4;</code>
       */
      public Builder clearComputeInput() {
        if (computeInputBuilder_ == null) {
          computeInput_ = null;
          onChanged();
        } else {
          computeInput_ = null;
          computeInputBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_input
       *&#64;&#64;
       *&#64;&#64;    The count and cumulative duration to prepare input tensor data as
       *&#64;&#64;    required by the model framework / backend. For example, this duration
       *&#64;&#64;    should include the time to copy input tensor data to the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_input = 4;</code>
       */
      public GrpcService.StatisticDuration.Builder getComputeInputBuilder() {

        onChanged();
        return getComputeInputFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_input
       *&#64;&#64;
       *&#64;&#64;    The count and cumulative duration to prepare input tensor data as
       *&#64;&#64;    required by the model framework / backend. For example, this duration
       *&#64;&#64;    should include the time to copy input tensor data to the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_input = 4;</code>
       */
      public GrpcService.StatisticDurationOrBuilder getComputeInputOrBuilder() {
        if (computeInputBuilder_ != null) {
          return computeInputBuilder_.getMessageOrBuilder();
        } else {
          return computeInput_ == null ?
              GrpcService.StatisticDuration.getDefaultInstance() : computeInput_;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_input
       *&#64;&#64;
       *&#64;&#64;    The count and cumulative duration to prepare input tensor data as
       *&#64;&#64;    required by the model framework / backend. For example, this duration
       *&#64;&#64;    should include the time to copy input tensor data to the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_input = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          GrpcService.StatisticDuration, GrpcService.StatisticDuration.Builder, GrpcService.StatisticDurationOrBuilder>
          getComputeInputFieldBuilder() {
        if (computeInputBuilder_ == null) {
          computeInputBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              GrpcService.StatisticDuration, GrpcService.StatisticDuration.Builder, GrpcService.StatisticDurationOrBuilder>(
                  getComputeInput(),
                  getParentForChildren(),
                  isClean());
          computeInput_ = null;
        }
        return computeInputBuilder_;
      }

      private GrpcService.StatisticDuration computeInfer_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          GrpcService.StatisticDuration, GrpcService.StatisticDuration.Builder, GrpcService.StatisticDurationOrBuilder> computeInferBuilder_;
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_infer
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to execute the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_infer = 5;</code>
       */
      public boolean hasComputeInfer() {
        return computeInferBuilder_ != null || computeInfer_ != null;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_infer
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to execute the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_infer = 5;</code>
       */
      public GrpcService.StatisticDuration getComputeInfer() {
        if (computeInferBuilder_ == null) {
          return computeInfer_ == null ? GrpcService.StatisticDuration.getDefaultInstance() : computeInfer_;
        } else {
          return computeInferBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_infer
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to execute the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_infer = 5;</code>
       */
      public Builder setComputeInfer(GrpcService.StatisticDuration value) {
        if (computeInferBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          computeInfer_ = value;
          onChanged();
        } else {
          computeInferBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_infer
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to execute the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_infer = 5;</code>
       */
      public Builder setComputeInfer(
          GrpcService.StatisticDuration.Builder builderForValue) {
        if (computeInferBuilder_ == null) {
          computeInfer_ = builderForValue.build();
          onChanged();
        } else {
          computeInferBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_infer
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to execute the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_infer = 5;</code>
       */
      public Builder mergeComputeInfer(GrpcService.StatisticDuration value) {
        if (computeInferBuilder_ == null) {
          if (computeInfer_ != null) {
            computeInfer_ =
              GrpcService.StatisticDuration.newBuilder(computeInfer_).mergeFrom(value).buildPartial();
          } else {
            computeInfer_ = value;
          }
          onChanged();
        } else {
          computeInferBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_infer
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to execute the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_infer = 5;</code>
       */
      public Builder clearComputeInfer() {
        if (computeInferBuilder_ == null) {
          computeInfer_ = null;
          onChanged();
        } else {
          computeInfer_ = null;
          computeInferBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_infer
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to execute the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_infer = 5;</code>
       */
      public GrpcService.StatisticDuration.Builder getComputeInferBuilder() {

        onChanged();
        return getComputeInferFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_infer
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to execute the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_infer = 5;</code>
       */
      public GrpcService.StatisticDurationOrBuilder getComputeInferOrBuilder() {
        if (computeInferBuilder_ != null) {
          return computeInferBuilder_.getMessageOrBuilder();
        } else {
          return computeInfer_ == null ?
              GrpcService.StatisticDuration.getDefaultInstance() : computeInfer_;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_infer
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to execute the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_infer = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          GrpcService.StatisticDuration, GrpcService.StatisticDuration.Builder, GrpcService.StatisticDurationOrBuilder>
          getComputeInferFieldBuilder() {
        if (computeInferBuilder_ == null) {
          computeInferBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              GrpcService.StatisticDuration, GrpcService.StatisticDuration.Builder, GrpcService.StatisticDurationOrBuilder>(
                  getComputeInfer(),
                  getParentForChildren(),
                  isClean());
          computeInfer_ = null;
        }
        return computeInferBuilder_;
      }

      private GrpcService.StatisticDuration computeOutput_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          GrpcService.StatisticDuration, GrpcService.StatisticDuration.Builder, GrpcService.StatisticDurationOrBuilder> computeOutputBuilder_;
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_output
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to extract output tensor data
       *&#64;&#64;     produced by the model framework / backend. For example, this duration
       *&#64;&#64;     should include the time to copy output tensor data from the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_output = 6;</code>
       */
      public boolean hasComputeOutput() {
        return computeOutputBuilder_ != null || computeOutput_ != null;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_output
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to extract output tensor data
       *&#64;&#64;     produced by the model framework / backend. For example, this duration
       *&#64;&#64;     should include the time to copy output tensor data from the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_output = 6;</code>
       */
      public GrpcService.StatisticDuration getComputeOutput() {
        if (computeOutputBuilder_ == null) {
          return computeOutput_ == null ? GrpcService.StatisticDuration.getDefaultInstance() : computeOutput_;
        } else {
          return computeOutputBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_output
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to extract output tensor data
       *&#64;&#64;     produced by the model framework / backend. For example, this duration
       *&#64;&#64;     should include the time to copy output tensor data from the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_output = 6;</code>
       */
      public Builder setComputeOutput(GrpcService.StatisticDuration value) {
        if (computeOutputBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          computeOutput_ = value;
          onChanged();
        } else {
          computeOutputBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_output
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to extract output tensor data
       *&#64;&#64;     produced by the model framework / backend. For example, this duration
       *&#64;&#64;     should include the time to copy output tensor data from the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_output = 6;</code>
       */
      public Builder setComputeOutput(
          GrpcService.StatisticDuration.Builder builderForValue) {
        if (computeOutputBuilder_ == null) {
          computeOutput_ = builderForValue.build();
          onChanged();
        } else {
          computeOutputBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_output
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to extract output tensor data
       *&#64;&#64;     produced by the model framework / backend. For example, this duration
       *&#64;&#64;     should include the time to copy output tensor data from the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_output = 6;</code>
       */
      public Builder mergeComputeOutput(GrpcService.StatisticDuration value) {
        if (computeOutputBuilder_ == null) {
          if (computeOutput_ != null) {
            computeOutput_ =
              GrpcService.StatisticDuration.newBuilder(computeOutput_).mergeFrom(value).buildPartial();
          } else {
            computeOutput_ = value;
          }
          onChanged();
        } else {
          computeOutputBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_output
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to extract output tensor data
       *&#64;&#64;     produced by the model framework / backend. For example, this duration
       *&#64;&#64;     should include the time to copy output tensor data from the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_output = 6;</code>
       */
      public Builder clearComputeOutput() {
        if (computeOutputBuilder_ == null) {
          computeOutput_ = null;
          onChanged();
        } else {
          computeOutput_ = null;
          computeOutputBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_output
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to extract output tensor data
       *&#64;&#64;     produced by the model framework / backend. For example, this duration
       *&#64;&#64;     should include the time to copy output tensor data from the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_output = 6;</code>
       */
      public GrpcService.StatisticDuration.Builder getComputeOutputBuilder() {

        onChanged();
        return getComputeOutputFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_output
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to extract output tensor data
       *&#64;&#64;     produced by the model framework / backend. For example, this duration
       *&#64;&#64;     should include the time to copy output tensor data from the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_output = 6;</code>
       */
      public GrpcService.StatisticDurationOrBuilder getComputeOutputOrBuilder() {
        if (computeOutputBuilder_ != null) {
          return computeOutputBuilder_.getMessageOrBuilder();
        } else {
          return computeOutput_ == null ?
              GrpcService.StatisticDuration.getDefaultInstance() : computeOutput_;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_output
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to extract output tensor data
       *&#64;&#64;     produced by the model framework / backend. For example, this duration
       *&#64;&#64;     should include the time to copy output tensor data from the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_output = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          GrpcService.StatisticDuration, GrpcService.StatisticDuration.Builder, GrpcService.StatisticDurationOrBuilder>
          getComputeOutputFieldBuilder() {
        if (computeOutputBuilder_ == null) {
          computeOutputBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              GrpcService.StatisticDuration, GrpcService.StatisticDuration.Builder, GrpcService.StatisticDurationOrBuilder>(
                  getComputeOutput(),
                  getParentForChildren(),
                  isClean());
          computeOutput_ = null;
        }
        return computeOutputBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.InferStatistics)
    }

    // @@protoc_insertion_point(class_scope:inference.InferStatistics)
    private static final GrpcService.InferStatistics DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.InferStatistics();
    }

    public static GrpcService.InferStatistics getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<InferStatistics>
        PARSER = new com.google.protobuf.AbstractParser<InferStatistics>() {
      public InferStatistics parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new InferStatistics(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<InferStatistics> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<InferStatistics> getParserForType() {
      return PARSER;
    }

    public GrpcService.InferStatistics getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface InferBatchStatisticsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.InferBatchStatistics)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: uint64 batch_size
     *&#64;&#64;
     *&#64;&#64;     The size of the batch.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional uint64 batch_size = 1;</code>
     */
    long getBatchSize();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_input
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration to prepare input tensor data as
     *&#64;&#64;     required by the model framework / backend with the given batch size.
     *&#64;&#64;     For example, this duration should include the time to copy input
     *&#64;&#64;     tensor data to the GPU.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_input = 2;</code>
     */
    boolean hasComputeInput();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_input
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration to prepare input tensor data as
     *&#64;&#64;     required by the model framework / backend with the given batch size.
     *&#64;&#64;     For example, this duration should include the time to copy input
     *&#64;&#64;     tensor data to the GPU.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_input = 2;</code>
     */
    GrpcService.StatisticDuration getComputeInput();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_input
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration to prepare input tensor data as
     *&#64;&#64;     required by the model framework / backend with the given batch size.
     *&#64;&#64;     For example, this duration should include the time to copy input
     *&#64;&#64;     tensor data to the GPU.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_input = 2;</code>
     */
    GrpcService.StatisticDurationOrBuilder getComputeInputOrBuilder();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_infer
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration to execute the model with the given
     *&#64;&#64;     batch size.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_infer = 3;</code>
     */
    boolean hasComputeInfer();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_infer
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration to execute the model with the given
     *&#64;&#64;     batch size.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_infer = 3;</code>
     */
    GrpcService.StatisticDuration getComputeInfer();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_infer
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration to execute the model with the given
     *&#64;&#64;     batch size.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_infer = 3;</code>
     */
    GrpcService.StatisticDurationOrBuilder getComputeInferOrBuilder();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_output
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration to extract output tensor data
     *&#64;&#64;     produced by the model framework / backend with the given batch size.
     *&#64;&#64;     For example, this duration should include the time to copy output
     *&#64;&#64;     tensor data from the GPU.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_output = 4;</code>
     */
    boolean hasComputeOutput();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_output
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration to extract output tensor data
     *&#64;&#64;     produced by the model framework / backend with the given batch size.
     *&#64;&#64;     For example, this duration should include the time to copy output
     *&#64;&#64;     tensor data from the GPU.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_output = 4;</code>
     */
    GrpcService.StatisticDuration getComputeOutput();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_output
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration to extract output tensor data
     *&#64;&#64;     produced by the model framework / backend with the given batch size.
     *&#64;&#64;     For example, this duration should include the time to copy output
     *&#64;&#64;     tensor data from the GPU.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_output = 4;</code>
     */
    GrpcService.StatisticDurationOrBuilder getComputeOutputOrBuilder();
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message InferBatchStatistics
   *&#64;&#64;
   *&#64;&#64;   Inference batch statistics.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.InferBatchStatistics}
   */
  public  static final class InferBatchStatistics extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.InferBatchStatistics)
      InferBatchStatisticsOrBuilder {
    // Use InferBatchStatistics.newBuilder() to construct.
    private InferBatchStatistics(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private InferBatchStatistics() {
      batchSize_ = 0L;
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private InferBatchStatistics(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 8: {

              batchSize_ = input.readUInt64();
              break;
            }
            case 18: {
              GrpcService.StatisticDuration.Builder subBuilder = null;
              if (computeInput_ != null) {
                subBuilder = computeInput_.toBuilder();
              }
              computeInput_ = input.readMessage(GrpcService.StatisticDuration.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(computeInput_);
                computeInput_ = subBuilder.buildPartial();
              }

              break;
            }
            case 26: {
              GrpcService.StatisticDuration.Builder subBuilder = null;
              if (computeInfer_ != null) {
                subBuilder = computeInfer_.toBuilder();
              }
              computeInfer_ = input.readMessage(GrpcService.StatisticDuration.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(computeInfer_);
                computeInfer_ = subBuilder.buildPartial();
              }

              break;
            }
            case 34: {
              GrpcService.StatisticDuration.Builder subBuilder = null;
              if (computeOutput_ != null) {
                subBuilder = computeOutput_.toBuilder();
              }
              computeOutput_ = input.readMessage(GrpcService.StatisticDuration.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(computeOutput_);
                computeOutput_ = subBuilder.buildPartial();
              }

              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_InferBatchStatistics_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_InferBatchStatistics_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.InferBatchStatistics.class, GrpcService.InferBatchStatistics.Builder.class);
    }

    public static final int BATCH_SIZE_FIELD_NUMBER = 1;
    private long batchSize_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: uint64 batch_size
     *&#64;&#64;
     *&#64;&#64;     The size of the batch.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional uint64 batch_size = 1;</code>
     */
    public long getBatchSize() {
      return batchSize_;
    }

    public static final int COMPUTE_INPUT_FIELD_NUMBER = 2;
    private GrpcService.StatisticDuration computeInput_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_input
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration to prepare input tensor data as
     *&#64;&#64;     required by the model framework / backend with the given batch size.
     *&#64;&#64;     For example, this duration should include the time to copy input
     *&#64;&#64;     tensor data to the GPU.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_input = 2;</code>
     */
    public boolean hasComputeInput() {
      return computeInput_ != null;
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_input
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration to prepare input tensor data as
     *&#64;&#64;     required by the model framework / backend with the given batch size.
     *&#64;&#64;     For example, this duration should include the time to copy input
     *&#64;&#64;     tensor data to the GPU.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_input = 2;</code>
     */
    public GrpcService.StatisticDuration getComputeInput() {
      return computeInput_ == null ? GrpcService.StatisticDuration.getDefaultInstance() : computeInput_;
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_input
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration to prepare input tensor data as
     *&#64;&#64;     required by the model framework / backend with the given batch size.
     *&#64;&#64;     For example, this duration should include the time to copy input
     *&#64;&#64;     tensor data to the GPU.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_input = 2;</code>
     */
    public GrpcService.StatisticDurationOrBuilder getComputeInputOrBuilder() {
      return getComputeInput();
    }

    public static final int COMPUTE_INFER_FIELD_NUMBER = 3;
    private GrpcService.StatisticDuration computeInfer_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_infer
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration to execute the model with the given
     *&#64;&#64;     batch size.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_infer = 3;</code>
     */
    public boolean hasComputeInfer() {
      return computeInfer_ != null;
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_infer
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration to execute the model with the given
     *&#64;&#64;     batch size.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_infer = 3;</code>
     */
    public GrpcService.StatisticDuration getComputeInfer() {
      return computeInfer_ == null ? GrpcService.StatisticDuration.getDefaultInstance() : computeInfer_;
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_infer
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration to execute the model with the given
     *&#64;&#64;     batch size.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_infer = 3;</code>
     */
    public GrpcService.StatisticDurationOrBuilder getComputeInferOrBuilder() {
      return getComputeInfer();
    }

    public static final int COMPUTE_OUTPUT_FIELD_NUMBER = 4;
    private GrpcService.StatisticDuration computeOutput_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_output
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration to extract output tensor data
     *&#64;&#64;     produced by the model framework / backend with the given batch size.
     *&#64;&#64;     For example, this duration should include the time to copy output
     *&#64;&#64;     tensor data from the GPU.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_output = 4;</code>
     */
    public boolean hasComputeOutput() {
      return computeOutput_ != null;
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_output
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration to extract output tensor data
     *&#64;&#64;     produced by the model framework / backend with the given batch size.
     *&#64;&#64;     For example, this duration should include the time to copy output
     *&#64;&#64;     tensor data from the GPU.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_output = 4;</code>
     */
    public GrpcService.StatisticDuration getComputeOutput() {
      return computeOutput_ == null ? GrpcService.StatisticDuration.getDefaultInstance() : computeOutput_;
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: StatisticDuration compute_output
     *&#64;&#64;
     *&#64;&#64;     The count and cumulative duration to extract output tensor data
     *&#64;&#64;     produced by the model framework / backend with the given batch size.
     *&#64;&#64;     For example, this duration should include the time to copy output
     *&#64;&#64;     tensor data from the GPU.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.StatisticDuration compute_output = 4;</code>
     */
    public GrpcService.StatisticDurationOrBuilder getComputeOutputOrBuilder() {
      return getComputeOutput();
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (batchSize_ != 0L) {
        output.writeUInt64(1, batchSize_);
      }
      if (computeInput_ != null) {
        output.writeMessage(2, getComputeInput());
      }
      if (computeInfer_ != null) {
        output.writeMessage(3, getComputeInfer());
      }
      if (computeOutput_ != null) {
        output.writeMessage(4, getComputeOutput());
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (batchSize_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, batchSize_);
      }
      if (computeInput_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getComputeInput());
      }
      if (computeInfer_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getComputeInfer());
      }
      if (computeOutput_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getComputeOutput());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.InferBatchStatistics)) {
        return super.equals(obj);
      }
      GrpcService.InferBatchStatistics other = (GrpcService.InferBatchStatistics) obj;

      boolean result = true;
      result = result && (getBatchSize()
          == other.getBatchSize());
      result = result && (hasComputeInput() == other.hasComputeInput());
      if (hasComputeInput()) {
        result = result && getComputeInput()
            .equals(other.getComputeInput());
      }
      result = result && (hasComputeInfer() == other.hasComputeInfer());
      if (hasComputeInfer()) {
        result = result && getComputeInfer()
            .equals(other.getComputeInfer());
      }
      result = result && (hasComputeOutput() == other.hasComputeOutput());
      if (hasComputeOutput()) {
        result = result && getComputeOutput()
            .equals(other.getComputeOutput());
      }
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (37 * hash) + BATCH_SIZE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getBatchSize());
      if (hasComputeInput()) {
        hash = (37 * hash) + COMPUTE_INPUT_FIELD_NUMBER;
        hash = (53 * hash) + getComputeInput().hashCode();
      }
      if (hasComputeInfer()) {
        hash = (37 * hash) + COMPUTE_INFER_FIELD_NUMBER;
        hash = (53 * hash) + getComputeInfer().hashCode();
      }
      if (hasComputeOutput()) {
        hash = (37 * hash) + COMPUTE_OUTPUT_FIELD_NUMBER;
        hash = (53 * hash) + getComputeOutput().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.InferBatchStatistics parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.InferBatchStatistics parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.InferBatchStatistics parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.InferBatchStatistics parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.InferBatchStatistics parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.InferBatchStatistics parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.InferBatchStatistics parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.InferBatchStatistics parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.InferBatchStatistics parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.InferBatchStatistics parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.InferBatchStatistics prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message InferBatchStatistics
     *&#64;&#64;
     *&#64;&#64;   Inference batch statistics.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.InferBatchStatistics}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.InferBatchStatistics)
        GrpcService.InferBatchStatisticsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_InferBatchStatistics_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_InferBatchStatistics_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.InferBatchStatistics.class, GrpcService.InferBatchStatistics.Builder.class);
      }

      // Construct using GrpcService.InferBatchStatistics.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        batchSize_ = 0L;

        if (computeInputBuilder_ == null) {
          computeInput_ = null;
        } else {
          computeInput_ = null;
          computeInputBuilder_ = null;
        }
        if (computeInferBuilder_ == null) {
          computeInfer_ = null;
        } else {
          computeInfer_ = null;
          computeInferBuilder_ = null;
        }
        if (computeOutputBuilder_ == null) {
          computeOutput_ = null;
        } else {
          computeOutput_ = null;
          computeOutputBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_InferBatchStatistics_descriptor;
      }

      public GrpcService.InferBatchStatistics getDefaultInstanceForType() {
        return GrpcService.InferBatchStatistics.getDefaultInstance();
      }

      public GrpcService.InferBatchStatistics build() {
        GrpcService.InferBatchStatistics result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.InferBatchStatistics buildPartial() {
        GrpcService.InferBatchStatistics result = new GrpcService.InferBatchStatistics(this);
        result.batchSize_ = batchSize_;
        if (computeInputBuilder_ == null) {
          result.computeInput_ = computeInput_;
        } else {
          result.computeInput_ = computeInputBuilder_.build();
        }
        if (computeInferBuilder_ == null) {
          result.computeInfer_ = computeInfer_;
        } else {
          result.computeInfer_ = computeInferBuilder_.build();
        }
        if (computeOutputBuilder_ == null) {
          result.computeOutput_ = computeOutput_;
        } else {
          result.computeOutput_ = computeOutputBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.InferBatchStatistics) {
          return mergeFrom((GrpcService.InferBatchStatistics)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.InferBatchStatistics other) {
        if (other == GrpcService.InferBatchStatistics.getDefaultInstance()) return this;
        if (other.getBatchSize() != 0L) {
          setBatchSize(other.getBatchSize());
        }
        if (other.hasComputeInput()) {
          mergeComputeInput(other.getComputeInput());
        }
        if (other.hasComputeInfer()) {
          mergeComputeInfer(other.getComputeInfer());
        }
        if (other.hasComputeOutput()) {
          mergeComputeOutput(other.getComputeOutput());
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.InferBatchStatistics parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.InferBatchStatistics) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private long batchSize_ ;
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: uint64 batch_size
       *&#64;&#64;
       *&#64;&#64;     The size of the batch.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 batch_size = 1;</code>
       */
      public long getBatchSize() {
        return batchSize_;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: uint64 batch_size
       *&#64;&#64;
       *&#64;&#64;     The size of the batch.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 batch_size = 1;</code>
       */
      public Builder setBatchSize(long value) {

        batchSize_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: uint64 batch_size
       *&#64;&#64;
       *&#64;&#64;     The size of the batch.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 batch_size = 1;</code>
       */
      public Builder clearBatchSize() {

        batchSize_ = 0L;
        onChanged();
        return this;
      }

      private GrpcService.StatisticDuration computeInput_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          GrpcService.StatisticDuration, GrpcService.StatisticDuration.Builder, GrpcService.StatisticDurationOrBuilder> computeInputBuilder_;
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_input
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to prepare input tensor data as
       *&#64;&#64;     required by the model framework / backend with the given batch size.
       *&#64;&#64;     For example, this duration should include the time to copy input
       *&#64;&#64;     tensor data to the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_input = 2;</code>
       */
      public boolean hasComputeInput() {
        return computeInputBuilder_ != null || computeInput_ != null;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_input
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to prepare input tensor data as
       *&#64;&#64;     required by the model framework / backend with the given batch size.
       *&#64;&#64;     For example, this duration should include the time to copy input
       *&#64;&#64;     tensor data to the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_input = 2;</code>
       */
      public GrpcService.StatisticDuration getComputeInput() {
        if (computeInputBuilder_ == null) {
          return computeInput_ == null ? GrpcService.StatisticDuration.getDefaultInstance() : computeInput_;
        } else {
          return computeInputBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_input
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to prepare input tensor data as
       *&#64;&#64;     required by the model framework / backend with the given batch size.
       *&#64;&#64;     For example, this duration should include the time to copy input
       *&#64;&#64;     tensor data to the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_input = 2;</code>
       */
      public Builder setComputeInput(GrpcService.StatisticDuration value) {
        if (computeInputBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          computeInput_ = value;
          onChanged();
        } else {
          computeInputBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_input
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to prepare input tensor data as
       *&#64;&#64;     required by the model framework / backend with the given batch size.
       *&#64;&#64;     For example, this duration should include the time to copy input
       *&#64;&#64;     tensor data to the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_input = 2;</code>
       */
      public Builder setComputeInput(
          GrpcService.StatisticDuration.Builder builderForValue) {
        if (computeInputBuilder_ == null) {
          computeInput_ = builderForValue.build();
          onChanged();
        } else {
          computeInputBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_input
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to prepare input tensor data as
       *&#64;&#64;     required by the model framework / backend with the given batch size.
       *&#64;&#64;     For example, this duration should include the time to copy input
       *&#64;&#64;     tensor data to the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_input = 2;</code>
       */
      public Builder mergeComputeInput(GrpcService.StatisticDuration value) {
        if (computeInputBuilder_ == null) {
          if (computeInput_ != null) {
            computeInput_ =
              GrpcService.StatisticDuration.newBuilder(computeInput_).mergeFrom(value).buildPartial();
          } else {
            computeInput_ = value;
          }
          onChanged();
        } else {
          computeInputBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_input
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to prepare input tensor data as
       *&#64;&#64;     required by the model framework / backend with the given batch size.
       *&#64;&#64;     For example, this duration should include the time to copy input
       *&#64;&#64;     tensor data to the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_input = 2;</code>
       */
      public Builder clearComputeInput() {
        if (computeInputBuilder_ == null) {
          computeInput_ = null;
          onChanged();
        } else {
          computeInput_ = null;
          computeInputBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_input
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to prepare input tensor data as
       *&#64;&#64;     required by the model framework / backend with the given batch size.
       *&#64;&#64;     For example, this duration should include the time to copy input
       *&#64;&#64;     tensor data to the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_input = 2;</code>
       */
      public GrpcService.StatisticDuration.Builder getComputeInputBuilder() {

        onChanged();
        return getComputeInputFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_input
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to prepare input tensor data as
       *&#64;&#64;     required by the model framework / backend with the given batch size.
       *&#64;&#64;     For example, this duration should include the time to copy input
       *&#64;&#64;     tensor data to the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_input = 2;</code>
       */
      public GrpcService.StatisticDurationOrBuilder getComputeInputOrBuilder() {
        if (computeInputBuilder_ != null) {
          return computeInputBuilder_.getMessageOrBuilder();
        } else {
          return computeInput_ == null ?
              GrpcService.StatisticDuration.getDefaultInstance() : computeInput_;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_input
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to prepare input tensor data as
       *&#64;&#64;     required by the model framework / backend with the given batch size.
       *&#64;&#64;     For example, this duration should include the time to copy input
       *&#64;&#64;     tensor data to the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_input = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          GrpcService.StatisticDuration, GrpcService.StatisticDuration.Builder, GrpcService.StatisticDurationOrBuilder>
          getComputeInputFieldBuilder() {
        if (computeInputBuilder_ == null) {
          computeInputBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              GrpcService.StatisticDuration, GrpcService.StatisticDuration.Builder, GrpcService.StatisticDurationOrBuilder>(
                  getComputeInput(),
                  getParentForChildren(),
                  isClean());
          computeInput_ = null;
        }
        return computeInputBuilder_;
      }

      private GrpcService.StatisticDuration computeInfer_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          GrpcService.StatisticDuration, GrpcService.StatisticDuration.Builder, GrpcService.StatisticDurationOrBuilder> computeInferBuilder_;
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_infer
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to execute the model with the given
       *&#64;&#64;     batch size.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_infer = 3;</code>
       */
      public boolean hasComputeInfer() {
        return computeInferBuilder_ != null || computeInfer_ != null;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_infer
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to execute the model with the given
       *&#64;&#64;     batch size.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_infer = 3;</code>
       */
      public GrpcService.StatisticDuration getComputeInfer() {
        if (computeInferBuilder_ == null) {
          return computeInfer_ == null ? GrpcService.StatisticDuration.getDefaultInstance() : computeInfer_;
        } else {
          return computeInferBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_infer
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to execute the model with the given
       *&#64;&#64;     batch size.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_infer = 3;</code>
       */
      public Builder setComputeInfer(GrpcService.StatisticDuration value) {
        if (computeInferBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          computeInfer_ = value;
          onChanged();
        } else {
          computeInferBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_infer
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to execute the model with the given
       *&#64;&#64;     batch size.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_infer = 3;</code>
       */
      public Builder setComputeInfer(
          GrpcService.StatisticDuration.Builder builderForValue) {
        if (computeInferBuilder_ == null) {
          computeInfer_ = builderForValue.build();
          onChanged();
        } else {
          computeInferBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_infer
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to execute the model with the given
       *&#64;&#64;     batch size.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_infer = 3;</code>
       */
      public Builder mergeComputeInfer(GrpcService.StatisticDuration value) {
        if (computeInferBuilder_ == null) {
          if (computeInfer_ != null) {
            computeInfer_ =
              GrpcService.StatisticDuration.newBuilder(computeInfer_).mergeFrom(value).buildPartial();
          } else {
            computeInfer_ = value;
          }
          onChanged();
        } else {
          computeInferBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_infer
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to execute the model with the given
       *&#64;&#64;     batch size.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_infer = 3;</code>
       */
      public Builder clearComputeInfer() {
        if (computeInferBuilder_ == null) {
          computeInfer_ = null;
          onChanged();
        } else {
          computeInfer_ = null;
          computeInferBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_infer
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to execute the model with the given
       *&#64;&#64;     batch size.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_infer = 3;</code>
       */
      public GrpcService.StatisticDuration.Builder getComputeInferBuilder() {

        onChanged();
        return getComputeInferFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_infer
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to execute the model with the given
       *&#64;&#64;     batch size.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_infer = 3;</code>
       */
      public GrpcService.StatisticDurationOrBuilder getComputeInferOrBuilder() {
        if (computeInferBuilder_ != null) {
          return computeInferBuilder_.getMessageOrBuilder();
        } else {
          return computeInfer_ == null ?
              GrpcService.StatisticDuration.getDefaultInstance() : computeInfer_;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_infer
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to execute the model with the given
       *&#64;&#64;     batch size.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_infer = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          GrpcService.StatisticDuration, GrpcService.StatisticDuration.Builder, GrpcService.StatisticDurationOrBuilder>
          getComputeInferFieldBuilder() {
        if (computeInferBuilder_ == null) {
          computeInferBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              GrpcService.StatisticDuration, GrpcService.StatisticDuration.Builder, GrpcService.StatisticDurationOrBuilder>(
                  getComputeInfer(),
                  getParentForChildren(),
                  isClean());
          computeInfer_ = null;
        }
        return computeInferBuilder_;
      }

      private GrpcService.StatisticDuration computeOutput_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          GrpcService.StatisticDuration, GrpcService.StatisticDuration.Builder, GrpcService.StatisticDurationOrBuilder> computeOutputBuilder_;
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_output
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to extract output tensor data
       *&#64;&#64;     produced by the model framework / backend with the given batch size.
       *&#64;&#64;     For example, this duration should include the time to copy output
       *&#64;&#64;     tensor data from the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_output = 4;</code>
       */
      public boolean hasComputeOutput() {
        return computeOutputBuilder_ != null || computeOutput_ != null;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_output
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to extract output tensor data
       *&#64;&#64;     produced by the model framework / backend with the given batch size.
       *&#64;&#64;     For example, this duration should include the time to copy output
       *&#64;&#64;     tensor data from the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_output = 4;</code>
       */
      public GrpcService.StatisticDuration getComputeOutput() {
        if (computeOutputBuilder_ == null) {
          return computeOutput_ == null ? GrpcService.StatisticDuration.getDefaultInstance() : computeOutput_;
        } else {
          return computeOutputBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_output
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to extract output tensor data
       *&#64;&#64;     produced by the model framework / backend with the given batch size.
       *&#64;&#64;     For example, this duration should include the time to copy output
       *&#64;&#64;     tensor data from the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_output = 4;</code>
       */
      public Builder setComputeOutput(GrpcService.StatisticDuration value) {
        if (computeOutputBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          computeOutput_ = value;
          onChanged();
        } else {
          computeOutputBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_output
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to extract output tensor data
       *&#64;&#64;     produced by the model framework / backend with the given batch size.
       *&#64;&#64;     For example, this duration should include the time to copy output
       *&#64;&#64;     tensor data from the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_output = 4;</code>
       */
      public Builder setComputeOutput(
          GrpcService.StatisticDuration.Builder builderForValue) {
        if (computeOutputBuilder_ == null) {
          computeOutput_ = builderForValue.build();
          onChanged();
        } else {
          computeOutputBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_output
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to extract output tensor data
       *&#64;&#64;     produced by the model framework / backend with the given batch size.
       *&#64;&#64;     For example, this duration should include the time to copy output
       *&#64;&#64;     tensor data from the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_output = 4;</code>
       */
      public Builder mergeComputeOutput(GrpcService.StatisticDuration value) {
        if (computeOutputBuilder_ == null) {
          if (computeOutput_ != null) {
            computeOutput_ =
              GrpcService.StatisticDuration.newBuilder(computeOutput_).mergeFrom(value).buildPartial();
          } else {
            computeOutput_ = value;
          }
          onChanged();
        } else {
          computeOutputBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_output
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to extract output tensor data
       *&#64;&#64;     produced by the model framework / backend with the given batch size.
       *&#64;&#64;     For example, this duration should include the time to copy output
       *&#64;&#64;     tensor data from the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_output = 4;</code>
       */
      public Builder clearComputeOutput() {
        if (computeOutputBuilder_ == null) {
          computeOutput_ = null;
          onChanged();
        } else {
          computeOutput_ = null;
          computeOutputBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_output
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to extract output tensor data
       *&#64;&#64;     produced by the model framework / backend with the given batch size.
       *&#64;&#64;     For example, this duration should include the time to copy output
       *&#64;&#64;     tensor data from the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_output = 4;</code>
       */
      public GrpcService.StatisticDuration.Builder getComputeOutputBuilder() {

        onChanged();
        return getComputeOutputFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_output
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to extract output tensor data
       *&#64;&#64;     produced by the model framework / backend with the given batch size.
       *&#64;&#64;     For example, this duration should include the time to copy output
       *&#64;&#64;     tensor data from the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_output = 4;</code>
       */
      public GrpcService.StatisticDurationOrBuilder getComputeOutputOrBuilder() {
        if (computeOutputBuilder_ != null) {
          return computeOutputBuilder_.getMessageOrBuilder();
        } else {
          return computeOutput_ == null ?
              GrpcService.StatisticDuration.getDefaultInstance() : computeOutput_;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: StatisticDuration compute_output
       *&#64;&#64;
       *&#64;&#64;     The count and cumulative duration to extract output tensor data
       *&#64;&#64;     produced by the model framework / backend with the given batch size.
       *&#64;&#64;     For example, this duration should include the time to copy output
       *&#64;&#64;     tensor data from the GPU.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.StatisticDuration compute_output = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          GrpcService.StatisticDuration, GrpcService.StatisticDuration.Builder, GrpcService.StatisticDurationOrBuilder>
          getComputeOutputFieldBuilder() {
        if (computeOutputBuilder_ == null) {
          computeOutputBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              GrpcService.StatisticDuration, GrpcService.StatisticDuration.Builder, GrpcService.StatisticDurationOrBuilder>(
                  getComputeOutput(),
                  getParentForChildren(),
                  isClean());
          computeOutput_ = null;
        }
        return computeOutputBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.InferBatchStatistics)
    }

    // @@protoc_insertion_point(class_scope:inference.InferBatchStatistics)
    private static final GrpcService.InferBatchStatistics DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.InferBatchStatistics();
    }

    public static GrpcService.InferBatchStatistics getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<InferBatchStatistics>
        PARSER = new com.google.protobuf.AbstractParser<InferBatchStatistics>() {
      public InferBatchStatistics parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new InferBatchStatistics(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<InferBatchStatistics> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<InferBatchStatistics> getParserForType() {
      return PARSER;
    }

    public GrpcService.InferBatchStatistics getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ModelStatisticsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.ModelStatistics)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the model. If not given returns statistics for all
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    String getName();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the model. If not given returns statistics for all
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string version
     *&#64;&#64;
     *&#64;&#64;     The version of the model.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string version = 2;</code>
     */
    String getVersion();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string version
     *&#64;&#64;
     *&#64;&#64;     The version of the model.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string version = 2;</code>
     */
    com.google.protobuf.ByteString
        getVersionBytes();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: uint64 last_inference
     *&#64;&#64;
     *&#64;&#64;     The timestamp of the last inference request made for this model,
     *&#64;&#64;     as milliseconds since the epoch.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional uint64 last_inference = 3;</code>
     */
    long getLastInference();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: uint64 last_inference
     *&#64;&#64;
     *&#64;&#64;     The cumulative count of successful inference requests made for this
     *&#64;&#64;     model. Each inference in a batched request is counted as an
     *&#64;&#64;     individual inference. For example, if a client sends a single
     *&#64;&#64;     inference request with batch size 64, "inference_count" will be
     *&#64;&#64;     incremented by 64. Similarly, if a clients sends 64 individual
     *&#64;&#64;     requests each with batch size 1, "inference_count" will be
     *&#64;&#64;     incremented by 64.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional uint64 inference_count = 4;</code>
     */
    long getInferenceCount();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: uint64 last_inference
     *&#64;&#64;
     *&#64;&#64;     The cumulative count of the number of successful inference executions
     *&#64;&#64;     performed for the model. When dynamic batching is enabled, a single
     *&#64;&#64;     model execution can perform inferencing for more than one inference
     *&#64;&#64;     request. For example, if a clients sends 64 individual requests each
     *&#64;&#64;     with batch size 1 and the dynamic batcher batches them into a single
     *&#64;&#64;     large batch for model execution then "execution_count" will be
     *&#64;&#64;     incremented by 1. If, on the other hand, the dynamic batcher is not
     *&#64;&#64;     enabled for that each of the 64 individual requests is executed
     *&#64;&#64;     independently, then "execution_count" will be incremented by 64.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional uint64 execution_count = 5;</code>
     */
    long getExecutionCount();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: InferStatistics inference_stats
     *&#64;&#64;
     *&#64;&#64;     The aggregate statistics for the model/version.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.InferStatistics inference_stats = 6;</code>
     */
    boolean hasInferenceStats();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: InferStatistics inference_stats
     *&#64;&#64;
     *&#64;&#64;     The aggregate statistics for the model/version.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.InferStatistics inference_stats = 6;</code>
     */
    GrpcService.InferStatistics getInferenceStats();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: InferStatistics inference_stats
     *&#64;&#64;
     *&#64;&#64;     The aggregate statistics for the model/version.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.InferStatistics inference_stats = 6;</code>
     */
    GrpcService.InferStatisticsOrBuilder getInferenceStatsOrBuilder();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: InferBatchStatistics batch_stats (repeated)
     *&#64;&#64;
     *&#64;&#64;     The aggregate statistics for each different batch size that is
     *&#64;&#64;     executed in the model. The batch statistics indicate how many actual
     *&#64;&#64;     model executions were performed and show differences due to different
     *&#64;&#64;     batch size (for example, larger batches typically take longer to
     *&#64;&#64;     compute).
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.InferBatchStatistics batch_stats = 7;</code>
     */
    java.util.List<GrpcService.InferBatchStatistics>
        getBatchStatsList();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: InferBatchStatistics batch_stats (repeated)
     *&#64;&#64;
     *&#64;&#64;     The aggregate statistics for each different batch size that is
     *&#64;&#64;     executed in the model. The batch statistics indicate how many actual
     *&#64;&#64;     model executions were performed and show differences due to different
     *&#64;&#64;     batch size (for example, larger batches typically take longer to
     *&#64;&#64;     compute).
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.InferBatchStatistics batch_stats = 7;</code>
     */
    GrpcService.InferBatchStatistics getBatchStats(int index);
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: InferBatchStatistics batch_stats (repeated)
     *&#64;&#64;
     *&#64;&#64;     The aggregate statistics for each different batch size that is
     *&#64;&#64;     executed in the model. The batch statistics indicate how many actual
     *&#64;&#64;     model executions were performed and show differences due to different
     *&#64;&#64;     batch size (for example, larger batches typically take longer to
     *&#64;&#64;     compute).
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.InferBatchStatistics batch_stats = 7;</code>
     */
    int getBatchStatsCount();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: InferBatchStatistics batch_stats (repeated)
     *&#64;&#64;
     *&#64;&#64;     The aggregate statistics for each different batch size that is
     *&#64;&#64;     executed in the model. The batch statistics indicate how many actual
     *&#64;&#64;     model executions were performed and show differences due to different
     *&#64;&#64;     batch size (for example, larger batches typically take longer to
     *&#64;&#64;     compute).
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.InferBatchStatistics batch_stats = 7;</code>
     */
    java.util.List<? extends GrpcService.InferBatchStatisticsOrBuilder>
        getBatchStatsOrBuilderList();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: InferBatchStatistics batch_stats (repeated)
     *&#64;&#64;
     *&#64;&#64;     The aggregate statistics for each different batch size that is
     *&#64;&#64;     executed in the model. The batch statistics indicate how many actual
     *&#64;&#64;     model executions were performed and show differences due to different
     *&#64;&#64;     batch size (for example, larger batches typically take longer to
     *&#64;&#64;     compute).
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.InferBatchStatistics batch_stats = 7;</code>
     */
    GrpcService.InferBatchStatisticsOrBuilder getBatchStatsOrBuilder(
            int index);
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message ModelStatistics
   *&#64;&#64;
   *&#64;&#64;   Statistics for a specific model and version.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.ModelStatistics}
   */
  public  static final class ModelStatistics extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.ModelStatistics)
      ModelStatisticsOrBuilder {
    // Use ModelStatistics.newBuilder() to construct.
    private ModelStatistics(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ModelStatistics() {
      name_ = "";
      version_ = "";
      lastInference_ = 0L;
      inferenceCount_ = 0L;
      executionCount_ = 0L;
      batchStats_ = java.util.Collections.emptyList();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ModelStatistics(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              String s = input.readStringRequireUtf8();

              name_ = s;
              break;
            }
            case 18: {
              String s = input.readStringRequireUtf8();

              version_ = s;
              break;
            }
            case 24: {

              lastInference_ = input.readUInt64();
              break;
            }
            case 32: {

              inferenceCount_ = input.readUInt64();
              break;
            }
            case 40: {

              executionCount_ = input.readUInt64();
              break;
            }
            case 50: {
              GrpcService.InferStatistics.Builder subBuilder = null;
              if (inferenceStats_ != null) {
                subBuilder = inferenceStats_.toBuilder();
              }
              inferenceStats_ = input.readMessage(GrpcService.InferStatistics.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(inferenceStats_);
                inferenceStats_ = subBuilder.buildPartial();
              }

              break;
            }
            case 58: {
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                batchStats_ = new java.util.ArrayList<GrpcService.InferBatchStatistics>();
                mutable_bitField0_ |= 0x00000040;
              }
              batchStats_.add(
                  input.readMessage(GrpcService.InferBatchStatistics.parser(), extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
          batchStats_ = java.util.Collections.unmodifiableList(batchStats_);
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_ModelStatistics_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_ModelStatistics_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.ModelStatistics.class, GrpcService.ModelStatistics.Builder.class);
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    private volatile Object name_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the model. If not given returns statistics for all
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    public String getName() {
      Object ref = name_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the model. If not given returns statistics for all
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      Object ref = name_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VERSION_FIELD_NUMBER = 2;
    private volatile Object version_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string version
     *&#64;&#64;
     *&#64;&#64;     The version of the model.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string version = 2;</code>
     */
    public String getVersion() {
      Object ref = version_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        version_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string version
     *&#64;&#64;
     *&#64;&#64;     The version of the model.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string version = 2;</code>
     */
    public com.google.protobuf.ByteString
        getVersionBytes() {
      Object ref = version_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        version_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LAST_INFERENCE_FIELD_NUMBER = 3;
    private long lastInference_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: uint64 last_inference
     *&#64;&#64;
     *&#64;&#64;     The timestamp of the last inference request made for this model,
     *&#64;&#64;     as milliseconds since the epoch.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional uint64 last_inference = 3;</code>
     */
    public long getLastInference() {
      return lastInference_;
    }

    public static final int INFERENCE_COUNT_FIELD_NUMBER = 4;
    private long inferenceCount_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: uint64 last_inference
     *&#64;&#64;
     *&#64;&#64;     The cumulative count of successful inference requests made for this
     *&#64;&#64;     model. Each inference in a batched request is counted as an
     *&#64;&#64;     individual inference. For example, if a client sends a single
     *&#64;&#64;     inference request with batch size 64, "inference_count" will be
     *&#64;&#64;     incremented by 64. Similarly, if a clients sends 64 individual
     *&#64;&#64;     requests each with batch size 1, "inference_count" will be
     *&#64;&#64;     incremented by 64.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional uint64 inference_count = 4;</code>
     */
    public long getInferenceCount() {
      return inferenceCount_;
    }

    public static final int EXECUTION_COUNT_FIELD_NUMBER = 5;
    private long executionCount_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: uint64 last_inference
     *&#64;&#64;
     *&#64;&#64;     The cumulative count of the number of successful inference executions
     *&#64;&#64;     performed for the model. When dynamic batching is enabled, a single
     *&#64;&#64;     model execution can perform inferencing for more than one inference
     *&#64;&#64;     request. For example, if a clients sends 64 individual requests each
     *&#64;&#64;     with batch size 1 and the dynamic batcher batches them into a single
     *&#64;&#64;     large batch for model execution then "execution_count" will be
     *&#64;&#64;     incremented by 1. If, on the other hand, the dynamic batcher is not
     *&#64;&#64;     enabled for that each of the 64 individual requests is executed
     *&#64;&#64;     independently, then "execution_count" will be incremented by 64.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional uint64 execution_count = 5;</code>
     */
    public long getExecutionCount() {
      return executionCount_;
    }

    public static final int INFERENCE_STATS_FIELD_NUMBER = 6;
    private GrpcService.InferStatistics inferenceStats_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: InferStatistics inference_stats
     *&#64;&#64;
     *&#64;&#64;     The aggregate statistics for the model/version.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.InferStatistics inference_stats = 6;</code>
     */
    public boolean hasInferenceStats() {
      return inferenceStats_ != null;
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: InferStatistics inference_stats
     *&#64;&#64;
     *&#64;&#64;     The aggregate statistics for the model/version.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.InferStatistics inference_stats = 6;</code>
     */
    public GrpcService.InferStatistics getInferenceStats() {
      return inferenceStats_ == null ? GrpcService.InferStatistics.getDefaultInstance() : inferenceStats_;
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: InferStatistics inference_stats
     *&#64;&#64;
     *&#64;&#64;     The aggregate statistics for the model/version.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional .inference.InferStatistics inference_stats = 6;</code>
     */
    public GrpcService.InferStatisticsOrBuilder getInferenceStatsOrBuilder() {
      return getInferenceStats();
    }

    public static final int BATCH_STATS_FIELD_NUMBER = 7;
    private java.util.List<GrpcService.InferBatchStatistics> batchStats_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: InferBatchStatistics batch_stats (repeated)
     *&#64;&#64;
     *&#64;&#64;     The aggregate statistics for each different batch size that is
     *&#64;&#64;     executed in the model. The batch statistics indicate how many actual
     *&#64;&#64;     model executions were performed and show differences due to different
     *&#64;&#64;     batch size (for example, larger batches typically take longer to
     *&#64;&#64;     compute).
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.InferBatchStatistics batch_stats = 7;</code>
     */
    public java.util.List<GrpcService.InferBatchStatistics> getBatchStatsList() {
      return batchStats_;
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: InferBatchStatistics batch_stats (repeated)
     *&#64;&#64;
     *&#64;&#64;     The aggregate statistics for each different batch size that is
     *&#64;&#64;     executed in the model. The batch statistics indicate how many actual
     *&#64;&#64;     model executions were performed and show differences due to different
     *&#64;&#64;     batch size (for example, larger batches typically take longer to
     *&#64;&#64;     compute).
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.InferBatchStatistics batch_stats = 7;</code>
     */
    public java.util.List<? extends GrpcService.InferBatchStatisticsOrBuilder>
        getBatchStatsOrBuilderList() {
      return batchStats_;
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: InferBatchStatistics batch_stats (repeated)
     *&#64;&#64;
     *&#64;&#64;     The aggregate statistics for each different batch size that is
     *&#64;&#64;     executed in the model. The batch statistics indicate how many actual
     *&#64;&#64;     model executions were performed and show differences due to different
     *&#64;&#64;     batch size (for example, larger batches typically take longer to
     *&#64;&#64;     compute).
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.InferBatchStatistics batch_stats = 7;</code>
     */
    public int getBatchStatsCount() {
      return batchStats_.size();
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: InferBatchStatistics batch_stats (repeated)
     *&#64;&#64;
     *&#64;&#64;     The aggregate statistics for each different batch size that is
     *&#64;&#64;     executed in the model. The batch statistics indicate how many actual
     *&#64;&#64;     model executions were performed and show differences due to different
     *&#64;&#64;     batch size (for example, larger batches typically take longer to
     *&#64;&#64;     compute).
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.InferBatchStatistics batch_stats = 7;</code>
     */
    public GrpcService.InferBatchStatistics getBatchStats(int index) {
      return batchStats_.get(index);
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: InferBatchStatistics batch_stats (repeated)
     *&#64;&#64;
     *&#64;&#64;     The aggregate statistics for each different batch size that is
     *&#64;&#64;     executed in the model. The batch statistics indicate how many actual
     *&#64;&#64;     model executions were performed and show differences due to different
     *&#64;&#64;     batch size (for example, larger batches typically take longer to
     *&#64;&#64;     compute).
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.InferBatchStatistics batch_stats = 7;</code>
     */
    public GrpcService.InferBatchStatisticsOrBuilder getBatchStatsOrBuilder(
        int index) {
      return batchStats_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (!getVersionBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, version_);
      }
      if (lastInference_ != 0L) {
        output.writeUInt64(3, lastInference_);
      }
      if (inferenceCount_ != 0L) {
        output.writeUInt64(4, inferenceCount_);
      }
      if (executionCount_ != 0L) {
        output.writeUInt64(5, executionCount_);
      }
      if (inferenceStats_ != null) {
        output.writeMessage(6, getInferenceStats());
      }
      for (int i = 0; i < batchStats_.size(); i++) {
        output.writeMessage(7, batchStats_.get(i));
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (!getVersionBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, version_);
      }
      if (lastInference_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(3, lastInference_);
      }
      if (inferenceCount_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(4, inferenceCount_);
      }
      if (executionCount_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(5, executionCount_);
      }
      if (inferenceStats_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getInferenceStats());
      }
      for (int i = 0; i < batchStats_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, batchStats_.get(i));
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.ModelStatistics)) {
        return super.equals(obj);
      }
      GrpcService.ModelStatistics other = (GrpcService.ModelStatistics) obj;

      boolean result = true;
      result = result && getName()
          .equals(other.getName());
      result = result && getVersion()
          .equals(other.getVersion());
      result = result && (getLastInference()
          == other.getLastInference());
      result = result && (getInferenceCount()
          == other.getInferenceCount());
      result = result && (getExecutionCount()
          == other.getExecutionCount());
      result = result && (hasInferenceStats() == other.hasInferenceStats());
      if (hasInferenceStats()) {
        result = result && getInferenceStats()
            .equals(other.getInferenceStats());
      }
      result = result && getBatchStatsList()
          .equals(other.getBatchStatsList());
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getVersion().hashCode();
      hash = (37 * hash) + LAST_INFERENCE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getLastInference());
      hash = (37 * hash) + INFERENCE_COUNT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getInferenceCount());
      hash = (37 * hash) + EXECUTION_COUNT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getExecutionCount());
      if (hasInferenceStats()) {
        hash = (37 * hash) + INFERENCE_STATS_FIELD_NUMBER;
        hash = (53 * hash) + getInferenceStats().hashCode();
      }
      if (getBatchStatsCount() > 0) {
        hash = (37 * hash) + BATCH_STATS_FIELD_NUMBER;
        hash = (53 * hash) + getBatchStatsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.ModelStatistics parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ModelStatistics parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ModelStatistics parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ModelStatistics parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ModelStatistics parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ModelStatistics parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ModelStatistics parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.ModelStatistics parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ModelStatistics parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ModelStatistics parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.ModelStatistics prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message ModelStatistics
     *&#64;&#64;
     *&#64;&#64;   Statistics for a specific model and version.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.ModelStatistics}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.ModelStatistics)
        GrpcService.ModelStatisticsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_ModelStatistics_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_ModelStatistics_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.ModelStatistics.class, GrpcService.ModelStatistics.Builder.class);
      }

      // Construct using GrpcService.ModelStatistics.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getBatchStatsFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        name_ = "";

        version_ = "";

        lastInference_ = 0L;

        inferenceCount_ = 0L;

        executionCount_ = 0L;

        if (inferenceStatsBuilder_ == null) {
          inferenceStats_ = null;
        } else {
          inferenceStats_ = null;
          inferenceStatsBuilder_ = null;
        }
        if (batchStatsBuilder_ == null) {
          batchStats_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
        } else {
          batchStatsBuilder_.clear();
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_ModelStatistics_descriptor;
      }

      public GrpcService.ModelStatistics getDefaultInstanceForType() {
        return GrpcService.ModelStatistics.getDefaultInstance();
      }

      public GrpcService.ModelStatistics build() {
        GrpcService.ModelStatistics result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.ModelStatistics buildPartial() {
        GrpcService.ModelStatistics result = new GrpcService.ModelStatistics(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        result.name_ = name_;
        result.version_ = version_;
        result.lastInference_ = lastInference_;
        result.inferenceCount_ = inferenceCount_;
        result.executionCount_ = executionCount_;
        if (inferenceStatsBuilder_ == null) {
          result.inferenceStats_ = inferenceStats_;
        } else {
          result.inferenceStats_ = inferenceStatsBuilder_.build();
        }
        if (batchStatsBuilder_ == null) {
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            batchStats_ = java.util.Collections.unmodifiableList(batchStats_);
            bitField0_ = (bitField0_ & ~0x00000040);
          }
          result.batchStats_ = batchStats_;
        } else {
          result.batchStats_ = batchStatsBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.ModelStatistics) {
          return mergeFrom((GrpcService.ModelStatistics)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.ModelStatistics other) {
        if (other == GrpcService.ModelStatistics.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (!other.getVersion().isEmpty()) {
          version_ = other.version_;
          onChanged();
        }
        if (other.getLastInference() != 0L) {
          setLastInference(other.getLastInference());
        }
        if (other.getInferenceCount() != 0L) {
          setInferenceCount(other.getInferenceCount());
        }
        if (other.getExecutionCount() != 0L) {
          setExecutionCount(other.getExecutionCount());
        }
        if (other.hasInferenceStats()) {
          mergeInferenceStats(other.getInferenceStats());
        }
        if (batchStatsBuilder_ == null) {
          if (!other.batchStats_.isEmpty()) {
            if (batchStats_.isEmpty()) {
              batchStats_ = other.batchStats_;
              bitField0_ = (bitField0_ & ~0x00000040);
            } else {
              ensureBatchStatsIsMutable();
              batchStats_.addAll(other.batchStats_);
            }
            onChanged();
          }
        } else {
          if (!other.batchStats_.isEmpty()) {
            if (batchStatsBuilder_.isEmpty()) {
              batchStatsBuilder_.dispose();
              batchStatsBuilder_ = null;
              batchStats_ = other.batchStats_;
              bitField0_ = (bitField0_ & ~0x00000040);
              batchStatsBuilder_ =
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getBatchStatsFieldBuilder() : null;
            } else {
              batchStatsBuilder_.addAllMessages(other.batchStats_);
            }
          }
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.ModelStatistics parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.ModelStatistics) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private Object name_ = "";
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the model. If not given returns statistics for all
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public String getName() {
        Object ref = name_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the model. If not given returns statistics for all
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the model. If not given returns statistics for all
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder setName(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the model. If not given returns statistics for all
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder clearName() {

        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the model. If not given returns statistics for all
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        name_ = value;
        onChanged();
        return this;
      }

      private Object version_ = "";
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;     The version of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public String getVersion() {
        Object ref = version_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          version_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;     The version of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public com.google.protobuf.ByteString
          getVersionBytes() {
        Object ref = version_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          version_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;     The version of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public Builder setVersion(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        version_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;     The version of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public Builder clearVersion() {

        version_ = getDefaultInstance().getVersion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;     The version of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public Builder setVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        version_ = value;
        onChanged();
        return this;
      }

      private long lastInference_ ;
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: uint64 last_inference
       *&#64;&#64;
       *&#64;&#64;     The timestamp of the last inference request made for this model,
       *&#64;&#64;     as milliseconds since the epoch.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 last_inference = 3;</code>
       */
      public long getLastInference() {
        return lastInference_;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: uint64 last_inference
       *&#64;&#64;
       *&#64;&#64;     The timestamp of the last inference request made for this model,
       *&#64;&#64;     as milliseconds since the epoch.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 last_inference = 3;</code>
       */
      public Builder setLastInference(long value) {

        lastInference_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: uint64 last_inference
       *&#64;&#64;
       *&#64;&#64;     The timestamp of the last inference request made for this model,
       *&#64;&#64;     as milliseconds since the epoch.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 last_inference = 3;</code>
       */
      public Builder clearLastInference() {

        lastInference_ = 0L;
        onChanged();
        return this;
      }

      private long inferenceCount_ ;
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: uint64 last_inference
       *&#64;&#64;
       *&#64;&#64;     The cumulative count of successful inference requests made for this
       *&#64;&#64;     model. Each inference in a batched request is counted as an
       *&#64;&#64;     individual inference. For example, if a client sends a single
       *&#64;&#64;     inference request with batch size 64, "inference_count" will be
       *&#64;&#64;     incremented by 64. Similarly, if a clients sends 64 individual
       *&#64;&#64;     requests each with batch size 1, "inference_count" will be
       *&#64;&#64;     incremented by 64.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 inference_count = 4;</code>
       */
      public long getInferenceCount() {
        return inferenceCount_;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: uint64 last_inference
       *&#64;&#64;
       *&#64;&#64;     The cumulative count of successful inference requests made for this
       *&#64;&#64;     model. Each inference in a batched request is counted as an
       *&#64;&#64;     individual inference. For example, if a client sends a single
       *&#64;&#64;     inference request with batch size 64, "inference_count" will be
       *&#64;&#64;     incremented by 64. Similarly, if a clients sends 64 individual
       *&#64;&#64;     requests each with batch size 1, "inference_count" will be
       *&#64;&#64;     incremented by 64.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 inference_count = 4;</code>
       */
      public Builder setInferenceCount(long value) {

        inferenceCount_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: uint64 last_inference
       *&#64;&#64;
       *&#64;&#64;     The cumulative count of successful inference requests made for this
       *&#64;&#64;     model. Each inference in a batched request is counted as an
       *&#64;&#64;     individual inference. For example, if a client sends a single
       *&#64;&#64;     inference request with batch size 64, "inference_count" will be
       *&#64;&#64;     incremented by 64. Similarly, if a clients sends 64 individual
       *&#64;&#64;     requests each with batch size 1, "inference_count" will be
       *&#64;&#64;     incremented by 64.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 inference_count = 4;</code>
       */
      public Builder clearInferenceCount() {

        inferenceCount_ = 0L;
        onChanged();
        return this;
      }

      private long executionCount_ ;
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: uint64 last_inference
       *&#64;&#64;
       *&#64;&#64;     The cumulative count of the number of successful inference executions
       *&#64;&#64;     performed for the model. When dynamic batching is enabled, a single
       *&#64;&#64;     model execution can perform inferencing for more than one inference
       *&#64;&#64;     request. For example, if a clients sends 64 individual requests each
       *&#64;&#64;     with batch size 1 and the dynamic batcher batches them into a single
       *&#64;&#64;     large batch for model execution then "execution_count" will be
       *&#64;&#64;     incremented by 1. If, on the other hand, the dynamic batcher is not
       *&#64;&#64;     enabled for that each of the 64 individual requests is executed
       *&#64;&#64;     independently, then "execution_count" will be incremented by 64.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 execution_count = 5;</code>
       */
      public long getExecutionCount() {
        return executionCount_;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: uint64 last_inference
       *&#64;&#64;
       *&#64;&#64;     The cumulative count of the number of successful inference executions
       *&#64;&#64;     performed for the model. When dynamic batching is enabled, a single
       *&#64;&#64;     model execution can perform inferencing for more than one inference
       *&#64;&#64;     request. For example, if a clients sends 64 individual requests each
       *&#64;&#64;     with batch size 1 and the dynamic batcher batches them into a single
       *&#64;&#64;     large batch for model execution then "execution_count" will be
       *&#64;&#64;     incremented by 1. If, on the other hand, the dynamic batcher is not
       *&#64;&#64;     enabled for that each of the 64 individual requests is executed
       *&#64;&#64;     independently, then "execution_count" will be incremented by 64.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 execution_count = 5;</code>
       */
      public Builder setExecutionCount(long value) {

        executionCount_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: uint64 last_inference
       *&#64;&#64;
       *&#64;&#64;     The cumulative count of the number of successful inference executions
       *&#64;&#64;     performed for the model. When dynamic batching is enabled, a single
       *&#64;&#64;     model execution can perform inferencing for more than one inference
       *&#64;&#64;     request. For example, if a clients sends 64 individual requests each
       *&#64;&#64;     with batch size 1 and the dynamic batcher batches them into a single
       *&#64;&#64;     large batch for model execution then "execution_count" will be
       *&#64;&#64;     incremented by 1. If, on the other hand, the dynamic batcher is not
       *&#64;&#64;     enabled for that each of the 64 individual requests is executed
       *&#64;&#64;     independently, then "execution_count" will be incremented by 64.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 execution_count = 5;</code>
       */
      public Builder clearExecutionCount() {

        executionCount_ = 0L;
        onChanged();
        return this;
      }

      private GrpcService.InferStatistics inferenceStats_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          GrpcService.InferStatistics, GrpcService.InferStatistics.Builder, GrpcService.InferStatisticsOrBuilder> inferenceStatsBuilder_;
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: InferStatistics inference_stats
       *&#64;&#64;
       *&#64;&#64;     The aggregate statistics for the model/version.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.InferStatistics inference_stats = 6;</code>
       */
      public boolean hasInferenceStats() {
        return inferenceStatsBuilder_ != null || inferenceStats_ != null;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: InferStatistics inference_stats
       *&#64;&#64;
       *&#64;&#64;     The aggregate statistics for the model/version.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.InferStatistics inference_stats = 6;</code>
       */
      public GrpcService.InferStatistics getInferenceStats() {
        if (inferenceStatsBuilder_ == null) {
          return inferenceStats_ == null ? GrpcService.InferStatistics.getDefaultInstance() : inferenceStats_;
        } else {
          return inferenceStatsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: InferStatistics inference_stats
       *&#64;&#64;
       *&#64;&#64;     The aggregate statistics for the model/version.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.InferStatistics inference_stats = 6;</code>
       */
      public Builder setInferenceStats(GrpcService.InferStatistics value) {
        if (inferenceStatsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          inferenceStats_ = value;
          onChanged();
        } else {
          inferenceStatsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: InferStatistics inference_stats
       *&#64;&#64;
       *&#64;&#64;     The aggregate statistics for the model/version.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.InferStatistics inference_stats = 6;</code>
       */
      public Builder setInferenceStats(
          GrpcService.InferStatistics.Builder builderForValue) {
        if (inferenceStatsBuilder_ == null) {
          inferenceStats_ = builderForValue.build();
          onChanged();
        } else {
          inferenceStatsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: InferStatistics inference_stats
       *&#64;&#64;
       *&#64;&#64;     The aggregate statistics for the model/version.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.InferStatistics inference_stats = 6;</code>
       */
      public Builder mergeInferenceStats(GrpcService.InferStatistics value) {
        if (inferenceStatsBuilder_ == null) {
          if (inferenceStats_ != null) {
            inferenceStats_ =
              GrpcService.InferStatistics.newBuilder(inferenceStats_).mergeFrom(value).buildPartial();
          } else {
            inferenceStats_ = value;
          }
          onChanged();
        } else {
          inferenceStatsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: InferStatistics inference_stats
       *&#64;&#64;
       *&#64;&#64;     The aggregate statistics for the model/version.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.InferStatistics inference_stats = 6;</code>
       */
      public Builder clearInferenceStats() {
        if (inferenceStatsBuilder_ == null) {
          inferenceStats_ = null;
          onChanged();
        } else {
          inferenceStats_ = null;
          inferenceStatsBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: InferStatistics inference_stats
       *&#64;&#64;
       *&#64;&#64;     The aggregate statistics for the model/version.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.InferStatistics inference_stats = 6;</code>
       */
      public GrpcService.InferStatistics.Builder getInferenceStatsBuilder() {

        onChanged();
        return getInferenceStatsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: InferStatistics inference_stats
       *&#64;&#64;
       *&#64;&#64;     The aggregate statistics for the model/version.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.InferStatistics inference_stats = 6;</code>
       */
      public GrpcService.InferStatisticsOrBuilder getInferenceStatsOrBuilder() {
        if (inferenceStatsBuilder_ != null) {
          return inferenceStatsBuilder_.getMessageOrBuilder();
        } else {
          return inferenceStats_ == null ?
              GrpcService.InferStatistics.getDefaultInstance() : inferenceStats_;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: InferStatistics inference_stats
       *&#64;&#64;
       *&#64;&#64;     The aggregate statistics for the model/version.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional .inference.InferStatistics inference_stats = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          GrpcService.InferStatistics, GrpcService.InferStatistics.Builder, GrpcService.InferStatisticsOrBuilder>
          getInferenceStatsFieldBuilder() {
        if (inferenceStatsBuilder_ == null) {
          inferenceStatsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              GrpcService.InferStatistics, GrpcService.InferStatistics.Builder, GrpcService.InferStatisticsOrBuilder>(
                  getInferenceStats(),
                  getParentForChildren(),
                  isClean());
          inferenceStats_ = null;
        }
        return inferenceStatsBuilder_;
      }

      private java.util.List<GrpcService.InferBatchStatistics> batchStats_ =
        java.util.Collections.emptyList();
      private void ensureBatchStatsIsMutable() {
        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
          batchStats_ = new java.util.ArrayList<GrpcService.InferBatchStatistics>(batchStats_);
          bitField0_ |= 0x00000040;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          GrpcService.InferBatchStatistics, GrpcService.InferBatchStatistics.Builder, GrpcService.InferBatchStatisticsOrBuilder> batchStatsBuilder_;

      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: InferBatchStatistics batch_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     The aggregate statistics for each different batch size that is
       *&#64;&#64;     executed in the model. The batch statistics indicate how many actual
       *&#64;&#64;     model executions were performed and show differences due to different
       *&#64;&#64;     batch size (for example, larger batches typically take longer to
       *&#64;&#64;     compute).
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.InferBatchStatistics batch_stats = 7;</code>
       */
      public java.util.List<GrpcService.InferBatchStatistics> getBatchStatsList() {
        if (batchStatsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(batchStats_);
        } else {
          return batchStatsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: InferBatchStatistics batch_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     The aggregate statistics for each different batch size that is
       *&#64;&#64;     executed in the model. The batch statistics indicate how many actual
       *&#64;&#64;     model executions were performed and show differences due to different
       *&#64;&#64;     batch size (for example, larger batches typically take longer to
       *&#64;&#64;     compute).
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.InferBatchStatistics batch_stats = 7;</code>
       */
      public int getBatchStatsCount() {
        if (batchStatsBuilder_ == null) {
          return batchStats_.size();
        } else {
          return batchStatsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: InferBatchStatistics batch_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     The aggregate statistics for each different batch size that is
       *&#64;&#64;     executed in the model. The batch statistics indicate how many actual
       *&#64;&#64;     model executions were performed and show differences due to different
       *&#64;&#64;     batch size (for example, larger batches typically take longer to
       *&#64;&#64;     compute).
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.InferBatchStatistics batch_stats = 7;</code>
       */
      public GrpcService.InferBatchStatistics getBatchStats(int index) {
        if (batchStatsBuilder_ == null) {
          return batchStats_.get(index);
        } else {
          return batchStatsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: InferBatchStatistics batch_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     The aggregate statistics for each different batch size that is
       *&#64;&#64;     executed in the model. The batch statistics indicate how many actual
       *&#64;&#64;     model executions were performed and show differences due to different
       *&#64;&#64;     batch size (for example, larger batches typically take longer to
       *&#64;&#64;     compute).
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.InferBatchStatistics batch_stats = 7;</code>
       */
      public Builder setBatchStats(
          int index, GrpcService.InferBatchStatistics value) {
        if (batchStatsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBatchStatsIsMutable();
          batchStats_.set(index, value);
          onChanged();
        } else {
          batchStatsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: InferBatchStatistics batch_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     The aggregate statistics for each different batch size that is
       *&#64;&#64;     executed in the model. The batch statistics indicate how many actual
       *&#64;&#64;     model executions were performed and show differences due to different
       *&#64;&#64;     batch size (for example, larger batches typically take longer to
       *&#64;&#64;     compute).
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.InferBatchStatistics batch_stats = 7;</code>
       */
      public Builder setBatchStats(
          int index, GrpcService.InferBatchStatistics.Builder builderForValue) {
        if (batchStatsBuilder_ == null) {
          ensureBatchStatsIsMutable();
          batchStats_.set(index, builderForValue.build());
          onChanged();
        } else {
          batchStatsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: InferBatchStatistics batch_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     The aggregate statistics for each different batch size that is
       *&#64;&#64;     executed in the model. The batch statistics indicate how many actual
       *&#64;&#64;     model executions were performed and show differences due to different
       *&#64;&#64;     batch size (for example, larger batches typically take longer to
       *&#64;&#64;     compute).
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.InferBatchStatistics batch_stats = 7;</code>
       */
      public Builder addBatchStats(GrpcService.InferBatchStatistics value) {
        if (batchStatsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBatchStatsIsMutable();
          batchStats_.add(value);
          onChanged();
        } else {
          batchStatsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: InferBatchStatistics batch_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     The aggregate statistics for each different batch size that is
       *&#64;&#64;     executed in the model. The batch statistics indicate how many actual
       *&#64;&#64;     model executions were performed and show differences due to different
       *&#64;&#64;     batch size (for example, larger batches typically take longer to
       *&#64;&#64;     compute).
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.InferBatchStatistics batch_stats = 7;</code>
       */
      public Builder addBatchStats(
          int index, GrpcService.InferBatchStatistics value) {
        if (batchStatsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBatchStatsIsMutable();
          batchStats_.add(index, value);
          onChanged();
        } else {
          batchStatsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: InferBatchStatistics batch_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     The aggregate statistics for each different batch size that is
       *&#64;&#64;     executed in the model. The batch statistics indicate how many actual
       *&#64;&#64;     model executions were performed and show differences due to different
       *&#64;&#64;     batch size (for example, larger batches typically take longer to
       *&#64;&#64;     compute).
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.InferBatchStatistics batch_stats = 7;</code>
       */
      public Builder addBatchStats(
          GrpcService.InferBatchStatistics.Builder builderForValue) {
        if (batchStatsBuilder_ == null) {
          ensureBatchStatsIsMutable();
          batchStats_.add(builderForValue.build());
          onChanged();
        } else {
          batchStatsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: InferBatchStatistics batch_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     The aggregate statistics for each different batch size that is
       *&#64;&#64;     executed in the model. The batch statistics indicate how many actual
       *&#64;&#64;     model executions were performed and show differences due to different
       *&#64;&#64;     batch size (for example, larger batches typically take longer to
       *&#64;&#64;     compute).
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.InferBatchStatistics batch_stats = 7;</code>
       */
      public Builder addBatchStats(
          int index, GrpcService.InferBatchStatistics.Builder builderForValue) {
        if (batchStatsBuilder_ == null) {
          ensureBatchStatsIsMutable();
          batchStats_.add(index, builderForValue.build());
          onChanged();
        } else {
          batchStatsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: InferBatchStatistics batch_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     The aggregate statistics for each different batch size that is
       *&#64;&#64;     executed in the model. The batch statistics indicate how many actual
       *&#64;&#64;     model executions were performed and show differences due to different
       *&#64;&#64;     batch size (for example, larger batches typically take longer to
       *&#64;&#64;     compute).
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.InferBatchStatistics batch_stats = 7;</code>
       */
      public Builder addAllBatchStats(
          Iterable<? extends GrpcService.InferBatchStatistics> values) {
        if (batchStatsBuilder_ == null) {
          ensureBatchStatsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, batchStats_);
          onChanged();
        } else {
          batchStatsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: InferBatchStatistics batch_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     The aggregate statistics for each different batch size that is
       *&#64;&#64;     executed in the model. The batch statistics indicate how many actual
       *&#64;&#64;     model executions were performed and show differences due to different
       *&#64;&#64;     batch size (for example, larger batches typically take longer to
       *&#64;&#64;     compute).
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.InferBatchStatistics batch_stats = 7;</code>
       */
      public Builder clearBatchStats() {
        if (batchStatsBuilder_ == null) {
          batchStats_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
          onChanged();
        } else {
          batchStatsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: InferBatchStatistics batch_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     The aggregate statistics for each different batch size that is
       *&#64;&#64;     executed in the model. The batch statistics indicate how many actual
       *&#64;&#64;     model executions were performed and show differences due to different
       *&#64;&#64;     batch size (for example, larger batches typically take longer to
       *&#64;&#64;     compute).
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.InferBatchStatistics batch_stats = 7;</code>
       */
      public Builder removeBatchStats(int index) {
        if (batchStatsBuilder_ == null) {
          ensureBatchStatsIsMutable();
          batchStats_.remove(index);
          onChanged();
        } else {
          batchStatsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: InferBatchStatistics batch_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     The aggregate statistics for each different batch size that is
       *&#64;&#64;     executed in the model. The batch statistics indicate how many actual
       *&#64;&#64;     model executions were performed and show differences due to different
       *&#64;&#64;     batch size (for example, larger batches typically take longer to
       *&#64;&#64;     compute).
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.InferBatchStatistics batch_stats = 7;</code>
       */
      public GrpcService.InferBatchStatistics.Builder getBatchStatsBuilder(
          int index) {
        return getBatchStatsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: InferBatchStatistics batch_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     The aggregate statistics for each different batch size that is
       *&#64;&#64;     executed in the model. The batch statistics indicate how many actual
       *&#64;&#64;     model executions were performed and show differences due to different
       *&#64;&#64;     batch size (for example, larger batches typically take longer to
       *&#64;&#64;     compute).
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.InferBatchStatistics batch_stats = 7;</code>
       */
      public GrpcService.InferBatchStatisticsOrBuilder getBatchStatsOrBuilder(
          int index) {
        if (batchStatsBuilder_ == null) {
          return batchStats_.get(index);  } else {
          return batchStatsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: InferBatchStatistics batch_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     The aggregate statistics for each different batch size that is
       *&#64;&#64;     executed in the model. The batch statistics indicate how many actual
       *&#64;&#64;     model executions were performed and show differences due to different
       *&#64;&#64;     batch size (for example, larger batches typically take longer to
       *&#64;&#64;     compute).
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.InferBatchStatistics batch_stats = 7;</code>
       */
      public java.util.List<? extends GrpcService.InferBatchStatisticsOrBuilder>
           getBatchStatsOrBuilderList() {
        if (batchStatsBuilder_ != null) {
          return batchStatsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(batchStats_);
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: InferBatchStatistics batch_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     The aggregate statistics for each different batch size that is
       *&#64;&#64;     executed in the model. The batch statistics indicate how many actual
       *&#64;&#64;     model executions were performed and show differences due to different
       *&#64;&#64;     batch size (for example, larger batches typically take longer to
       *&#64;&#64;     compute).
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.InferBatchStatistics batch_stats = 7;</code>
       */
      public GrpcService.InferBatchStatistics.Builder addBatchStatsBuilder() {
        return getBatchStatsFieldBuilder().addBuilder(
            GrpcService.InferBatchStatistics.getDefaultInstance());
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: InferBatchStatistics batch_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     The aggregate statistics for each different batch size that is
       *&#64;&#64;     executed in the model. The batch statistics indicate how many actual
       *&#64;&#64;     model executions were performed and show differences due to different
       *&#64;&#64;     batch size (for example, larger batches typically take longer to
       *&#64;&#64;     compute).
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.InferBatchStatistics batch_stats = 7;</code>
       */
      public GrpcService.InferBatchStatistics.Builder addBatchStatsBuilder(
          int index) {
        return getBatchStatsFieldBuilder().addBuilder(
            index, GrpcService.InferBatchStatistics.getDefaultInstance());
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: InferBatchStatistics batch_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     The aggregate statistics for each different batch size that is
       *&#64;&#64;     executed in the model. The batch statistics indicate how many actual
       *&#64;&#64;     model executions were performed and show differences due to different
       *&#64;&#64;     batch size (for example, larger batches typically take longer to
       *&#64;&#64;     compute).
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.InferBatchStatistics batch_stats = 7;</code>
       */
      public java.util.List<GrpcService.InferBatchStatistics.Builder>
           getBatchStatsBuilderList() {
        return getBatchStatsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          GrpcService.InferBatchStatistics, GrpcService.InferBatchStatistics.Builder, GrpcService.InferBatchStatisticsOrBuilder>
          getBatchStatsFieldBuilder() {
        if (batchStatsBuilder_ == null) {
          batchStatsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              GrpcService.InferBatchStatistics, GrpcService.InferBatchStatistics.Builder, GrpcService.InferBatchStatisticsOrBuilder>(
                  batchStats_,
                  ((bitField0_ & 0x00000040) == 0x00000040),
                  getParentForChildren(),
                  isClean());
          batchStats_ = null;
        }
        return batchStatsBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.ModelStatistics)
    }

    // @@protoc_insertion_point(class_scope:inference.ModelStatistics)
    private static final GrpcService.ModelStatistics DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.ModelStatistics();
    }

    public static GrpcService.ModelStatistics getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ModelStatistics>
        PARSER = new com.google.protobuf.AbstractParser<ModelStatistics>() {
      public ModelStatistics parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new ModelStatistics(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ModelStatistics> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<ModelStatistics> getParserForType() {
      return PARSER;
    }

    public GrpcService.ModelStatistics getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ModelStatisticsResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.ModelStatisticsResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: ModelStatistics model_stats (repeated)
     *&#64;&#64;
     *&#64;&#64;     Statistics for each requested model.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelStatistics model_stats = 1;</code>
     */
    java.util.List<GrpcService.ModelStatistics>
        getModelStatsList();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: ModelStatistics model_stats (repeated)
     *&#64;&#64;
     *&#64;&#64;     Statistics for each requested model.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelStatistics model_stats = 1;</code>
     */
    GrpcService.ModelStatistics getModelStats(int index);
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: ModelStatistics model_stats (repeated)
     *&#64;&#64;
     *&#64;&#64;     Statistics for each requested model.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelStatistics model_stats = 1;</code>
     */
    int getModelStatsCount();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: ModelStatistics model_stats (repeated)
     *&#64;&#64;
     *&#64;&#64;     Statistics for each requested model.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelStatistics model_stats = 1;</code>
     */
    java.util.List<? extends GrpcService.ModelStatisticsOrBuilder>
        getModelStatsOrBuilderList();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: ModelStatistics model_stats (repeated)
     *&#64;&#64;
     *&#64;&#64;     Statistics for each requested model.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelStatistics model_stats = 1;</code>
     */
    GrpcService.ModelStatisticsOrBuilder getModelStatsOrBuilder(
            int index);
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message ModelStatisticsResponse
   *&#64;&#64;
   *&#64;&#64;   Response message for ModelStatistics.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.ModelStatisticsResponse}
   */
  public  static final class ModelStatisticsResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.ModelStatisticsResponse)
      ModelStatisticsResponseOrBuilder {
    // Use ModelStatisticsResponse.newBuilder() to construct.
    private ModelStatisticsResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ModelStatisticsResponse() {
      modelStats_ = java.util.Collections.emptyList();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ModelStatisticsResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                modelStats_ = new java.util.ArrayList<GrpcService.ModelStatistics>();
                mutable_bitField0_ |= 0x00000001;
              }
              modelStats_.add(
                  input.readMessage(GrpcService.ModelStatistics.parser(), extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          modelStats_ = java.util.Collections.unmodifiableList(modelStats_);
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_ModelStatisticsResponse_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_ModelStatisticsResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.ModelStatisticsResponse.class, GrpcService.ModelStatisticsResponse.Builder.class);
    }

    public static final int MODEL_STATS_FIELD_NUMBER = 1;
    private java.util.List<GrpcService.ModelStatistics> modelStats_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: ModelStatistics model_stats (repeated)
     *&#64;&#64;
     *&#64;&#64;     Statistics for each requested model.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelStatistics model_stats = 1;</code>
     */
    public java.util.List<GrpcService.ModelStatistics> getModelStatsList() {
      return modelStats_;
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: ModelStatistics model_stats (repeated)
     *&#64;&#64;
     *&#64;&#64;     Statistics for each requested model.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelStatistics model_stats = 1;</code>
     */
    public java.util.List<? extends GrpcService.ModelStatisticsOrBuilder>
        getModelStatsOrBuilderList() {
      return modelStats_;
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: ModelStatistics model_stats (repeated)
     *&#64;&#64;
     *&#64;&#64;     Statistics for each requested model.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelStatistics model_stats = 1;</code>
     */
    public int getModelStatsCount() {
      return modelStats_.size();
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: ModelStatistics model_stats (repeated)
     *&#64;&#64;
     *&#64;&#64;     Statistics for each requested model.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelStatistics model_stats = 1;</code>
     */
    public GrpcService.ModelStatistics getModelStats(int index) {
      return modelStats_.get(index);
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: ModelStatistics model_stats (repeated)
     *&#64;&#64;
     *&#64;&#64;     Statistics for each requested model.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.ModelStatistics model_stats = 1;</code>
     */
    public GrpcService.ModelStatisticsOrBuilder getModelStatsOrBuilder(
        int index) {
      return modelStats_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < modelStats_.size(); i++) {
        output.writeMessage(1, modelStats_.get(i));
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < modelStats_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, modelStats_.get(i));
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.ModelStatisticsResponse)) {
        return super.equals(obj);
      }
      GrpcService.ModelStatisticsResponse other = (GrpcService.ModelStatisticsResponse) obj;

      boolean result = true;
      result = result && getModelStatsList()
          .equals(other.getModelStatsList());
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (getModelStatsCount() > 0) {
        hash = (37 * hash) + MODEL_STATS_FIELD_NUMBER;
        hash = (53 * hash) + getModelStatsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.ModelStatisticsResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ModelStatisticsResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ModelStatisticsResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.ModelStatisticsResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.ModelStatisticsResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ModelStatisticsResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ModelStatisticsResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.ModelStatisticsResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.ModelStatisticsResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.ModelStatisticsResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.ModelStatisticsResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message ModelStatisticsResponse
     *&#64;&#64;
     *&#64;&#64;   Response message for ModelStatistics.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.ModelStatisticsResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.ModelStatisticsResponse)
        GrpcService.ModelStatisticsResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_ModelStatisticsResponse_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_ModelStatisticsResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.ModelStatisticsResponse.class, GrpcService.ModelStatisticsResponse.Builder.class);
      }

      // Construct using GrpcService.ModelStatisticsResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getModelStatsFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (modelStatsBuilder_ == null) {
          modelStats_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          modelStatsBuilder_.clear();
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_ModelStatisticsResponse_descriptor;
      }

      public GrpcService.ModelStatisticsResponse getDefaultInstanceForType() {
        return GrpcService.ModelStatisticsResponse.getDefaultInstance();
      }

      public GrpcService.ModelStatisticsResponse build() {
        GrpcService.ModelStatisticsResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.ModelStatisticsResponse buildPartial() {
        GrpcService.ModelStatisticsResponse result = new GrpcService.ModelStatisticsResponse(this);
        int from_bitField0_ = bitField0_;
        if (modelStatsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            modelStats_ = java.util.Collections.unmodifiableList(modelStats_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.modelStats_ = modelStats_;
        } else {
          result.modelStats_ = modelStatsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.ModelStatisticsResponse) {
          return mergeFrom((GrpcService.ModelStatisticsResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.ModelStatisticsResponse other) {
        if (other == GrpcService.ModelStatisticsResponse.getDefaultInstance()) return this;
        if (modelStatsBuilder_ == null) {
          if (!other.modelStats_.isEmpty()) {
            if (modelStats_.isEmpty()) {
              modelStats_ = other.modelStats_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureModelStatsIsMutable();
              modelStats_.addAll(other.modelStats_);
            }
            onChanged();
          }
        } else {
          if (!other.modelStats_.isEmpty()) {
            if (modelStatsBuilder_.isEmpty()) {
              modelStatsBuilder_.dispose();
              modelStatsBuilder_ = null;
              modelStats_ = other.modelStats_;
              bitField0_ = (bitField0_ & ~0x00000001);
              modelStatsBuilder_ =
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getModelStatsFieldBuilder() : null;
            } else {
              modelStatsBuilder_.addAllMessages(other.modelStats_);
            }
          }
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.ModelStatisticsResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.ModelStatisticsResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<GrpcService.ModelStatistics> modelStats_ =
        java.util.Collections.emptyList();
      private void ensureModelStatsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          modelStats_ = new java.util.ArrayList<GrpcService.ModelStatistics>(modelStats_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          GrpcService.ModelStatistics, GrpcService.ModelStatistics.Builder, GrpcService.ModelStatisticsOrBuilder> modelStatsBuilder_;

      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: ModelStatistics model_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     Statistics for each requested model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelStatistics model_stats = 1;</code>
       */
      public java.util.List<GrpcService.ModelStatistics> getModelStatsList() {
        if (modelStatsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(modelStats_);
        } else {
          return modelStatsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: ModelStatistics model_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     Statistics for each requested model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelStatistics model_stats = 1;</code>
       */
      public int getModelStatsCount() {
        if (modelStatsBuilder_ == null) {
          return modelStats_.size();
        } else {
          return modelStatsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: ModelStatistics model_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     Statistics for each requested model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelStatistics model_stats = 1;</code>
       */
      public GrpcService.ModelStatistics getModelStats(int index) {
        if (modelStatsBuilder_ == null) {
          return modelStats_.get(index);
        } else {
          return modelStatsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: ModelStatistics model_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     Statistics for each requested model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelStatistics model_stats = 1;</code>
       */
      public Builder setModelStats(
          int index, GrpcService.ModelStatistics value) {
        if (modelStatsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureModelStatsIsMutable();
          modelStats_.set(index, value);
          onChanged();
        } else {
          modelStatsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: ModelStatistics model_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     Statistics for each requested model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelStatistics model_stats = 1;</code>
       */
      public Builder setModelStats(
          int index, GrpcService.ModelStatistics.Builder builderForValue) {
        if (modelStatsBuilder_ == null) {
          ensureModelStatsIsMutable();
          modelStats_.set(index, builderForValue.build());
          onChanged();
        } else {
          modelStatsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: ModelStatistics model_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     Statistics for each requested model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelStatistics model_stats = 1;</code>
       */
      public Builder addModelStats(GrpcService.ModelStatistics value) {
        if (modelStatsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureModelStatsIsMutable();
          modelStats_.add(value);
          onChanged();
        } else {
          modelStatsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: ModelStatistics model_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     Statistics for each requested model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelStatistics model_stats = 1;</code>
       */
      public Builder addModelStats(
          int index, GrpcService.ModelStatistics value) {
        if (modelStatsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureModelStatsIsMutable();
          modelStats_.add(index, value);
          onChanged();
        } else {
          modelStatsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: ModelStatistics model_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     Statistics for each requested model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelStatistics model_stats = 1;</code>
       */
      public Builder addModelStats(
          GrpcService.ModelStatistics.Builder builderForValue) {
        if (modelStatsBuilder_ == null) {
          ensureModelStatsIsMutable();
          modelStats_.add(builderForValue.build());
          onChanged();
        } else {
          modelStatsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: ModelStatistics model_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     Statistics for each requested model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelStatistics model_stats = 1;</code>
       */
      public Builder addModelStats(
          int index, GrpcService.ModelStatistics.Builder builderForValue) {
        if (modelStatsBuilder_ == null) {
          ensureModelStatsIsMutable();
          modelStats_.add(index, builderForValue.build());
          onChanged();
        } else {
          modelStatsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: ModelStatistics model_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     Statistics for each requested model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelStatistics model_stats = 1;</code>
       */
      public Builder addAllModelStats(
          Iterable<? extends GrpcService.ModelStatistics> values) {
        if (modelStatsBuilder_ == null) {
          ensureModelStatsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, modelStats_);
          onChanged();
        } else {
          modelStatsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: ModelStatistics model_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     Statistics for each requested model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelStatistics model_stats = 1;</code>
       */
      public Builder clearModelStats() {
        if (modelStatsBuilder_ == null) {
          modelStats_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          modelStatsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: ModelStatistics model_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     Statistics for each requested model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelStatistics model_stats = 1;</code>
       */
      public Builder removeModelStats(int index) {
        if (modelStatsBuilder_ == null) {
          ensureModelStatsIsMutable();
          modelStats_.remove(index);
          onChanged();
        } else {
          modelStatsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: ModelStatistics model_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     Statistics for each requested model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelStatistics model_stats = 1;</code>
       */
      public GrpcService.ModelStatistics.Builder getModelStatsBuilder(
          int index) {
        return getModelStatsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: ModelStatistics model_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     Statistics for each requested model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelStatistics model_stats = 1;</code>
       */
      public GrpcService.ModelStatisticsOrBuilder getModelStatsOrBuilder(
          int index) {
        if (modelStatsBuilder_ == null) {
          return modelStats_.get(index);  } else {
          return modelStatsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: ModelStatistics model_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     Statistics for each requested model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelStatistics model_stats = 1;</code>
       */
      public java.util.List<? extends GrpcService.ModelStatisticsOrBuilder>
           getModelStatsOrBuilderList() {
        if (modelStatsBuilder_ != null) {
          return modelStatsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(modelStats_);
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: ModelStatistics model_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     Statistics for each requested model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelStatistics model_stats = 1;</code>
       */
      public GrpcService.ModelStatistics.Builder addModelStatsBuilder() {
        return getModelStatsFieldBuilder().addBuilder(
            GrpcService.ModelStatistics.getDefaultInstance());
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: ModelStatistics model_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     Statistics for each requested model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelStatistics model_stats = 1;</code>
       */
      public GrpcService.ModelStatistics.Builder addModelStatsBuilder(
          int index) {
        return getModelStatsFieldBuilder().addBuilder(
            index, GrpcService.ModelStatistics.getDefaultInstance());
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: ModelStatistics model_stats (repeated)
       *&#64;&#64;
       *&#64;&#64;     Statistics for each requested model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.ModelStatistics model_stats = 1;</code>
       */
      public java.util.List<GrpcService.ModelStatistics.Builder>
           getModelStatsBuilderList() {
        return getModelStatsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          GrpcService.ModelStatistics, GrpcService.ModelStatistics.Builder, GrpcService.ModelStatisticsOrBuilder>
          getModelStatsFieldBuilder() {
        if (modelStatsBuilder_ == null) {
          modelStatsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              GrpcService.ModelStatistics, GrpcService.ModelStatistics.Builder, GrpcService.ModelStatisticsOrBuilder>(
                  modelStats_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          modelStats_ = null;
        }
        return modelStatsBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.ModelStatisticsResponse)
    }

    // @@protoc_insertion_point(class_scope:inference.ModelStatisticsResponse)
    private static final GrpcService.ModelStatisticsResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.ModelStatisticsResponse();
    }

    public static GrpcService.ModelStatisticsResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ModelStatisticsResponse>
        PARSER = new com.google.protobuf.AbstractParser<ModelStatisticsResponse>() {
      public ModelStatisticsResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new ModelStatisticsResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<ModelStatisticsResponse> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<ModelStatisticsResponse> getParserForType() {
      return PARSER;
    }

    public GrpcService.ModelStatisticsResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RepositoryIndexRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.RepositoryIndexRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string repository_name
     *&#64;&#64;
     *&#64;&#64;     The name of the repository. If empty the index is returned
     *&#64;&#64;     for all repositories.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string repository_name = 1;</code>
     */
    String getRepositoryName();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string repository_name
     *&#64;&#64;
     *&#64;&#64;     The name of the repository. If empty the index is returned
     *&#64;&#64;     for all repositories.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string repository_name = 1;</code>
     */
    com.google.protobuf.ByteString
        getRepositoryNameBytes();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: bool ready
     *&#64;&#64;
     *&#64;&#64;     If true returned only models currently ready for inferencing.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional bool ready = 2;</code>
     */
    boolean getReady();
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message RepositoryIndexRequest
   *&#64;&#64;
   *&#64;&#64;   Request message for RepositoryIndex.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.RepositoryIndexRequest}
   */
  public  static final class RepositoryIndexRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.RepositoryIndexRequest)
      RepositoryIndexRequestOrBuilder {
    // Use RepositoryIndexRequest.newBuilder() to construct.
    private RepositoryIndexRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RepositoryIndexRequest() {
      repositoryName_ = "";
      ready_ = false;
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private RepositoryIndexRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              String s = input.readStringRequireUtf8();

              repositoryName_ = s;
              break;
            }
            case 16: {

              ready_ = input.readBool();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_RepositoryIndexRequest_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_RepositoryIndexRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.RepositoryIndexRequest.class, GrpcService.RepositoryIndexRequest.Builder.class);
    }

    public static final int REPOSITORY_NAME_FIELD_NUMBER = 1;
    private volatile Object repositoryName_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string repository_name
     *&#64;&#64;
     *&#64;&#64;     The name of the repository. If empty the index is returned
     *&#64;&#64;     for all repositories.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string repository_name = 1;</code>
     */
    public String getRepositoryName() {
      Object ref = repositoryName_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        repositoryName_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string repository_name
     *&#64;&#64;
     *&#64;&#64;     The name of the repository. If empty the index is returned
     *&#64;&#64;     for all repositories.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string repository_name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getRepositoryNameBytes() {
      Object ref = repositoryName_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        repositoryName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int READY_FIELD_NUMBER = 2;
    private boolean ready_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: bool ready
     *&#64;&#64;
     *&#64;&#64;     If true returned only models currently ready for inferencing.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional bool ready = 2;</code>
     */
    public boolean getReady() {
      return ready_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getRepositoryNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, repositoryName_);
      }
      if (ready_ != false) {
        output.writeBool(2, ready_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getRepositoryNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, repositoryName_);
      }
      if (ready_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, ready_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.RepositoryIndexRequest)) {
        return super.equals(obj);
      }
      GrpcService.RepositoryIndexRequest other = (GrpcService.RepositoryIndexRequest) obj;

      boolean result = true;
      result = result && getRepositoryName()
          .equals(other.getRepositoryName());
      result = result && (getReady()
          == other.getReady());
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (37 * hash) + REPOSITORY_NAME_FIELD_NUMBER;
      hash = (53 * hash) + getRepositoryName().hashCode();
      hash = (37 * hash) + READY_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getReady());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.RepositoryIndexRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.RepositoryIndexRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.RepositoryIndexRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.RepositoryIndexRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.RepositoryIndexRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.RepositoryIndexRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.RepositoryIndexRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.RepositoryIndexRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.RepositoryIndexRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.RepositoryIndexRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.RepositoryIndexRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message RepositoryIndexRequest
     *&#64;&#64;
     *&#64;&#64;   Request message for RepositoryIndex.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.RepositoryIndexRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.RepositoryIndexRequest)
        GrpcService.RepositoryIndexRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_RepositoryIndexRequest_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_RepositoryIndexRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.RepositoryIndexRequest.class, GrpcService.RepositoryIndexRequest.Builder.class);
      }

      // Construct using GrpcService.RepositoryIndexRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        repositoryName_ = "";

        ready_ = false;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_RepositoryIndexRequest_descriptor;
      }

      public GrpcService.RepositoryIndexRequest getDefaultInstanceForType() {
        return GrpcService.RepositoryIndexRequest.getDefaultInstance();
      }

      public GrpcService.RepositoryIndexRequest build() {
        GrpcService.RepositoryIndexRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.RepositoryIndexRequest buildPartial() {
        GrpcService.RepositoryIndexRequest result = new GrpcService.RepositoryIndexRequest(this);
        result.repositoryName_ = repositoryName_;
        result.ready_ = ready_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.RepositoryIndexRequest) {
          return mergeFrom((GrpcService.RepositoryIndexRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.RepositoryIndexRequest other) {
        if (other == GrpcService.RepositoryIndexRequest.getDefaultInstance()) return this;
        if (!other.getRepositoryName().isEmpty()) {
          repositoryName_ = other.repositoryName_;
          onChanged();
        }
        if (other.getReady() != false) {
          setReady(other.getReady());
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.RepositoryIndexRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.RepositoryIndexRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private Object repositoryName_ = "";
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string repository_name
       *&#64;&#64;
       *&#64;&#64;     The name of the repository. If empty the index is returned
       *&#64;&#64;     for all repositories.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string repository_name = 1;</code>
       */
      public String getRepositoryName() {
        Object ref = repositoryName_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          repositoryName_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string repository_name
       *&#64;&#64;
       *&#64;&#64;     The name of the repository. If empty the index is returned
       *&#64;&#64;     for all repositories.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string repository_name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getRepositoryNameBytes() {
        Object ref = repositoryName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          repositoryName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string repository_name
       *&#64;&#64;
       *&#64;&#64;     The name of the repository. If empty the index is returned
       *&#64;&#64;     for all repositories.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string repository_name = 1;</code>
       */
      public Builder setRepositoryName(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        repositoryName_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string repository_name
       *&#64;&#64;
       *&#64;&#64;     The name of the repository. If empty the index is returned
       *&#64;&#64;     for all repositories.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string repository_name = 1;</code>
       */
      public Builder clearRepositoryName() {

        repositoryName_ = getDefaultInstance().getRepositoryName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string repository_name
       *&#64;&#64;
       *&#64;&#64;     The name of the repository. If empty the index is returned
       *&#64;&#64;     for all repositories.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string repository_name = 1;</code>
       */
      public Builder setRepositoryNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        repositoryName_ = value;
        onChanged();
        return this;
      }

      private boolean ready_ ;
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: bool ready
       *&#64;&#64;
       *&#64;&#64;     If true returned only models currently ready for inferencing.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional bool ready = 2;</code>
       */
      public boolean getReady() {
        return ready_;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: bool ready
       *&#64;&#64;
       *&#64;&#64;     If true returned only models currently ready for inferencing.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional bool ready = 2;</code>
       */
      public Builder setReady(boolean value) {

        ready_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: bool ready
       *&#64;&#64;
       *&#64;&#64;     If true returned only models currently ready for inferencing.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional bool ready = 2;</code>
       */
      public Builder clearReady() {

        ready_ = false;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.RepositoryIndexRequest)
    }

    // @@protoc_insertion_point(class_scope:inference.RepositoryIndexRequest)
    private static final GrpcService.RepositoryIndexRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.RepositoryIndexRequest();
    }

    public static GrpcService.RepositoryIndexRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<RepositoryIndexRequest>
        PARSER = new com.google.protobuf.AbstractParser<RepositoryIndexRequest>() {
      public RepositoryIndexRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new RepositoryIndexRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<RepositoryIndexRequest> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<RepositoryIndexRequest> getParserForType() {
      return PARSER;
    }

    public GrpcService.RepositoryIndexRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RepositoryIndexResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.RepositoryIndexResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: ModelIndex models (repeated)
     *&#64;&#64;
     *&#64;&#64;     An index entry for each model.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.RepositoryIndexResponse.ModelIndex models = 1;</code>
     */
    java.util.List<GrpcService.RepositoryIndexResponse.ModelIndex>
        getModelsList();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: ModelIndex models (repeated)
     *&#64;&#64;
     *&#64;&#64;     An index entry for each model.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.RepositoryIndexResponse.ModelIndex models = 1;</code>
     */
    GrpcService.RepositoryIndexResponse.ModelIndex getModels(int index);
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: ModelIndex models (repeated)
     *&#64;&#64;
     *&#64;&#64;     An index entry for each model.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.RepositoryIndexResponse.ModelIndex models = 1;</code>
     */
    int getModelsCount();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: ModelIndex models (repeated)
     *&#64;&#64;
     *&#64;&#64;     An index entry for each model.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.RepositoryIndexResponse.ModelIndex models = 1;</code>
     */
    java.util.List<? extends GrpcService.RepositoryIndexResponse.ModelIndexOrBuilder>
        getModelsOrBuilderList();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: ModelIndex models (repeated)
     *&#64;&#64;
     *&#64;&#64;     An index entry for each model.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.RepositoryIndexResponse.ModelIndex models = 1;</code>
     */
    GrpcService.RepositoryIndexResponse.ModelIndexOrBuilder getModelsOrBuilder(
            int index);
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message RepositoryIndexResponse
   *&#64;&#64;
   *&#64;&#64;   Response message for RepositoryIndex.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.RepositoryIndexResponse}
   */
  public  static final class RepositoryIndexResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.RepositoryIndexResponse)
      RepositoryIndexResponseOrBuilder {
    // Use RepositoryIndexResponse.newBuilder() to construct.
    private RepositoryIndexResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RepositoryIndexResponse() {
      models_ = java.util.Collections.emptyList();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private RepositoryIndexResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                models_ = new java.util.ArrayList<GrpcService.RepositoryIndexResponse.ModelIndex>();
                mutable_bitField0_ |= 0x00000001;
              }
              models_.add(
                  input.readMessage(GrpcService.RepositoryIndexResponse.ModelIndex.parser(), extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          models_ = java.util.Collections.unmodifiableList(models_);
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_RepositoryIndexResponse_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_RepositoryIndexResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.RepositoryIndexResponse.class, GrpcService.RepositoryIndexResponse.Builder.class);
    }

    public interface ModelIndexOrBuilder extends
        // @@protoc_insertion_point(interface_extends:inference.RepositoryIndexResponse.ModelIndex)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;       The name of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      String getName();
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;       The name of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      com.google.protobuf.ByteString
          getNameBytes();

      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;       The version of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      String getVersion();
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;       The version of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      com.google.protobuf.ByteString
          getVersionBytes();

      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string state
       *&#64;&#64;
       *&#64;&#64;       The state of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string state = 3;</code>
       */
      String getState();
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string state
       *&#64;&#64;
       *&#64;&#64;       The state of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string state = 3;</code>
       */
      com.google.protobuf.ByteString
          getStateBytes();

      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string reason
       *&#64;&#64;
       *&#64;&#64;       The reason, if any, that the model is in the given state.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string reason = 4;</code>
       */
      String getReason();
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string reason
       *&#64;&#64;
       *&#64;&#64;       The reason, if any, that the model is in the given state.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string reason = 4;</code>
       */
      com.google.protobuf.ByteString
          getReasonBytes();
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: message ModelIndex
     *&#64;&#64;
     *&#64;&#64;     Index entry for a model.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.RepositoryIndexResponse.ModelIndex}
     */
    public  static final class ModelIndex extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:inference.RepositoryIndexResponse.ModelIndex)
        ModelIndexOrBuilder {
      // Use ModelIndex.newBuilder() to construct.
      private ModelIndex(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ModelIndex() {
        name_ = "";
        version_ = "";
        state_ = "";
        reason_ = "";
      }

      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
      }
      private ModelIndex(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!input.skipField(tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                String s = input.readStringRequireUtf8();

                name_ = s;
                break;
              }
              case 18: {
                String s = input.readStringRequireUtf8();

                version_ = s;
                break;
              }
              case 26: {
                String s = input.readStringRequireUtf8();

                state_ = s;
                break;
              }
              case 34: {
                String s = input.readStringRequireUtf8();

                reason_ = s;
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_RepositoryIndexResponse_ModelIndex_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_RepositoryIndexResponse_ModelIndex_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.RepositoryIndexResponse.ModelIndex.class, GrpcService.RepositoryIndexResponse.ModelIndex.Builder.class);
      }

      public static final int NAME_FIELD_NUMBER = 1;
      private volatile Object name_;
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;       The name of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public String getName() {
        Object ref = name_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          name_ = s;
          return s;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;       The name of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int VERSION_FIELD_NUMBER = 2;
      private volatile Object version_;
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;       The version of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public String getVersion() {
        Object ref = version_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          version_ = s;
          return s;
        }
      }
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: string version
       *&#64;&#64;
       *&#64;&#64;       The version of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string version = 2;</code>
       */
      public com.google.protobuf.ByteString
          getVersionBytes() {
        Object ref = version_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          version_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int STATE_FIELD_NUMBER = 3;
      private volatile Object state_;
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string state
       *&#64;&#64;
       *&#64;&#64;       The state of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string state = 3;</code>
       */
      public String getState() {
        Object ref = state_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          state_ = s;
          return s;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string state
       *&#64;&#64;
       *&#64;&#64;       The state of the model.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string state = 3;</code>
       */
      public com.google.protobuf.ByteString
          getStateBytes() {
        Object ref = state_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          state_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int REASON_FIELD_NUMBER = 4;
      private volatile Object reason_;
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string reason
       *&#64;&#64;
       *&#64;&#64;       The reason, if any, that the model is in the given state.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string reason = 4;</code>
       */
      public String getReason() {
        Object ref = reason_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          reason_ = s;
          return s;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string reason
       *&#64;&#64;
       *&#64;&#64;       The reason, if any, that the model is in the given state.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string reason = 4;</code>
       */
      public com.google.protobuf.ByteString
          getReasonBytes() {
        Object ref = reason_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          reason_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (!getNameBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
        }
        if (!getVersionBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, version_);
        }
        if (!getStateBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, state_);
        }
        if (!getReasonBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 4, reason_);
        }
      }

      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (!getNameBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
        }
        if (!getVersionBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, version_);
        }
        if (!getStateBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, state_);
        }
        if (!getReasonBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, reason_);
        }
        memoizedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof GrpcService.RepositoryIndexResponse.ModelIndex)) {
          return super.equals(obj);
        }
        GrpcService.RepositoryIndexResponse.ModelIndex other = (GrpcService.RepositoryIndexResponse.ModelIndex) obj;

        boolean result = true;
        result = result && getName()
            .equals(other.getName());
        result = result && getVersion()
            .equals(other.getVersion());
        result = result && getState()
            .equals(other.getState());
        result = result && getReason()
            .equals(other.getReason());
        return result;
      }

      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
        hash = (37 * hash) + VERSION_FIELD_NUMBER;
        hash = (53 * hash) + getVersion().hashCode();
        hash = (37 * hash) + STATE_FIELD_NUMBER;
        hash = (53 * hash) + getState().hashCode();
        hash = (37 * hash) + REASON_FIELD_NUMBER;
        hash = (53 * hash) + getReason().hashCode();
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static GrpcService.RepositoryIndexResponse.ModelIndex parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static GrpcService.RepositoryIndexResponse.ModelIndex parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static GrpcService.RepositoryIndexResponse.ModelIndex parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static GrpcService.RepositoryIndexResponse.ModelIndex parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static GrpcService.RepositoryIndexResponse.ModelIndex parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static GrpcService.RepositoryIndexResponse.ModelIndex parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static GrpcService.RepositoryIndexResponse.ModelIndex parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static GrpcService.RepositoryIndexResponse.ModelIndex parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static GrpcService.RepositoryIndexResponse.ModelIndex parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static GrpcService.RepositoryIndexResponse.ModelIndex parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(GrpcService.RepositoryIndexResponse.ModelIndex prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @Override
      protected Builder newBuilderForType(
          BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: message ModelIndex
       *&#64;&#64;
       *&#64;&#64;     Index entry for a model.
       *&#64;&#64;
       * </pre>
       *
       * Protobuf type {@code inference.RepositoryIndexResponse.ModelIndex}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:inference.RepositoryIndexResponse.ModelIndex)
          GrpcService.RepositoryIndexResponse.ModelIndexOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return GrpcService.internal_static_inference_RepositoryIndexResponse_ModelIndex_descriptor;
        }

        protected FieldAccessorTable
            internalGetFieldAccessorTable() {
          return GrpcService.internal_static_inference_RepositoryIndexResponse_ModelIndex_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  GrpcService.RepositoryIndexResponse.ModelIndex.class, GrpcService.RepositoryIndexResponse.ModelIndex.Builder.class);
        }

        // Construct using GrpcService.RepositoryIndexResponse.ModelIndex.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          name_ = "";

          version_ = "";

          state_ = "";

          reason_ = "";

          return this;
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return GrpcService.internal_static_inference_RepositoryIndexResponse_ModelIndex_descriptor;
        }

        public GrpcService.RepositoryIndexResponse.ModelIndex getDefaultInstanceForType() {
          return GrpcService.RepositoryIndexResponse.ModelIndex.getDefaultInstance();
        }

        public GrpcService.RepositoryIndexResponse.ModelIndex build() {
          GrpcService.RepositoryIndexResponse.ModelIndex result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public GrpcService.RepositoryIndexResponse.ModelIndex buildPartial() {
          GrpcService.RepositoryIndexResponse.ModelIndex result = new GrpcService.RepositoryIndexResponse.ModelIndex(this);
          result.name_ = name_;
          result.version_ = version_;
          result.state_ = state_;
          result.reason_ = reason_;
          onBuilt();
          return result;
        }

        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof GrpcService.RepositoryIndexResponse.ModelIndex) {
            return mergeFrom((GrpcService.RepositoryIndexResponse.ModelIndex)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(GrpcService.RepositoryIndexResponse.ModelIndex other) {
          if (other == GrpcService.RepositoryIndexResponse.ModelIndex.getDefaultInstance()) return this;
          if (!other.getName().isEmpty()) {
            name_ = other.name_;
            onChanged();
          }
          if (!other.getVersion().isEmpty()) {
            version_ = other.version_;
            onChanged();
          }
          if (!other.getState().isEmpty()) {
            state_ = other.state_;
            onChanged();
          }
          if (!other.getReason().isEmpty()) {
            reason_ = other.reason_;
            onChanged();
          }
          onChanged();
          return this;
        }

        public final boolean isInitialized() {
          return true;
        }

        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          GrpcService.RepositoryIndexResponse.ModelIndex parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (GrpcService.RepositoryIndexResponse.ModelIndex) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }

        private Object name_ = "";
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The name of the model.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public String getName() {
          Object ref = name_;
          if (!(ref instanceof String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            String s = bs.toStringUtf8();
            name_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The name of the model.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public com.google.protobuf.ByteString
            getNameBytes() {
          Object ref = name_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8(
                    (String) ref);
            name_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The name of the model.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public Builder setName(
            String value) {
          if (value == null) {
    throw new NullPointerException();
  }

          name_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The name of the model.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public Builder clearName() {

          name_ = getDefaultInstance().getName();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The name of the model.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public Builder setNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

          name_ = value;
          onChanged();
          return this;
        }

        private Object version_ = "";
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: string version
         *&#64;&#64;
         *&#64;&#64;       The version of the model.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string version = 2;</code>
         */
        public String getVersion() {
          Object ref = version_;
          if (!(ref instanceof String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            String s = bs.toStringUtf8();
            version_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: string version
         *&#64;&#64;
         *&#64;&#64;       The version of the model.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string version = 2;</code>
         */
        public com.google.protobuf.ByteString
            getVersionBytes() {
          Object ref = version_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8(
                    (String) ref);
            version_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: string version
         *&#64;&#64;
         *&#64;&#64;       The version of the model.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string version = 2;</code>
         */
        public Builder setVersion(
            String value) {
          if (value == null) {
    throw new NullPointerException();
  }

          version_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: string version
         *&#64;&#64;
         *&#64;&#64;       The version of the model.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string version = 2;</code>
         */
        public Builder clearVersion() {

          version_ = getDefaultInstance().getVersion();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: string version
         *&#64;&#64;
         *&#64;&#64;       The version of the model.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string version = 2;</code>
         */
        public Builder setVersionBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

          version_ = value;
          onChanged();
          return this;
        }

        private Object state_ = "";
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string state
         *&#64;&#64;
         *&#64;&#64;       The state of the model.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string state = 3;</code>
         */
        public String getState() {
          Object ref = state_;
          if (!(ref instanceof String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            String s = bs.toStringUtf8();
            state_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string state
         *&#64;&#64;
         *&#64;&#64;       The state of the model.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string state = 3;</code>
         */
        public com.google.protobuf.ByteString
            getStateBytes() {
          Object ref = state_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8(
                    (String) ref);
            state_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string state
         *&#64;&#64;
         *&#64;&#64;       The state of the model.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string state = 3;</code>
         */
        public Builder setState(
            String value) {
          if (value == null) {
    throw new NullPointerException();
  }

          state_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string state
         *&#64;&#64;
         *&#64;&#64;       The state of the model.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string state = 3;</code>
         */
        public Builder clearState() {

          state_ = getDefaultInstance().getState();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string state
         *&#64;&#64;
         *&#64;&#64;       The state of the model.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string state = 3;</code>
         */
        public Builder setStateBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

          state_ = value;
          onChanged();
          return this;
        }

        private Object reason_ = "";
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string reason
         *&#64;&#64;
         *&#64;&#64;       The reason, if any, that the model is in the given state.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string reason = 4;</code>
         */
        public String getReason() {
          Object ref = reason_;
          if (!(ref instanceof String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            String s = bs.toStringUtf8();
            reason_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string reason
         *&#64;&#64;
         *&#64;&#64;       The reason, if any, that the model is in the given state.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string reason = 4;</code>
         */
        public com.google.protobuf.ByteString
            getReasonBytes() {
          Object ref = reason_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8(
                    (String) ref);
            reason_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string reason
         *&#64;&#64;
         *&#64;&#64;       The reason, if any, that the model is in the given state.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string reason = 4;</code>
         */
        public Builder setReason(
            String value) {
          if (value == null) {
    throw new NullPointerException();
  }

          reason_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string reason
         *&#64;&#64;
         *&#64;&#64;       The reason, if any, that the model is in the given state.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string reason = 4;</code>
         */
        public Builder clearReason() {

          reason_ = getDefaultInstance().getReason();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string reason
         *&#64;&#64;
         *&#64;&#64;       The reason, if any, that the model is in the given state.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string reason = 4;</code>
         */
        public Builder setReasonBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

          reason_ = value;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return this;
        }

        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return this;
        }


        // @@protoc_insertion_point(builder_scope:inference.RepositoryIndexResponse.ModelIndex)
      }

      // @@protoc_insertion_point(class_scope:inference.RepositoryIndexResponse.ModelIndex)
      private static final GrpcService.RepositoryIndexResponse.ModelIndex DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new GrpcService.RepositoryIndexResponse.ModelIndex();
      }

      public static GrpcService.RepositoryIndexResponse.ModelIndex getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<ModelIndex>
          PARSER = new com.google.protobuf.AbstractParser<ModelIndex>() {
        public ModelIndex parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new ModelIndex(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<ModelIndex> parser() {
        return PARSER;
      }

      @Override
      public com.google.protobuf.Parser<ModelIndex> getParserForType() {
        return PARSER;
      }

      public GrpcService.RepositoryIndexResponse.ModelIndex getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int MODELS_FIELD_NUMBER = 1;
    private java.util.List<GrpcService.RepositoryIndexResponse.ModelIndex> models_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: ModelIndex models (repeated)
     *&#64;&#64;
     *&#64;&#64;     An index entry for each model.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.RepositoryIndexResponse.ModelIndex models = 1;</code>
     */
    public java.util.List<GrpcService.RepositoryIndexResponse.ModelIndex> getModelsList() {
      return models_;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: ModelIndex models (repeated)
     *&#64;&#64;
     *&#64;&#64;     An index entry for each model.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.RepositoryIndexResponse.ModelIndex models = 1;</code>
     */
    public java.util.List<? extends GrpcService.RepositoryIndexResponse.ModelIndexOrBuilder>
        getModelsOrBuilderList() {
      return models_;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: ModelIndex models (repeated)
     *&#64;&#64;
     *&#64;&#64;     An index entry for each model.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.RepositoryIndexResponse.ModelIndex models = 1;</code>
     */
    public int getModelsCount() {
      return models_.size();
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: ModelIndex models (repeated)
     *&#64;&#64;
     *&#64;&#64;     An index entry for each model.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.RepositoryIndexResponse.ModelIndex models = 1;</code>
     */
    public GrpcService.RepositoryIndexResponse.ModelIndex getModels(int index) {
      return models_.get(index);
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: ModelIndex models (repeated)
     *&#64;&#64;
     *&#64;&#64;     An index entry for each model.
     *&#64;&#64;
     * </pre>
     *
     * <code>repeated .inference.RepositoryIndexResponse.ModelIndex models = 1;</code>
     */
    public GrpcService.RepositoryIndexResponse.ModelIndexOrBuilder getModelsOrBuilder(
        int index) {
      return models_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < models_.size(); i++) {
        output.writeMessage(1, models_.get(i));
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < models_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, models_.get(i));
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.RepositoryIndexResponse)) {
        return super.equals(obj);
      }
      GrpcService.RepositoryIndexResponse other = (GrpcService.RepositoryIndexResponse) obj;

      boolean result = true;
      result = result && getModelsList()
          .equals(other.getModelsList());
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (getModelsCount() > 0) {
        hash = (37 * hash) + MODELS_FIELD_NUMBER;
        hash = (53 * hash) + getModelsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.RepositoryIndexResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.RepositoryIndexResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.RepositoryIndexResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.RepositoryIndexResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.RepositoryIndexResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.RepositoryIndexResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.RepositoryIndexResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.RepositoryIndexResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.RepositoryIndexResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.RepositoryIndexResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.RepositoryIndexResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message RepositoryIndexResponse
     *&#64;&#64;
     *&#64;&#64;   Response message for RepositoryIndex.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.RepositoryIndexResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.RepositoryIndexResponse)
        GrpcService.RepositoryIndexResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_RepositoryIndexResponse_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_RepositoryIndexResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.RepositoryIndexResponse.class, GrpcService.RepositoryIndexResponse.Builder.class);
      }

      // Construct using GrpcService.RepositoryIndexResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getModelsFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (modelsBuilder_ == null) {
          models_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          modelsBuilder_.clear();
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_RepositoryIndexResponse_descriptor;
      }

      public GrpcService.RepositoryIndexResponse getDefaultInstanceForType() {
        return GrpcService.RepositoryIndexResponse.getDefaultInstance();
      }

      public GrpcService.RepositoryIndexResponse build() {
        GrpcService.RepositoryIndexResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.RepositoryIndexResponse buildPartial() {
        GrpcService.RepositoryIndexResponse result = new GrpcService.RepositoryIndexResponse(this);
        int from_bitField0_ = bitField0_;
        if (modelsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            models_ = java.util.Collections.unmodifiableList(models_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.models_ = models_;
        } else {
          result.models_ = modelsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.RepositoryIndexResponse) {
          return mergeFrom((GrpcService.RepositoryIndexResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.RepositoryIndexResponse other) {
        if (other == GrpcService.RepositoryIndexResponse.getDefaultInstance()) return this;
        if (modelsBuilder_ == null) {
          if (!other.models_.isEmpty()) {
            if (models_.isEmpty()) {
              models_ = other.models_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureModelsIsMutable();
              models_.addAll(other.models_);
            }
            onChanged();
          }
        } else {
          if (!other.models_.isEmpty()) {
            if (modelsBuilder_.isEmpty()) {
              modelsBuilder_.dispose();
              modelsBuilder_ = null;
              models_ = other.models_;
              bitField0_ = (bitField0_ & ~0x00000001);
              modelsBuilder_ =
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getModelsFieldBuilder() : null;
            } else {
              modelsBuilder_.addAllMessages(other.models_);
            }
          }
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.RepositoryIndexResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.RepositoryIndexResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<GrpcService.RepositoryIndexResponse.ModelIndex> models_ =
        java.util.Collections.emptyList();
      private void ensureModelsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          models_ = new java.util.ArrayList<GrpcService.RepositoryIndexResponse.ModelIndex>(models_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          GrpcService.RepositoryIndexResponse.ModelIndex, GrpcService.RepositoryIndexResponse.ModelIndex.Builder, GrpcService.RepositoryIndexResponse.ModelIndexOrBuilder> modelsBuilder_;

      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelIndex models (repeated)
       *&#64;&#64;
       *&#64;&#64;     An index entry for each model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.RepositoryIndexResponse.ModelIndex models = 1;</code>
       */
      public java.util.List<GrpcService.RepositoryIndexResponse.ModelIndex> getModelsList() {
        if (modelsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(models_);
        } else {
          return modelsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelIndex models (repeated)
       *&#64;&#64;
       *&#64;&#64;     An index entry for each model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.RepositoryIndexResponse.ModelIndex models = 1;</code>
       */
      public int getModelsCount() {
        if (modelsBuilder_ == null) {
          return models_.size();
        } else {
          return modelsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelIndex models (repeated)
       *&#64;&#64;
       *&#64;&#64;     An index entry for each model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.RepositoryIndexResponse.ModelIndex models = 1;</code>
       */
      public GrpcService.RepositoryIndexResponse.ModelIndex getModels(int index) {
        if (modelsBuilder_ == null) {
          return models_.get(index);
        } else {
          return modelsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelIndex models (repeated)
       *&#64;&#64;
       *&#64;&#64;     An index entry for each model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.RepositoryIndexResponse.ModelIndex models = 1;</code>
       */
      public Builder setModels(
          int index, GrpcService.RepositoryIndexResponse.ModelIndex value) {
        if (modelsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureModelsIsMutable();
          models_.set(index, value);
          onChanged();
        } else {
          modelsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelIndex models (repeated)
       *&#64;&#64;
       *&#64;&#64;     An index entry for each model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.RepositoryIndexResponse.ModelIndex models = 1;</code>
       */
      public Builder setModels(
          int index, GrpcService.RepositoryIndexResponse.ModelIndex.Builder builderForValue) {
        if (modelsBuilder_ == null) {
          ensureModelsIsMutable();
          models_.set(index, builderForValue.build());
          onChanged();
        } else {
          modelsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelIndex models (repeated)
       *&#64;&#64;
       *&#64;&#64;     An index entry for each model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.RepositoryIndexResponse.ModelIndex models = 1;</code>
       */
      public Builder addModels(GrpcService.RepositoryIndexResponse.ModelIndex value) {
        if (modelsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureModelsIsMutable();
          models_.add(value);
          onChanged();
        } else {
          modelsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelIndex models (repeated)
       *&#64;&#64;
       *&#64;&#64;     An index entry for each model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.RepositoryIndexResponse.ModelIndex models = 1;</code>
       */
      public Builder addModels(
          int index, GrpcService.RepositoryIndexResponse.ModelIndex value) {
        if (modelsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureModelsIsMutable();
          models_.add(index, value);
          onChanged();
        } else {
          modelsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelIndex models (repeated)
       *&#64;&#64;
       *&#64;&#64;     An index entry for each model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.RepositoryIndexResponse.ModelIndex models = 1;</code>
       */
      public Builder addModels(
          GrpcService.RepositoryIndexResponse.ModelIndex.Builder builderForValue) {
        if (modelsBuilder_ == null) {
          ensureModelsIsMutable();
          models_.add(builderForValue.build());
          onChanged();
        } else {
          modelsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelIndex models (repeated)
       *&#64;&#64;
       *&#64;&#64;     An index entry for each model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.RepositoryIndexResponse.ModelIndex models = 1;</code>
       */
      public Builder addModels(
          int index, GrpcService.RepositoryIndexResponse.ModelIndex.Builder builderForValue) {
        if (modelsBuilder_ == null) {
          ensureModelsIsMutable();
          models_.add(index, builderForValue.build());
          onChanged();
        } else {
          modelsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelIndex models (repeated)
       *&#64;&#64;
       *&#64;&#64;     An index entry for each model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.RepositoryIndexResponse.ModelIndex models = 1;</code>
       */
      public Builder addAllModels(
          Iterable<? extends GrpcService.RepositoryIndexResponse.ModelIndex> values) {
        if (modelsBuilder_ == null) {
          ensureModelsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, models_);
          onChanged();
        } else {
          modelsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelIndex models (repeated)
       *&#64;&#64;
       *&#64;&#64;     An index entry for each model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.RepositoryIndexResponse.ModelIndex models = 1;</code>
       */
      public Builder clearModels() {
        if (modelsBuilder_ == null) {
          models_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          modelsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelIndex models (repeated)
       *&#64;&#64;
       *&#64;&#64;     An index entry for each model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.RepositoryIndexResponse.ModelIndex models = 1;</code>
       */
      public Builder removeModels(int index) {
        if (modelsBuilder_ == null) {
          ensureModelsIsMutable();
          models_.remove(index);
          onChanged();
        } else {
          modelsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelIndex models (repeated)
       *&#64;&#64;
       *&#64;&#64;     An index entry for each model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.RepositoryIndexResponse.ModelIndex models = 1;</code>
       */
      public GrpcService.RepositoryIndexResponse.ModelIndex.Builder getModelsBuilder(
          int index) {
        return getModelsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelIndex models (repeated)
       *&#64;&#64;
       *&#64;&#64;     An index entry for each model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.RepositoryIndexResponse.ModelIndex models = 1;</code>
       */
      public GrpcService.RepositoryIndexResponse.ModelIndexOrBuilder getModelsOrBuilder(
          int index) {
        if (modelsBuilder_ == null) {
          return models_.get(index);  } else {
          return modelsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelIndex models (repeated)
       *&#64;&#64;
       *&#64;&#64;     An index entry for each model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.RepositoryIndexResponse.ModelIndex models = 1;</code>
       */
      public java.util.List<? extends GrpcService.RepositoryIndexResponse.ModelIndexOrBuilder>
           getModelsOrBuilderList() {
        if (modelsBuilder_ != null) {
          return modelsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(models_);
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelIndex models (repeated)
       *&#64;&#64;
       *&#64;&#64;     An index entry for each model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.RepositoryIndexResponse.ModelIndex models = 1;</code>
       */
      public GrpcService.RepositoryIndexResponse.ModelIndex.Builder addModelsBuilder() {
        return getModelsFieldBuilder().addBuilder(
            GrpcService.RepositoryIndexResponse.ModelIndex.getDefaultInstance());
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelIndex models (repeated)
       *&#64;&#64;
       *&#64;&#64;     An index entry for each model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.RepositoryIndexResponse.ModelIndex models = 1;</code>
       */
      public GrpcService.RepositoryIndexResponse.ModelIndex.Builder addModelsBuilder(
          int index) {
        return getModelsFieldBuilder().addBuilder(
            index, GrpcService.RepositoryIndexResponse.ModelIndex.getDefaultInstance());
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: ModelIndex models (repeated)
       *&#64;&#64;
       *&#64;&#64;     An index entry for each model.
       *&#64;&#64;
       * </pre>
       *
       * <code>repeated .inference.RepositoryIndexResponse.ModelIndex models = 1;</code>
       */
      public java.util.List<GrpcService.RepositoryIndexResponse.ModelIndex.Builder>
           getModelsBuilderList() {
        return getModelsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          GrpcService.RepositoryIndexResponse.ModelIndex, GrpcService.RepositoryIndexResponse.ModelIndex.Builder, GrpcService.RepositoryIndexResponse.ModelIndexOrBuilder>
          getModelsFieldBuilder() {
        if (modelsBuilder_ == null) {
          modelsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              GrpcService.RepositoryIndexResponse.ModelIndex, GrpcService.RepositoryIndexResponse.ModelIndex.Builder, GrpcService.RepositoryIndexResponse.ModelIndexOrBuilder>(
                  models_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          models_ = null;
        }
        return modelsBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.RepositoryIndexResponse)
    }

    // @@protoc_insertion_point(class_scope:inference.RepositoryIndexResponse)
    private static final GrpcService.RepositoryIndexResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.RepositoryIndexResponse();
    }

    public static GrpcService.RepositoryIndexResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<RepositoryIndexResponse>
        PARSER = new com.google.protobuf.AbstractParser<RepositoryIndexResponse>() {
      public RepositoryIndexResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new RepositoryIndexResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<RepositoryIndexResponse> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<RepositoryIndexResponse> getParserForType() {
      return PARSER;
    }

    public GrpcService.RepositoryIndexResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RepositoryModelLoadRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.RepositoryModelLoadRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string repository_name
     *&#64;&#64;
     *&#64;&#64;     The name of the repository to load from. If empty the model
     *&#64;&#64;     is loaded from any repository.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string repository_name = 1;</code>
     */
    String getRepositoryName();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string repository_name
     *&#64;&#64;
     *&#64;&#64;     The name of the repository to load from. If empty the model
     *&#64;&#64;     is loaded from any repository.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string repository_name = 1;</code>
     */
    com.google.protobuf.ByteString
        getRepositoryNameBytes();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string repository_name
     *&#64;&#64;
     *&#64;&#64;     The name of the model to load, or reload.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string model_name = 2;</code>
     */
    String getModelName();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string repository_name
     *&#64;&#64;
     *&#64;&#64;     The name of the model to load, or reload.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string model_name = 2;</code>
     */
    com.google.protobuf.ByteString
        getModelNameBytes();
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message RepositoryModelLoadRequest
   *&#64;&#64;
   *&#64;&#64;   Request message for RepositoryModelLoad.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.RepositoryModelLoadRequest}
   */
  public  static final class RepositoryModelLoadRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.RepositoryModelLoadRequest)
      RepositoryModelLoadRequestOrBuilder {
    // Use RepositoryModelLoadRequest.newBuilder() to construct.
    private RepositoryModelLoadRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RepositoryModelLoadRequest() {
      repositoryName_ = "";
      modelName_ = "";
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private RepositoryModelLoadRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              String s = input.readStringRequireUtf8();

              repositoryName_ = s;
              break;
            }
            case 18: {
              String s = input.readStringRequireUtf8();

              modelName_ = s;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_RepositoryModelLoadRequest_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_RepositoryModelLoadRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.RepositoryModelLoadRequest.class, GrpcService.RepositoryModelLoadRequest.Builder.class);
    }

    public static final int REPOSITORY_NAME_FIELD_NUMBER = 1;
    private volatile Object repositoryName_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string repository_name
     *&#64;&#64;
     *&#64;&#64;     The name of the repository to load from. If empty the model
     *&#64;&#64;     is loaded from any repository.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string repository_name = 1;</code>
     */
    public String getRepositoryName() {
      Object ref = repositoryName_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        repositoryName_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string repository_name
     *&#64;&#64;
     *&#64;&#64;     The name of the repository to load from. If empty the model
     *&#64;&#64;     is loaded from any repository.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string repository_name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getRepositoryNameBytes() {
      Object ref = repositoryName_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        repositoryName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MODEL_NAME_FIELD_NUMBER = 2;
    private volatile Object modelName_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string repository_name
     *&#64;&#64;
     *&#64;&#64;     The name of the model to load, or reload.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string model_name = 2;</code>
     */
    public String getModelName() {
      Object ref = modelName_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        modelName_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string repository_name
     *&#64;&#64;
     *&#64;&#64;     The name of the model to load, or reload.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string model_name = 2;</code>
     */
    public com.google.protobuf.ByteString
        getModelNameBytes() {
      Object ref = modelName_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        modelName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getRepositoryNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, repositoryName_);
      }
      if (!getModelNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, modelName_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getRepositoryNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, repositoryName_);
      }
      if (!getModelNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, modelName_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.RepositoryModelLoadRequest)) {
        return super.equals(obj);
      }
      GrpcService.RepositoryModelLoadRequest other = (GrpcService.RepositoryModelLoadRequest) obj;

      boolean result = true;
      result = result && getRepositoryName()
          .equals(other.getRepositoryName());
      result = result && getModelName()
          .equals(other.getModelName());
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (37 * hash) + REPOSITORY_NAME_FIELD_NUMBER;
      hash = (53 * hash) + getRepositoryName().hashCode();
      hash = (37 * hash) + MODEL_NAME_FIELD_NUMBER;
      hash = (53 * hash) + getModelName().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.RepositoryModelLoadRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.RepositoryModelLoadRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.RepositoryModelLoadRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.RepositoryModelLoadRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.RepositoryModelLoadRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.RepositoryModelLoadRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.RepositoryModelLoadRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.RepositoryModelLoadRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.RepositoryModelLoadRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.RepositoryModelLoadRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.RepositoryModelLoadRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message RepositoryModelLoadRequest
     *&#64;&#64;
     *&#64;&#64;   Request message for RepositoryModelLoad.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.RepositoryModelLoadRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.RepositoryModelLoadRequest)
        GrpcService.RepositoryModelLoadRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_RepositoryModelLoadRequest_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_RepositoryModelLoadRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.RepositoryModelLoadRequest.class, GrpcService.RepositoryModelLoadRequest.Builder.class);
      }

      // Construct using GrpcService.RepositoryModelLoadRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        repositoryName_ = "";

        modelName_ = "";

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_RepositoryModelLoadRequest_descriptor;
      }

      public GrpcService.RepositoryModelLoadRequest getDefaultInstanceForType() {
        return GrpcService.RepositoryModelLoadRequest.getDefaultInstance();
      }

      public GrpcService.RepositoryModelLoadRequest build() {
        GrpcService.RepositoryModelLoadRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.RepositoryModelLoadRequest buildPartial() {
        GrpcService.RepositoryModelLoadRequest result = new GrpcService.RepositoryModelLoadRequest(this);
        result.repositoryName_ = repositoryName_;
        result.modelName_ = modelName_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.RepositoryModelLoadRequest) {
          return mergeFrom((GrpcService.RepositoryModelLoadRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.RepositoryModelLoadRequest other) {
        if (other == GrpcService.RepositoryModelLoadRequest.getDefaultInstance()) return this;
        if (!other.getRepositoryName().isEmpty()) {
          repositoryName_ = other.repositoryName_;
          onChanged();
        }
        if (!other.getModelName().isEmpty()) {
          modelName_ = other.modelName_;
          onChanged();
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.RepositoryModelLoadRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.RepositoryModelLoadRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private Object repositoryName_ = "";
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string repository_name
       *&#64;&#64;
       *&#64;&#64;     The name of the repository to load from. If empty the model
       *&#64;&#64;     is loaded from any repository.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string repository_name = 1;</code>
       */
      public String getRepositoryName() {
        Object ref = repositoryName_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          repositoryName_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string repository_name
       *&#64;&#64;
       *&#64;&#64;     The name of the repository to load from. If empty the model
       *&#64;&#64;     is loaded from any repository.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string repository_name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getRepositoryNameBytes() {
        Object ref = repositoryName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          repositoryName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string repository_name
       *&#64;&#64;
       *&#64;&#64;     The name of the repository to load from. If empty the model
       *&#64;&#64;     is loaded from any repository.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string repository_name = 1;</code>
       */
      public Builder setRepositoryName(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        repositoryName_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string repository_name
       *&#64;&#64;
       *&#64;&#64;     The name of the repository to load from. If empty the model
       *&#64;&#64;     is loaded from any repository.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string repository_name = 1;</code>
       */
      public Builder clearRepositoryName() {

        repositoryName_ = getDefaultInstance().getRepositoryName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string repository_name
       *&#64;&#64;
       *&#64;&#64;     The name of the repository to load from. If empty the model
       *&#64;&#64;     is loaded from any repository.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string repository_name = 1;</code>
       */
      public Builder setRepositoryNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        repositoryName_ = value;
        onChanged();
        return this;
      }

      private Object modelName_ = "";
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string repository_name
       *&#64;&#64;
       *&#64;&#64;     The name of the model to load, or reload.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string model_name = 2;</code>
       */
      public String getModelName() {
        Object ref = modelName_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          modelName_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string repository_name
       *&#64;&#64;
       *&#64;&#64;     The name of the model to load, or reload.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string model_name = 2;</code>
       */
      public com.google.protobuf.ByteString
          getModelNameBytes() {
        Object ref = modelName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          modelName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string repository_name
       *&#64;&#64;
       *&#64;&#64;     The name of the model to load, or reload.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string model_name = 2;</code>
       */
      public Builder setModelName(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        modelName_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string repository_name
       *&#64;&#64;
       *&#64;&#64;     The name of the model to load, or reload.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string model_name = 2;</code>
       */
      public Builder clearModelName() {

        modelName_ = getDefaultInstance().getModelName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string repository_name
       *&#64;&#64;
       *&#64;&#64;     The name of the model to load, or reload.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string model_name = 2;</code>
       */
      public Builder setModelNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        modelName_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.RepositoryModelLoadRequest)
    }

    // @@protoc_insertion_point(class_scope:inference.RepositoryModelLoadRequest)
    private static final GrpcService.RepositoryModelLoadRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.RepositoryModelLoadRequest();
    }

    public static GrpcService.RepositoryModelLoadRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<RepositoryModelLoadRequest>
        PARSER = new com.google.protobuf.AbstractParser<RepositoryModelLoadRequest>() {
      public RepositoryModelLoadRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new RepositoryModelLoadRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<RepositoryModelLoadRequest> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<RepositoryModelLoadRequest> getParserForType() {
      return PARSER;
    }

    public GrpcService.RepositoryModelLoadRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RepositoryModelLoadResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.RepositoryModelLoadResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message RepositoryModelLoadResponse
   *&#64;&#64;
   *&#64;&#64;   Response message for RepositoryModelLoad.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.RepositoryModelLoadResponse}
   */
  public  static final class RepositoryModelLoadResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.RepositoryModelLoadResponse)
      RepositoryModelLoadResponseOrBuilder {
    // Use RepositoryModelLoadResponse.newBuilder() to construct.
    private RepositoryModelLoadResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RepositoryModelLoadResponse() {
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private RepositoryModelLoadResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_RepositoryModelLoadResponse_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_RepositoryModelLoadResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.RepositoryModelLoadResponse.class, GrpcService.RepositoryModelLoadResponse.Builder.class);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.RepositoryModelLoadResponse)) {
        return super.equals(obj);
      }
      GrpcService.RepositoryModelLoadResponse other = (GrpcService.RepositoryModelLoadResponse) obj;

      boolean result = true;
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.RepositoryModelLoadResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.RepositoryModelLoadResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.RepositoryModelLoadResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.RepositoryModelLoadResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.RepositoryModelLoadResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.RepositoryModelLoadResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.RepositoryModelLoadResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.RepositoryModelLoadResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.RepositoryModelLoadResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.RepositoryModelLoadResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.RepositoryModelLoadResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message RepositoryModelLoadResponse
     *&#64;&#64;
     *&#64;&#64;   Response message for RepositoryModelLoad.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.RepositoryModelLoadResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.RepositoryModelLoadResponse)
        GrpcService.RepositoryModelLoadResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_RepositoryModelLoadResponse_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_RepositoryModelLoadResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.RepositoryModelLoadResponse.class, GrpcService.RepositoryModelLoadResponse.Builder.class);
      }

      // Construct using GrpcService.RepositoryModelLoadResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_RepositoryModelLoadResponse_descriptor;
      }

      public GrpcService.RepositoryModelLoadResponse getDefaultInstanceForType() {
        return GrpcService.RepositoryModelLoadResponse.getDefaultInstance();
      }

      public GrpcService.RepositoryModelLoadResponse build() {
        GrpcService.RepositoryModelLoadResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.RepositoryModelLoadResponse buildPartial() {
        GrpcService.RepositoryModelLoadResponse result = new GrpcService.RepositoryModelLoadResponse(this);
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.RepositoryModelLoadResponse) {
          return mergeFrom((GrpcService.RepositoryModelLoadResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.RepositoryModelLoadResponse other) {
        if (other == GrpcService.RepositoryModelLoadResponse.getDefaultInstance()) return this;
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.RepositoryModelLoadResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.RepositoryModelLoadResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.RepositoryModelLoadResponse)
    }

    // @@protoc_insertion_point(class_scope:inference.RepositoryModelLoadResponse)
    private static final GrpcService.RepositoryModelLoadResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.RepositoryModelLoadResponse();
    }

    public static GrpcService.RepositoryModelLoadResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<RepositoryModelLoadResponse>
        PARSER = new com.google.protobuf.AbstractParser<RepositoryModelLoadResponse>() {
      public RepositoryModelLoadResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new RepositoryModelLoadResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<RepositoryModelLoadResponse> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<RepositoryModelLoadResponse> getParserForType() {
      return PARSER;
    }

    public GrpcService.RepositoryModelLoadResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RepositoryModelUnloadRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.RepositoryModelUnloadRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string repository_name
     *&#64;&#64;
     *&#64;&#64;     The name of the repository from which the model was originally
     *&#64;&#64;     loaded. If empty the repository is not considered.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string repository_name = 1;</code>
     */
    String getRepositoryName();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string repository_name
     *&#64;&#64;
     *&#64;&#64;     The name of the repository from which the model was originally
     *&#64;&#64;     loaded. If empty the repository is not considered.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string repository_name = 1;</code>
     */
    com.google.protobuf.ByteString
        getRepositoryNameBytes();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string repository_name
     *&#64;&#64;
     *&#64;&#64;     The name of the model to unload.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string model_name = 2;</code>
     */
    String getModelName();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string repository_name
     *&#64;&#64;
     *&#64;&#64;     The name of the model to unload.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string model_name = 2;</code>
     */
    com.google.protobuf.ByteString
        getModelNameBytes();
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message RepositoryModelUnloadRequest
   *&#64;&#64;
   *&#64;&#64;   Request message for RepositoryModelUnload.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.RepositoryModelUnloadRequest}
   */
  public  static final class RepositoryModelUnloadRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.RepositoryModelUnloadRequest)
      RepositoryModelUnloadRequestOrBuilder {
    // Use RepositoryModelUnloadRequest.newBuilder() to construct.
    private RepositoryModelUnloadRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RepositoryModelUnloadRequest() {
      repositoryName_ = "";
      modelName_ = "";
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private RepositoryModelUnloadRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              String s = input.readStringRequireUtf8();

              repositoryName_ = s;
              break;
            }
            case 18: {
              String s = input.readStringRequireUtf8();

              modelName_ = s;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_RepositoryModelUnloadRequest_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_RepositoryModelUnloadRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.RepositoryModelUnloadRequest.class, GrpcService.RepositoryModelUnloadRequest.Builder.class);
    }

    public static final int REPOSITORY_NAME_FIELD_NUMBER = 1;
    private volatile Object repositoryName_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string repository_name
     *&#64;&#64;
     *&#64;&#64;     The name of the repository from which the model was originally
     *&#64;&#64;     loaded. If empty the repository is not considered.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string repository_name = 1;</code>
     */
    public String getRepositoryName() {
      Object ref = repositoryName_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        repositoryName_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string repository_name
     *&#64;&#64;
     *&#64;&#64;     The name of the repository from which the model was originally
     *&#64;&#64;     loaded. If empty the repository is not considered.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string repository_name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getRepositoryNameBytes() {
      Object ref = repositoryName_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        repositoryName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MODEL_NAME_FIELD_NUMBER = 2;
    private volatile Object modelName_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string repository_name
     *&#64;&#64;
     *&#64;&#64;     The name of the model to unload.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string model_name = 2;</code>
     */
    public String getModelName() {
      Object ref = modelName_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        modelName_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string repository_name
     *&#64;&#64;
     *&#64;&#64;     The name of the model to unload.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string model_name = 2;</code>
     */
    public com.google.protobuf.ByteString
        getModelNameBytes() {
      Object ref = modelName_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        modelName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getRepositoryNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, repositoryName_);
      }
      if (!getModelNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, modelName_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getRepositoryNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, repositoryName_);
      }
      if (!getModelNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, modelName_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.RepositoryModelUnloadRequest)) {
        return super.equals(obj);
      }
      GrpcService.RepositoryModelUnloadRequest other = (GrpcService.RepositoryModelUnloadRequest) obj;

      boolean result = true;
      result = result && getRepositoryName()
          .equals(other.getRepositoryName());
      result = result && getModelName()
          .equals(other.getModelName());
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (37 * hash) + REPOSITORY_NAME_FIELD_NUMBER;
      hash = (53 * hash) + getRepositoryName().hashCode();
      hash = (37 * hash) + MODEL_NAME_FIELD_NUMBER;
      hash = (53 * hash) + getModelName().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.RepositoryModelUnloadRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.RepositoryModelUnloadRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.RepositoryModelUnloadRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.RepositoryModelUnloadRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.RepositoryModelUnloadRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.RepositoryModelUnloadRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.RepositoryModelUnloadRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.RepositoryModelUnloadRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.RepositoryModelUnloadRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.RepositoryModelUnloadRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.RepositoryModelUnloadRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message RepositoryModelUnloadRequest
     *&#64;&#64;
     *&#64;&#64;   Request message for RepositoryModelUnload.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.RepositoryModelUnloadRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.RepositoryModelUnloadRequest)
        GrpcService.RepositoryModelUnloadRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_RepositoryModelUnloadRequest_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_RepositoryModelUnloadRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.RepositoryModelUnloadRequest.class, GrpcService.RepositoryModelUnloadRequest.Builder.class);
      }

      // Construct using GrpcService.RepositoryModelUnloadRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        repositoryName_ = "";

        modelName_ = "";

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_RepositoryModelUnloadRequest_descriptor;
      }

      public GrpcService.RepositoryModelUnloadRequest getDefaultInstanceForType() {
        return GrpcService.RepositoryModelUnloadRequest.getDefaultInstance();
      }

      public GrpcService.RepositoryModelUnloadRequest build() {
        GrpcService.RepositoryModelUnloadRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.RepositoryModelUnloadRequest buildPartial() {
        GrpcService.RepositoryModelUnloadRequest result = new GrpcService.RepositoryModelUnloadRequest(this);
        result.repositoryName_ = repositoryName_;
        result.modelName_ = modelName_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.RepositoryModelUnloadRequest) {
          return mergeFrom((GrpcService.RepositoryModelUnloadRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.RepositoryModelUnloadRequest other) {
        if (other == GrpcService.RepositoryModelUnloadRequest.getDefaultInstance()) return this;
        if (!other.getRepositoryName().isEmpty()) {
          repositoryName_ = other.repositoryName_;
          onChanged();
        }
        if (!other.getModelName().isEmpty()) {
          modelName_ = other.modelName_;
          onChanged();
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.RepositoryModelUnloadRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.RepositoryModelUnloadRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private Object repositoryName_ = "";
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string repository_name
       *&#64;&#64;
       *&#64;&#64;     The name of the repository from which the model was originally
       *&#64;&#64;     loaded. If empty the repository is not considered.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string repository_name = 1;</code>
       */
      public String getRepositoryName() {
        Object ref = repositoryName_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          repositoryName_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string repository_name
       *&#64;&#64;
       *&#64;&#64;     The name of the repository from which the model was originally
       *&#64;&#64;     loaded. If empty the repository is not considered.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string repository_name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getRepositoryNameBytes() {
        Object ref = repositoryName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          repositoryName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string repository_name
       *&#64;&#64;
       *&#64;&#64;     The name of the repository from which the model was originally
       *&#64;&#64;     loaded. If empty the repository is not considered.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string repository_name = 1;</code>
       */
      public Builder setRepositoryName(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        repositoryName_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string repository_name
       *&#64;&#64;
       *&#64;&#64;     The name of the repository from which the model was originally
       *&#64;&#64;     loaded. If empty the repository is not considered.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string repository_name = 1;</code>
       */
      public Builder clearRepositoryName() {

        repositoryName_ = getDefaultInstance().getRepositoryName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string repository_name
       *&#64;&#64;
       *&#64;&#64;     The name of the repository from which the model was originally
       *&#64;&#64;     loaded. If empty the repository is not considered.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string repository_name = 1;</code>
       */
      public Builder setRepositoryNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        repositoryName_ = value;
        onChanged();
        return this;
      }

      private Object modelName_ = "";
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string repository_name
       *&#64;&#64;
       *&#64;&#64;     The name of the model to unload.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string model_name = 2;</code>
       */
      public String getModelName() {
        Object ref = modelName_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          modelName_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string repository_name
       *&#64;&#64;
       *&#64;&#64;     The name of the model to unload.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string model_name = 2;</code>
       */
      public com.google.protobuf.ByteString
          getModelNameBytes() {
        Object ref = modelName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          modelName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string repository_name
       *&#64;&#64;
       *&#64;&#64;     The name of the model to unload.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string model_name = 2;</code>
       */
      public Builder setModelName(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        modelName_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string repository_name
       *&#64;&#64;
       *&#64;&#64;     The name of the model to unload.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string model_name = 2;</code>
       */
      public Builder clearModelName() {

        modelName_ = getDefaultInstance().getModelName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string repository_name
       *&#64;&#64;
       *&#64;&#64;     The name of the model to unload.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string model_name = 2;</code>
       */
      public Builder setModelNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        modelName_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.RepositoryModelUnloadRequest)
    }

    // @@protoc_insertion_point(class_scope:inference.RepositoryModelUnloadRequest)
    private static final GrpcService.RepositoryModelUnloadRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.RepositoryModelUnloadRequest();
    }

    public static GrpcService.RepositoryModelUnloadRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<RepositoryModelUnloadRequest>
        PARSER = new com.google.protobuf.AbstractParser<RepositoryModelUnloadRequest>() {
      public RepositoryModelUnloadRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new RepositoryModelUnloadRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<RepositoryModelUnloadRequest> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<RepositoryModelUnloadRequest> getParserForType() {
      return PARSER;
    }

    public GrpcService.RepositoryModelUnloadRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RepositoryModelUnloadResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.RepositoryModelUnloadResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message RepositoryModelUnloadResponse
   *&#64;&#64;
   *&#64;&#64;   Response message for RepositoryModelUnload.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.RepositoryModelUnloadResponse}
   */
  public  static final class RepositoryModelUnloadResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.RepositoryModelUnloadResponse)
      RepositoryModelUnloadResponseOrBuilder {
    // Use RepositoryModelUnloadResponse.newBuilder() to construct.
    private RepositoryModelUnloadResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RepositoryModelUnloadResponse() {
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private RepositoryModelUnloadResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_RepositoryModelUnloadResponse_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_RepositoryModelUnloadResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.RepositoryModelUnloadResponse.class, GrpcService.RepositoryModelUnloadResponse.Builder.class);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.RepositoryModelUnloadResponse)) {
        return super.equals(obj);
      }
      GrpcService.RepositoryModelUnloadResponse other = (GrpcService.RepositoryModelUnloadResponse) obj;

      boolean result = true;
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.RepositoryModelUnloadResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.RepositoryModelUnloadResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.RepositoryModelUnloadResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.RepositoryModelUnloadResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.RepositoryModelUnloadResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.RepositoryModelUnloadResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.RepositoryModelUnloadResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.RepositoryModelUnloadResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.RepositoryModelUnloadResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.RepositoryModelUnloadResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.RepositoryModelUnloadResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message RepositoryModelUnloadResponse
     *&#64;&#64;
     *&#64;&#64;   Response message for RepositoryModelUnload.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.RepositoryModelUnloadResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.RepositoryModelUnloadResponse)
        GrpcService.RepositoryModelUnloadResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_RepositoryModelUnloadResponse_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_RepositoryModelUnloadResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.RepositoryModelUnloadResponse.class, GrpcService.RepositoryModelUnloadResponse.Builder.class);
      }

      // Construct using GrpcService.RepositoryModelUnloadResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_RepositoryModelUnloadResponse_descriptor;
      }

      public GrpcService.RepositoryModelUnloadResponse getDefaultInstanceForType() {
        return GrpcService.RepositoryModelUnloadResponse.getDefaultInstance();
      }

      public GrpcService.RepositoryModelUnloadResponse build() {
        GrpcService.RepositoryModelUnloadResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.RepositoryModelUnloadResponse buildPartial() {
        GrpcService.RepositoryModelUnloadResponse result = new GrpcService.RepositoryModelUnloadResponse(this);
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.RepositoryModelUnloadResponse) {
          return mergeFrom((GrpcService.RepositoryModelUnloadResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.RepositoryModelUnloadResponse other) {
        if (other == GrpcService.RepositoryModelUnloadResponse.getDefaultInstance()) return this;
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.RepositoryModelUnloadResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.RepositoryModelUnloadResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.RepositoryModelUnloadResponse)
    }

    // @@protoc_insertion_point(class_scope:inference.RepositoryModelUnloadResponse)
    private static final GrpcService.RepositoryModelUnloadResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.RepositoryModelUnloadResponse();
    }

    public static GrpcService.RepositoryModelUnloadResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<RepositoryModelUnloadResponse>
        PARSER = new com.google.protobuf.AbstractParser<RepositoryModelUnloadResponse>() {
      public RepositoryModelUnloadResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new RepositoryModelUnloadResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<RepositoryModelUnloadResponse> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<RepositoryModelUnloadResponse> getParserForType() {
      return PARSER;
    }

    public GrpcService.RepositoryModelUnloadResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SystemSharedMemoryStatusRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.SystemSharedMemoryStatusRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the region to get status for. If empty the
     *&#64;&#64;     status is returned for all registered regions.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    String getName();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the region to get status for. If empty the
     *&#64;&#64;     status is returned for all registered regions.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message SystemSharedMemoryStatusRequest
   *&#64;&#64;
   *&#64;&#64;   Request message for SystemSharedMemoryStatus.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.SystemSharedMemoryStatusRequest}
   */
  public  static final class SystemSharedMemoryStatusRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.SystemSharedMemoryStatusRequest)
      SystemSharedMemoryStatusRequestOrBuilder {
    // Use SystemSharedMemoryStatusRequest.newBuilder() to construct.
    private SystemSharedMemoryStatusRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SystemSharedMemoryStatusRequest() {
      name_ = "";
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private SystemSharedMemoryStatusRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              String s = input.readStringRequireUtf8();

              name_ = s;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_SystemSharedMemoryStatusRequest_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_SystemSharedMemoryStatusRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.SystemSharedMemoryStatusRequest.class, GrpcService.SystemSharedMemoryStatusRequest.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile Object name_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the region to get status for. If empty the
     *&#64;&#64;     status is returned for all registered regions.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    public String getName() {
      Object ref = name_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the region to get status for. If empty the
     *&#64;&#64;     status is returned for all registered regions.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      Object ref = name_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.SystemSharedMemoryStatusRequest)) {
        return super.equals(obj);
      }
      GrpcService.SystemSharedMemoryStatusRequest other = (GrpcService.SystemSharedMemoryStatusRequest) obj;

      boolean result = true;
      result = result && getName()
          .equals(other.getName());
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.SystemSharedMemoryStatusRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.SystemSharedMemoryStatusRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.SystemSharedMemoryStatusRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.SystemSharedMemoryStatusRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.SystemSharedMemoryStatusRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.SystemSharedMemoryStatusRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.SystemSharedMemoryStatusRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.SystemSharedMemoryStatusRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.SystemSharedMemoryStatusRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.SystemSharedMemoryStatusRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.SystemSharedMemoryStatusRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message SystemSharedMemoryStatusRequest
     *&#64;&#64;
     *&#64;&#64;   Request message for SystemSharedMemoryStatus.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.SystemSharedMemoryStatusRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.SystemSharedMemoryStatusRequest)
        GrpcService.SystemSharedMemoryStatusRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_SystemSharedMemoryStatusRequest_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_SystemSharedMemoryStatusRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.SystemSharedMemoryStatusRequest.class, GrpcService.SystemSharedMemoryStatusRequest.Builder.class);
      }

      // Construct using GrpcService.SystemSharedMemoryStatusRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        name_ = "";

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_SystemSharedMemoryStatusRequest_descriptor;
      }

      public GrpcService.SystemSharedMemoryStatusRequest getDefaultInstanceForType() {
        return GrpcService.SystemSharedMemoryStatusRequest.getDefaultInstance();
      }

      public GrpcService.SystemSharedMemoryStatusRequest build() {
        GrpcService.SystemSharedMemoryStatusRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.SystemSharedMemoryStatusRequest buildPartial() {
        GrpcService.SystemSharedMemoryStatusRequest result = new GrpcService.SystemSharedMemoryStatusRequest(this);
        result.name_ = name_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.SystemSharedMemoryStatusRequest) {
          return mergeFrom((GrpcService.SystemSharedMemoryStatusRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.SystemSharedMemoryStatusRequest other) {
        if (other == GrpcService.SystemSharedMemoryStatusRequest.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.SystemSharedMemoryStatusRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.SystemSharedMemoryStatusRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private Object name_ = "";
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the region to get status for. If empty the
       *&#64;&#64;     status is returned for all registered regions.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public String getName() {
        Object ref = name_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the region to get status for. If empty the
       *&#64;&#64;     status is returned for all registered regions.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the region to get status for. If empty the
       *&#64;&#64;     status is returned for all registered regions.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder setName(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the region to get status for. If empty the
       *&#64;&#64;     status is returned for all registered regions.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder clearName() {

        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the region to get status for. If empty the
       *&#64;&#64;     status is returned for all registered regions.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        name_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.SystemSharedMemoryStatusRequest)
    }

    // @@protoc_insertion_point(class_scope:inference.SystemSharedMemoryStatusRequest)
    private static final GrpcService.SystemSharedMemoryStatusRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.SystemSharedMemoryStatusRequest();
    }

    public static GrpcService.SystemSharedMemoryStatusRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SystemSharedMemoryStatusRequest>
        PARSER = new com.google.protobuf.AbstractParser<SystemSharedMemoryStatusRequest>() {
      public SystemSharedMemoryStatusRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new SystemSharedMemoryStatusRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<SystemSharedMemoryStatusRequest> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<SystemSharedMemoryStatusRequest> getParserForType() {
      return PARSER;
    }

    public GrpcService.SystemSharedMemoryStatusRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SystemSharedMemoryStatusResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.SystemSharedMemoryStatusResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
     *&#64;&#64;
     *&#64;&#64;     Status for each of the registered regions, indexed by
     *&#64;&#64;     region name.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.SystemSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
     */
    int getRegionsCount();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
     *&#64;&#64;
     *&#64;&#64;     Status for each of the registered regions, indexed by
     *&#64;&#64;     region name.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.SystemSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
     */
    boolean containsRegions(
            String key);
    /**
     * Use {@link #getRegionsMap()} instead.
     */
    @Deprecated
    java.util.Map<String, GrpcService.SystemSharedMemoryStatusResponse.RegionStatus>
    getRegions();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
     *&#64;&#64;
     *&#64;&#64;     Status for each of the registered regions, indexed by
     *&#64;&#64;     region name.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.SystemSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
     */
    java.util.Map<String, GrpcService.SystemSharedMemoryStatusResponse.RegionStatus>
    getRegionsMap();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
     *&#64;&#64;
     *&#64;&#64;     Status for each of the registered regions, indexed by
     *&#64;&#64;     region name.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.SystemSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
     */

    GrpcService.SystemSharedMemoryStatusResponse.RegionStatus getRegionsOrDefault(
            String key,
            GrpcService.SystemSharedMemoryStatusResponse.RegionStatus defaultValue);
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
     *&#64;&#64;
     *&#64;&#64;     Status for each of the registered regions, indexed by
     *&#64;&#64;     region name.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.SystemSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
     */

    GrpcService.SystemSharedMemoryStatusResponse.RegionStatus getRegionsOrThrow(
            String key);
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message SystemSharedMemoryStatusResponse
   *&#64;&#64;
   *&#64;&#64;   Response message for SystemSharedMemoryStatus.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.SystemSharedMemoryStatusResponse}
   */
  public  static final class SystemSharedMemoryStatusResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.SystemSharedMemoryStatusResponse)
      SystemSharedMemoryStatusResponseOrBuilder {
    // Use SystemSharedMemoryStatusResponse.newBuilder() to construct.
    private SystemSharedMemoryStatusResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SystemSharedMemoryStatusResponse() {
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private SystemSharedMemoryStatusResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                regions_ = com.google.protobuf.MapField.newMapField(
                    RegionsDefaultEntryHolder.defaultEntry);
                mutable_bitField0_ |= 0x00000001;
              }
              com.google.protobuf.MapEntry<String, GrpcService.SystemSharedMemoryStatusResponse.RegionStatus>
              regions = input.readMessage(
                  RegionsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
              regions_.getMutableMap().put(regions.getKey(), regions.getValue());
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_SystemSharedMemoryStatusResponse_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 1:
          return internalGetRegions();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_SystemSharedMemoryStatusResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.SystemSharedMemoryStatusResponse.class, GrpcService.SystemSharedMemoryStatusResponse.Builder.class);
    }

    public interface RegionStatusOrBuilder extends
        // @@protoc_insertion_point(interface_extends:inference.SystemSharedMemoryStatusResponse.RegionStatus)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;       The name for the shared memory region.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      String getName();
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;       The name for the shared memory region.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      com.google.protobuf.ByteString
          getNameBytes();

      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: string shared_memory_key
       *&#64;&#64;
       *&#64;&#64;       The key of the underlying memory object that contains the
       *&#64;&#64;       shared memory region.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string key = 2;</code>
       */
      String getKey();
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: string shared_memory_key
       *&#64;&#64;
       *&#64;&#64;       The key of the underlying memory object that contains the
       *&#64;&#64;       shared memory region.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string key = 2;</code>
       */
      com.google.protobuf.ByteString
          getKeyBytes();

      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: uint64 offset
       *&#64;&#64;
       *&#64;&#64;       Offset, in bytes, within the underlying memory object to
       *&#64;&#64;       the start of the shared memory region.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 offset = 3;</code>
       */
      long getOffset();

      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: uint64 byte_size
       *&#64;&#64;
       *&#64;&#64;       Size of the shared memory region, in bytes.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 byte_size = 4;</code>
       */
      long getByteSize();
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: message RegionStatus
     *&#64;&#64;
     *&#64;&#64;     Status for a shared memory region.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.SystemSharedMemoryStatusResponse.RegionStatus}
     */
    public  static final class RegionStatus extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:inference.SystemSharedMemoryStatusResponse.RegionStatus)
        RegionStatusOrBuilder {
      // Use RegionStatus.newBuilder() to construct.
      private RegionStatus(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private RegionStatus() {
        name_ = "";
        key_ = "";
        offset_ = 0L;
        byteSize_ = 0L;
      }

      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
      }
      private RegionStatus(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!input.skipField(tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                String s = input.readStringRequireUtf8();

                name_ = s;
                break;
              }
              case 18: {
                String s = input.readStringRequireUtf8();

                key_ = s;
                break;
              }
              case 24: {

                offset_ = input.readUInt64();
                break;
              }
              case 32: {

                byteSize_ = input.readUInt64();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_SystemSharedMemoryStatusResponse_RegionStatus_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_SystemSharedMemoryStatusResponse_RegionStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.SystemSharedMemoryStatusResponse.RegionStatus.class, GrpcService.SystemSharedMemoryStatusResponse.RegionStatus.Builder.class);
      }

      public static final int NAME_FIELD_NUMBER = 1;
      private volatile Object name_;
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;       The name for the shared memory region.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public String getName() {
        Object ref = name_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          name_ = s;
          return s;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;       The name for the shared memory region.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int KEY_FIELD_NUMBER = 2;
      private volatile Object key_;
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: string shared_memory_key
       *&#64;&#64;
       *&#64;&#64;       The key of the underlying memory object that contains the
       *&#64;&#64;       shared memory region.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string key = 2;</code>
       */
      public String getKey() {
        Object ref = key_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          key_ = s;
          return s;
        }
      }
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: string shared_memory_key
       *&#64;&#64;
       *&#64;&#64;       The key of the underlying memory object that contains the
       *&#64;&#64;       shared memory region.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string key = 2;</code>
       */
      public com.google.protobuf.ByteString
          getKeyBytes() {
        Object ref = key_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          key_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int OFFSET_FIELD_NUMBER = 3;
      private long offset_;
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: uint64 offset
       *&#64;&#64;
       *&#64;&#64;       Offset, in bytes, within the underlying memory object to
       *&#64;&#64;       the start of the shared memory region.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 offset = 3;</code>
       */
      public long getOffset() {
        return offset_;
      }

      public static final int BYTE_SIZE_FIELD_NUMBER = 4;
      private long byteSize_;
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: uint64 byte_size
       *&#64;&#64;
       *&#64;&#64;       Size of the shared memory region, in bytes.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 byte_size = 4;</code>
       */
      public long getByteSize() {
        return byteSize_;
      }

      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (!getNameBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
        }
        if (!getKeyBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, key_);
        }
        if (offset_ != 0L) {
          output.writeUInt64(3, offset_);
        }
        if (byteSize_ != 0L) {
          output.writeUInt64(4, byteSize_);
        }
      }

      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (!getNameBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
        }
        if (!getKeyBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, key_);
        }
        if (offset_ != 0L) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt64Size(3, offset_);
        }
        if (byteSize_ != 0L) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt64Size(4, byteSize_);
        }
        memoizedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof GrpcService.SystemSharedMemoryStatusResponse.RegionStatus)) {
          return super.equals(obj);
        }
        GrpcService.SystemSharedMemoryStatusResponse.RegionStatus other = (GrpcService.SystemSharedMemoryStatusResponse.RegionStatus) obj;

        boolean result = true;
        result = result && getName()
            .equals(other.getName());
        result = result && getKey()
            .equals(other.getKey());
        result = result && (getOffset()
            == other.getOffset());
        result = result && (getByteSize()
            == other.getByteSize());
        return result;
      }

      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
        hash = (37 * hash) + KEY_FIELD_NUMBER;
        hash = (53 * hash) + getKey().hashCode();
        hash = (37 * hash) + OFFSET_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getOffset());
        hash = (37 * hash) + BYTE_SIZE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getByteSize());
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static GrpcService.SystemSharedMemoryStatusResponse.RegionStatus parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static GrpcService.SystemSharedMemoryStatusResponse.RegionStatus parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static GrpcService.SystemSharedMemoryStatusResponse.RegionStatus parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static GrpcService.SystemSharedMemoryStatusResponse.RegionStatus parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static GrpcService.SystemSharedMemoryStatusResponse.RegionStatus parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static GrpcService.SystemSharedMemoryStatusResponse.RegionStatus parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static GrpcService.SystemSharedMemoryStatusResponse.RegionStatus parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static GrpcService.SystemSharedMemoryStatusResponse.RegionStatus parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static GrpcService.SystemSharedMemoryStatusResponse.RegionStatus parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static GrpcService.SystemSharedMemoryStatusResponse.RegionStatus parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(GrpcService.SystemSharedMemoryStatusResponse.RegionStatus prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @Override
      protected Builder newBuilderForType(
          BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: message RegionStatus
       *&#64;&#64;
       *&#64;&#64;     Status for a shared memory region.
       *&#64;&#64;
       * </pre>
       *
       * Protobuf type {@code inference.SystemSharedMemoryStatusResponse.RegionStatus}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:inference.SystemSharedMemoryStatusResponse.RegionStatus)
          GrpcService.SystemSharedMemoryStatusResponse.RegionStatusOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return GrpcService.internal_static_inference_SystemSharedMemoryStatusResponse_RegionStatus_descriptor;
        }

        protected FieldAccessorTable
            internalGetFieldAccessorTable() {
          return GrpcService.internal_static_inference_SystemSharedMemoryStatusResponse_RegionStatus_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  GrpcService.SystemSharedMemoryStatusResponse.RegionStatus.class, GrpcService.SystemSharedMemoryStatusResponse.RegionStatus.Builder.class);
        }

        // Construct using GrpcService.SystemSharedMemoryStatusResponse.RegionStatus.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          name_ = "";

          key_ = "";

          offset_ = 0L;

          byteSize_ = 0L;

          return this;
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return GrpcService.internal_static_inference_SystemSharedMemoryStatusResponse_RegionStatus_descriptor;
        }

        public GrpcService.SystemSharedMemoryStatusResponse.RegionStatus getDefaultInstanceForType() {
          return GrpcService.SystemSharedMemoryStatusResponse.RegionStatus.getDefaultInstance();
        }

        public GrpcService.SystemSharedMemoryStatusResponse.RegionStatus build() {
          GrpcService.SystemSharedMemoryStatusResponse.RegionStatus result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public GrpcService.SystemSharedMemoryStatusResponse.RegionStatus buildPartial() {
          GrpcService.SystemSharedMemoryStatusResponse.RegionStatus result = new GrpcService.SystemSharedMemoryStatusResponse.RegionStatus(this);
          result.name_ = name_;
          result.key_ = key_;
          result.offset_ = offset_;
          result.byteSize_ = byteSize_;
          onBuilt();
          return result;
        }

        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof GrpcService.SystemSharedMemoryStatusResponse.RegionStatus) {
            return mergeFrom((GrpcService.SystemSharedMemoryStatusResponse.RegionStatus)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(GrpcService.SystemSharedMemoryStatusResponse.RegionStatus other) {
          if (other == GrpcService.SystemSharedMemoryStatusResponse.RegionStatus.getDefaultInstance()) return this;
          if (!other.getName().isEmpty()) {
            name_ = other.name_;
            onChanged();
          }
          if (!other.getKey().isEmpty()) {
            key_ = other.key_;
            onChanged();
          }
          if (other.getOffset() != 0L) {
            setOffset(other.getOffset());
          }
          if (other.getByteSize() != 0L) {
            setByteSize(other.getByteSize());
          }
          onChanged();
          return this;
        }

        public final boolean isInitialized() {
          return true;
        }

        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          GrpcService.SystemSharedMemoryStatusResponse.RegionStatus parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (GrpcService.SystemSharedMemoryStatusResponse.RegionStatus) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }

        private Object name_ = "";
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The name for the shared memory region.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public String getName() {
          Object ref = name_;
          if (!(ref instanceof String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            String s = bs.toStringUtf8();
            name_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The name for the shared memory region.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public com.google.protobuf.ByteString
            getNameBytes() {
          Object ref = name_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8(
                    (String) ref);
            name_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The name for the shared memory region.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public Builder setName(
            String value) {
          if (value == null) {
    throw new NullPointerException();
  }

          name_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The name for the shared memory region.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public Builder clearName() {

          name_ = getDefaultInstance().getName();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The name for the shared memory region.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public Builder setNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

          name_ = value;
          onChanged();
          return this;
        }

        private Object key_ = "";
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: string shared_memory_key
         *&#64;&#64;
         *&#64;&#64;       The key of the underlying memory object that contains the
         *&#64;&#64;       shared memory region.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string key = 2;</code>
         */
        public String getKey() {
          Object ref = key_;
          if (!(ref instanceof String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            String s = bs.toStringUtf8();
            key_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: string shared_memory_key
         *&#64;&#64;
         *&#64;&#64;       The key of the underlying memory object that contains the
         *&#64;&#64;       shared memory region.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string key = 2;</code>
         */
        public com.google.protobuf.ByteString
            getKeyBytes() {
          Object ref = key_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8(
                    (String) ref);
            key_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: string shared_memory_key
         *&#64;&#64;
         *&#64;&#64;       The key of the underlying memory object that contains the
         *&#64;&#64;       shared memory region.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string key = 2;</code>
         */
        public Builder setKey(
            String value) {
          if (value == null) {
    throw new NullPointerException();
  }

          key_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: string shared_memory_key
         *&#64;&#64;
         *&#64;&#64;       The key of the underlying memory object that contains the
         *&#64;&#64;       shared memory region.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string key = 2;</code>
         */
        public Builder clearKey() {

          key_ = getDefaultInstance().getKey();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: string shared_memory_key
         *&#64;&#64;
         *&#64;&#64;       The key of the underlying memory object that contains the
         *&#64;&#64;       shared memory region.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string key = 2;</code>
         */
        public Builder setKeyBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

          key_ = value;
          onChanged();
          return this;
        }

        private long offset_ ;
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: uint64 offset
         *&#64;&#64;
         *&#64;&#64;       Offset, in bytes, within the underlying memory object to
         *&#64;&#64;       the start of the shared memory region.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional uint64 offset = 3;</code>
         */
        public long getOffset() {
          return offset_;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: uint64 offset
         *&#64;&#64;
         *&#64;&#64;       Offset, in bytes, within the underlying memory object to
         *&#64;&#64;       the start of the shared memory region.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional uint64 offset = 3;</code>
         */
        public Builder setOffset(long value) {

          offset_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: uint64 offset
         *&#64;&#64;
         *&#64;&#64;       Offset, in bytes, within the underlying memory object to
         *&#64;&#64;       the start of the shared memory region.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional uint64 offset = 3;</code>
         */
        public Builder clearOffset() {

          offset_ = 0L;
          onChanged();
          return this;
        }

        private long byteSize_ ;
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: uint64 byte_size
         *&#64;&#64;
         *&#64;&#64;       Size of the shared memory region, in bytes.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional uint64 byte_size = 4;</code>
         */
        public long getByteSize() {
          return byteSize_;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: uint64 byte_size
         *&#64;&#64;
         *&#64;&#64;       Size of the shared memory region, in bytes.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional uint64 byte_size = 4;</code>
         */
        public Builder setByteSize(long value) {

          byteSize_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: uint64 byte_size
         *&#64;&#64;
         *&#64;&#64;       Size of the shared memory region, in bytes.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional uint64 byte_size = 4;</code>
         */
        public Builder clearByteSize() {

          byteSize_ = 0L;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return this;
        }

        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return this;
        }


        // @@protoc_insertion_point(builder_scope:inference.SystemSharedMemoryStatusResponse.RegionStatus)
      }

      // @@protoc_insertion_point(class_scope:inference.SystemSharedMemoryStatusResponse.RegionStatus)
      private static final GrpcService.SystemSharedMemoryStatusResponse.RegionStatus DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new GrpcService.SystemSharedMemoryStatusResponse.RegionStatus();
      }

      public static GrpcService.SystemSharedMemoryStatusResponse.RegionStatus getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<RegionStatus>
          PARSER = new com.google.protobuf.AbstractParser<RegionStatus>() {
        public RegionStatus parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new RegionStatus(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<RegionStatus> parser() {
        return PARSER;
      }

      @Override
      public com.google.protobuf.Parser<RegionStatus> getParserForType() {
        return PARSER;
      }

      public GrpcService.SystemSharedMemoryStatusResponse.RegionStatus getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int REGIONS_FIELD_NUMBER = 1;
    private static final class RegionsDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          String, GrpcService.SystemSharedMemoryStatusResponse.RegionStatus> defaultEntry =
              com.google.protobuf.MapEntry
              .<String, GrpcService.SystemSharedMemoryStatusResponse.RegionStatus>newDefaultInstance(
                  GrpcService.internal_static_inference_SystemSharedMemoryStatusResponse_RegionsEntry_descriptor,
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  GrpcService.SystemSharedMemoryStatusResponse.RegionStatus.getDefaultInstance());
    }
    private com.google.protobuf.MapField<
        String, GrpcService.SystemSharedMemoryStatusResponse.RegionStatus> regions_;
    private com.google.protobuf.MapField<String, GrpcService.SystemSharedMemoryStatusResponse.RegionStatus>
    internalGetRegions() {
      if (regions_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            RegionsDefaultEntryHolder.defaultEntry);
      }
      return regions_;
    }

    public int getRegionsCount() {
      return internalGetRegions().getMap().size();
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
     *&#64;&#64;
     *&#64;&#64;     Status for each of the registered regions, indexed by
     *&#64;&#64;     region name.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.SystemSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
     */

    public boolean containsRegions(
        String key) {
      if (key == null) { throw new NullPointerException(); }
      return internalGetRegions().getMap().containsKey(key);
    }
    /**
     * Use {@link #getRegionsMap()} instead.
     */
    @Deprecated
    public java.util.Map<String, GrpcService.SystemSharedMemoryStatusResponse.RegionStatus> getRegions() {
      return getRegionsMap();
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
     *&#64;&#64;
     *&#64;&#64;     Status for each of the registered regions, indexed by
     *&#64;&#64;     region name.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.SystemSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
     */

    public java.util.Map<String, GrpcService.SystemSharedMemoryStatusResponse.RegionStatus> getRegionsMap() {
      return internalGetRegions().getMap();
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
     *&#64;&#64;
     *&#64;&#64;     Status for each of the registered regions, indexed by
     *&#64;&#64;     region name.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.SystemSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
     */

    public GrpcService.SystemSharedMemoryStatusResponse.RegionStatus getRegionsOrDefault(
        String key,
        GrpcService.SystemSharedMemoryStatusResponse.RegionStatus defaultValue) {
      if (key == null) { throw new NullPointerException(); }
      java.util.Map<String, GrpcService.SystemSharedMemoryStatusResponse.RegionStatus> map =
          internalGetRegions().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
     *&#64;&#64;
     *&#64;&#64;     Status for each of the registered regions, indexed by
     *&#64;&#64;     region name.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.SystemSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
     */

    public GrpcService.SystemSharedMemoryStatusResponse.RegionStatus getRegionsOrThrow(
        String key) {
      if (key == null) { throw new NullPointerException(); }
      java.util.Map<String, GrpcService.SystemSharedMemoryStatusResponse.RegionStatus> map =
          internalGetRegions().getMap();
      if (!map.containsKey(key)) {
        throw new IllegalArgumentException();
      }
      return map.get(key);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (java.util.Map.Entry<String, GrpcService.SystemSharedMemoryStatusResponse.RegionStatus> entry
           : internalGetRegions().getMap().entrySet()) {
        com.google.protobuf.MapEntry<String, GrpcService.SystemSharedMemoryStatusResponse.RegionStatus>
        regions = RegionsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        output.writeMessage(1, regions);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (java.util.Map.Entry<String, GrpcService.SystemSharedMemoryStatusResponse.RegionStatus> entry
           : internalGetRegions().getMap().entrySet()) {
        com.google.protobuf.MapEntry<String, GrpcService.SystemSharedMemoryStatusResponse.RegionStatus>
        regions = RegionsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, regions);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.SystemSharedMemoryStatusResponse)) {
        return super.equals(obj);
      }
      GrpcService.SystemSharedMemoryStatusResponse other = (GrpcService.SystemSharedMemoryStatusResponse) obj;

      boolean result = true;
      result = result && internalGetRegions().equals(
          other.internalGetRegions());
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (!internalGetRegions().getMap().isEmpty()) {
        hash = (37 * hash) + REGIONS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetRegions().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.SystemSharedMemoryStatusResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.SystemSharedMemoryStatusResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.SystemSharedMemoryStatusResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.SystemSharedMemoryStatusResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.SystemSharedMemoryStatusResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.SystemSharedMemoryStatusResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.SystemSharedMemoryStatusResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.SystemSharedMemoryStatusResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.SystemSharedMemoryStatusResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.SystemSharedMemoryStatusResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.SystemSharedMemoryStatusResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message SystemSharedMemoryStatusResponse
     *&#64;&#64;
     *&#64;&#64;   Response message for SystemSharedMemoryStatus.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.SystemSharedMemoryStatusResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.SystemSharedMemoryStatusResponse)
        GrpcService.SystemSharedMemoryStatusResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_SystemSharedMemoryStatusResponse_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 1:
            return internalGetRegions();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 1:
            return internalGetMutableRegions();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_SystemSharedMemoryStatusResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.SystemSharedMemoryStatusResponse.class, GrpcService.SystemSharedMemoryStatusResponse.Builder.class);
      }

      // Construct using GrpcService.SystemSharedMemoryStatusResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        internalGetMutableRegions().clear();
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_SystemSharedMemoryStatusResponse_descriptor;
      }

      public GrpcService.SystemSharedMemoryStatusResponse getDefaultInstanceForType() {
        return GrpcService.SystemSharedMemoryStatusResponse.getDefaultInstance();
      }

      public GrpcService.SystemSharedMemoryStatusResponse build() {
        GrpcService.SystemSharedMemoryStatusResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.SystemSharedMemoryStatusResponse buildPartial() {
        GrpcService.SystemSharedMemoryStatusResponse result = new GrpcService.SystemSharedMemoryStatusResponse(this);
        int from_bitField0_ = bitField0_;
        result.regions_ = internalGetRegions();
        result.regions_.makeImmutable();
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.SystemSharedMemoryStatusResponse) {
          return mergeFrom((GrpcService.SystemSharedMemoryStatusResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.SystemSharedMemoryStatusResponse other) {
        if (other == GrpcService.SystemSharedMemoryStatusResponse.getDefaultInstance()) return this;
        internalGetMutableRegions().mergeFrom(
            other.internalGetRegions());
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.SystemSharedMemoryStatusResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.SystemSharedMemoryStatusResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.MapField<
          String, GrpcService.SystemSharedMemoryStatusResponse.RegionStatus> regions_;
      private com.google.protobuf.MapField<String, GrpcService.SystemSharedMemoryStatusResponse.RegionStatus>
      internalGetRegions() {
        if (regions_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              RegionsDefaultEntryHolder.defaultEntry);
        }
        return regions_;
      }
      private com.google.protobuf.MapField<String, GrpcService.SystemSharedMemoryStatusResponse.RegionStatus>
      internalGetMutableRegions() {
        onChanged();;
        if (regions_ == null) {
          regions_ = com.google.protobuf.MapField.newMapField(
              RegionsDefaultEntryHolder.defaultEntry);
        }
        if (!regions_.isMutable()) {
          regions_ = regions_.copy();
        }
        return regions_;
      }

      public int getRegionsCount() {
        return internalGetRegions().getMap().size();
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
       *&#64;&#64;
       *&#64;&#64;     Status for each of the registered regions, indexed by
       *&#64;&#64;     region name.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.SystemSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
       */

      public boolean containsRegions(
          String key) {
        if (key == null) { throw new NullPointerException(); }
        return internalGetRegions().getMap().containsKey(key);
      }
      /**
       * Use {@link #getRegionsMap()} instead.
       */
      @Deprecated
      public java.util.Map<String, GrpcService.SystemSharedMemoryStatusResponse.RegionStatus> getRegions() {
        return getRegionsMap();
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
       *&#64;&#64;
       *&#64;&#64;     Status for each of the registered regions, indexed by
       *&#64;&#64;     region name.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.SystemSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
       */

      public java.util.Map<String, GrpcService.SystemSharedMemoryStatusResponse.RegionStatus> getRegionsMap() {
        return internalGetRegions().getMap();
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
       *&#64;&#64;
       *&#64;&#64;     Status for each of the registered regions, indexed by
       *&#64;&#64;     region name.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.SystemSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
       */

      public GrpcService.SystemSharedMemoryStatusResponse.RegionStatus getRegionsOrDefault(
          String key,
          GrpcService.SystemSharedMemoryStatusResponse.RegionStatus defaultValue) {
        if (key == null) { throw new NullPointerException(); }
        java.util.Map<String, GrpcService.SystemSharedMemoryStatusResponse.RegionStatus> map =
            internalGetRegions().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
       *&#64;&#64;
       *&#64;&#64;     Status for each of the registered regions, indexed by
       *&#64;&#64;     region name.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.SystemSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
       */

      public GrpcService.SystemSharedMemoryStatusResponse.RegionStatus getRegionsOrThrow(
          String key) {
        if (key == null) { throw new NullPointerException(); }
        java.util.Map<String, GrpcService.SystemSharedMemoryStatusResponse.RegionStatus> map =
            internalGetRegions().getMap();
        if (!map.containsKey(key)) {
          throw new IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearRegions() {
        getMutableRegions().clear();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
       *&#64;&#64;
       *&#64;&#64;     Status for each of the registered regions, indexed by
       *&#64;&#64;     region name.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.SystemSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
       */

      public Builder removeRegions(
          String key) {
        if (key == null) { throw new NullPointerException(); }
        getMutableRegions().remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @Deprecated
      public java.util.Map<String, GrpcService.SystemSharedMemoryStatusResponse.RegionStatus>
      getMutableRegions() {
        return internalGetMutableRegions().getMutableMap();
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
       *&#64;&#64;
       *&#64;&#64;     Status for each of the registered regions, indexed by
       *&#64;&#64;     region name.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.SystemSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
       */
      public Builder putRegions(
          String key,
          GrpcService.SystemSharedMemoryStatusResponse.RegionStatus value) {
        if (key == null) { throw new NullPointerException(); }
        if (value == null) { throw new NullPointerException(); }
        getMutableRegions().put(key, value);
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
       *&#64;&#64;
       *&#64;&#64;     Status for each of the registered regions, indexed by
       *&#64;&#64;     region name.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.SystemSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
       */

      public Builder putAllRegions(
          java.util.Map<String, GrpcService.SystemSharedMemoryStatusResponse.RegionStatus> values) {
        getMutableRegions().putAll(values);
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.SystemSharedMemoryStatusResponse)
    }

    // @@protoc_insertion_point(class_scope:inference.SystemSharedMemoryStatusResponse)
    private static final GrpcService.SystemSharedMemoryStatusResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.SystemSharedMemoryStatusResponse();
    }

    public static GrpcService.SystemSharedMemoryStatusResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SystemSharedMemoryStatusResponse>
        PARSER = new com.google.protobuf.AbstractParser<SystemSharedMemoryStatusResponse>() {
      public SystemSharedMemoryStatusResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new SystemSharedMemoryStatusResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<SystemSharedMemoryStatusResponse> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<SystemSharedMemoryStatusResponse> getParserForType() {
      return PARSER;
    }

    public GrpcService.SystemSharedMemoryStatusResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SystemSharedMemoryRegisterRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.SystemSharedMemoryRegisterRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the region to register.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    String getName();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the region to register.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string shared_memory_key
     *&#64;&#64;
     *&#64;&#64;     The key of the underlying memory object that contains the
     *&#64;&#64;     shared memory region.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string key = 2;</code>
     */
    String getKey();
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string shared_memory_key
     *&#64;&#64;
     *&#64;&#64;     The key of the underlying memory object that contains the
     *&#64;&#64;     shared memory region.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string key = 2;</code>
     */
    com.google.protobuf.ByteString
        getKeyBytes();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: uint64 offset
     *&#64;&#64;
     *&#64;&#64;     Offset, in bytes, within the underlying memory object to
     *&#64;&#64;     the start of the shared memory region.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional uint64 offset = 3;</code>
     */
    long getOffset();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: uint64 byte_size
     *&#64;&#64;
     *&#64;&#64;     Size of the shared memory region, in bytes.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional uint64 byte_size = 4;</code>
     */
    long getByteSize();
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message SystemSharedMemoryRegisterRequest
   *&#64;&#64;
   *&#64;&#64;   Request message for SystemSharedMemoryRegister.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.SystemSharedMemoryRegisterRequest}
   */
  public  static final class SystemSharedMemoryRegisterRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.SystemSharedMemoryRegisterRequest)
      SystemSharedMemoryRegisterRequestOrBuilder {
    // Use SystemSharedMemoryRegisterRequest.newBuilder() to construct.
    private SystemSharedMemoryRegisterRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SystemSharedMemoryRegisterRequest() {
      name_ = "";
      key_ = "";
      offset_ = 0L;
      byteSize_ = 0L;
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private SystemSharedMemoryRegisterRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              String s = input.readStringRequireUtf8();

              name_ = s;
              break;
            }
            case 18: {
              String s = input.readStringRequireUtf8();

              key_ = s;
              break;
            }
            case 24: {

              offset_ = input.readUInt64();
              break;
            }
            case 32: {

              byteSize_ = input.readUInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_SystemSharedMemoryRegisterRequest_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_SystemSharedMemoryRegisterRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.SystemSharedMemoryRegisterRequest.class, GrpcService.SystemSharedMemoryRegisterRequest.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile Object name_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the region to register.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    public String getName() {
      Object ref = name_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the region to register.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      Object ref = name_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int KEY_FIELD_NUMBER = 2;
    private volatile Object key_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string shared_memory_key
     *&#64;&#64;
     *&#64;&#64;     The key of the underlying memory object that contains the
     *&#64;&#64;     shared memory region.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string key = 2;</code>
     */
    public String getKey() {
      Object ref = key_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        key_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: string shared_memory_key
     *&#64;&#64;
     *&#64;&#64;     The key of the underlying memory object that contains the
     *&#64;&#64;     shared memory region.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string key = 2;</code>
     */
    public com.google.protobuf.ByteString
        getKeyBytes() {
      Object ref = key_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        key_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OFFSET_FIELD_NUMBER = 3;
    private long offset_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: uint64 offset
     *&#64;&#64;
     *&#64;&#64;     Offset, in bytes, within the underlying memory object to
     *&#64;&#64;     the start of the shared memory region.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional uint64 offset = 3;</code>
     */
    public long getOffset() {
      return offset_;
    }

    public static final int BYTE_SIZE_FIELD_NUMBER = 4;
    private long byteSize_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: uint64 byte_size
     *&#64;&#64;
     *&#64;&#64;     Size of the shared memory region, in bytes.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional uint64 byte_size = 4;</code>
     */
    public long getByteSize() {
      return byteSize_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (!getKeyBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, key_);
      }
      if (offset_ != 0L) {
        output.writeUInt64(3, offset_);
      }
      if (byteSize_ != 0L) {
        output.writeUInt64(4, byteSize_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (!getKeyBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, key_);
      }
      if (offset_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(3, offset_);
      }
      if (byteSize_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(4, byteSize_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.SystemSharedMemoryRegisterRequest)) {
        return super.equals(obj);
      }
      GrpcService.SystemSharedMemoryRegisterRequest other = (GrpcService.SystemSharedMemoryRegisterRequest) obj;

      boolean result = true;
      result = result && getName()
          .equals(other.getName());
      result = result && getKey()
          .equals(other.getKey());
      result = result && (getOffset()
          == other.getOffset());
      result = result && (getByteSize()
          == other.getByteSize());
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + KEY_FIELD_NUMBER;
      hash = (53 * hash) + getKey().hashCode();
      hash = (37 * hash) + OFFSET_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getOffset());
      hash = (37 * hash) + BYTE_SIZE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getByteSize());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.SystemSharedMemoryRegisterRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.SystemSharedMemoryRegisterRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.SystemSharedMemoryRegisterRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.SystemSharedMemoryRegisterRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.SystemSharedMemoryRegisterRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.SystemSharedMemoryRegisterRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.SystemSharedMemoryRegisterRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.SystemSharedMemoryRegisterRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.SystemSharedMemoryRegisterRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.SystemSharedMemoryRegisterRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.SystemSharedMemoryRegisterRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message SystemSharedMemoryRegisterRequest
     *&#64;&#64;
     *&#64;&#64;   Request message for SystemSharedMemoryRegister.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.SystemSharedMemoryRegisterRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.SystemSharedMemoryRegisterRequest)
        GrpcService.SystemSharedMemoryRegisterRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_SystemSharedMemoryRegisterRequest_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_SystemSharedMemoryRegisterRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.SystemSharedMemoryRegisterRequest.class, GrpcService.SystemSharedMemoryRegisterRequest.Builder.class);
      }

      // Construct using GrpcService.SystemSharedMemoryRegisterRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        name_ = "";

        key_ = "";

        offset_ = 0L;

        byteSize_ = 0L;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_SystemSharedMemoryRegisterRequest_descriptor;
      }

      public GrpcService.SystemSharedMemoryRegisterRequest getDefaultInstanceForType() {
        return GrpcService.SystemSharedMemoryRegisterRequest.getDefaultInstance();
      }

      public GrpcService.SystemSharedMemoryRegisterRequest build() {
        GrpcService.SystemSharedMemoryRegisterRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.SystemSharedMemoryRegisterRequest buildPartial() {
        GrpcService.SystemSharedMemoryRegisterRequest result = new GrpcService.SystemSharedMemoryRegisterRequest(this);
        result.name_ = name_;
        result.key_ = key_;
        result.offset_ = offset_;
        result.byteSize_ = byteSize_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.SystemSharedMemoryRegisterRequest) {
          return mergeFrom((GrpcService.SystemSharedMemoryRegisterRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.SystemSharedMemoryRegisterRequest other) {
        if (other == GrpcService.SystemSharedMemoryRegisterRequest.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (!other.getKey().isEmpty()) {
          key_ = other.key_;
          onChanged();
        }
        if (other.getOffset() != 0L) {
          setOffset(other.getOffset());
        }
        if (other.getByteSize() != 0L) {
          setByteSize(other.getByteSize());
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.SystemSharedMemoryRegisterRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.SystemSharedMemoryRegisterRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private Object name_ = "";
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the region to register.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public String getName() {
        Object ref = name_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the region to register.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the region to register.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder setName(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the region to register.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder clearName() {

        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the region to register.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        name_ = value;
        onChanged();
        return this;
      }

      private Object key_ = "";
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string shared_memory_key
       *&#64;&#64;
       *&#64;&#64;     The key of the underlying memory object that contains the
       *&#64;&#64;     shared memory region.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string key = 2;</code>
       */
      public String getKey() {
        Object ref = key_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          key_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string shared_memory_key
       *&#64;&#64;
       *&#64;&#64;     The key of the underlying memory object that contains the
       *&#64;&#64;     shared memory region.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string key = 2;</code>
       */
      public com.google.protobuf.ByteString
          getKeyBytes() {
        Object ref = key_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          key_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string shared_memory_key
       *&#64;&#64;
       *&#64;&#64;     The key of the underlying memory object that contains the
       *&#64;&#64;     shared memory region.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string key = 2;</code>
       */
      public Builder setKey(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        key_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string shared_memory_key
       *&#64;&#64;
       *&#64;&#64;     The key of the underlying memory object that contains the
       *&#64;&#64;     shared memory region.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string key = 2;</code>
       */
      public Builder clearKey() {

        key_ = getDefaultInstance().getKey();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: string shared_memory_key
       *&#64;&#64;
       *&#64;&#64;     The key of the underlying memory object that contains the
       *&#64;&#64;     shared memory region.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string key = 2;</code>
       */
      public Builder setKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        key_ = value;
        onChanged();
        return this;
      }

      private long offset_ ;
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: uint64 offset
       *&#64;&#64;
       *&#64;&#64;     Offset, in bytes, within the underlying memory object to
       *&#64;&#64;     the start of the shared memory region.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 offset = 3;</code>
       */
      public long getOffset() {
        return offset_;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: uint64 offset
       *&#64;&#64;
       *&#64;&#64;     Offset, in bytes, within the underlying memory object to
       *&#64;&#64;     the start of the shared memory region.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 offset = 3;</code>
       */
      public Builder setOffset(long value) {

        offset_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: uint64 offset
       *&#64;&#64;
       *&#64;&#64;     Offset, in bytes, within the underlying memory object to
       *&#64;&#64;     the start of the shared memory region.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 offset = 3;</code>
       */
      public Builder clearOffset() {

        offset_ = 0L;
        onChanged();
        return this;
      }

      private long byteSize_ ;
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: uint64 byte_size
       *&#64;&#64;
       *&#64;&#64;     Size of the shared memory region, in bytes.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 byte_size = 4;</code>
       */
      public long getByteSize() {
        return byteSize_;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: uint64 byte_size
       *&#64;&#64;
       *&#64;&#64;     Size of the shared memory region, in bytes.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 byte_size = 4;</code>
       */
      public Builder setByteSize(long value) {

        byteSize_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: uint64 byte_size
       *&#64;&#64;
       *&#64;&#64;     Size of the shared memory region, in bytes.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 byte_size = 4;</code>
       */
      public Builder clearByteSize() {

        byteSize_ = 0L;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.SystemSharedMemoryRegisterRequest)
    }

    // @@protoc_insertion_point(class_scope:inference.SystemSharedMemoryRegisterRequest)
    private static final GrpcService.SystemSharedMemoryRegisterRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.SystemSharedMemoryRegisterRequest();
    }

    public static GrpcService.SystemSharedMemoryRegisterRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SystemSharedMemoryRegisterRequest>
        PARSER = new com.google.protobuf.AbstractParser<SystemSharedMemoryRegisterRequest>() {
      public SystemSharedMemoryRegisterRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new SystemSharedMemoryRegisterRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<SystemSharedMemoryRegisterRequest> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<SystemSharedMemoryRegisterRequest> getParserForType() {
      return PARSER;
    }

    public GrpcService.SystemSharedMemoryRegisterRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SystemSharedMemoryRegisterResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.SystemSharedMemoryRegisterResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message SystemSharedMemoryRegisterResponse
   *&#64;&#64;
   *&#64;&#64;   Response message for SystemSharedMemoryRegister.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.SystemSharedMemoryRegisterResponse}
   */
  public  static final class SystemSharedMemoryRegisterResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.SystemSharedMemoryRegisterResponse)
      SystemSharedMemoryRegisterResponseOrBuilder {
    // Use SystemSharedMemoryRegisterResponse.newBuilder() to construct.
    private SystemSharedMemoryRegisterResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SystemSharedMemoryRegisterResponse() {
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private SystemSharedMemoryRegisterResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_SystemSharedMemoryRegisterResponse_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_SystemSharedMemoryRegisterResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.SystemSharedMemoryRegisterResponse.class, GrpcService.SystemSharedMemoryRegisterResponse.Builder.class);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.SystemSharedMemoryRegisterResponse)) {
        return super.equals(obj);
      }
      GrpcService.SystemSharedMemoryRegisterResponse other = (GrpcService.SystemSharedMemoryRegisterResponse) obj;

      boolean result = true;
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.SystemSharedMemoryRegisterResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.SystemSharedMemoryRegisterResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.SystemSharedMemoryRegisterResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.SystemSharedMemoryRegisterResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.SystemSharedMemoryRegisterResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.SystemSharedMemoryRegisterResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.SystemSharedMemoryRegisterResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.SystemSharedMemoryRegisterResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.SystemSharedMemoryRegisterResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.SystemSharedMemoryRegisterResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.SystemSharedMemoryRegisterResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message SystemSharedMemoryRegisterResponse
     *&#64;&#64;
     *&#64;&#64;   Response message for SystemSharedMemoryRegister.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.SystemSharedMemoryRegisterResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.SystemSharedMemoryRegisterResponse)
        GrpcService.SystemSharedMemoryRegisterResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_SystemSharedMemoryRegisterResponse_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_SystemSharedMemoryRegisterResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.SystemSharedMemoryRegisterResponse.class, GrpcService.SystemSharedMemoryRegisterResponse.Builder.class);
      }

      // Construct using GrpcService.SystemSharedMemoryRegisterResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_SystemSharedMemoryRegisterResponse_descriptor;
      }

      public GrpcService.SystemSharedMemoryRegisterResponse getDefaultInstanceForType() {
        return GrpcService.SystemSharedMemoryRegisterResponse.getDefaultInstance();
      }

      public GrpcService.SystemSharedMemoryRegisterResponse build() {
        GrpcService.SystemSharedMemoryRegisterResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.SystemSharedMemoryRegisterResponse buildPartial() {
        GrpcService.SystemSharedMemoryRegisterResponse result = new GrpcService.SystemSharedMemoryRegisterResponse(this);
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.SystemSharedMemoryRegisterResponse) {
          return mergeFrom((GrpcService.SystemSharedMemoryRegisterResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.SystemSharedMemoryRegisterResponse other) {
        if (other == GrpcService.SystemSharedMemoryRegisterResponse.getDefaultInstance()) return this;
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.SystemSharedMemoryRegisterResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.SystemSharedMemoryRegisterResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.SystemSharedMemoryRegisterResponse)
    }

    // @@protoc_insertion_point(class_scope:inference.SystemSharedMemoryRegisterResponse)
    private static final GrpcService.SystemSharedMemoryRegisterResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.SystemSharedMemoryRegisterResponse();
    }

    public static GrpcService.SystemSharedMemoryRegisterResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SystemSharedMemoryRegisterResponse>
        PARSER = new com.google.protobuf.AbstractParser<SystemSharedMemoryRegisterResponse>() {
      public SystemSharedMemoryRegisterResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new SystemSharedMemoryRegisterResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<SystemSharedMemoryRegisterResponse> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<SystemSharedMemoryRegisterResponse> getParserForType() {
      return PARSER;
    }

    public GrpcService.SystemSharedMemoryRegisterResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SystemSharedMemoryUnregisterRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.SystemSharedMemoryUnregisterRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the system region to unregister. If empty
     *&#64;&#64;     all system shared-memory regions are unregistered.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    String getName();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the system region to unregister. If empty
     *&#64;&#64;     all system shared-memory regions are unregistered.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message SystemSharedMemoryUnregisterRequest
   *&#64;&#64;
   *&#64;&#64;   Request message for SystemSharedMemoryUnregister.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.SystemSharedMemoryUnregisterRequest}
   */
  public  static final class SystemSharedMemoryUnregisterRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.SystemSharedMemoryUnregisterRequest)
      SystemSharedMemoryUnregisterRequestOrBuilder {
    // Use SystemSharedMemoryUnregisterRequest.newBuilder() to construct.
    private SystemSharedMemoryUnregisterRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SystemSharedMemoryUnregisterRequest() {
      name_ = "";
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private SystemSharedMemoryUnregisterRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              String s = input.readStringRequireUtf8();

              name_ = s;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_SystemSharedMemoryUnregisterRequest_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_SystemSharedMemoryUnregisterRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.SystemSharedMemoryUnregisterRequest.class, GrpcService.SystemSharedMemoryUnregisterRequest.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile Object name_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the system region to unregister. If empty
     *&#64;&#64;     all system shared-memory regions are unregistered.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    public String getName() {
      Object ref = name_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the system region to unregister. If empty
     *&#64;&#64;     all system shared-memory regions are unregistered.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      Object ref = name_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.SystemSharedMemoryUnregisterRequest)) {
        return super.equals(obj);
      }
      GrpcService.SystemSharedMemoryUnregisterRequest other = (GrpcService.SystemSharedMemoryUnregisterRequest) obj;

      boolean result = true;
      result = result && getName()
          .equals(other.getName());
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.SystemSharedMemoryUnregisterRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.SystemSharedMemoryUnregisterRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.SystemSharedMemoryUnregisterRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.SystemSharedMemoryUnregisterRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.SystemSharedMemoryUnregisterRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.SystemSharedMemoryUnregisterRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.SystemSharedMemoryUnregisterRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.SystemSharedMemoryUnregisterRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.SystemSharedMemoryUnregisterRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.SystemSharedMemoryUnregisterRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.SystemSharedMemoryUnregisterRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message SystemSharedMemoryUnregisterRequest
     *&#64;&#64;
     *&#64;&#64;   Request message for SystemSharedMemoryUnregister.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.SystemSharedMemoryUnregisterRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.SystemSharedMemoryUnregisterRequest)
        GrpcService.SystemSharedMemoryUnregisterRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_SystemSharedMemoryUnregisterRequest_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_SystemSharedMemoryUnregisterRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.SystemSharedMemoryUnregisterRequest.class, GrpcService.SystemSharedMemoryUnregisterRequest.Builder.class);
      }

      // Construct using GrpcService.SystemSharedMemoryUnregisterRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        name_ = "";

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_SystemSharedMemoryUnregisterRequest_descriptor;
      }

      public GrpcService.SystemSharedMemoryUnregisterRequest getDefaultInstanceForType() {
        return GrpcService.SystemSharedMemoryUnregisterRequest.getDefaultInstance();
      }

      public GrpcService.SystemSharedMemoryUnregisterRequest build() {
        GrpcService.SystemSharedMemoryUnregisterRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.SystemSharedMemoryUnregisterRequest buildPartial() {
        GrpcService.SystemSharedMemoryUnregisterRequest result = new GrpcService.SystemSharedMemoryUnregisterRequest(this);
        result.name_ = name_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.SystemSharedMemoryUnregisterRequest) {
          return mergeFrom((GrpcService.SystemSharedMemoryUnregisterRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.SystemSharedMemoryUnregisterRequest other) {
        if (other == GrpcService.SystemSharedMemoryUnregisterRequest.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.SystemSharedMemoryUnregisterRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.SystemSharedMemoryUnregisterRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private Object name_ = "";
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the system region to unregister. If empty
       *&#64;&#64;     all system shared-memory regions are unregistered.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public String getName() {
        Object ref = name_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the system region to unregister. If empty
       *&#64;&#64;     all system shared-memory regions are unregistered.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the system region to unregister. If empty
       *&#64;&#64;     all system shared-memory regions are unregistered.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder setName(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the system region to unregister. If empty
       *&#64;&#64;     all system shared-memory regions are unregistered.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder clearName() {

        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the system region to unregister. If empty
       *&#64;&#64;     all system shared-memory regions are unregistered.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        name_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.SystemSharedMemoryUnregisterRequest)
    }

    // @@protoc_insertion_point(class_scope:inference.SystemSharedMemoryUnregisterRequest)
    private static final GrpcService.SystemSharedMemoryUnregisterRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.SystemSharedMemoryUnregisterRequest();
    }

    public static GrpcService.SystemSharedMemoryUnregisterRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SystemSharedMemoryUnregisterRequest>
        PARSER = new com.google.protobuf.AbstractParser<SystemSharedMemoryUnregisterRequest>() {
      public SystemSharedMemoryUnregisterRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new SystemSharedMemoryUnregisterRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<SystemSharedMemoryUnregisterRequest> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<SystemSharedMemoryUnregisterRequest> getParserForType() {
      return PARSER;
    }

    public GrpcService.SystemSharedMemoryUnregisterRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SystemSharedMemoryUnregisterResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.SystemSharedMemoryUnregisterResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message SystemSharedMemoryUnregisterResponse
   *&#64;&#64;
   *&#64;&#64;   Response message for SystemSharedMemoryUnregister.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.SystemSharedMemoryUnregisterResponse}
   */
  public  static final class SystemSharedMemoryUnregisterResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.SystemSharedMemoryUnregisterResponse)
      SystemSharedMemoryUnregisterResponseOrBuilder {
    // Use SystemSharedMemoryUnregisterResponse.newBuilder() to construct.
    private SystemSharedMemoryUnregisterResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SystemSharedMemoryUnregisterResponse() {
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private SystemSharedMemoryUnregisterResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_SystemSharedMemoryUnregisterResponse_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_SystemSharedMemoryUnregisterResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.SystemSharedMemoryUnregisterResponse.class, GrpcService.SystemSharedMemoryUnregisterResponse.Builder.class);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.SystemSharedMemoryUnregisterResponse)) {
        return super.equals(obj);
      }
      GrpcService.SystemSharedMemoryUnregisterResponse other = (GrpcService.SystemSharedMemoryUnregisterResponse) obj;

      boolean result = true;
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.SystemSharedMemoryUnregisterResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.SystemSharedMemoryUnregisterResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.SystemSharedMemoryUnregisterResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.SystemSharedMemoryUnregisterResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.SystemSharedMemoryUnregisterResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.SystemSharedMemoryUnregisterResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.SystemSharedMemoryUnregisterResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.SystemSharedMemoryUnregisterResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.SystemSharedMemoryUnregisterResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.SystemSharedMemoryUnregisterResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.SystemSharedMemoryUnregisterResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message SystemSharedMemoryUnregisterResponse
     *&#64;&#64;
     *&#64;&#64;   Response message for SystemSharedMemoryUnregister.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.SystemSharedMemoryUnregisterResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.SystemSharedMemoryUnregisterResponse)
        GrpcService.SystemSharedMemoryUnregisterResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_SystemSharedMemoryUnregisterResponse_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_SystemSharedMemoryUnregisterResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.SystemSharedMemoryUnregisterResponse.class, GrpcService.SystemSharedMemoryUnregisterResponse.Builder.class);
      }

      // Construct using GrpcService.SystemSharedMemoryUnregisterResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_SystemSharedMemoryUnregisterResponse_descriptor;
      }

      public GrpcService.SystemSharedMemoryUnregisterResponse getDefaultInstanceForType() {
        return GrpcService.SystemSharedMemoryUnregisterResponse.getDefaultInstance();
      }

      public GrpcService.SystemSharedMemoryUnregisterResponse build() {
        GrpcService.SystemSharedMemoryUnregisterResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.SystemSharedMemoryUnregisterResponse buildPartial() {
        GrpcService.SystemSharedMemoryUnregisterResponse result = new GrpcService.SystemSharedMemoryUnregisterResponse(this);
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.SystemSharedMemoryUnregisterResponse) {
          return mergeFrom((GrpcService.SystemSharedMemoryUnregisterResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.SystemSharedMemoryUnregisterResponse other) {
        if (other == GrpcService.SystemSharedMemoryUnregisterResponse.getDefaultInstance()) return this;
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.SystemSharedMemoryUnregisterResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.SystemSharedMemoryUnregisterResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.SystemSharedMemoryUnregisterResponse)
    }

    // @@protoc_insertion_point(class_scope:inference.SystemSharedMemoryUnregisterResponse)
    private static final GrpcService.SystemSharedMemoryUnregisterResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.SystemSharedMemoryUnregisterResponse();
    }

    public static GrpcService.SystemSharedMemoryUnregisterResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SystemSharedMemoryUnregisterResponse>
        PARSER = new com.google.protobuf.AbstractParser<SystemSharedMemoryUnregisterResponse>() {
      public SystemSharedMemoryUnregisterResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new SystemSharedMemoryUnregisterResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<SystemSharedMemoryUnregisterResponse> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<SystemSharedMemoryUnregisterResponse> getParserForType() {
      return PARSER;
    }

    public GrpcService.SystemSharedMemoryUnregisterResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CudaSharedMemoryStatusRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.CudaSharedMemoryStatusRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the region to get status for. If empty the
     *&#64;&#64;     status is returned for all registered regions.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    String getName();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the region to get status for. If empty the
     *&#64;&#64;     status is returned for all registered regions.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message CudaSharedMemoryStatusRequest
   *&#64;&#64;
   *&#64;&#64;   Request message for CudaSharedMemoryStatus.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.CudaSharedMemoryStatusRequest}
   */
  public  static final class CudaSharedMemoryStatusRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.CudaSharedMemoryStatusRequest)
      CudaSharedMemoryStatusRequestOrBuilder {
    // Use CudaSharedMemoryStatusRequest.newBuilder() to construct.
    private CudaSharedMemoryStatusRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CudaSharedMemoryStatusRequest() {
      name_ = "";
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private CudaSharedMemoryStatusRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              String s = input.readStringRequireUtf8();

              name_ = s;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_CudaSharedMemoryStatusRequest_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_CudaSharedMemoryStatusRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.CudaSharedMemoryStatusRequest.class, GrpcService.CudaSharedMemoryStatusRequest.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile Object name_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the region to get status for. If empty the
     *&#64;&#64;     status is returned for all registered regions.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    public String getName() {
      Object ref = name_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the region to get status for. If empty the
     *&#64;&#64;     status is returned for all registered regions.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      Object ref = name_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.CudaSharedMemoryStatusRequest)) {
        return super.equals(obj);
      }
      GrpcService.CudaSharedMemoryStatusRequest other = (GrpcService.CudaSharedMemoryStatusRequest) obj;

      boolean result = true;
      result = result && getName()
          .equals(other.getName());
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.CudaSharedMemoryStatusRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.CudaSharedMemoryStatusRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.CudaSharedMemoryStatusRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.CudaSharedMemoryStatusRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.CudaSharedMemoryStatusRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.CudaSharedMemoryStatusRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.CudaSharedMemoryStatusRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.CudaSharedMemoryStatusRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.CudaSharedMemoryStatusRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.CudaSharedMemoryStatusRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.CudaSharedMemoryStatusRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message CudaSharedMemoryStatusRequest
     *&#64;&#64;
     *&#64;&#64;   Request message for CudaSharedMemoryStatus.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.CudaSharedMemoryStatusRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.CudaSharedMemoryStatusRequest)
        GrpcService.CudaSharedMemoryStatusRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_CudaSharedMemoryStatusRequest_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_CudaSharedMemoryStatusRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.CudaSharedMemoryStatusRequest.class, GrpcService.CudaSharedMemoryStatusRequest.Builder.class);
      }

      // Construct using GrpcService.CudaSharedMemoryStatusRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        name_ = "";

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_CudaSharedMemoryStatusRequest_descriptor;
      }

      public GrpcService.CudaSharedMemoryStatusRequest getDefaultInstanceForType() {
        return GrpcService.CudaSharedMemoryStatusRequest.getDefaultInstance();
      }

      public GrpcService.CudaSharedMemoryStatusRequest build() {
        GrpcService.CudaSharedMemoryStatusRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.CudaSharedMemoryStatusRequest buildPartial() {
        GrpcService.CudaSharedMemoryStatusRequest result = new GrpcService.CudaSharedMemoryStatusRequest(this);
        result.name_ = name_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.CudaSharedMemoryStatusRequest) {
          return mergeFrom((GrpcService.CudaSharedMemoryStatusRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.CudaSharedMemoryStatusRequest other) {
        if (other == GrpcService.CudaSharedMemoryStatusRequest.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.CudaSharedMemoryStatusRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.CudaSharedMemoryStatusRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private Object name_ = "";
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the region to get status for. If empty the
       *&#64;&#64;     status is returned for all registered regions.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public String getName() {
        Object ref = name_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the region to get status for. If empty the
       *&#64;&#64;     status is returned for all registered regions.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the region to get status for. If empty the
       *&#64;&#64;     status is returned for all registered regions.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder setName(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the region to get status for. If empty the
       *&#64;&#64;     status is returned for all registered regions.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder clearName() {

        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the region to get status for. If empty the
       *&#64;&#64;     status is returned for all registered regions.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        name_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.CudaSharedMemoryStatusRequest)
    }

    // @@protoc_insertion_point(class_scope:inference.CudaSharedMemoryStatusRequest)
    private static final GrpcService.CudaSharedMemoryStatusRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.CudaSharedMemoryStatusRequest();
    }

    public static GrpcService.CudaSharedMemoryStatusRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CudaSharedMemoryStatusRequest>
        PARSER = new com.google.protobuf.AbstractParser<CudaSharedMemoryStatusRequest>() {
      public CudaSharedMemoryStatusRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new CudaSharedMemoryStatusRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<CudaSharedMemoryStatusRequest> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<CudaSharedMemoryStatusRequest> getParserForType() {
      return PARSER;
    }

    public GrpcService.CudaSharedMemoryStatusRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CudaSharedMemoryStatusResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.CudaSharedMemoryStatusResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
     *&#64;&#64;
     *&#64;&#64;     Status for each of the registered regions, indexed by
     *&#64;&#64;     region name.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.CudaSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
     */
    int getRegionsCount();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
     *&#64;&#64;
     *&#64;&#64;     Status for each of the registered regions, indexed by
     *&#64;&#64;     region name.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.CudaSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
     */
    boolean containsRegions(
            String key);
    /**
     * Use {@link #getRegionsMap()} instead.
     */
    @Deprecated
    java.util.Map<String, GrpcService.CudaSharedMemoryStatusResponse.RegionStatus>
    getRegions();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
     *&#64;&#64;
     *&#64;&#64;     Status for each of the registered regions, indexed by
     *&#64;&#64;     region name.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.CudaSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
     */
    java.util.Map<String, GrpcService.CudaSharedMemoryStatusResponse.RegionStatus>
    getRegionsMap();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
     *&#64;&#64;
     *&#64;&#64;     Status for each of the registered regions, indexed by
     *&#64;&#64;     region name.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.CudaSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
     */

    GrpcService.CudaSharedMemoryStatusResponse.RegionStatus getRegionsOrDefault(
            String key,
            GrpcService.CudaSharedMemoryStatusResponse.RegionStatus defaultValue);
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
     *&#64;&#64;
     *&#64;&#64;     Status for each of the registered regions, indexed by
     *&#64;&#64;     region name.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.CudaSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
     */

    GrpcService.CudaSharedMemoryStatusResponse.RegionStatus getRegionsOrThrow(
            String key);
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message CudaSharedMemoryStatusResponse
   *&#64;&#64;
   *&#64;&#64;   Response message for CudaSharedMemoryStatus.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.CudaSharedMemoryStatusResponse}
   */
  public  static final class CudaSharedMemoryStatusResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.CudaSharedMemoryStatusResponse)
      CudaSharedMemoryStatusResponseOrBuilder {
    // Use CudaSharedMemoryStatusResponse.newBuilder() to construct.
    private CudaSharedMemoryStatusResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CudaSharedMemoryStatusResponse() {
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private CudaSharedMemoryStatusResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                regions_ = com.google.protobuf.MapField.newMapField(
                    RegionsDefaultEntryHolder.defaultEntry);
                mutable_bitField0_ |= 0x00000001;
              }
              com.google.protobuf.MapEntry<String, GrpcService.CudaSharedMemoryStatusResponse.RegionStatus>
              regions = input.readMessage(
                  RegionsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
              regions_.getMutableMap().put(regions.getKey(), regions.getValue());
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_CudaSharedMemoryStatusResponse_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 1:
          return internalGetRegions();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_CudaSharedMemoryStatusResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.CudaSharedMemoryStatusResponse.class, GrpcService.CudaSharedMemoryStatusResponse.Builder.class);
    }

    public interface RegionStatusOrBuilder extends
        // @@protoc_insertion_point(interface_extends:inference.CudaSharedMemoryStatusResponse.RegionStatus)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;       The name for the shared memory region.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      String getName();
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;       The name for the shared memory region.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      com.google.protobuf.ByteString
          getNameBytes();

      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: uin64 device_id
       *&#64;&#64;
       *&#64;&#64;       The GPU device ID where the cudaIPC handle was created.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 device_id = 2;</code>
       */
      long getDeviceId();

      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: uint64 byte_size
       *&#64;&#64;
       *&#64;&#64;       Size of the shared memory region, in bytes.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 byte_size = 3;</code>
       */
      long getByteSize();
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: message RegionStatus
     *&#64;&#64;
     *&#64;&#64;     Status for a shared memory region.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.CudaSharedMemoryStatusResponse.RegionStatus}
     */
    public  static final class RegionStatus extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:inference.CudaSharedMemoryStatusResponse.RegionStatus)
        RegionStatusOrBuilder {
      // Use RegionStatus.newBuilder() to construct.
      private RegionStatus(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private RegionStatus() {
        name_ = "";
        deviceId_ = 0L;
        byteSize_ = 0L;
      }

      @Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
      }
      private RegionStatus(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!input.skipField(tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                String s = input.readStringRequireUtf8();

                name_ = s;
                break;
              }
              case 16: {

                deviceId_ = input.readUInt64();
                break;
              }
              case 24: {

                byteSize_ = input.readUInt64();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_CudaSharedMemoryStatusResponse_RegionStatus_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_CudaSharedMemoryStatusResponse_RegionStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.CudaSharedMemoryStatusResponse.RegionStatus.class, GrpcService.CudaSharedMemoryStatusResponse.RegionStatus.Builder.class);
      }

      public static final int NAME_FIELD_NUMBER = 1;
      private volatile Object name_;
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;       The name for the shared memory region.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public String getName() {
        Object ref = name_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          name_ = s;
          return s;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;    .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;       The name for the shared memory region.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int DEVICE_ID_FIELD_NUMBER = 2;
      private long deviceId_;
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: uin64 device_id
       *&#64;&#64;
       *&#64;&#64;       The GPU device ID where the cudaIPC handle was created.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 device_id = 2;</code>
       */
      public long getDeviceId() {
        return deviceId_;
      }

      public static final int BYTE_SIZE_FIELD_NUMBER = 3;
      private long byteSize_;
      /**
       * <pre>
       *&#64;&#64;    .. cpp:var:: uint64 byte_size
       *&#64;&#64;
       *&#64;&#64;       Size of the shared memory region, in bytes.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 byte_size = 3;</code>
       */
      public long getByteSize() {
        return byteSize_;
      }

      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (!getNameBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
        }
        if (deviceId_ != 0L) {
          output.writeUInt64(2, deviceId_);
        }
        if (byteSize_ != 0L) {
          output.writeUInt64(3, byteSize_);
        }
      }

      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (!getNameBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
        }
        if (deviceId_ != 0L) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt64Size(2, deviceId_);
        }
        if (byteSize_ != 0L) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt64Size(3, byteSize_);
        }
        memoizedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @Override
      public boolean equals(final Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof GrpcService.CudaSharedMemoryStatusResponse.RegionStatus)) {
          return super.equals(obj);
        }
        GrpcService.CudaSharedMemoryStatusResponse.RegionStatus other = (GrpcService.CudaSharedMemoryStatusResponse.RegionStatus) obj;

        boolean result = true;
        result = result && getName()
            .equals(other.getName());
        result = result && (getDeviceId()
            == other.getDeviceId());
        result = result && (getByteSize()
            == other.getByteSize());
        return result;
      }

      @Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
        hash = (37 * hash) + DEVICE_ID_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getDeviceId());
        hash = (37 * hash) + BYTE_SIZE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getByteSize());
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static GrpcService.CudaSharedMemoryStatusResponse.RegionStatus parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static GrpcService.CudaSharedMemoryStatusResponse.RegionStatus parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static GrpcService.CudaSharedMemoryStatusResponse.RegionStatus parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static GrpcService.CudaSharedMemoryStatusResponse.RegionStatus parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static GrpcService.CudaSharedMemoryStatusResponse.RegionStatus parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static GrpcService.CudaSharedMemoryStatusResponse.RegionStatus parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static GrpcService.CudaSharedMemoryStatusResponse.RegionStatus parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static GrpcService.CudaSharedMemoryStatusResponse.RegionStatus parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static GrpcService.CudaSharedMemoryStatusResponse.RegionStatus parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static GrpcService.CudaSharedMemoryStatusResponse.RegionStatus parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(GrpcService.CudaSharedMemoryStatusResponse.RegionStatus prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @Override
      protected Builder newBuilderForType(
          BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: message RegionStatus
       *&#64;&#64;
       *&#64;&#64;     Status for a shared memory region.
       *&#64;&#64;
       * </pre>
       *
       * Protobuf type {@code inference.CudaSharedMemoryStatusResponse.RegionStatus}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:inference.CudaSharedMemoryStatusResponse.RegionStatus)
          GrpcService.CudaSharedMemoryStatusResponse.RegionStatusOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return GrpcService.internal_static_inference_CudaSharedMemoryStatusResponse_RegionStatus_descriptor;
        }

        protected FieldAccessorTable
            internalGetFieldAccessorTable() {
          return GrpcService.internal_static_inference_CudaSharedMemoryStatusResponse_RegionStatus_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  GrpcService.CudaSharedMemoryStatusResponse.RegionStatus.class, GrpcService.CudaSharedMemoryStatusResponse.RegionStatus.Builder.class);
        }

        // Construct using GrpcService.CudaSharedMemoryStatusResponse.RegionStatus.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          name_ = "";

          deviceId_ = 0L;

          byteSize_ = 0L;

          return this;
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return GrpcService.internal_static_inference_CudaSharedMemoryStatusResponse_RegionStatus_descriptor;
        }

        public GrpcService.CudaSharedMemoryStatusResponse.RegionStatus getDefaultInstanceForType() {
          return GrpcService.CudaSharedMemoryStatusResponse.RegionStatus.getDefaultInstance();
        }

        public GrpcService.CudaSharedMemoryStatusResponse.RegionStatus build() {
          GrpcService.CudaSharedMemoryStatusResponse.RegionStatus result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public GrpcService.CudaSharedMemoryStatusResponse.RegionStatus buildPartial() {
          GrpcService.CudaSharedMemoryStatusResponse.RegionStatus result = new GrpcService.CudaSharedMemoryStatusResponse.RegionStatus(this);
          result.name_ = name_;
          result.deviceId_ = deviceId_;
          result.byteSize_ = byteSize_;
          onBuilt();
          return result;
        }

        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof GrpcService.CudaSharedMemoryStatusResponse.RegionStatus) {
            return mergeFrom((GrpcService.CudaSharedMemoryStatusResponse.RegionStatus)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(GrpcService.CudaSharedMemoryStatusResponse.RegionStatus other) {
          if (other == GrpcService.CudaSharedMemoryStatusResponse.RegionStatus.getDefaultInstance()) return this;
          if (!other.getName().isEmpty()) {
            name_ = other.name_;
            onChanged();
          }
          if (other.getDeviceId() != 0L) {
            setDeviceId(other.getDeviceId());
          }
          if (other.getByteSize() != 0L) {
            setByteSize(other.getByteSize());
          }
          onChanged();
          return this;
        }

        public final boolean isInitialized() {
          return true;
        }

        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          GrpcService.CudaSharedMemoryStatusResponse.RegionStatus parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (GrpcService.CudaSharedMemoryStatusResponse.RegionStatus) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }

        private Object name_ = "";
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The name for the shared memory region.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public String getName() {
          Object ref = name_;
          if (!(ref instanceof String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            String s = bs.toStringUtf8();
            name_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The name for the shared memory region.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public com.google.protobuf.ByteString
            getNameBytes() {
          Object ref = name_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b =
                com.google.protobuf.ByteString.copyFromUtf8(
                    (String) ref);
            name_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The name for the shared memory region.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public Builder setName(
            String value) {
          if (value == null) {
    throw new NullPointerException();
  }

          name_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The name for the shared memory region.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public Builder clearName() {

          name_ = getDefaultInstance().getName();
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;
         *&#64;&#64;    .. cpp:var:: string name
         *&#64;&#64;
         *&#64;&#64;       The name for the shared memory region.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional string name = 1;</code>
         */
        public Builder setNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

          name_ = value;
          onChanged();
          return this;
        }

        private long deviceId_ ;
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: uin64 device_id
         *&#64;&#64;
         *&#64;&#64;       The GPU device ID where the cudaIPC handle was created.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional uint64 device_id = 2;</code>
         */
        public long getDeviceId() {
          return deviceId_;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: uin64 device_id
         *&#64;&#64;
         *&#64;&#64;       The GPU device ID where the cudaIPC handle was created.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional uint64 device_id = 2;</code>
         */
        public Builder setDeviceId(long value) {

          deviceId_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: uin64 device_id
         *&#64;&#64;
         *&#64;&#64;       The GPU device ID where the cudaIPC handle was created.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional uint64 device_id = 2;</code>
         */
        public Builder clearDeviceId() {

          deviceId_ = 0L;
          onChanged();
          return this;
        }

        private long byteSize_ ;
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: uint64 byte_size
         *&#64;&#64;
         *&#64;&#64;       Size of the shared memory region, in bytes.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional uint64 byte_size = 3;</code>
         */
        public long getByteSize() {
          return byteSize_;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: uint64 byte_size
         *&#64;&#64;
         *&#64;&#64;       Size of the shared memory region, in bytes.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional uint64 byte_size = 3;</code>
         */
        public Builder setByteSize(long value) {

          byteSize_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         *&#64;&#64;    .. cpp:var:: uint64 byte_size
         *&#64;&#64;
         *&#64;&#64;       Size of the shared memory region, in bytes.
         *&#64;&#64;
         * </pre>
         *
         * <code>optional uint64 byte_size = 3;</code>
         */
        public Builder clearByteSize() {

          byteSize_ = 0L;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return this;
        }

        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return this;
        }


        // @@protoc_insertion_point(builder_scope:inference.CudaSharedMemoryStatusResponse.RegionStatus)
      }

      // @@protoc_insertion_point(class_scope:inference.CudaSharedMemoryStatusResponse.RegionStatus)
      private static final GrpcService.CudaSharedMemoryStatusResponse.RegionStatus DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new GrpcService.CudaSharedMemoryStatusResponse.RegionStatus();
      }

      public static GrpcService.CudaSharedMemoryStatusResponse.RegionStatus getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<RegionStatus>
          PARSER = new com.google.protobuf.AbstractParser<RegionStatus>() {
        public RegionStatus parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new RegionStatus(input, extensionRegistry);
        }
      };

      public static com.google.protobuf.Parser<RegionStatus> parser() {
        return PARSER;
      }

      @Override
      public com.google.protobuf.Parser<RegionStatus> getParserForType() {
        return PARSER;
      }

      public GrpcService.CudaSharedMemoryStatusResponse.RegionStatus getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int REGIONS_FIELD_NUMBER = 1;
    private static final class RegionsDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          String, GrpcService.CudaSharedMemoryStatusResponse.RegionStatus> defaultEntry =
              com.google.protobuf.MapEntry
              .<String, GrpcService.CudaSharedMemoryStatusResponse.RegionStatus>newDefaultInstance(
                  GrpcService.internal_static_inference_CudaSharedMemoryStatusResponse_RegionsEntry_descriptor,
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  GrpcService.CudaSharedMemoryStatusResponse.RegionStatus.getDefaultInstance());
    }
    private com.google.protobuf.MapField<
        String, GrpcService.CudaSharedMemoryStatusResponse.RegionStatus> regions_;
    private com.google.protobuf.MapField<String, GrpcService.CudaSharedMemoryStatusResponse.RegionStatus>
    internalGetRegions() {
      if (regions_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            RegionsDefaultEntryHolder.defaultEntry);
      }
      return regions_;
    }

    public int getRegionsCount() {
      return internalGetRegions().getMap().size();
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
     *&#64;&#64;
     *&#64;&#64;     Status for each of the registered regions, indexed by
     *&#64;&#64;     region name.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.CudaSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
     */

    public boolean containsRegions(
        String key) {
      if (key == null) { throw new NullPointerException(); }
      return internalGetRegions().getMap().containsKey(key);
    }
    /**
     * Use {@link #getRegionsMap()} instead.
     */
    @Deprecated
    public java.util.Map<String, GrpcService.CudaSharedMemoryStatusResponse.RegionStatus> getRegions() {
      return getRegionsMap();
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
     *&#64;&#64;
     *&#64;&#64;     Status for each of the registered regions, indexed by
     *&#64;&#64;     region name.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.CudaSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
     */

    public java.util.Map<String, GrpcService.CudaSharedMemoryStatusResponse.RegionStatus> getRegionsMap() {
      return internalGetRegions().getMap();
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
     *&#64;&#64;
     *&#64;&#64;     Status for each of the registered regions, indexed by
     *&#64;&#64;     region name.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.CudaSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
     */

    public GrpcService.CudaSharedMemoryStatusResponse.RegionStatus getRegionsOrDefault(
        String key,
        GrpcService.CudaSharedMemoryStatusResponse.RegionStatus defaultValue) {
      if (key == null) { throw new NullPointerException(); }
      java.util.Map<String, GrpcService.CudaSharedMemoryStatusResponse.RegionStatus> map =
          internalGetRegions().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
     *&#64;&#64;
     *&#64;&#64;     Status for each of the registered regions, indexed by
     *&#64;&#64;     region name.
     *&#64;&#64;
     * </pre>
     *
     * <code>map&lt;string, .inference.CudaSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
     */

    public GrpcService.CudaSharedMemoryStatusResponse.RegionStatus getRegionsOrThrow(
        String key) {
      if (key == null) { throw new NullPointerException(); }
      java.util.Map<String, GrpcService.CudaSharedMemoryStatusResponse.RegionStatus> map =
          internalGetRegions().getMap();
      if (!map.containsKey(key)) {
        throw new IllegalArgumentException();
      }
      return map.get(key);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (java.util.Map.Entry<String, GrpcService.CudaSharedMemoryStatusResponse.RegionStatus> entry
           : internalGetRegions().getMap().entrySet()) {
        com.google.protobuf.MapEntry<String, GrpcService.CudaSharedMemoryStatusResponse.RegionStatus>
        regions = RegionsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        output.writeMessage(1, regions);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (java.util.Map.Entry<String, GrpcService.CudaSharedMemoryStatusResponse.RegionStatus> entry
           : internalGetRegions().getMap().entrySet()) {
        com.google.protobuf.MapEntry<String, GrpcService.CudaSharedMemoryStatusResponse.RegionStatus>
        regions = RegionsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, regions);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.CudaSharedMemoryStatusResponse)) {
        return super.equals(obj);
      }
      GrpcService.CudaSharedMemoryStatusResponse other = (GrpcService.CudaSharedMemoryStatusResponse) obj;

      boolean result = true;
      result = result && internalGetRegions().equals(
          other.internalGetRegions());
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      if (!internalGetRegions().getMap().isEmpty()) {
        hash = (37 * hash) + REGIONS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetRegions().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.CudaSharedMemoryStatusResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.CudaSharedMemoryStatusResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.CudaSharedMemoryStatusResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.CudaSharedMemoryStatusResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.CudaSharedMemoryStatusResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.CudaSharedMemoryStatusResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.CudaSharedMemoryStatusResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.CudaSharedMemoryStatusResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.CudaSharedMemoryStatusResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.CudaSharedMemoryStatusResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.CudaSharedMemoryStatusResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message CudaSharedMemoryStatusResponse
     *&#64;&#64;
     *&#64;&#64;   Response message for CudaSharedMemoryStatus.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.CudaSharedMemoryStatusResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.CudaSharedMemoryStatusResponse)
        GrpcService.CudaSharedMemoryStatusResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_CudaSharedMemoryStatusResponse_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 1:
            return internalGetRegions();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 1:
            return internalGetMutableRegions();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_CudaSharedMemoryStatusResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.CudaSharedMemoryStatusResponse.class, GrpcService.CudaSharedMemoryStatusResponse.Builder.class);
      }

      // Construct using GrpcService.CudaSharedMemoryStatusResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        internalGetMutableRegions().clear();
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_CudaSharedMemoryStatusResponse_descriptor;
      }

      public GrpcService.CudaSharedMemoryStatusResponse getDefaultInstanceForType() {
        return GrpcService.CudaSharedMemoryStatusResponse.getDefaultInstance();
      }

      public GrpcService.CudaSharedMemoryStatusResponse build() {
        GrpcService.CudaSharedMemoryStatusResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.CudaSharedMemoryStatusResponse buildPartial() {
        GrpcService.CudaSharedMemoryStatusResponse result = new GrpcService.CudaSharedMemoryStatusResponse(this);
        int from_bitField0_ = bitField0_;
        result.regions_ = internalGetRegions();
        result.regions_.makeImmutable();
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.CudaSharedMemoryStatusResponse) {
          return mergeFrom((GrpcService.CudaSharedMemoryStatusResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.CudaSharedMemoryStatusResponse other) {
        if (other == GrpcService.CudaSharedMemoryStatusResponse.getDefaultInstance()) return this;
        internalGetMutableRegions().mergeFrom(
            other.internalGetRegions());
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.CudaSharedMemoryStatusResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.CudaSharedMemoryStatusResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.MapField<
          String, GrpcService.CudaSharedMemoryStatusResponse.RegionStatus> regions_;
      private com.google.protobuf.MapField<String, GrpcService.CudaSharedMemoryStatusResponse.RegionStatus>
      internalGetRegions() {
        if (regions_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              RegionsDefaultEntryHolder.defaultEntry);
        }
        return regions_;
      }
      private com.google.protobuf.MapField<String, GrpcService.CudaSharedMemoryStatusResponse.RegionStatus>
      internalGetMutableRegions() {
        onChanged();;
        if (regions_ == null) {
          regions_ = com.google.protobuf.MapField.newMapField(
              RegionsDefaultEntryHolder.defaultEntry);
        }
        if (!regions_.isMutable()) {
          regions_ = regions_.copy();
        }
        return regions_;
      }

      public int getRegionsCount() {
        return internalGetRegions().getMap().size();
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
       *&#64;&#64;
       *&#64;&#64;     Status for each of the registered regions, indexed by
       *&#64;&#64;     region name.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.CudaSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
       */

      public boolean containsRegions(
          String key) {
        if (key == null) { throw new NullPointerException(); }
        return internalGetRegions().getMap().containsKey(key);
      }
      /**
       * Use {@link #getRegionsMap()} instead.
       */
      @Deprecated
      public java.util.Map<String, GrpcService.CudaSharedMemoryStatusResponse.RegionStatus> getRegions() {
        return getRegionsMap();
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
       *&#64;&#64;
       *&#64;&#64;     Status for each of the registered regions, indexed by
       *&#64;&#64;     region name.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.CudaSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
       */

      public java.util.Map<String, GrpcService.CudaSharedMemoryStatusResponse.RegionStatus> getRegionsMap() {
        return internalGetRegions().getMap();
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
       *&#64;&#64;
       *&#64;&#64;     Status for each of the registered regions, indexed by
       *&#64;&#64;     region name.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.CudaSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
       */

      public GrpcService.CudaSharedMemoryStatusResponse.RegionStatus getRegionsOrDefault(
          String key,
          GrpcService.CudaSharedMemoryStatusResponse.RegionStatus defaultValue) {
        if (key == null) { throw new NullPointerException(); }
        java.util.Map<String, GrpcService.CudaSharedMemoryStatusResponse.RegionStatus> map =
            internalGetRegions().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
       *&#64;&#64;
       *&#64;&#64;     Status for each of the registered regions, indexed by
       *&#64;&#64;     region name.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.CudaSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
       */

      public GrpcService.CudaSharedMemoryStatusResponse.RegionStatus getRegionsOrThrow(
          String key) {
        if (key == null) { throw new NullPointerException(); }
        java.util.Map<String, GrpcService.CudaSharedMemoryStatusResponse.RegionStatus> map =
            internalGetRegions().getMap();
        if (!map.containsKey(key)) {
          throw new IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearRegions() {
        getMutableRegions().clear();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
       *&#64;&#64;
       *&#64;&#64;     Status for each of the registered regions, indexed by
       *&#64;&#64;     region name.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.CudaSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
       */

      public Builder removeRegions(
          String key) {
        if (key == null) { throw new NullPointerException(); }
        getMutableRegions().remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @Deprecated
      public java.util.Map<String, GrpcService.CudaSharedMemoryStatusResponse.RegionStatus>
      getMutableRegions() {
        return internalGetMutableRegions().getMutableMap();
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
       *&#64;&#64;
       *&#64;&#64;     Status for each of the registered regions, indexed by
       *&#64;&#64;     region name.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.CudaSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
       */
      public Builder putRegions(
          String key,
          GrpcService.CudaSharedMemoryStatusResponse.RegionStatus value) {
        if (key == null) { throw new NullPointerException(); }
        if (value == null) { throw new NullPointerException(); }
        getMutableRegions().put(key, value);
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: map&lt;string,RegionStatus&gt; regions
       *&#64;&#64;
       *&#64;&#64;     Status for each of the registered regions, indexed by
       *&#64;&#64;     region name.
       *&#64;&#64;
       * </pre>
       *
       * <code>map&lt;string, .inference.CudaSharedMemoryStatusResponse.RegionStatus&gt; regions = 1;</code>
       */

      public Builder putAllRegions(
          java.util.Map<String, GrpcService.CudaSharedMemoryStatusResponse.RegionStatus> values) {
        getMutableRegions().putAll(values);
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.CudaSharedMemoryStatusResponse)
    }

    // @@protoc_insertion_point(class_scope:inference.CudaSharedMemoryStatusResponse)
    private static final GrpcService.CudaSharedMemoryStatusResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.CudaSharedMemoryStatusResponse();
    }

    public static GrpcService.CudaSharedMemoryStatusResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CudaSharedMemoryStatusResponse>
        PARSER = new com.google.protobuf.AbstractParser<CudaSharedMemoryStatusResponse>() {
      public CudaSharedMemoryStatusResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new CudaSharedMemoryStatusResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<CudaSharedMemoryStatusResponse> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<CudaSharedMemoryStatusResponse> getParserForType() {
      return PARSER;
    }

    public GrpcService.CudaSharedMemoryStatusResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CudaSharedMemoryRegisterRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.CudaSharedMemoryRegisterRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the region to register.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    String getName();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the region to register.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: bytes raw_handle
     *&#64;&#64;
     *&#64;&#64;     The raw serialized cudaIPC handle.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional bytes raw_handle = 2;</code>
     */
    com.google.protobuf.ByteString getRawHandle();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: int64 device_id
     *&#64;&#64;
     *&#64;&#64;     The GPU device ID on which the cudaIPC handle was created.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional int64 device_id = 3;</code>
     */
    long getDeviceId();

    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: uint64 byte_size
     *&#64;&#64;
     *&#64;&#64;     Size of the shared memory block, in bytes.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional uint64 byte_size = 4;</code>
     */
    long getByteSize();
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message CudaSharedMemoryRegisterRequest
   *&#64;&#64;
   *&#64;&#64;   Request message for CudaSharedMemoryRegister.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.CudaSharedMemoryRegisterRequest}
   */
  public  static final class CudaSharedMemoryRegisterRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.CudaSharedMemoryRegisterRequest)
      CudaSharedMemoryRegisterRequestOrBuilder {
    // Use CudaSharedMemoryRegisterRequest.newBuilder() to construct.
    private CudaSharedMemoryRegisterRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CudaSharedMemoryRegisterRequest() {
      name_ = "";
      rawHandle_ = com.google.protobuf.ByteString.EMPTY;
      deviceId_ = 0L;
      byteSize_ = 0L;
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private CudaSharedMemoryRegisterRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              String s = input.readStringRequireUtf8();

              name_ = s;
              break;
            }
            case 18: {

              rawHandle_ = input.readBytes();
              break;
            }
            case 24: {

              deviceId_ = input.readInt64();
              break;
            }
            case 32: {

              byteSize_ = input.readUInt64();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_CudaSharedMemoryRegisterRequest_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_CudaSharedMemoryRegisterRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.CudaSharedMemoryRegisterRequest.class, GrpcService.CudaSharedMemoryRegisterRequest.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile Object name_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the region to register.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    public String getName() {
      Object ref = name_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the region to register.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      Object ref = name_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RAW_HANDLE_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString rawHandle_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: bytes raw_handle
     *&#64;&#64;
     *&#64;&#64;     The raw serialized cudaIPC handle.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional bytes raw_handle = 2;</code>
     */
    public com.google.protobuf.ByteString getRawHandle() {
      return rawHandle_;
    }

    public static final int DEVICE_ID_FIELD_NUMBER = 3;
    private long deviceId_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: int64 device_id
     *&#64;&#64;
     *&#64;&#64;     The GPU device ID on which the cudaIPC handle was created.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional int64 device_id = 3;</code>
     */
    public long getDeviceId() {
      return deviceId_;
    }

    public static final int BYTE_SIZE_FIELD_NUMBER = 4;
    private long byteSize_;
    /**
     * <pre>
     *&#64;&#64;  .. cpp:var:: uint64 byte_size
     *&#64;&#64;
     *&#64;&#64;     Size of the shared memory block, in bytes.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional uint64 byte_size = 4;</code>
     */
    public long getByteSize() {
      return byteSize_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (!rawHandle_.isEmpty()) {
        output.writeBytes(2, rawHandle_);
      }
      if (deviceId_ != 0L) {
        output.writeInt64(3, deviceId_);
      }
      if (byteSize_ != 0L) {
        output.writeUInt64(4, byteSize_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (!rawHandle_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, rawHandle_);
      }
      if (deviceId_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, deviceId_);
      }
      if (byteSize_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(4, byteSize_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.CudaSharedMemoryRegisterRequest)) {
        return super.equals(obj);
      }
      GrpcService.CudaSharedMemoryRegisterRequest other = (GrpcService.CudaSharedMemoryRegisterRequest) obj;

      boolean result = true;
      result = result && getName()
          .equals(other.getName());
      result = result && getRawHandle()
          .equals(other.getRawHandle());
      result = result && (getDeviceId()
          == other.getDeviceId());
      result = result && (getByteSize()
          == other.getByteSize());
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + RAW_HANDLE_FIELD_NUMBER;
      hash = (53 * hash) + getRawHandle().hashCode();
      hash = (37 * hash) + DEVICE_ID_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getDeviceId());
      hash = (37 * hash) + BYTE_SIZE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getByteSize());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.CudaSharedMemoryRegisterRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.CudaSharedMemoryRegisterRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.CudaSharedMemoryRegisterRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.CudaSharedMemoryRegisterRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.CudaSharedMemoryRegisterRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.CudaSharedMemoryRegisterRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.CudaSharedMemoryRegisterRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.CudaSharedMemoryRegisterRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.CudaSharedMemoryRegisterRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.CudaSharedMemoryRegisterRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.CudaSharedMemoryRegisterRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message CudaSharedMemoryRegisterRequest
     *&#64;&#64;
     *&#64;&#64;   Request message for CudaSharedMemoryRegister.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.CudaSharedMemoryRegisterRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.CudaSharedMemoryRegisterRequest)
        GrpcService.CudaSharedMemoryRegisterRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_CudaSharedMemoryRegisterRequest_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_CudaSharedMemoryRegisterRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.CudaSharedMemoryRegisterRequest.class, GrpcService.CudaSharedMemoryRegisterRequest.Builder.class);
      }

      // Construct using GrpcService.CudaSharedMemoryRegisterRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        name_ = "";

        rawHandle_ = com.google.protobuf.ByteString.EMPTY;

        deviceId_ = 0L;

        byteSize_ = 0L;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_CudaSharedMemoryRegisterRequest_descriptor;
      }

      public GrpcService.CudaSharedMemoryRegisterRequest getDefaultInstanceForType() {
        return GrpcService.CudaSharedMemoryRegisterRequest.getDefaultInstance();
      }

      public GrpcService.CudaSharedMemoryRegisterRequest build() {
        GrpcService.CudaSharedMemoryRegisterRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.CudaSharedMemoryRegisterRequest buildPartial() {
        GrpcService.CudaSharedMemoryRegisterRequest result = new GrpcService.CudaSharedMemoryRegisterRequest(this);
        result.name_ = name_;
        result.rawHandle_ = rawHandle_;
        result.deviceId_ = deviceId_;
        result.byteSize_ = byteSize_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.CudaSharedMemoryRegisterRequest) {
          return mergeFrom((GrpcService.CudaSharedMemoryRegisterRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.CudaSharedMemoryRegisterRequest other) {
        if (other == GrpcService.CudaSharedMemoryRegisterRequest.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (other.getRawHandle() != com.google.protobuf.ByteString.EMPTY) {
          setRawHandle(other.getRawHandle());
        }
        if (other.getDeviceId() != 0L) {
          setDeviceId(other.getDeviceId());
        }
        if (other.getByteSize() != 0L) {
          setByteSize(other.getByteSize());
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.CudaSharedMemoryRegisterRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.CudaSharedMemoryRegisterRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private Object name_ = "";
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the region to register.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public String getName() {
        Object ref = name_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the region to register.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the region to register.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder setName(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the region to register.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder clearName() {

        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the region to register.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        name_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString rawHandle_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: bytes raw_handle
       *&#64;&#64;
       *&#64;&#64;     The raw serialized cudaIPC handle.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional bytes raw_handle = 2;</code>
       */
      public com.google.protobuf.ByteString getRawHandle() {
        return rawHandle_;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: bytes raw_handle
       *&#64;&#64;
       *&#64;&#64;     The raw serialized cudaIPC handle.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional bytes raw_handle = 2;</code>
       */
      public Builder setRawHandle(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }

        rawHandle_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: bytes raw_handle
       *&#64;&#64;
       *&#64;&#64;     The raw serialized cudaIPC handle.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional bytes raw_handle = 2;</code>
       */
      public Builder clearRawHandle() {

        rawHandle_ = getDefaultInstance().getRawHandle();
        onChanged();
        return this;
      }

      private long deviceId_ ;
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: int64 device_id
       *&#64;&#64;
       *&#64;&#64;     The GPU device ID on which the cudaIPC handle was created.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional int64 device_id = 3;</code>
       */
      public long getDeviceId() {
        return deviceId_;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: int64 device_id
       *&#64;&#64;
       *&#64;&#64;     The GPU device ID on which the cudaIPC handle was created.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional int64 device_id = 3;</code>
       */
      public Builder setDeviceId(long value) {

        deviceId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: int64 device_id
       *&#64;&#64;
       *&#64;&#64;     The GPU device ID on which the cudaIPC handle was created.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional int64 device_id = 3;</code>
       */
      public Builder clearDeviceId() {

        deviceId_ = 0L;
        onChanged();
        return this;
      }

      private long byteSize_ ;
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: uint64 byte_size
       *&#64;&#64;
       *&#64;&#64;     Size of the shared memory block, in bytes.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 byte_size = 4;</code>
       */
      public long getByteSize() {
        return byteSize_;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: uint64 byte_size
       *&#64;&#64;
       *&#64;&#64;     Size of the shared memory block, in bytes.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 byte_size = 4;</code>
       */
      public Builder setByteSize(long value) {

        byteSize_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;  .. cpp:var:: uint64 byte_size
       *&#64;&#64;
       *&#64;&#64;     Size of the shared memory block, in bytes.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional uint64 byte_size = 4;</code>
       */
      public Builder clearByteSize() {

        byteSize_ = 0L;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.CudaSharedMemoryRegisterRequest)
    }

    // @@protoc_insertion_point(class_scope:inference.CudaSharedMemoryRegisterRequest)
    private static final GrpcService.CudaSharedMemoryRegisterRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.CudaSharedMemoryRegisterRequest();
    }

    public static GrpcService.CudaSharedMemoryRegisterRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CudaSharedMemoryRegisterRequest>
        PARSER = new com.google.protobuf.AbstractParser<CudaSharedMemoryRegisterRequest>() {
      public CudaSharedMemoryRegisterRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new CudaSharedMemoryRegisterRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<CudaSharedMemoryRegisterRequest> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<CudaSharedMemoryRegisterRequest> getParserForType() {
      return PARSER;
    }

    public GrpcService.CudaSharedMemoryRegisterRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CudaSharedMemoryRegisterResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.CudaSharedMemoryRegisterResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message CudaSharedMemoryRegisterResponse
   *&#64;&#64;
   *&#64;&#64;   Response message for CudaSharedMemoryRegister.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.CudaSharedMemoryRegisterResponse}
   */
  public  static final class CudaSharedMemoryRegisterResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.CudaSharedMemoryRegisterResponse)
      CudaSharedMemoryRegisterResponseOrBuilder {
    // Use CudaSharedMemoryRegisterResponse.newBuilder() to construct.
    private CudaSharedMemoryRegisterResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CudaSharedMemoryRegisterResponse() {
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private CudaSharedMemoryRegisterResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_CudaSharedMemoryRegisterResponse_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_CudaSharedMemoryRegisterResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.CudaSharedMemoryRegisterResponse.class, GrpcService.CudaSharedMemoryRegisterResponse.Builder.class);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.CudaSharedMemoryRegisterResponse)) {
        return super.equals(obj);
      }
      GrpcService.CudaSharedMemoryRegisterResponse other = (GrpcService.CudaSharedMemoryRegisterResponse) obj;

      boolean result = true;
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.CudaSharedMemoryRegisterResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.CudaSharedMemoryRegisterResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.CudaSharedMemoryRegisterResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.CudaSharedMemoryRegisterResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.CudaSharedMemoryRegisterResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.CudaSharedMemoryRegisterResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.CudaSharedMemoryRegisterResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.CudaSharedMemoryRegisterResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.CudaSharedMemoryRegisterResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.CudaSharedMemoryRegisterResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.CudaSharedMemoryRegisterResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message CudaSharedMemoryRegisterResponse
     *&#64;&#64;
     *&#64;&#64;   Response message for CudaSharedMemoryRegister.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.CudaSharedMemoryRegisterResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.CudaSharedMemoryRegisterResponse)
        GrpcService.CudaSharedMemoryRegisterResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_CudaSharedMemoryRegisterResponse_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_CudaSharedMemoryRegisterResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.CudaSharedMemoryRegisterResponse.class, GrpcService.CudaSharedMemoryRegisterResponse.Builder.class);
      }

      // Construct using GrpcService.CudaSharedMemoryRegisterResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_CudaSharedMemoryRegisterResponse_descriptor;
      }

      public GrpcService.CudaSharedMemoryRegisterResponse getDefaultInstanceForType() {
        return GrpcService.CudaSharedMemoryRegisterResponse.getDefaultInstance();
      }

      public GrpcService.CudaSharedMemoryRegisterResponse build() {
        GrpcService.CudaSharedMemoryRegisterResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.CudaSharedMemoryRegisterResponse buildPartial() {
        GrpcService.CudaSharedMemoryRegisterResponse result = new GrpcService.CudaSharedMemoryRegisterResponse(this);
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.CudaSharedMemoryRegisterResponse) {
          return mergeFrom((GrpcService.CudaSharedMemoryRegisterResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.CudaSharedMemoryRegisterResponse other) {
        if (other == GrpcService.CudaSharedMemoryRegisterResponse.getDefaultInstance()) return this;
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.CudaSharedMemoryRegisterResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.CudaSharedMemoryRegisterResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.CudaSharedMemoryRegisterResponse)
    }

    // @@protoc_insertion_point(class_scope:inference.CudaSharedMemoryRegisterResponse)
    private static final GrpcService.CudaSharedMemoryRegisterResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.CudaSharedMemoryRegisterResponse();
    }

    public static GrpcService.CudaSharedMemoryRegisterResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CudaSharedMemoryRegisterResponse>
        PARSER = new com.google.protobuf.AbstractParser<CudaSharedMemoryRegisterResponse>() {
      public CudaSharedMemoryRegisterResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new CudaSharedMemoryRegisterResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<CudaSharedMemoryRegisterResponse> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<CudaSharedMemoryRegisterResponse> getParserForType() {
      return PARSER;
    }

    public GrpcService.CudaSharedMemoryRegisterResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CudaSharedMemoryUnregisterRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.CudaSharedMemoryUnregisterRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the cuda region to unregister. If empty
     *&#64;&#64;     all cuda shared-memory regions are unregistered.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    String getName();
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the cuda region to unregister. If empty
     *&#64;&#64;     all cuda shared-memory regions are unregistered.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message CudaSharedMemoryUnregisterRequest
   *&#64;&#64;
   *&#64;&#64;   Request message for CudaSharedMemoryUnregister.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.CudaSharedMemoryUnregisterRequest}
   */
  public  static final class CudaSharedMemoryUnregisterRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.CudaSharedMemoryUnregisterRequest)
      CudaSharedMemoryUnregisterRequestOrBuilder {
    // Use CudaSharedMemoryUnregisterRequest.newBuilder() to construct.
    private CudaSharedMemoryUnregisterRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CudaSharedMemoryUnregisterRequest() {
      name_ = "";
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private CudaSharedMemoryUnregisterRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              String s = input.readStringRequireUtf8();

              name_ = s;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_CudaSharedMemoryUnregisterRequest_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_CudaSharedMemoryUnregisterRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.CudaSharedMemoryUnregisterRequest.class, GrpcService.CudaSharedMemoryUnregisterRequest.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile Object name_;
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the cuda region to unregister. If empty
     *&#64;&#64;     all cuda shared-memory regions are unregistered.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    public String getName() {
      Object ref = name_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;  .. cpp:var:: string name
     *&#64;&#64;
     *&#64;&#64;     The name of the cuda region to unregister. If empty
     *&#64;&#64;     all cuda shared-memory regions are unregistered.
     *&#64;&#64;
     * </pre>
     *
     * <code>optional string name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      Object ref = name_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.CudaSharedMemoryUnregisterRequest)) {
        return super.equals(obj);
      }
      GrpcService.CudaSharedMemoryUnregisterRequest other = (GrpcService.CudaSharedMemoryUnregisterRequest) obj;

      boolean result = true;
      result = result && getName()
          .equals(other.getName());
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.CudaSharedMemoryUnregisterRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.CudaSharedMemoryUnregisterRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.CudaSharedMemoryUnregisterRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.CudaSharedMemoryUnregisterRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.CudaSharedMemoryUnregisterRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.CudaSharedMemoryUnregisterRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.CudaSharedMemoryUnregisterRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.CudaSharedMemoryUnregisterRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.CudaSharedMemoryUnregisterRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.CudaSharedMemoryUnregisterRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.CudaSharedMemoryUnregisterRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message CudaSharedMemoryUnregisterRequest
     *&#64;&#64;
     *&#64;&#64;   Request message for CudaSharedMemoryUnregister.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.CudaSharedMemoryUnregisterRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.CudaSharedMemoryUnregisterRequest)
        GrpcService.CudaSharedMemoryUnregisterRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_CudaSharedMemoryUnregisterRequest_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_CudaSharedMemoryUnregisterRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.CudaSharedMemoryUnregisterRequest.class, GrpcService.CudaSharedMemoryUnregisterRequest.Builder.class);
      }

      // Construct using GrpcService.CudaSharedMemoryUnregisterRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        name_ = "";

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_CudaSharedMemoryUnregisterRequest_descriptor;
      }

      public GrpcService.CudaSharedMemoryUnregisterRequest getDefaultInstanceForType() {
        return GrpcService.CudaSharedMemoryUnregisterRequest.getDefaultInstance();
      }

      public GrpcService.CudaSharedMemoryUnregisterRequest build() {
        GrpcService.CudaSharedMemoryUnregisterRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.CudaSharedMemoryUnregisterRequest buildPartial() {
        GrpcService.CudaSharedMemoryUnregisterRequest result = new GrpcService.CudaSharedMemoryUnregisterRequest(this);
        result.name_ = name_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.CudaSharedMemoryUnregisterRequest) {
          return mergeFrom((GrpcService.CudaSharedMemoryUnregisterRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.CudaSharedMemoryUnregisterRequest other) {
        if (other == GrpcService.CudaSharedMemoryUnregisterRequest.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.CudaSharedMemoryUnregisterRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.CudaSharedMemoryUnregisterRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private Object name_ = "";
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the cuda region to unregister. If empty
       *&#64;&#64;     all cuda shared-memory regions are unregistered.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public String getName() {
        Object ref = name_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the cuda region to unregister. If empty
       *&#64;&#64;     all cuda shared-memory regions are unregistered.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the cuda region to unregister. If empty
       *&#64;&#64;     all cuda shared-memory regions are unregistered.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder setName(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }

        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the cuda region to unregister. If empty
       *&#64;&#64;     all cuda shared-memory regions are unregistered.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder clearName() {

        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       *&#64;&#64;
       *&#64;&#64;  .. cpp:var:: string name
       *&#64;&#64;
       *&#64;&#64;     The name of the cuda region to unregister. If empty
       *&#64;&#64;     all cuda shared-memory regions are unregistered.
       *&#64;&#64;
       * </pre>
       *
       * <code>optional string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);

        name_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.CudaSharedMemoryUnregisterRequest)
    }

    // @@protoc_insertion_point(class_scope:inference.CudaSharedMemoryUnregisterRequest)
    private static final GrpcService.CudaSharedMemoryUnregisterRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.CudaSharedMemoryUnregisterRequest();
    }

    public static GrpcService.CudaSharedMemoryUnregisterRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CudaSharedMemoryUnregisterRequest>
        PARSER = new com.google.protobuf.AbstractParser<CudaSharedMemoryUnregisterRequest>() {
      public CudaSharedMemoryUnregisterRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new CudaSharedMemoryUnregisterRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<CudaSharedMemoryUnregisterRequest> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<CudaSharedMemoryUnregisterRequest> getParserForType() {
      return PARSER;
    }

    public GrpcService.CudaSharedMemoryUnregisterRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CudaSharedMemoryUnregisterResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:inference.CudaSharedMemoryUnregisterResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   *&#64;&#64;
   *&#64;&#64;.. cpp:var:: message CudaSharedMemoryUnregisterResponse
   *&#64;&#64;
   *&#64;&#64;   Response message for CudaSharedMemoryUnregister.
   *&#64;&#64;
   * </pre>
   *
   * Protobuf type {@code inference.CudaSharedMemoryUnregisterResponse}
   */
  public  static final class CudaSharedMemoryUnregisterResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:inference.CudaSharedMemoryUnregisterResponse)
      CudaSharedMemoryUnregisterResponseOrBuilder {
    // Use CudaSharedMemoryUnregisterResponse.newBuilder() to construct.
    private CudaSharedMemoryUnregisterResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CudaSharedMemoryUnregisterResponse() {
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private CudaSharedMemoryUnregisterResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return GrpcService.internal_static_inference_CudaSharedMemoryUnregisterResponse_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return GrpcService.internal_static_inference_CudaSharedMemoryUnregisterResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              GrpcService.CudaSharedMemoryUnregisterResponse.class, GrpcService.CudaSharedMemoryUnregisterResponse.Builder.class);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof GrpcService.CudaSharedMemoryUnregisterResponse)) {
        return super.equals(obj);
      }
      GrpcService.CudaSharedMemoryUnregisterResponse other = (GrpcService.CudaSharedMemoryUnregisterResponse) obj;

      boolean result = true;
      return result;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptorForType().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static GrpcService.CudaSharedMemoryUnregisterResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.CudaSharedMemoryUnregisterResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.CudaSharedMemoryUnregisterResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static GrpcService.CudaSharedMemoryUnregisterResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static GrpcService.CudaSharedMemoryUnregisterResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.CudaSharedMemoryUnregisterResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.CudaSharedMemoryUnregisterResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static GrpcService.CudaSharedMemoryUnregisterResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static GrpcService.CudaSharedMemoryUnregisterResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static GrpcService.CudaSharedMemoryUnregisterResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(GrpcService.CudaSharedMemoryUnregisterResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *&#64;&#64;
     *&#64;&#64;.. cpp:var:: message CudaSharedMemoryUnregisterResponse
     *&#64;&#64;
     *&#64;&#64;   Response message for CudaSharedMemoryUnregister.
     *&#64;&#64;
     * </pre>
     *
     * Protobuf type {@code inference.CudaSharedMemoryUnregisterResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:inference.CudaSharedMemoryUnregisterResponse)
        GrpcService.CudaSharedMemoryUnregisterResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return GrpcService.internal_static_inference_CudaSharedMemoryUnregisterResponse_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return GrpcService.internal_static_inference_CudaSharedMemoryUnregisterResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                GrpcService.CudaSharedMemoryUnregisterResponse.class, GrpcService.CudaSharedMemoryUnregisterResponse.Builder.class);
      }

      // Construct using GrpcService.CudaSharedMemoryUnregisterResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return GrpcService.internal_static_inference_CudaSharedMemoryUnregisterResponse_descriptor;
      }

      public GrpcService.CudaSharedMemoryUnregisterResponse getDefaultInstanceForType() {
        return GrpcService.CudaSharedMemoryUnregisterResponse.getDefaultInstance();
      }

      public GrpcService.CudaSharedMemoryUnregisterResponse build() {
        GrpcService.CudaSharedMemoryUnregisterResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public GrpcService.CudaSharedMemoryUnregisterResponse buildPartial() {
        GrpcService.CudaSharedMemoryUnregisterResponse result = new GrpcService.CudaSharedMemoryUnregisterResponse(this);
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof GrpcService.CudaSharedMemoryUnregisterResponse) {
          return mergeFrom((GrpcService.CudaSharedMemoryUnregisterResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(GrpcService.CudaSharedMemoryUnregisterResponse other) {
        if (other == GrpcService.CudaSharedMemoryUnregisterResponse.getDefaultInstance()) return this;
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        GrpcService.CudaSharedMemoryUnregisterResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (GrpcService.CudaSharedMemoryUnregisterResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }


      // @@protoc_insertion_point(builder_scope:inference.CudaSharedMemoryUnregisterResponse)
    }

    // @@protoc_insertion_point(class_scope:inference.CudaSharedMemoryUnregisterResponse)
    private static final GrpcService.CudaSharedMemoryUnregisterResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new GrpcService.CudaSharedMemoryUnregisterResponse();
    }

    public static GrpcService.CudaSharedMemoryUnregisterResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CudaSharedMemoryUnregisterResponse>
        PARSER = new com.google.protobuf.AbstractParser<CudaSharedMemoryUnregisterResponse>() {
      public CudaSharedMemoryUnregisterResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
          return new CudaSharedMemoryUnregisterResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<CudaSharedMemoryUnregisterResponse> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<CudaSharedMemoryUnregisterResponse> getParserForType() {
      return PARSER;
    }

    public GrpcService.CudaSharedMemoryUnregisterResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_ServerLiveRequest_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_ServerLiveRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_ServerLiveResponse_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_ServerLiveResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_ServerReadyRequest_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_ServerReadyRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_ServerReadyResponse_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_ServerReadyResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_ModelReadyRequest_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_ModelReadyRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_ModelReadyResponse_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_ModelReadyResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_ServerMetadataRequest_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_ServerMetadataRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_ServerMetadataResponse_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_ServerMetadataResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_ModelMetadataRequest_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_ModelMetadataRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_ModelMetadataResponse_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_ModelMetadataResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_ModelMetadataResponse_TensorMetadata_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_ModelMetadataResponse_TensorMetadata_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_InferParameter_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_InferParameter_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_InferTensorContents_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_InferTensorContents_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_ModelInferRequest_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_ModelInferRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_ModelInferRequest_InferInputTensor_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_ModelInferRequest_InferInputTensor_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_ModelInferRequest_InferInputTensor_ParametersEntry_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_ModelInferRequest_InferInputTensor_ParametersEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_ModelInferRequest_InferRequestedOutputTensor_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_ModelInferRequest_InferRequestedOutputTensor_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_ModelInferRequest_InferRequestedOutputTensor_ParametersEntry_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_ModelInferRequest_InferRequestedOutputTensor_ParametersEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_ModelInferRequest_ParametersEntry_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_ModelInferRequest_ParametersEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_ModelInferResponse_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_ModelInferResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_ModelInferResponse_InferOutputTensor_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_ModelInferResponse_InferOutputTensor_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_ModelInferResponse_InferOutputTensor_ParametersEntry_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_ModelInferResponse_InferOutputTensor_ParametersEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_ModelInferResponse_ParametersEntry_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_ModelInferResponse_ParametersEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_ModelStreamInferResponse_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_ModelStreamInferResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_ModelConfigRequest_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_ModelConfigRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_ModelConfigResponse_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_ModelConfigResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_ModelStatisticsRequest_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_ModelStatisticsRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_StatisticDuration_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_StatisticDuration_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_InferStatistics_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_InferStatistics_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_InferBatchStatistics_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_InferBatchStatistics_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_ModelStatistics_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_ModelStatistics_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_ModelStatisticsResponse_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_ModelStatisticsResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_RepositoryIndexRequest_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_RepositoryIndexRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_RepositoryIndexResponse_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_RepositoryIndexResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_RepositoryIndexResponse_ModelIndex_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_RepositoryIndexResponse_ModelIndex_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_RepositoryModelLoadRequest_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_RepositoryModelLoadRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_RepositoryModelLoadResponse_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_RepositoryModelLoadResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_RepositoryModelUnloadRequest_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_RepositoryModelUnloadRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_RepositoryModelUnloadResponse_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_RepositoryModelUnloadResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_SystemSharedMemoryStatusRequest_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_SystemSharedMemoryStatusRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_SystemSharedMemoryStatusResponse_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_SystemSharedMemoryStatusResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_SystemSharedMemoryStatusResponse_RegionStatus_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_SystemSharedMemoryStatusResponse_RegionStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_SystemSharedMemoryStatusResponse_RegionsEntry_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_SystemSharedMemoryStatusResponse_RegionsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_SystemSharedMemoryRegisterRequest_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_SystemSharedMemoryRegisterRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_SystemSharedMemoryRegisterResponse_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_SystemSharedMemoryRegisterResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_SystemSharedMemoryUnregisterRequest_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_SystemSharedMemoryUnregisterRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_SystemSharedMemoryUnregisterResponse_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_SystemSharedMemoryUnregisterResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_CudaSharedMemoryStatusRequest_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_CudaSharedMemoryStatusRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_CudaSharedMemoryStatusResponse_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_CudaSharedMemoryStatusResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_CudaSharedMemoryStatusResponse_RegionStatus_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_CudaSharedMemoryStatusResponse_RegionStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_CudaSharedMemoryStatusResponse_RegionsEntry_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_CudaSharedMemoryStatusResponse_RegionsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_CudaSharedMemoryRegisterRequest_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_CudaSharedMemoryRegisterRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_CudaSharedMemoryRegisterResponse_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_CudaSharedMemoryRegisterResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_CudaSharedMemoryUnregisterRequest_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_CudaSharedMemoryUnregisterRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_inference_CudaSharedMemoryUnregisterResponse_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_inference_CudaSharedMemoryUnregisterResponse_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    String[] descriptorData = {
      "\n\022grpc_service.proto\022\tinference\032\022model_c" +
      "onfig.proto\"\023\n\021ServerLiveRequest\"\"\n\022Serv" +
      "erLiveResponse\022\014\n\004live\030\001 \001(\010\"\024\n\022ServerRe" +
      "adyRequest\"$\n\023ServerReadyResponse\022\r\n\005rea" +
      "dy\030\001 \001(\010\"2\n\021ModelReadyRequest\022\014\n\004name\030\001 " +
      "\001(\t\022\017\n\007version\030\002 \001(\t\"#\n\022ModelReadyRespon" +
      "se\022\r\n\005ready\030\001 \001(\010\"\027\n\025ServerMetadataReque" +
      "st\"K\n\026ServerMetadataResponse\022\014\n\004name\030\001 \001" +
      "(\t\022\017\n\007version\030\002 \001(\t\022\022\n\nextensions\030\003 \003(\t\"" +
      "5\n\024ModelMetadataRequest\022\014\n\004name\030\001 \001(\t\022\017\n",
      "\007version\030\002 \001(\t\"\215\002\n\025ModelMetadataResponse" +
      "\022\014\n\004name\030\001 \001(\t\022\020\n\010versions\030\002 \003(\t\022\020\n\010plat" +
      "form\030\003 \001(\t\022?\n\006inputs\030\004 \003(\0132/.inference.M" +
      "odelMetadataResponse.TensorMetadata\022@\n\007o" +
      "utputs\030\005 \003(\0132/.inference.ModelMetadataRe" +
      "sponse.TensorMetadata\032?\n\016TensorMetadata\022" +
      "\014\n\004name\030\001 \001(\t\022\020\n\010datatype\030\002 \001(\t\022\r\n\005shape" +
      "\030\003 \003(\003\"i\n\016InferParameter\022\024\n\nbool_param\030\001" +
      " \001(\010H\000\022\025\n\013int64_param\030\002 \001(\003H\000\022\026\n\014string_" +
      "param\030\003 \001(\tH\000B\022\n\020parameter_choice\"\317\001\n\023In",
      "ferTensorContents\022\025\n\rbool_contents\030\001 \003(\010" +
      "\022\024\n\014int_contents\030\002 \003(\005\022\026\n\016int64_contents" +
      "\030\003 \003(\003\022\025\n\ruint_contents\030\004 \003(\r\022\027\n\017uint64_" +
      "contents\030\005 \003(\004\022\025\n\rfp32_contents\030\006 \003(\002\022\025\n" +
      "\rfp64_contents\030\007 \003(\001\022\025\n\rbyte_contents\030\010 " +
      "\003(\014\"\356\006\n\021ModelInferRequest\022\022\n\nmodel_name\030" +
      "\001 \001(\t\022\025\n\rmodel_version\030\002 \001(\t\022\n\n\002id\030\003 \001(\t" +
      "\022@\n\nparameters\030\004 \003(\0132,.inference.ModelIn" +
      "ferRequest.ParametersEntry\022=\n\006inputs\030\005 \003" +
      "(\0132-.inference.ModelInferRequest.InferIn",
      "putTensor\022H\n\007outputs\030\006 \003(\01327.inference.M" +
      "odelInferRequest.InferRequestedOutputTen" +
      "sor\022\032\n\022raw_input_contents\030\007 \003(\014\032\224\002\n\020Infe" +
      "rInputTensor\022\014\n\004name\030\001 \001(\t\022\020\n\010datatype\030\002" +
      " \001(\t\022\r\n\005shape\030\003 \003(\003\022Q\n\nparameters\030\004 \003(\0132" +
      "=.inference.ModelInferRequest.InferInput" +
      "Tensor.ParametersEntry\0220\n\010contents\030\005 \001(\013" +
      "2\036.inference.InferTensorContents\032L\n\017Para" +
      "metersEntry\022\013\n\003key\030\001 \001(\t\022(\n\005value\030\002 \001(\0132" +
      "\031.inference.InferParameter:\0028\001\032\325\001\n\032Infer",
      "RequestedOutputTensor\022\014\n\004name\030\001 \001(\t\022[\n\np" +
      "arameters\030\002 \003(\0132G.inference.ModelInferRe" +
      "quest.InferRequestedOutputTensor.Paramet" +
      "ersEntry\032L\n\017ParametersEntry\022\013\n\003key\030\001 \001(\t" +
      "\022(\n\005value\030\002 \001(\0132\031.inference.InferParamet" +
      "er:\0028\001\032L\n\017ParametersEntry\022\013\n\003key\030\001 \001(\t\022(" +
      "\n\005value\030\002 \001(\0132\031.inference.InferParameter" +
      ":\0028\001\"\325\004\n\022ModelInferResponse\022\022\n\nmodel_nam" +
      "e\030\001 \001(\t\022\025\n\rmodel_version\030\002 \001(\t\022\n\n\002id\030\003 \001" +
      "(\t\022A\n\nparameters\030\004 \003(\0132-.inference.Model",
      "InferResponse.ParametersEntry\022@\n\007outputs" +
      "\030\005 \003(\0132/.inference.ModelInferResponse.In" +
      "ferOutputTensor\022\033\n\023raw_output_contents\030\006" +
      " \003(\014\032\227\002\n\021InferOutputTensor\022\014\n\004name\030\001 \001(\t" +
      "\022\020\n\010datatype\030\002 \001(\t\022\r\n\005shape\030\003 \003(\003\022S\n\npar" +
      "ameters\030\004 \003(\0132?.inference.ModelInferResp" +
      "onse.InferOutputTensor.ParametersEntry\0220" +
      "\n\010contents\030\005 \001(\0132\036.inference.InferTensor" +
      "Contents\032L\n\017ParametersEntry\022\013\n\003key\030\001 \001(\t" +
      "\022(\n\005value\030\002 \001(\0132\031.inference.InferParamet",
      "er:\0028\001\032L\n\017ParametersEntry\022\013\n\003key\030\001 \001(\t\022(" +
      "\n\005value\030\002 \001(\0132\031.inference.InferParameter" +
      ":\0028\001\"h\n\030ModelStreamInferResponse\022\025\n\rerro" +
      "r_message\030\001 \001(\t\0225\n\016infer_response\030\002 \001(\0132" +
      "\035.inference.ModelInferResponse\"3\n\022ModelC" +
      "onfigRequest\022\014\n\004name\030\001 \001(\t\022\017\n\007version\030\002 " +
      "\001(\t\"=\n\023ModelConfigResponse\022&\n\006config\030\001 \001" +
      "(\0132\026.inference.ModelConfig\"7\n\026ModelStati" +
      "sticsRequest\022\014\n\004name\030\001 \001(\t\022\017\n\007version\030\002 " +
      "\001(\t\".\n\021StatisticDuration\022\r\n\005count\030\001 \001(\004\022",
      "\n\n\002ns\030\002 \001(\004\"\271\002\n\017InferStatistics\022-\n\007succe" +
      "ss\030\001 \001(\0132\034.inference.StatisticDuration\022*" +
      "\n\004fail\030\002 \001(\0132\034.inference.StatisticDurati" +
      "on\022+\n\005queue\030\003 \001(\0132\034.inference.StatisticD" +
      "uration\0223\n\rcompute_input\030\004 \001(\0132\034.inferen" +
      "ce.StatisticDuration\0223\n\rcompute_infer\030\005 " +
      "\001(\0132\034.inference.StatisticDuration\0224\n\016com" +
      "pute_output\030\006 \001(\0132\034.inference.StatisticD" +
      "uration\"\312\001\n\024InferBatchStatistics\022\022\n\nbatc" +
      "h_size\030\001 \001(\004\0223\n\rcompute_input\030\002 \001(\0132\034.in",
      "ference.StatisticDuration\0223\n\rcompute_inf" +
      "er\030\003 \001(\0132\034.inference.StatisticDuration\0224" +
      "\n\016compute_output\030\004 \001(\0132\034.inference.Stati" +
      "sticDuration\"\345\001\n\017ModelStatistics\022\014\n\004name" +
      "\030\001 \001(\t\022\017\n\007version\030\002 \001(\t\022\026\n\016last_inferenc" +
      "e\030\003 \001(\004\022\027\n\017inference_count\030\004 \001(\004\022\027\n\017exec" +
      "ution_count\030\005 \001(\004\0223\n\017inference_stats\030\006 \001" +
      "(\0132\032.inference.InferStatistics\0224\n\013batch_" +
      "stats\030\007 \003(\0132\037.inference.InferBatchStatis" +
      "tics\"J\n\027ModelStatisticsResponse\022/\n\013model",
      "_stats\030\001 \003(\0132\032.inference.ModelStatistics" +
      "\"@\n\026RepositoryIndexRequest\022\027\n\017repository" +
      "_name\030\001 \001(\t\022\r\n\005ready\030\002 \001(\010\"\244\001\n\027Repositor" +
      "yIndexResponse\022=\n\006models\030\001 \003(\0132-.inferen" +
      "ce.RepositoryIndexResponse.ModelIndex\032J\n" +
      "\nModelIndex\022\014\n\004name\030\001 \001(\t\022\017\n\007version\030\002 \001" +
      "(\t\022\r\n\005state\030\003 \001(\t\022\016\n\006reason\030\004 \001(\t\"I\n\032Rep" +
      "ositoryModelLoadRequest\022\027\n\017repository_na" +
      "me\030\001 \001(\t\022\022\n\nmodel_name\030\002 \001(\t\"\035\n\033Reposito" +
      "ryModelLoadResponse\"K\n\034RepositoryModelUn",
      "loadRequest\022\027\n\017repository_name\030\001 \001(\t\022\022\n\n" +
      "model_name\030\002 \001(\t\"\037\n\035RepositoryModelUnloa" +
      "dResponse\"/\n\037SystemSharedMemoryStatusReq" +
      "uest\022\014\n\004name\030\001 \001(\t\"\245\002\n SystemSharedMemor" +
      "yStatusResponse\022I\n\007regions\030\001 \003(\01328.infer" +
      "ence.SystemSharedMemoryStatusResponse.Re" +
      "gionsEntry\032L\n\014RegionStatus\022\014\n\004name\030\001 \001(\t" +
      "\022\013\n\003key\030\002 \001(\t\022\016\n\006offset\030\003 \001(\004\022\021\n\tbyte_si" +
      "ze\030\004 \001(\004\032h\n\014RegionsEntry\022\013\n\003key\030\001 \001(\t\022G\n" +
      "\005value\030\002 \001(\01328.inference.SystemSharedMem",
      "oryStatusResponse.RegionStatus:\0028\001\"a\n!Sy" +
      "stemSharedMemoryRegisterRequest\022\014\n\004name\030" +
      "\001 \001(\t\022\013\n\003key\030\002 \001(\t\022\016\n\006offset\030\003 \001(\004\022\021\n\tby" +
      "te_size\030\004 \001(\004\"$\n\"SystemSharedMemoryRegis" +
      "terResponse\"3\n#SystemSharedMemoryUnregis" +
      "terRequest\022\014\n\004name\030\001 \001(\t\"&\n$SystemShared" +
      "MemoryUnregisterResponse\"-\n\035CudaSharedMe" +
      "moryStatusRequest\022\014\n\004name\030\001 \001(\t\"\225\002\n\036Cuda" +
      "SharedMemoryStatusResponse\022G\n\007regions\030\001 " +
      "\003(\01326.inference.CudaSharedMemoryStatusRe",
      "sponse.RegionsEntry\032B\n\014RegionStatus\022\014\n\004n" +
      "ame\030\001 \001(\t\022\021\n\tdevice_id\030\002 \001(\004\022\021\n\tbyte_siz" +
      "e\030\003 \001(\004\032f\n\014RegionsEntry\022\013\n\003key\030\001 \001(\t\022E\n\005" +
      "value\030\002 \001(\01326.inference.CudaSharedMemory" +
      "StatusResponse.RegionStatus:\0028\001\"i\n\037CudaS" +
      "haredMemoryRegisterRequest\022\014\n\004name\030\001 \001(\t" +
      "\022\022\n\nraw_handle\030\002 \001(\014\022\021\n\tdevice_id\030\003 \001(\003\022" +
      "\021\n\tbyte_size\030\004 \001(\004\"\"\n CudaSharedMemoryRe" +
      "gisterResponse\"1\n!CudaSharedMemoryUnregi" +
      "sterRequest\022\014\n\004name\030\001 \001(\t\"$\n\"CudaSharedM",
      "emoryUnregisterResponse2\224\016\n\024GRPCInferenc" +
      "eService\022K\n\nServerLive\022\034.inference.Serve" +
      "rLiveRequest\032\035.inference.ServerLiveRespo" +
      "nse\"\000\022N\n\013ServerReady\022\035.inference.ServerR" +
      "eadyRequest\032\036.inference.ServerReadyRespo" +
      "nse\"\000\022K\n\nModelReady\022\034.inference.ModelRea" +
      "dyRequest\032\035.inference.ModelReadyResponse" +
      "\"\000\022W\n\016ServerMetadata\022 .inference.ServerM" +
      "etadataRequest\032!.inference.ServerMetadat" +
      "aResponse\"\000\022T\n\rModelMetadata\022\037.inference",
      ".ModelMetadataRequest\032 .inference.ModelM" +
      "etadataResponse\"\000\022K\n\nModelInfer\022\034.infere" +
      "nce.ModelInferRequest\032\035.inference.ModelI" +
      "nferResponse\"\000\022[\n\020ModelStreamInfer\022\034.inf" +
      "erence.ModelInferRequest\032#.inference.Mod" +
      "elStreamInferResponse\"\000(\0010\001\022N\n\013ModelConf" +
      "ig\022\035.inference.ModelConfigRequest\032\036.infe" +
      "rence.ModelConfigResponse\"\000\022Z\n\017ModelStat" +
      "istics\022!.inference.ModelStatisticsReques" +
      "t\032\".inference.ModelStatisticsResponse\"\000\022",
      "Z\n\017RepositoryIndex\022!.inference.Repositor" +
      "yIndexRequest\032\".inference.RepositoryInde" +
      "xResponse\"\000\022f\n\023RepositoryModelLoad\022%.inf" +
      "erence.RepositoryModelLoadRequest\032&.infe" +
      "rence.RepositoryModelLoadResponse\"\000\022l\n\025R" +
      "epositoryModelUnload\022\'.inference.Reposit" +
      "oryModelUnloadRequest\032(.inference.Reposi" +
      "toryModelUnloadResponse\"\000\022u\n\030SystemShare" +
      "dMemoryStatus\022*.inference.SystemSharedMe" +
      "moryStatusRequest\032+.inference.SystemShar",
      "edMemoryStatusResponse\"\000\022{\n\032SystemShared" +
      "MemoryRegister\022,.inference.SystemSharedM" +
      "emoryRegisterRequest\032-.inference.SystemS" +
      "haredMemoryRegisterResponse\"\000\022\201\001\n\034System" +
      "SharedMemoryUnregister\022..inference.Syste" +
      "mSharedMemoryUnregisterRequest\032/.inferen" +
      "ce.SystemSharedMemoryUnregisterResponse\"" +
      "\000\022o\n\026CudaSharedMemoryStatus\022(.inference." +
      "CudaSharedMemoryStatusRequest\032).inferenc" +
      "e.CudaSharedMemoryStatusResponse\"\000\022u\n\030Cu",
      "daSharedMemoryRegister\022*.inference.CudaS" +
      "haredMemoryRegisterRequest\032+.inference.C" +
      "udaSharedMemoryRegisterResponse\"\000\022{\n\032Cud" +
      "aSharedMemoryUnregister\022,.inference.Cuda" +
      "SharedMemoryUnregisterRequest\032-.inferenc" +
      "e.CudaSharedMemoryUnregisterResponse\"\000b\006" +
      "proto3"
    };
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
        new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
          public com.google.protobuf.ExtensionRegistry assignDescriptors(
              com.google.protobuf.Descriptors.FileDescriptor root) {
            descriptor = root;
            return null;
          }
        };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          ModelConfigOuterClass.getDescriptor(),
        }, assigner);
    internal_static_inference_ServerLiveRequest_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_inference_ServerLiveRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_ServerLiveRequest_descriptor,
        new String[] { });
    internal_static_inference_ServerLiveResponse_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_inference_ServerLiveResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_ServerLiveResponse_descriptor,
        new String[] { "Live", });
    internal_static_inference_ServerReadyRequest_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_inference_ServerReadyRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_ServerReadyRequest_descriptor,
        new String[] { });
    internal_static_inference_ServerReadyResponse_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_inference_ServerReadyResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_ServerReadyResponse_descriptor,
        new String[] { "Ready", });
    internal_static_inference_ModelReadyRequest_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_inference_ModelReadyRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_ModelReadyRequest_descriptor,
        new String[] { "Name", "Version", });
    internal_static_inference_ModelReadyResponse_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_inference_ModelReadyResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_ModelReadyResponse_descriptor,
        new String[] { "Ready", });
    internal_static_inference_ServerMetadataRequest_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_inference_ServerMetadataRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_ServerMetadataRequest_descriptor,
        new String[] { });
    internal_static_inference_ServerMetadataResponse_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_inference_ServerMetadataResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_ServerMetadataResponse_descriptor,
        new String[] { "Name", "Version", "Extensions", });
    internal_static_inference_ModelMetadataRequest_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_inference_ModelMetadataRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_ModelMetadataRequest_descriptor,
        new String[] { "Name", "Version", });
    internal_static_inference_ModelMetadataResponse_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_inference_ModelMetadataResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_ModelMetadataResponse_descriptor,
        new String[] { "Name", "Versions", "Platform", "Inputs", "Outputs", });
    internal_static_inference_ModelMetadataResponse_TensorMetadata_descriptor =
      internal_static_inference_ModelMetadataResponse_descriptor.getNestedTypes().get(0);
    internal_static_inference_ModelMetadataResponse_TensorMetadata_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_ModelMetadataResponse_TensorMetadata_descriptor,
        new String[] { "Name", "Datatype", "Shape", });
    internal_static_inference_InferParameter_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_inference_InferParameter_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_InferParameter_descriptor,
        new String[] { "BoolParam", "Int64Param", "StringParam", "ParameterChoice", });
    internal_static_inference_InferTensorContents_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_inference_InferTensorContents_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_InferTensorContents_descriptor,
        new String[] { "BoolContents", "IntContents", "Int64Contents", "UintContents", "Uint64Contents", "Fp32Contents", "Fp64Contents", "ByteContents", });
    internal_static_inference_ModelInferRequest_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_inference_ModelInferRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_ModelInferRequest_descriptor,
        new String[] { "ModelName", "ModelVersion", "Id", "Parameters", "Inputs", "Outputs", "RawInputContents", });
    internal_static_inference_ModelInferRequest_InferInputTensor_descriptor =
      internal_static_inference_ModelInferRequest_descriptor.getNestedTypes().get(0);
    internal_static_inference_ModelInferRequest_InferInputTensor_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_ModelInferRequest_InferInputTensor_descriptor,
        new String[] { "Name", "Datatype", "Shape", "Parameters", "Contents", });
    internal_static_inference_ModelInferRequest_InferInputTensor_ParametersEntry_descriptor =
      internal_static_inference_ModelInferRequest_InferInputTensor_descriptor.getNestedTypes().get(0);
    internal_static_inference_ModelInferRequest_InferInputTensor_ParametersEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_ModelInferRequest_InferInputTensor_ParametersEntry_descriptor,
        new String[] { "Key", "Value", });
    internal_static_inference_ModelInferRequest_InferRequestedOutputTensor_descriptor =
      internal_static_inference_ModelInferRequest_descriptor.getNestedTypes().get(1);
    internal_static_inference_ModelInferRequest_InferRequestedOutputTensor_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_ModelInferRequest_InferRequestedOutputTensor_descriptor,
        new String[] { "Name", "Parameters", });
    internal_static_inference_ModelInferRequest_InferRequestedOutputTensor_ParametersEntry_descriptor =
      internal_static_inference_ModelInferRequest_InferRequestedOutputTensor_descriptor.getNestedTypes().get(0);
    internal_static_inference_ModelInferRequest_InferRequestedOutputTensor_ParametersEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_ModelInferRequest_InferRequestedOutputTensor_ParametersEntry_descriptor,
        new String[] { "Key", "Value", });
    internal_static_inference_ModelInferRequest_ParametersEntry_descriptor =
      internal_static_inference_ModelInferRequest_descriptor.getNestedTypes().get(2);
    internal_static_inference_ModelInferRequest_ParametersEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_ModelInferRequest_ParametersEntry_descriptor,
        new String[] { "Key", "Value", });
    internal_static_inference_ModelInferResponse_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_inference_ModelInferResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_ModelInferResponse_descriptor,
        new String[] { "ModelName", "ModelVersion", "Id", "Parameters", "Outputs", "RawOutputContents", });
    internal_static_inference_ModelInferResponse_InferOutputTensor_descriptor =
      internal_static_inference_ModelInferResponse_descriptor.getNestedTypes().get(0);
    internal_static_inference_ModelInferResponse_InferOutputTensor_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_ModelInferResponse_InferOutputTensor_descriptor,
        new String[] { "Name", "Datatype", "Shape", "Parameters", "Contents", });
    internal_static_inference_ModelInferResponse_InferOutputTensor_ParametersEntry_descriptor =
      internal_static_inference_ModelInferResponse_InferOutputTensor_descriptor.getNestedTypes().get(0);
    internal_static_inference_ModelInferResponse_InferOutputTensor_ParametersEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_ModelInferResponse_InferOutputTensor_ParametersEntry_descriptor,
        new String[] { "Key", "Value", });
    internal_static_inference_ModelInferResponse_ParametersEntry_descriptor =
      internal_static_inference_ModelInferResponse_descriptor.getNestedTypes().get(1);
    internal_static_inference_ModelInferResponse_ParametersEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_ModelInferResponse_ParametersEntry_descriptor,
        new String[] { "Key", "Value", });
    internal_static_inference_ModelStreamInferResponse_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_inference_ModelStreamInferResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_ModelStreamInferResponse_descriptor,
        new String[] { "ErrorMessage", "InferResponse", });
    internal_static_inference_ModelConfigRequest_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_inference_ModelConfigRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_ModelConfigRequest_descriptor,
        new String[] { "Name", "Version", });
    internal_static_inference_ModelConfigResponse_descriptor =
      getDescriptor().getMessageTypes().get(16);
    internal_static_inference_ModelConfigResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_ModelConfigResponse_descriptor,
        new String[] { "Config", });
    internal_static_inference_ModelStatisticsRequest_descriptor =
      getDescriptor().getMessageTypes().get(17);
    internal_static_inference_ModelStatisticsRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_ModelStatisticsRequest_descriptor,
        new String[] { "Name", "Version", });
    internal_static_inference_StatisticDuration_descriptor =
      getDescriptor().getMessageTypes().get(18);
    internal_static_inference_StatisticDuration_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_StatisticDuration_descriptor,
        new String[] { "Count", "Ns", });
    internal_static_inference_InferStatistics_descriptor =
      getDescriptor().getMessageTypes().get(19);
    internal_static_inference_InferStatistics_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_InferStatistics_descriptor,
        new String[] { "Success", "Fail", "Queue", "ComputeInput", "ComputeInfer", "ComputeOutput", });
    internal_static_inference_InferBatchStatistics_descriptor =
      getDescriptor().getMessageTypes().get(20);
    internal_static_inference_InferBatchStatistics_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_InferBatchStatistics_descriptor,
        new String[] { "BatchSize", "ComputeInput", "ComputeInfer", "ComputeOutput", });
    internal_static_inference_ModelStatistics_descriptor =
      getDescriptor().getMessageTypes().get(21);
    internal_static_inference_ModelStatistics_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_ModelStatistics_descriptor,
        new String[] { "Name", "Version", "LastInference", "InferenceCount", "ExecutionCount", "InferenceStats", "BatchStats", });
    internal_static_inference_ModelStatisticsResponse_descriptor =
      getDescriptor().getMessageTypes().get(22);
    internal_static_inference_ModelStatisticsResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_ModelStatisticsResponse_descriptor,
        new String[] { "ModelStats", });
    internal_static_inference_RepositoryIndexRequest_descriptor =
      getDescriptor().getMessageTypes().get(23);
    internal_static_inference_RepositoryIndexRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_RepositoryIndexRequest_descriptor,
        new String[] { "RepositoryName", "Ready", });
    internal_static_inference_RepositoryIndexResponse_descriptor =
      getDescriptor().getMessageTypes().get(24);
    internal_static_inference_RepositoryIndexResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_RepositoryIndexResponse_descriptor,
        new String[] { "Models", });
    internal_static_inference_RepositoryIndexResponse_ModelIndex_descriptor =
      internal_static_inference_RepositoryIndexResponse_descriptor.getNestedTypes().get(0);
    internal_static_inference_RepositoryIndexResponse_ModelIndex_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_RepositoryIndexResponse_ModelIndex_descriptor,
        new String[] { "Name", "Version", "State", "Reason", });
    internal_static_inference_RepositoryModelLoadRequest_descriptor =
      getDescriptor().getMessageTypes().get(25);
    internal_static_inference_RepositoryModelLoadRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_RepositoryModelLoadRequest_descriptor,
        new String[] { "RepositoryName", "ModelName", });
    internal_static_inference_RepositoryModelLoadResponse_descriptor =
      getDescriptor().getMessageTypes().get(26);
    internal_static_inference_RepositoryModelLoadResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_RepositoryModelLoadResponse_descriptor,
        new String[] { });
    internal_static_inference_RepositoryModelUnloadRequest_descriptor =
      getDescriptor().getMessageTypes().get(27);
    internal_static_inference_RepositoryModelUnloadRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_RepositoryModelUnloadRequest_descriptor,
        new String[] { "RepositoryName", "ModelName", });
    internal_static_inference_RepositoryModelUnloadResponse_descriptor =
      getDescriptor().getMessageTypes().get(28);
    internal_static_inference_RepositoryModelUnloadResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_RepositoryModelUnloadResponse_descriptor,
        new String[] { });
    internal_static_inference_SystemSharedMemoryStatusRequest_descriptor =
      getDescriptor().getMessageTypes().get(29);
    internal_static_inference_SystemSharedMemoryStatusRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_SystemSharedMemoryStatusRequest_descriptor,
        new String[] { "Name", });
    internal_static_inference_SystemSharedMemoryStatusResponse_descriptor =
      getDescriptor().getMessageTypes().get(30);
    internal_static_inference_SystemSharedMemoryStatusResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_SystemSharedMemoryStatusResponse_descriptor,
        new String[] { "Regions", });
    internal_static_inference_SystemSharedMemoryStatusResponse_RegionStatus_descriptor =
      internal_static_inference_SystemSharedMemoryStatusResponse_descriptor.getNestedTypes().get(0);
    internal_static_inference_SystemSharedMemoryStatusResponse_RegionStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_SystemSharedMemoryStatusResponse_RegionStatus_descriptor,
        new String[] { "Name", "Key", "Offset", "ByteSize", });
    internal_static_inference_SystemSharedMemoryStatusResponse_RegionsEntry_descriptor =
      internal_static_inference_SystemSharedMemoryStatusResponse_descriptor.getNestedTypes().get(1);
    internal_static_inference_SystemSharedMemoryStatusResponse_RegionsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_SystemSharedMemoryStatusResponse_RegionsEntry_descriptor,
        new String[] { "Key", "Value", });
    internal_static_inference_SystemSharedMemoryRegisterRequest_descriptor =
      getDescriptor().getMessageTypes().get(31);
    internal_static_inference_SystemSharedMemoryRegisterRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_SystemSharedMemoryRegisterRequest_descriptor,
        new String[] { "Name", "Key", "Offset", "ByteSize", });
    internal_static_inference_SystemSharedMemoryRegisterResponse_descriptor =
      getDescriptor().getMessageTypes().get(32);
    internal_static_inference_SystemSharedMemoryRegisterResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_SystemSharedMemoryRegisterResponse_descriptor,
        new String[] { });
    internal_static_inference_SystemSharedMemoryUnregisterRequest_descriptor =
      getDescriptor().getMessageTypes().get(33);
    internal_static_inference_SystemSharedMemoryUnregisterRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_SystemSharedMemoryUnregisterRequest_descriptor,
        new String[] { "Name", });
    internal_static_inference_SystemSharedMemoryUnregisterResponse_descriptor =
      getDescriptor().getMessageTypes().get(34);
    internal_static_inference_SystemSharedMemoryUnregisterResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_SystemSharedMemoryUnregisterResponse_descriptor,
        new String[] { });
    internal_static_inference_CudaSharedMemoryStatusRequest_descriptor =
      getDescriptor().getMessageTypes().get(35);
    internal_static_inference_CudaSharedMemoryStatusRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_CudaSharedMemoryStatusRequest_descriptor,
        new String[] { "Name", });
    internal_static_inference_CudaSharedMemoryStatusResponse_descriptor =
      getDescriptor().getMessageTypes().get(36);
    internal_static_inference_CudaSharedMemoryStatusResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_CudaSharedMemoryStatusResponse_descriptor,
        new String[] { "Regions", });
    internal_static_inference_CudaSharedMemoryStatusResponse_RegionStatus_descriptor =
      internal_static_inference_CudaSharedMemoryStatusResponse_descriptor.getNestedTypes().get(0);
    internal_static_inference_CudaSharedMemoryStatusResponse_RegionStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_CudaSharedMemoryStatusResponse_RegionStatus_descriptor,
        new String[] { "Name", "DeviceId", "ByteSize", });
    internal_static_inference_CudaSharedMemoryStatusResponse_RegionsEntry_descriptor =
      internal_static_inference_CudaSharedMemoryStatusResponse_descriptor.getNestedTypes().get(1);
    internal_static_inference_CudaSharedMemoryStatusResponse_RegionsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_CudaSharedMemoryStatusResponse_RegionsEntry_descriptor,
        new String[] { "Key", "Value", });
    internal_static_inference_CudaSharedMemoryRegisterRequest_descriptor =
      getDescriptor().getMessageTypes().get(37);
    internal_static_inference_CudaSharedMemoryRegisterRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_CudaSharedMemoryRegisterRequest_descriptor,
        new String[] { "Name", "RawHandle", "DeviceId", "ByteSize", });
    internal_static_inference_CudaSharedMemoryRegisterResponse_descriptor =
      getDescriptor().getMessageTypes().get(38);
    internal_static_inference_CudaSharedMemoryRegisterResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_CudaSharedMemoryRegisterResponse_descriptor,
        new String[] { });
    internal_static_inference_CudaSharedMemoryUnregisterRequest_descriptor =
      getDescriptor().getMessageTypes().get(39);
    internal_static_inference_CudaSharedMemoryUnregisterRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_CudaSharedMemoryUnregisterRequest_descriptor,
        new String[] { "Name", });
    internal_static_inference_CudaSharedMemoryUnregisterResponse_descriptor =
      getDescriptor().getMessageTypes().get(40);
    internal_static_inference_CudaSharedMemoryUnregisterResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_inference_CudaSharedMemoryUnregisterResponse_descriptor,
        new String[] { });
    ModelConfigOuterClass.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
