// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: ThirdParty_health_data.proto
package com.fs.watch.protobuf;
public final class ThirdPartyHealthData {
  private ThirdPartyHealthData() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  /**
   * Protobuf enum {@code MEASURE_MODE}
   */
  public enum MEASURE_MODE
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>MANUAL = 0;</code>
     */
    MANUAL(0),
    /**
     * <code>AUTO = 1;</code>
     */
    AUTO(1),
    ;

    /**
     * <code>MANUAL = 0;</code>
     */
    public static final int MANUAL_VALUE = 0;
    /**
     * <code>AUTO = 1;</code>
     */
    public static final int AUTO_VALUE = 1;


    public final int getNumber() {
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @Deprecated
    public static MEASURE_MODE valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static MEASURE_MODE forNumber(int value) {
      switch (value) {
        case 0: return MANUAL;
        case 1: return AUTO;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<MEASURE_MODE>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        MEASURE_MODE> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<MEASURE_MODE>() {
            public MEASURE_MODE findValueByNumber(int number) {
              return MEASURE_MODE.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return ThirdPartyHealthData.getDescriptor().getEnumTypes().get(0);
    }

    private static final MEASURE_MODE[] VALUES = values();

    public static MEASURE_MODE valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private MEASURE_MODE(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:MEASURE_MODE)
  }

  public interface ThirdPartyHealthBpOrBuilder extends
      // @@protoc_insertion_point(interface_extends:ThirdPartyHealthBp)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required fixed32 sbp = 1;</code>
     * @return Whether the sbp field is set.
     */
    boolean hasSbp();
    /**
     * <code>required fixed32 sbp = 1;</code>
     * @return The sbp.
     */
    int getSbp();

    /**
     * <code>required fixed32 dbp = 2;</code>
     * @return Whether the dbp field is set.
     */
    boolean hasDbp();
    /**
     * <code>required fixed32 dbp = 2;</code>
     * @return The dbp.
     */
    int getDbp();

    /**
     * <code>required fixed32 hr = 3;</code>
     * @return Whether the hr field is set.
     */
    boolean hasHr();
    /**
     * <code>required fixed32 hr = 3;</code>
     * @return The hr.
     */
    int getHr();

    /**
     * <code>required fixed32 pulse = 4;</code>
     * @return Whether the pulse field is set.
     */
    boolean hasPulse();
    /**
     * <code>required fixed32 pulse = 4;</code>
     * @return The pulse.
     */
    int getPulse();

    /**
     * <code>required .DateTime time = 5;</code>
     * @return Whether the time field is set.
     */
    boolean hasTime();
    /**
     * <code>required .DateTime time = 5;</code>
     * @return The time.
     */
    RealtimeData.DateTime getTime();
    /**
     * <code>required .DateTime time = 5;</code>
     */
    RealtimeData.DateTimeOrBuilder getTimeOrBuilder();

    /**
     * <code>required .MEASURE_MODE MODE = 6;</code>
     * @return Whether the mODE field is set.
     */
    boolean hasMODE();
    /**
     * <code>required .MEASURE_MODE MODE = 6;</code>
     * @return The mODE.
     */
    MEASURE_MODE getMODE();
  }
  /**
   * Protobuf type {@code ThirdPartyHealthBp}
   */
  public  static final class ThirdPartyHealthBp extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:ThirdPartyHealthBp)
      ThirdPartyHealthBpOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ThirdPartyHealthBp.newBuilder() to construct.
    private ThirdPartyHealthBp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ThirdPartyHealthBp() {
      mODE_ = 0;
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new ThirdPartyHealthBp();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ThirdPartyHealthBp(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 13: {
              bitField0_ |= 0x00000001;
              sbp_ = input.readFixed32();
              break;
            }
            case 21: {
              bitField0_ |= 0x00000002;
              dbp_ = input.readFixed32();
              break;
            }
            case 29: {
              bitField0_ |= 0x00000004;
              hr_ = input.readFixed32();
              break;
            }
            case 37: {
              bitField0_ |= 0x00000008;
              pulse_ = input.readFixed32();
              break;
            }
            case 42: {
              RealtimeData.DateTime.Builder subBuilder = null;
              if (((bitField0_ & 0x00000010) != 0)) {
                subBuilder = time_.toBuilder();
              }
              time_ = input.readMessage(RealtimeData.DateTime.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(time_);
                time_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000010;
              break;
            }
            case 48: {
              int rawValue = input.readEnum();
                @SuppressWarnings("deprecation")
              MEASURE_MODE value = MEASURE_MODE.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(6, rawValue);
              } else {
                bitField0_ |= 0x00000020;
                mODE_ = rawValue;
              }
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, 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 {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ThirdPartyHealthData.internal_static_ThirdPartyHealthBp_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ThirdPartyHealthData.internal_static_ThirdPartyHealthBp_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ThirdPartyHealthBp.class, Builder.class);
    }

    private int bitField0_;
    public static final int SBP_FIELD_NUMBER = 1;
    private int sbp_;
    /**
     * <code>required fixed32 sbp = 1;</code>
     * @return Whether the sbp field is set.
     */
    public boolean hasSbp() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required fixed32 sbp = 1;</code>
     * @return The sbp.
     */
    public int getSbp() {
      return sbp_;
    }

    public static final int DBP_FIELD_NUMBER = 2;
    private int dbp_;
    /**
     * <code>required fixed32 dbp = 2;</code>
     * @return Whether the dbp field is set.
     */
    public boolean hasDbp() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required fixed32 dbp = 2;</code>
     * @return The dbp.
     */
    public int getDbp() {
      return dbp_;
    }

    public static final int HR_FIELD_NUMBER = 3;
    private int hr_;
    /**
     * <code>required fixed32 hr = 3;</code>
     * @return Whether the hr field is set.
     */
    public boolean hasHr() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>required fixed32 hr = 3;</code>
     * @return The hr.
     */
    public int getHr() {
      return hr_;
    }

    public static final int PULSE_FIELD_NUMBER = 4;
    private int pulse_;
    /**
     * <code>required fixed32 pulse = 4;</code>
     * @return Whether the pulse field is set.
     */
    public boolean hasPulse() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>required fixed32 pulse = 4;</code>
     * @return The pulse.
     */
    public int getPulse() {
      return pulse_;
    }

    public static final int TIME_FIELD_NUMBER = 5;
    private RealtimeData.DateTime time_;
    /**
     * <code>required .DateTime time = 5;</code>
     * @return Whether the time field is set.
     */
    public boolean hasTime() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>required .DateTime time = 5;</code>
     * @return The time.
     */
    public RealtimeData.DateTime getTime() {
      return time_ == null ? RealtimeData.DateTime.getDefaultInstance() : time_;
    }
    /**
     * <code>required .DateTime time = 5;</code>
     */
    public RealtimeData.DateTimeOrBuilder getTimeOrBuilder() {
      return time_ == null ? RealtimeData.DateTime.getDefaultInstance() : time_;
    }

    public static final int MODE_FIELD_NUMBER = 6;
    private int mODE_;
    /**
     * <code>required .MEASURE_MODE MODE = 6;</code>
     * @return Whether the mODE field is set.
     */
    public boolean hasMODE() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <code>required .MEASURE_MODE MODE = 6;</code>
     * @return The mODE.
     */
    public MEASURE_MODE getMODE() {
      @SuppressWarnings("deprecation")
      MEASURE_MODE result = MEASURE_MODE.valueOf(mODE_);
      return result == null ? MEASURE_MODE.MANUAL : result;
    }

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

      if (!hasSbp()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasDbp()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasHr()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasPulse()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTime()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasMODE()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getTime().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeFixed32(1, sbp_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeFixed32(2, dbp_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeFixed32(3, hr_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeFixed32(4, pulse_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeMessage(5, getTime());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeEnum(6, mODE_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(1, sbp_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(2, dbp_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(3, hr_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(4, pulse_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getTime());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(6, mODE_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ThirdPartyHealthBp)) {
        return super.equals(obj);
      }
      ThirdPartyHealthBp other = (ThirdPartyHealthBp) obj;

      if (hasSbp() != other.hasSbp()) return false;
      if (hasSbp()) {
        if (getSbp()
            != other.getSbp()) return false;
      }
      if (hasDbp() != other.hasDbp()) return false;
      if (hasDbp()) {
        if (getDbp()
            != other.getDbp()) return false;
      }
      if (hasHr() != other.hasHr()) return false;
      if (hasHr()) {
        if (getHr()
            != other.getHr()) return false;
      }
      if (hasPulse() != other.hasPulse()) return false;
      if (hasPulse()) {
        if (getPulse()
            != other.getPulse()) return false;
      }
      if (hasTime() != other.hasTime()) return false;
      if (hasTime()) {
        if (!getTime()
            .equals(other.getTime())) return false;
      }
      if (hasMODE() != other.hasMODE()) return false;
      if (hasMODE()) {
        if (mODE_ != other.mODE_) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasSbp()) {
        hash = (37 * hash) + SBP_FIELD_NUMBER;
        hash = (53 * hash) + getSbp();
      }
      if (hasDbp()) {
        hash = (37 * hash) + DBP_FIELD_NUMBER;
        hash = (53 * hash) + getDbp();
      }
      if (hasHr()) {
        hash = (37 * hash) + HR_FIELD_NUMBER;
        hash = (53 * hash) + getHr();
      }
      if (hasPulse()) {
        hash = (37 * hash) + PULSE_FIELD_NUMBER;
        hash = (53 * hash) + getPulse();
      }
      if (hasTime()) {
        hash = (37 * hash) + TIME_FIELD_NUMBER;
        hash = (53 * hash) + getTime().hashCode();
      }
      if (hasMODE()) {
        hash = (37 * hash) + MODE_FIELD_NUMBER;
        hash = (53 * hash) + mODE_;
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ThirdPartyHealthBp parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ThirdPartyHealthBp parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ThirdPartyHealthBp parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ThirdPartyHealthBp parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ThirdPartyHealthBp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ThirdPartyHealthBp parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ThirdPartyHealthBp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ThirdPartyHealthBp 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 ThirdPartyHealthBp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static ThirdPartyHealthBp 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 ThirdPartyHealthBp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ThirdPartyHealthBp parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ThirdPartyHealthBp prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    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;
    }
    /**
     * Protobuf type {@code ThirdPartyHealthBp}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:ThirdPartyHealthBp)
        ThirdPartyHealthBpOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ThirdPartyHealthData.internal_static_ThirdPartyHealthBp_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ThirdPartyHealthData.internal_static_ThirdPartyHealthBp_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ThirdPartyHealthBp.class, Builder.class);
      }

      // Construct using ThirdPartyHealthData.ThirdPartyHealthBp.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getTimeFieldBuilder();
        }
      }
      @Override
      public Builder clear() {
        super.clear();
        sbp_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        dbp_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        hr_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        pulse_ = 0;
        bitField0_ = (bitField0_ & ~0x00000008);
        if (timeBuilder_ == null) {
          time_ = null;
        } else {
          timeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        mODE_ = 0;
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ThirdPartyHealthData.internal_static_ThirdPartyHealthBp_descriptor;
      }

      @Override
      public ThirdPartyHealthBp getDefaultInstanceForType() {
        return ThirdPartyHealthBp.getDefaultInstance();
      }

      @Override
      public ThirdPartyHealthBp build() {
        ThirdPartyHealthBp result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public ThirdPartyHealthBp buildPartial() {
        ThirdPartyHealthBp result = new ThirdPartyHealthBp(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.sbp_ = sbp_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.dbp_ = dbp_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.hr_ = hr_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.pulse_ = pulse_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          if (timeBuilder_ == null) {
            result.time_ = time_;
          } else {
            result.time_ = timeBuilder_.build();
          }
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          to_bitField0_ |= 0x00000020;
        }
        result.mODE_ = mODE_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(ThirdPartyHealthBp other) {
        if (other == ThirdPartyHealthBp.getDefaultInstance()) return this;
        if (other.hasSbp()) {
          setSbp(other.getSbp());
        }
        if (other.hasDbp()) {
          setDbp(other.getDbp());
        }
        if (other.hasHr()) {
          setHr(other.getHr());
        }
        if (other.hasPulse()) {
          setPulse(other.getPulse());
        }
        if (other.hasTime()) {
          mergeTime(other.getTime());
        }
        if (other.hasMODE()) {
          setMODE(other.getMODE());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @Override
      public final boolean isInitialized() {
        if (!hasSbp()) {
          return false;
        }
        if (!hasDbp()) {
          return false;
        }
        if (!hasHr()) {
          return false;
        }
        if (!hasPulse()) {
          return false;
        }
        if (!hasTime()) {
          return false;
        }
        if (!hasMODE()) {
          return false;
        }
        if (!getTime().isInitialized()) {
          return false;
        }
        return true;
      }

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

      private int sbp_ ;
      /**
       * <code>required fixed32 sbp = 1;</code>
       * @return Whether the sbp field is set.
       */
      public boolean hasSbp() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required fixed32 sbp = 1;</code>
       * @return The sbp.
       */
      public int getSbp() {
        return sbp_;
      }
      /**
       * <code>required fixed32 sbp = 1;</code>
       * @param value The sbp to set.
       * @return This builder for chaining.
       */
      public Builder setSbp(int value) {
        bitField0_ |= 0x00000001;
        sbp_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required fixed32 sbp = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSbp() {
        bitField0_ = (bitField0_ & ~0x00000001);
        sbp_ = 0;
        onChanged();
        return this;
      }

      private int dbp_ ;
      /**
       * <code>required fixed32 dbp = 2;</code>
       * @return Whether the dbp field is set.
       */
      public boolean hasDbp() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required fixed32 dbp = 2;</code>
       * @return The dbp.
       */
      public int getDbp() {
        return dbp_;
      }
      /**
       * <code>required fixed32 dbp = 2;</code>
       * @param value The dbp to set.
       * @return This builder for chaining.
       */
      public Builder setDbp(int value) {
        bitField0_ |= 0x00000002;
        dbp_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required fixed32 dbp = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDbp() {
        bitField0_ = (bitField0_ & ~0x00000002);
        dbp_ = 0;
        onChanged();
        return this;
      }

      private int hr_ ;
      /**
       * <code>required fixed32 hr = 3;</code>
       * @return Whether the hr field is set.
       */
      public boolean hasHr() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>required fixed32 hr = 3;</code>
       * @return The hr.
       */
      public int getHr() {
        return hr_;
      }
      /**
       * <code>required fixed32 hr = 3;</code>
       * @param value The hr to set.
       * @return This builder for chaining.
       */
      public Builder setHr(int value) {
        bitField0_ |= 0x00000004;
        hr_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required fixed32 hr = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearHr() {
        bitField0_ = (bitField0_ & ~0x00000004);
        hr_ = 0;
        onChanged();
        return this;
      }

      private int pulse_ ;
      /**
       * <code>required fixed32 pulse = 4;</code>
       * @return Whether the pulse field is set.
       */
      public boolean hasPulse() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>required fixed32 pulse = 4;</code>
       * @return The pulse.
       */
      public int getPulse() {
        return pulse_;
      }
      /**
       * <code>required fixed32 pulse = 4;</code>
       * @param value The pulse to set.
       * @return This builder for chaining.
       */
      public Builder setPulse(int value) {
        bitField0_ |= 0x00000008;
        pulse_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required fixed32 pulse = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearPulse() {
        bitField0_ = (bitField0_ & ~0x00000008);
        pulse_ = 0;
        onChanged();
        return this;
      }

      private RealtimeData.DateTime time_;
      private com.google.protobuf.SingleFieldBuilderV3<
          RealtimeData.DateTime, RealtimeData.DateTime.Builder, RealtimeData.DateTimeOrBuilder> timeBuilder_;
      /**
       * <code>required .DateTime time = 5;</code>
       * @return Whether the time field is set.
       */
      public boolean hasTime() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>required .DateTime time = 5;</code>
       * @return The time.
       */
      public RealtimeData.DateTime getTime() {
        if (timeBuilder_ == null) {
          return time_ == null ? RealtimeData.DateTime.getDefaultInstance() : time_;
        } else {
          return timeBuilder_.getMessage();
        }
      }
      /**
       * <code>required .DateTime time = 5;</code>
       */
      public Builder setTime(RealtimeData.DateTime value) {
        if (timeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          time_ = value;
          onChanged();
        } else {
          timeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>required .DateTime time = 5;</code>
       */
      public Builder setTime(
          RealtimeData.DateTime.Builder builderForValue) {
        if (timeBuilder_ == null) {
          time_ = builderForValue.build();
          onChanged();
        } else {
          timeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>required .DateTime time = 5;</code>
       */
      public Builder mergeTime(RealtimeData.DateTime value) {
        if (timeBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
              time_ != null &&
              time_ != RealtimeData.DateTime.getDefaultInstance()) {
            time_ =
              RealtimeData.DateTime.newBuilder(time_).mergeFrom(value).buildPartial();
          } else {
            time_ = value;
          }
          onChanged();
        } else {
          timeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>required .DateTime time = 5;</code>
       */
      public Builder clearTime() {
        if (timeBuilder_ == null) {
          time_ = null;
          onChanged();
        } else {
          timeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }
      /**
       * <code>required .DateTime time = 5;</code>
       */
      public RealtimeData.DateTime.Builder getTimeBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getTimeFieldBuilder().getBuilder();
      }
      /**
       * <code>required .DateTime time = 5;</code>
       */
      public RealtimeData.DateTimeOrBuilder getTimeOrBuilder() {
        if (timeBuilder_ != null) {
          return timeBuilder_.getMessageOrBuilder();
        } else {
          return time_ == null ?
              RealtimeData.DateTime.getDefaultInstance() : time_;
        }
      }
      /**
       * <code>required .DateTime time = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          RealtimeData.DateTime, RealtimeData.DateTime.Builder, RealtimeData.DateTimeOrBuilder>
          getTimeFieldBuilder() {
        if (timeBuilder_ == null) {
          timeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              RealtimeData.DateTime, RealtimeData.DateTime.Builder, RealtimeData.DateTimeOrBuilder>(
                  getTime(),
                  getParentForChildren(),
                  isClean());
          time_ = null;
        }
        return timeBuilder_;
      }

      private int mODE_ = 0;
      /**
       * <code>required .MEASURE_MODE MODE = 6;</code>
       * @return Whether the mODE field is set.
       */
      public boolean hasMODE() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>required .MEASURE_MODE MODE = 6;</code>
       * @return The mODE.
       */
      public MEASURE_MODE getMODE() {
        @SuppressWarnings("deprecation")
        MEASURE_MODE result = MEASURE_MODE.valueOf(mODE_);
        return result == null ? MEASURE_MODE.MANUAL : result;
      }
      /**
       * <code>required .MEASURE_MODE MODE = 6;</code>
       * @param value The mODE to set.
       * @return This builder for chaining.
       */
      public Builder setMODE(MEASURE_MODE value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000020;
        mODE_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>required .MEASURE_MODE MODE = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearMODE() {
        bitField0_ = (bitField0_ & ~0x00000020);
        mODE_ = 0;
        onChanged();
        return this;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:ThirdPartyHealthBp)
    }

    // @@protoc_insertion_point(class_scope:ThirdPartyHealthBp)
    private static final ThirdPartyHealthBp DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ThirdPartyHealthBp();
    }

    public static ThirdPartyHealthBp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public ThirdPartyHealthBp getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ThirdPartyHealthScaleOrBuilder extends
      // @@protoc_insertion_point(interface_extends:ThirdPartyHealthScale)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required fixed32 weight = 1;</code>
     * @return Whether the weight field is set.
     */
    boolean hasWeight();
    /**
     * <code>required fixed32 weight = 1;</code>
     * @return The weight.
     */
    int getWeight();

    /**
     * <code>required fixed32 impedance = 2;</code>
     * @return Whether the impedance field is set.
     */
    boolean hasImpedance();
    /**
     * <code>required fixed32 impedance = 2;</code>
     * @return The impedance.
     */
    int getImpedance();

    /**
     * <code>required fixed32 uints = 3;</code>
     * @return Whether the uints field is set.
     */
    boolean hasUints();
    /**
     * <code>required fixed32 uints = 3;</code>
     * @return The uints.
     */
    int getUints();

    /**
     * <code>required fixed32 body_fat_percentage = 4;</code>
     * @return Whether the bodyFatPercentage field is set.
     */
    boolean hasBodyFatPercentage();
    /**
     * <code>required fixed32 body_fat_percentage = 4;</code>
     * @return The bodyFatPercentage.
     */
    int getBodyFatPercentage();

    /**
     * <code>required .DateTime time = 5;</code>
     * @return Whether the time field is set.
     */
    boolean hasTime();
    /**
     * <code>required .DateTime time = 5;</code>
     * @return The time.
     */
    RealtimeData.DateTime getTime();
    /**
     * <code>required .DateTime time = 5;</code>
     */
    RealtimeData.DateTimeOrBuilder getTimeOrBuilder();
  }
  /**
   * Protobuf type {@code ThirdPartyHealthScale}
   */
  public  static final class ThirdPartyHealthScale extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:ThirdPartyHealthScale)
      ThirdPartyHealthScaleOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ThirdPartyHealthScale.newBuilder() to construct.
    private ThirdPartyHealthScale(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ThirdPartyHealthScale() {
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new ThirdPartyHealthScale();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ThirdPartyHealthScale(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 13: {
              bitField0_ |= 0x00000001;
              weight_ = input.readFixed32();
              break;
            }
            case 21: {
              bitField0_ |= 0x00000002;
              impedance_ = input.readFixed32();
              break;
            }
            case 29: {
              bitField0_ |= 0x00000004;
              uints_ = input.readFixed32();
              break;
            }
            case 37: {
              bitField0_ |= 0x00000008;
              bodyFatPercentage_ = input.readFixed32();
              break;
            }
            case 42: {
              RealtimeData.DateTime.Builder subBuilder = null;
              if (((bitField0_ & 0x00000010) != 0)) {
                subBuilder = time_.toBuilder();
              }
              time_ = input.readMessage(RealtimeData.DateTime.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(time_);
                time_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000010;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, 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 {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ThirdPartyHealthData.internal_static_ThirdPartyHealthScale_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ThirdPartyHealthData.internal_static_ThirdPartyHealthScale_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ThirdPartyHealthScale.class, Builder.class);
    }

    private int bitField0_;
    public static final int WEIGHT_FIELD_NUMBER = 1;
    private int weight_;
    /**
     * <code>required fixed32 weight = 1;</code>
     * @return Whether the weight field is set.
     */
    public boolean hasWeight() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required fixed32 weight = 1;</code>
     * @return The weight.
     */
    public int getWeight() {
      return weight_;
    }

    public static final int IMPEDANCE_FIELD_NUMBER = 2;
    private int impedance_;
    /**
     * <code>required fixed32 impedance = 2;</code>
     * @return Whether the impedance field is set.
     */
    public boolean hasImpedance() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required fixed32 impedance = 2;</code>
     * @return The impedance.
     */
    public int getImpedance() {
      return impedance_;
    }

    public static final int UINTS_FIELD_NUMBER = 3;
    private int uints_;
    /**
     * <code>required fixed32 uints = 3;</code>
     * @return Whether the uints field is set.
     */
    public boolean hasUints() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>required fixed32 uints = 3;</code>
     * @return The uints.
     */
    public int getUints() {
      return uints_;
    }

    public static final int BODY_FAT_PERCENTAGE_FIELD_NUMBER = 4;
    private int bodyFatPercentage_;
    /**
     * <code>required fixed32 body_fat_percentage = 4;</code>
     * @return Whether the bodyFatPercentage field is set.
     */
    public boolean hasBodyFatPercentage() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>required fixed32 body_fat_percentage = 4;</code>
     * @return The bodyFatPercentage.
     */
    public int getBodyFatPercentage() {
      return bodyFatPercentage_;
    }

    public static final int TIME_FIELD_NUMBER = 5;
    private RealtimeData.DateTime time_;
    /**
     * <code>required .DateTime time = 5;</code>
     * @return Whether the time field is set.
     */
    public boolean hasTime() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>required .DateTime time = 5;</code>
     * @return The time.
     */
    public RealtimeData.DateTime getTime() {
      return time_ == null ? RealtimeData.DateTime.getDefaultInstance() : time_;
    }
    /**
     * <code>required .DateTime time = 5;</code>
     */
    public RealtimeData.DateTimeOrBuilder getTimeOrBuilder() {
      return time_ == null ? RealtimeData.DateTime.getDefaultInstance() : time_;
    }

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

      if (!hasWeight()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasImpedance()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasUints()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasBodyFatPercentage()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTime()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getTime().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeFixed32(1, weight_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeFixed32(2, impedance_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeFixed32(3, uints_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeFixed32(4, bodyFatPercentage_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeMessage(5, getTime());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(1, weight_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(2, impedance_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(3, uints_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(4, bodyFatPercentage_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getTime());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ThirdPartyHealthScale)) {
        return super.equals(obj);
      }
      ThirdPartyHealthScale other = (ThirdPartyHealthScale) obj;

      if (hasWeight() != other.hasWeight()) return false;
      if (hasWeight()) {
        if (getWeight()
            != other.getWeight()) return false;
      }
      if (hasImpedance() != other.hasImpedance()) return false;
      if (hasImpedance()) {
        if (getImpedance()
            != other.getImpedance()) return false;
      }
      if (hasUints() != other.hasUints()) return false;
      if (hasUints()) {
        if (getUints()
            != other.getUints()) return false;
      }
      if (hasBodyFatPercentage() != other.hasBodyFatPercentage()) return false;
      if (hasBodyFatPercentage()) {
        if (getBodyFatPercentage()
            != other.getBodyFatPercentage()) return false;
      }
      if (hasTime() != other.hasTime()) return false;
      if (hasTime()) {
        if (!getTime()
            .equals(other.getTime())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasWeight()) {
        hash = (37 * hash) + WEIGHT_FIELD_NUMBER;
        hash = (53 * hash) + getWeight();
      }
      if (hasImpedance()) {
        hash = (37 * hash) + IMPEDANCE_FIELD_NUMBER;
        hash = (53 * hash) + getImpedance();
      }
      if (hasUints()) {
        hash = (37 * hash) + UINTS_FIELD_NUMBER;
        hash = (53 * hash) + getUints();
      }
      if (hasBodyFatPercentage()) {
        hash = (37 * hash) + BODY_FAT_PERCENTAGE_FIELD_NUMBER;
        hash = (53 * hash) + getBodyFatPercentage();
      }
      if (hasTime()) {
        hash = (37 * hash) + TIME_FIELD_NUMBER;
        hash = (53 * hash) + getTime().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ThirdPartyHealthScale parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ThirdPartyHealthScale parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ThirdPartyHealthScale parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ThirdPartyHealthScale parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ThirdPartyHealthScale parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ThirdPartyHealthScale parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ThirdPartyHealthScale parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ThirdPartyHealthScale 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 ThirdPartyHealthScale parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static ThirdPartyHealthScale 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 ThirdPartyHealthScale parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ThirdPartyHealthScale parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ThirdPartyHealthScale prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    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;
    }
    /**
     * Protobuf type {@code ThirdPartyHealthScale}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:ThirdPartyHealthScale)
        ThirdPartyHealthScaleOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ThirdPartyHealthData.internal_static_ThirdPartyHealthScale_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ThirdPartyHealthData.internal_static_ThirdPartyHealthScale_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ThirdPartyHealthScale.class, Builder.class);
      }

      // Construct using ThirdPartyHealthData.ThirdPartyHealthScale.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getTimeFieldBuilder();
        }
      }
      @Override
      public Builder clear() {
        super.clear();
        weight_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        impedance_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        uints_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        bodyFatPercentage_ = 0;
        bitField0_ = (bitField0_ & ~0x00000008);
        if (timeBuilder_ == null) {
          time_ = null;
        } else {
          timeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ThirdPartyHealthData.internal_static_ThirdPartyHealthScale_descriptor;
      }

      @Override
      public ThirdPartyHealthScale getDefaultInstanceForType() {
        return ThirdPartyHealthScale.getDefaultInstance();
      }

      @Override
      public ThirdPartyHealthScale build() {
        ThirdPartyHealthScale result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public ThirdPartyHealthScale buildPartial() {
        ThirdPartyHealthScale result = new ThirdPartyHealthScale(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.weight_ = weight_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.impedance_ = impedance_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.uints_ = uints_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.bodyFatPercentage_ = bodyFatPercentage_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          if (timeBuilder_ == null) {
            result.time_ = time_;
          } else {
            result.time_ = timeBuilder_.build();
          }
          to_bitField0_ |= 0x00000010;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(ThirdPartyHealthScale other) {
        if (other == ThirdPartyHealthScale.getDefaultInstance()) return this;
        if (other.hasWeight()) {
          setWeight(other.getWeight());
        }
        if (other.hasImpedance()) {
          setImpedance(other.getImpedance());
        }
        if (other.hasUints()) {
          setUints(other.getUints());
        }
        if (other.hasBodyFatPercentage()) {
          setBodyFatPercentage(other.getBodyFatPercentage());
        }
        if (other.hasTime()) {
          mergeTime(other.getTime());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @Override
      public final boolean isInitialized() {
        if (!hasWeight()) {
          return false;
        }
        if (!hasImpedance()) {
          return false;
        }
        if (!hasUints()) {
          return false;
        }
        if (!hasBodyFatPercentage()) {
          return false;
        }
        if (!hasTime()) {
          return false;
        }
        if (!getTime().isInitialized()) {
          return false;
        }
        return true;
      }

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

      private int weight_ ;
      /**
       * <code>required fixed32 weight = 1;</code>
       * @return Whether the weight field is set.
       */
      public boolean hasWeight() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required fixed32 weight = 1;</code>
       * @return The weight.
       */
      public int getWeight() {
        return weight_;
      }
      /**
       * <code>required fixed32 weight = 1;</code>
       * @param value The weight to set.
       * @return This builder for chaining.
       */
      public Builder setWeight(int value) {
        bitField0_ |= 0x00000001;
        weight_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required fixed32 weight = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearWeight() {
        bitField0_ = (bitField0_ & ~0x00000001);
        weight_ = 0;
        onChanged();
        return this;
      }

      private int impedance_ ;
      /**
       * <code>required fixed32 impedance = 2;</code>
       * @return Whether the impedance field is set.
       */
      public boolean hasImpedance() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required fixed32 impedance = 2;</code>
       * @return The impedance.
       */
      public int getImpedance() {
        return impedance_;
      }
      /**
       * <code>required fixed32 impedance = 2;</code>
       * @param value The impedance to set.
       * @return This builder for chaining.
       */
      public Builder setImpedance(int value) {
        bitField0_ |= 0x00000002;
        impedance_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required fixed32 impedance = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearImpedance() {
        bitField0_ = (bitField0_ & ~0x00000002);
        impedance_ = 0;
        onChanged();
        return this;
      }

      private int uints_ ;
      /**
       * <code>required fixed32 uints = 3;</code>
       * @return Whether the uints field is set.
       */
      public boolean hasUints() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>required fixed32 uints = 3;</code>
       * @return The uints.
       */
      public int getUints() {
        return uints_;
      }
      /**
       * <code>required fixed32 uints = 3;</code>
       * @param value The uints to set.
       * @return This builder for chaining.
       */
      public Builder setUints(int value) {
        bitField0_ |= 0x00000004;
        uints_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required fixed32 uints = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearUints() {
        bitField0_ = (bitField0_ & ~0x00000004);
        uints_ = 0;
        onChanged();
        return this;
      }

      private int bodyFatPercentage_ ;
      /**
       * <code>required fixed32 body_fat_percentage = 4;</code>
       * @return Whether the bodyFatPercentage field is set.
       */
      public boolean hasBodyFatPercentage() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>required fixed32 body_fat_percentage = 4;</code>
       * @return The bodyFatPercentage.
       */
      public int getBodyFatPercentage() {
        return bodyFatPercentage_;
      }
      /**
       * <code>required fixed32 body_fat_percentage = 4;</code>
       * @param value The bodyFatPercentage to set.
       * @return This builder for chaining.
       */
      public Builder setBodyFatPercentage(int value) {
        bitField0_ |= 0x00000008;
        bodyFatPercentage_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required fixed32 body_fat_percentage = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearBodyFatPercentage() {
        bitField0_ = (bitField0_ & ~0x00000008);
        bodyFatPercentage_ = 0;
        onChanged();
        return this;
      }

      private RealtimeData.DateTime time_;
      private com.google.protobuf.SingleFieldBuilderV3<
          RealtimeData.DateTime, RealtimeData.DateTime.Builder, RealtimeData.DateTimeOrBuilder> timeBuilder_;
      /**
       * <code>required .DateTime time = 5;</code>
       * @return Whether the time field is set.
       */
      public boolean hasTime() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>required .DateTime time = 5;</code>
       * @return The time.
       */
      public RealtimeData.DateTime getTime() {
        if (timeBuilder_ == null) {
          return time_ == null ? RealtimeData.DateTime.getDefaultInstance() : time_;
        } else {
          return timeBuilder_.getMessage();
        }
      }
      /**
       * <code>required .DateTime time = 5;</code>
       */
      public Builder setTime(RealtimeData.DateTime value) {
        if (timeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          time_ = value;
          onChanged();
        } else {
          timeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>required .DateTime time = 5;</code>
       */
      public Builder setTime(
          RealtimeData.DateTime.Builder builderForValue) {
        if (timeBuilder_ == null) {
          time_ = builderForValue.build();
          onChanged();
        } else {
          timeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>required .DateTime time = 5;</code>
       */
      public Builder mergeTime(RealtimeData.DateTime value) {
        if (timeBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
              time_ != null &&
              time_ != RealtimeData.DateTime.getDefaultInstance()) {
            time_ =
              RealtimeData.DateTime.newBuilder(time_).mergeFrom(value).buildPartial();
          } else {
            time_ = value;
          }
          onChanged();
        } else {
          timeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>required .DateTime time = 5;</code>
       */
      public Builder clearTime() {
        if (timeBuilder_ == null) {
          time_ = null;
          onChanged();
        } else {
          timeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }
      /**
       * <code>required .DateTime time = 5;</code>
       */
      public RealtimeData.DateTime.Builder getTimeBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getTimeFieldBuilder().getBuilder();
      }
      /**
       * <code>required .DateTime time = 5;</code>
       */
      public RealtimeData.DateTimeOrBuilder getTimeOrBuilder() {
        if (timeBuilder_ != null) {
          return timeBuilder_.getMessageOrBuilder();
        } else {
          return time_ == null ?
              RealtimeData.DateTime.getDefaultInstance() : time_;
        }
      }
      /**
       * <code>required .DateTime time = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          RealtimeData.DateTime, RealtimeData.DateTime.Builder, RealtimeData.DateTimeOrBuilder>
          getTimeFieldBuilder() {
        if (timeBuilder_ == null) {
          timeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              RealtimeData.DateTime, RealtimeData.DateTime.Builder, RealtimeData.DateTimeOrBuilder>(
                  getTime(),
                  getParentForChildren(),
                  isClean());
          time_ = null;
        }
        return timeBuilder_;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:ThirdPartyHealthScale)
    }

    // @@protoc_insertion_point(class_scope:ThirdPartyHealthScale)
    private static final ThirdPartyHealthScale DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ThirdPartyHealthScale();
    }

    public static ThirdPartyHealthScale getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public ThirdPartyHealthScale getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ThirdPartyHealthSpo2OrBuilder extends
      // @@protoc_insertion_point(interface_extends:ThirdPartyHealthSpo2)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required fixed32 bpm = 1;</code>
     * @return Whether the bpm field is set.
     */
    boolean hasBpm();
    /**
     * <code>required fixed32 bpm = 1;</code>
     * @return The bpm.
     */
    int getBpm();

    /**
     * <code>required fixed32 spo2 = 2;</code>
     * @return Whether the spo2 field is set.
     */
    boolean hasSpo2();
    /**
     * <code>required fixed32 spo2 = 2;</code>
     * @return The spo2.
     */
    int getSpo2();

    /**
     * <code>required fixed32 pi = 3;</code>
     * @return Whether the pi field is set.
     */
    boolean hasPi();
    /**
     * <code>required fixed32 pi = 3;</code>
     * @return The pi.
     */
    int getPi();

    /**
     * <code>required .DateTime time = 4;</code>
     * @return Whether the time field is set.
     */
    boolean hasTime();
    /**
     * <code>required .DateTime time = 4;</code>
     * @return The time.
     */
    RealtimeData.DateTime getTime();
    /**
     * <code>required .DateTime time = 4;</code>
     */
    RealtimeData.DateTimeOrBuilder getTimeOrBuilder();
  }
  /**
   * Protobuf type {@code ThirdPartyHealthSpo2}
   */
  public  static final class ThirdPartyHealthSpo2 extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:ThirdPartyHealthSpo2)
      ThirdPartyHealthSpo2OrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ThirdPartyHealthSpo2.newBuilder() to construct.
    private ThirdPartyHealthSpo2(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ThirdPartyHealthSpo2() {
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new ThirdPartyHealthSpo2();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ThirdPartyHealthSpo2(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 13: {
              bitField0_ |= 0x00000001;
              bpm_ = input.readFixed32();
              break;
            }
            case 21: {
              bitField0_ |= 0x00000002;
              spo2_ = input.readFixed32();
              break;
            }
            case 29: {
              bitField0_ |= 0x00000004;
              pi_ = input.readFixed32();
              break;
            }
            case 34: {
              RealtimeData.DateTime.Builder subBuilder = null;
              if (((bitField0_ & 0x00000008) != 0)) {
                subBuilder = time_.toBuilder();
              }
              time_ = input.readMessage(RealtimeData.DateTime.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(time_);
                time_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000008;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, 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 {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ThirdPartyHealthData.internal_static_ThirdPartyHealthSpo2_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ThirdPartyHealthData.internal_static_ThirdPartyHealthSpo2_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ThirdPartyHealthSpo2.class, Builder.class);
    }

    private int bitField0_;
    public static final int BPM_FIELD_NUMBER = 1;
    private int bpm_;
    /**
     * <code>required fixed32 bpm = 1;</code>
     * @return Whether the bpm field is set.
     */
    public boolean hasBpm() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required fixed32 bpm = 1;</code>
     * @return The bpm.
     */
    public int getBpm() {
      return bpm_;
    }

    public static final int SPO2_FIELD_NUMBER = 2;
    private int spo2_;
    /**
     * <code>required fixed32 spo2 = 2;</code>
     * @return Whether the spo2 field is set.
     */
    public boolean hasSpo2() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required fixed32 spo2 = 2;</code>
     * @return The spo2.
     */
    public int getSpo2() {
      return spo2_;
    }

    public static final int PI_FIELD_NUMBER = 3;
    private int pi_;
    /**
     * <code>required fixed32 pi = 3;</code>
     * @return Whether the pi field is set.
     */
    public boolean hasPi() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>required fixed32 pi = 3;</code>
     * @return The pi.
     */
    public int getPi() {
      return pi_;
    }

    public static final int TIME_FIELD_NUMBER = 4;
    private RealtimeData.DateTime time_;
    /**
     * <code>required .DateTime time = 4;</code>
     * @return Whether the time field is set.
     */
    public boolean hasTime() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>required .DateTime time = 4;</code>
     * @return The time.
     */
    public RealtimeData.DateTime getTime() {
      return time_ == null ? RealtimeData.DateTime.getDefaultInstance() : time_;
    }
    /**
     * <code>required .DateTime time = 4;</code>
     */
    public RealtimeData.DateTimeOrBuilder getTimeOrBuilder() {
      return time_ == null ? RealtimeData.DateTime.getDefaultInstance() : time_;
    }

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

      if (!hasBpm()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasSpo2()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasPi()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTime()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getTime().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeFixed32(1, bpm_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeFixed32(2, spo2_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeFixed32(3, pi_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(4, getTime());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(1, bpm_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(2, spo2_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(3, pi_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getTime());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ThirdPartyHealthSpo2)) {
        return super.equals(obj);
      }
      ThirdPartyHealthSpo2 other = (ThirdPartyHealthSpo2) obj;

      if (hasBpm() != other.hasBpm()) return false;
      if (hasBpm()) {
        if (getBpm()
            != other.getBpm()) return false;
      }
      if (hasSpo2() != other.hasSpo2()) return false;
      if (hasSpo2()) {
        if (getSpo2()
            != other.getSpo2()) return false;
      }
      if (hasPi() != other.hasPi()) return false;
      if (hasPi()) {
        if (getPi()
            != other.getPi()) return false;
      }
      if (hasTime() != other.hasTime()) return false;
      if (hasTime()) {
        if (!getTime()
            .equals(other.getTime())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasBpm()) {
        hash = (37 * hash) + BPM_FIELD_NUMBER;
        hash = (53 * hash) + getBpm();
      }
      if (hasSpo2()) {
        hash = (37 * hash) + SPO2_FIELD_NUMBER;
        hash = (53 * hash) + getSpo2();
      }
      if (hasPi()) {
        hash = (37 * hash) + PI_FIELD_NUMBER;
        hash = (53 * hash) + getPi();
      }
      if (hasTime()) {
        hash = (37 * hash) + TIME_FIELD_NUMBER;
        hash = (53 * hash) + getTime().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ThirdPartyHealthSpo2 parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ThirdPartyHealthSpo2 parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ThirdPartyHealthSpo2 parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ThirdPartyHealthSpo2 parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ThirdPartyHealthSpo2 parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ThirdPartyHealthSpo2 parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ThirdPartyHealthSpo2 parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ThirdPartyHealthSpo2 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 ThirdPartyHealthSpo2 parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static ThirdPartyHealthSpo2 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 ThirdPartyHealthSpo2 parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ThirdPartyHealthSpo2 parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ThirdPartyHealthSpo2 prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    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;
    }
    /**
     * Protobuf type {@code ThirdPartyHealthSpo2}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:ThirdPartyHealthSpo2)
        ThirdPartyHealthSpo2OrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ThirdPartyHealthData.internal_static_ThirdPartyHealthSpo2_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ThirdPartyHealthData.internal_static_ThirdPartyHealthSpo2_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ThirdPartyHealthSpo2.class, Builder.class);
      }

      // Construct using ThirdPartyHealthData.ThirdPartyHealthSpo2.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getTimeFieldBuilder();
        }
      }
      @Override
      public Builder clear() {
        super.clear();
        bpm_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        spo2_ = 0;
        bitField0_ = (bitField0_ & ~0x00000002);
        pi_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        if (timeBuilder_ == null) {
          time_ = null;
        } else {
          timeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ThirdPartyHealthData.internal_static_ThirdPartyHealthSpo2_descriptor;
      }

      @Override
      public ThirdPartyHealthSpo2 getDefaultInstanceForType() {
        return ThirdPartyHealthSpo2.getDefaultInstance();
      }

      @Override
      public ThirdPartyHealthSpo2 build() {
        ThirdPartyHealthSpo2 result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public ThirdPartyHealthSpo2 buildPartial() {
        ThirdPartyHealthSpo2 result = new ThirdPartyHealthSpo2(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.bpm_ = bpm_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.spo2_ = spo2_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.pi_ = pi_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          if (timeBuilder_ == null) {
            result.time_ = time_;
          } else {
            result.time_ = timeBuilder_.build();
          }
          to_bitField0_ |= 0x00000008;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(ThirdPartyHealthSpo2 other) {
        if (other == ThirdPartyHealthSpo2.getDefaultInstance()) return this;
        if (other.hasBpm()) {
          setBpm(other.getBpm());
        }
        if (other.hasSpo2()) {
          setSpo2(other.getSpo2());
        }
        if (other.hasPi()) {
          setPi(other.getPi());
        }
        if (other.hasTime()) {
          mergeTime(other.getTime());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @Override
      public final boolean isInitialized() {
        if (!hasBpm()) {
          return false;
        }
        if (!hasSpo2()) {
          return false;
        }
        if (!hasPi()) {
          return false;
        }
        if (!hasTime()) {
          return false;
        }
        if (!getTime().isInitialized()) {
          return false;
        }
        return true;
      }

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

      private int bpm_ ;
      /**
       * <code>required fixed32 bpm = 1;</code>
       * @return Whether the bpm field is set.
       */
      public boolean hasBpm() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required fixed32 bpm = 1;</code>
       * @return The bpm.
       */
      public int getBpm() {
        return bpm_;
      }
      /**
       * <code>required fixed32 bpm = 1;</code>
       * @param value The bpm to set.
       * @return This builder for chaining.
       */
      public Builder setBpm(int value) {
        bitField0_ |= 0x00000001;
        bpm_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required fixed32 bpm = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearBpm() {
        bitField0_ = (bitField0_ & ~0x00000001);
        bpm_ = 0;
        onChanged();
        return this;
      }

      private int spo2_ ;
      /**
       * <code>required fixed32 spo2 = 2;</code>
       * @return Whether the spo2 field is set.
       */
      public boolean hasSpo2() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required fixed32 spo2 = 2;</code>
       * @return The spo2.
       */
      public int getSpo2() {
        return spo2_;
      }
      /**
       * <code>required fixed32 spo2 = 2;</code>
       * @param value The spo2 to set.
       * @return This builder for chaining.
       */
      public Builder setSpo2(int value) {
        bitField0_ |= 0x00000002;
        spo2_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required fixed32 spo2 = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearSpo2() {
        bitField0_ = (bitField0_ & ~0x00000002);
        spo2_ = 0;
        onChanged();
        return this;
      }

      private int pi_ ;
      /**
       * <code>required fixed32 pi = 3;</code>
       * @return Whether the pi field is set.
       */
      public boolean hasPi() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>required fixed32 pi = 3;</code>
       * @return The pi.
       */
      public int getPi() {
        return pi_;
      }
      /**
       * <code>required fixed32 pi = 3;</code>
       * @param value The pi to set.
       * @return This builder for chaining.
       */
      public Builder setPi(int value) {
        bitField0_ |= 0x00000004;
        pi_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required fixed32 pi = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearPi() {
        bitField0_ = (bitField0_ & ~0x00000004);
        pi_ = 0;
        onChanged();
        return this;
      }

      private RealtimeData.DateTime time_;
      private com.google.protobuf.SingleFieldBuilderV3<
          RealtimeData.DateTime, RealtimeData.DateTime.Builder, RealtimeData.DateTimeOrBuilder> timeBuilder_;
      /**
       * <code>required .DateTime time = 4;</code>
       * @return Whether the time field is set.
       */
      public boolean hasTime() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>required .DateTime time = 4;</code>
       * @return The time.
       */
      public RealtimeData.DateTime getTime() {
        if (timeBuilder_ == null) {
          return time_ == null ? RealtimeData.DateTime.getDefaultInstance() : time_;
        } else {
          return timeBuilder_.getMessage();
        }
      }
      /**
       * <code>required .DateTime time = 4;</code>
       */
      public Builder setTime(RealtimeData.DateTime value) {
        if (timeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          time_ = value;
          onChanged();
        } else {
          timeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>required .DateTime time = 4;</code>
       */
      public Builder setTime(
          RealtimeData.DateTime.Builder builderForValue) {
        if (timeBuilder_ == null) {
          time_ = builderForValue.build();
          onChanged();
        } else {
          timeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>required .DateTime time = 4;</code>
       */
      public Builder mergeTime(RealtimeData.DateTime value) {
        if (timeBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
              time_ != null &&
              time_ != RealtimeData.DateTime.getDefaultInstance()) {
            time_ =
              RealtimeData.DateTime.newBuilder(time_).mergeFrom(value).buildPartial();
          } else {
            time_ = value;
          }
          onChanged();
        } else {
          timeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000008;
        return this;
      }
      /**
       * <code>required .DateTime time = 4;</code>
       */
      public Builder clearTime() {
        if (timeBuilder_ == null) {
          time_ = null;
          onChanged();
        } else {
          timeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }
      /**
       * <code>required .DateTime time = 4;</code>
       */
      public RealtimeData.DateTime.Builder getTimeBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getTimeFieldBuilder().getBuilder();
      }
      /**
       * <code>required .DateTime time = 4;</code>
       */
      public RealtimeData.DateTimeOrBuilder getTimeOrBuilder() {
        if (timeBuilder_ != null) {
          return timeBuilder_.getMessageOrBuilder();
        } else {
          return time_ == null ?
              RealtimeData.DateTime.getDefaultInstance() : time_;
        }
      }
      /**
       * <code>required .DateTime time = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          RealtimeData.DateTime, RealtimeData.DateTime.Builder, RealtimeData.DateTimeOrBuilder>
          getTimeFieldBuilder() {
        if (timeBuilder_ == null) {
          timeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              RealtimeData.DateTime, RealtimeData.DateTime.Builder, RealtimeData.DateTimeOrBuilder>(
                  getTime(),
                  getParentForChildren(),
                  isClean());
          time_ = null;
        }
        return timeBuilder_;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:ThirdPartyHealthSpo2)
    }

    // @@protoc_insertion_point(class_scope:ThirdPartyHealthSpo2)
    private static final ThirdPartyHealthSpo2 DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ThirdPartyHealthSpo2();
    }

    public static ThirdPartyHealthSpo2 getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public ThirdPartyHealthSpo2 getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ThirdPartyHealthTempOrBuilder extends
      // @@protoc_insertion_point(interface_extends:ThirdPartyHealthTemp)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required fixed32 body_temp = 1;</code>
     * @return Whether the bodyTemp field is set.
     */
    boolean hasBodyTemp();
    /**
     * <code>required fixed32 body_temp = 1;</code>
     * @return The bodyTemp.
     */
    int getBodyTemp();

    /**
     * <code>required .DateTime time = 2;</code>
     * @return Whether the time field is set.
     */
    boolean hasTime();
    /**
     * <code>required .DateTime time = 2;</code>
     * @return The time.
     */
    RealtimeData.DateTime getTime();
    /**
     * <code>required .DateTime time = 2;</code>
     */
    RealtimeData.DateTimeOrBuilder getTimeOrBuilder();
  }
  /**
   * Protobuf type {@code ThirdPartyHealthTemp}
   */
  public  static final class ThirdPartyHealthTemp extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:ThirdPartyHealthTemp)
      ThirdPartyHealthTempOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ThirdPartyHealthTemp.newBuilder() to construct.
    private ThirdPartyHealthTemp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ThirdPartyHealthTemp() {
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new ThirdPartyHealthTemp();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ThirdPartyHealthTemp(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 13: {
              bitField0_ |= 0x00000001;
              bodyTemp_ = input.readFixed32();
              break;
            }
            case 18: {
              RealtimeData.DateTime.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) != 0)) {
                subBuilder = time_.toBuilder();
              }
              time_ = input.readMessage(RealtimeData.DateTime.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(time_);
                time_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, 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 {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ThirdPartyHealthData.internal_static_ThirdPartyHealthTemp_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ThirdPartyHealthData.internal_static_ThirdPartyHealthTemp_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ThirdPartyHealthTemp.class, Builder.class);
    }

    private int bitField0_;
    public static final int BODY_TEMP_FIELD_NUMBER = 1;
    private int bodyTemp_;
    /**
     * <code>required fixed32 body_temp = 1;</code>
     * @return Whether the bodyTemp field is set.
     */
    public boolean hasBodyTemp() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required fixed32 body_temp = 1;</code>
     * @return The bodyTemp.
     */
    public int getBodyTemp() {
      return bodyTemp_;
    }

    public static final int TIME_FIELD_NUMBER = 2;
    private RealtimeData.DateTime time_;
    /**
     * <code>required .DateTime time = 2;</code>
     * @return Whether the time field is set.
     */
    public boolean hasTime() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required .DateTime time = 2;</code>
     * @return The time.
     */
    public RealtimeData.DateTime getTime() {
      return time_ == null ? RealtimeData.DateTime.getDefaultInstance() : time_;
    }
    /**
     * <code>required .DateTime time = 2;</code>
     */
    public RealtimeData.DateTimeOrBuilder getTimeOrBuilder() {
      return time_ == null ? RealtimeData.DateTime.getDefaultInstance() : time_;
    }

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

      if (!hasBodyTemp()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTime()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getTime().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeFixed32(1, bodyTemp_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getTime());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(1, bodyTemp_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getTime());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ThirdPartyHealthTemp)) {
        return super.equals(obj);
      }
      ThirdPartyHealthTemp other = (ThirdPartyHealthTemp) obj;

      if (hasBodyTemp() != other.hasBodyTemp()) return false;
      if (hasBodyTemp()) {
        if (getBodyTemp()
            != other.getBodyTemp()) return false;
      }
      if (hasTime() != other.hasTime()) return false;
      if (hasTime()) {
        if (!getTime()
            .equals(other.getTime())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasBodyTemp()) {
        hash = (37 * hash) + BODY_TEMP_FIELD_NUMBER;
        hash = (53 * hash) + getBodyTemp();
      }
      if (hasTime()) {
        hash = (37 * hash) + TIME_FIELD_NUMBER;
        hash = (53 * hash) + getTime().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ThirdPartyHealthTemp parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ThirdPartyHealthTemp parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ThirdPartyHealthTemp parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ThirdPartyHealthTemp parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ThirdPartyHealthTemp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ThirdPartyHealthTemp parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ThirdPartyHealthTemp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ThirdPartyHealthTemp 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 ThirdPartyHealthTemp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static ThirdPartyHealthTemp 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 ThirdPartyHealthTemp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ThirdPartyHealthTemp parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ThirdPartyHealthTemp prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    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;
    }
    /**
     * Protobuf type {@code ThirdPartyHealthTemp}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:ThirdPartyHealthTemp)
        ThirdPartyHealthTempOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ThirdPartyHealthData.internal_static_ThirdPartyHealthTemp_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ThirdPartyHealthData.internal_static_ThirdPartyHealthTemp_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ThirdPartyHealthTemp.class, Builder.class);
      }

      // Construct using ThirdPartyHealthData.ThirdPartyHealthTemp.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getTimeFieldBuilder();
        }
      }
      @Override
      public Builder clear() {
        super.clear();
        bodyTemp_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (timeBuilder_ == null) {
          time_ = null;
        } else {
          timeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ThirdPartyHealthData.internal_static_ThirdPartyHealthTemp_descriptor;
      }

      @Override
      public ThirdPartyHealthTemp getDefaultInstanceForType() {
        return ThirdPartyHealthTemp.getDefaultInstance();
      }

      @Override
      public ThirdPartyHealthTemp build() {
        ThirdPartyHealthTemp result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public ThirdPartyHealthTemp buildPartial() {
        ThirdPartyHealthTemp result = new ThirdPartyHealthTemp(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.bodyTemp_ = bodyTemp_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          if (timeBuilder_ == null) {
            result.time_ = time_;
          } else {
            result.time_ = timeBuilder_.build();
          }
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(ThirdPartyHealthTemp other) {
        if (other == ThirdPartyHealthTemp.getDefaultInstance()) return this;
        if (other.hasBodyTemp()) {
          setBodyTemp(other.getBodyTemp());
        }
        if (other.hasTime()) {
          mergeTime(other.getTime());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @Override
      public final boolean isInitialized() {
        if (!hasBodyTemp()) {
          return false;
        }
        if (!hasTime()) {
          return false;
        }
        if (!getTime().isInitialized()) {
          return false;
        }
        return true;
      }

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

      private int bodyTemp_ ;
      /**
       * <code>required fixed32 body_temp = 1;</code>
       * @return Whether the bodyTemp field is set.
       */
      public boolean hasBodyTemp() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required fixed32 body_temp = 1;</code>
       * @return The bodyTemp.
       */
      public int getBodyTemp() {
        return bodyTemp_;
      }
      /**
       * <code>required fixed32 body_temp = 1;</code>
       * @param value The bodyTemp to set.
       * @return This builder for chaining.
       */
      public Builder setBodyTemp(int value) {
        bitField0_ |= 0x00000001;
        bodyTemp_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required fixed32 body_temp = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearBodyTemp() {
        bitField0_ = (bitField0_ & ~0x00000001);
        bodyTemp_ = 0;
        onChanged();
        return this;
      }

      private RealtimeData.DateTime time_;
      private com.google.protobuf.SingleFieldBuilderV3<
          RealtimeData.DateTime, RealtimeData.DateTime.Builder, RealtimeData.DateTimeOrBuilder> timeBuilder_;
      /**
       * <code>required .DateTime time = 2;</code>
       * @return Whether the time field is set.
       */
      public boolean hasTime() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required .DateTime time = 2;</code>
       * @return The time.
       */
      public RealtimeData.DateTime getTime() {
        if (timeBuilder_ == null) {
          return time_ == null ? RealtimeData.DateTime.getDefaultInstance() : time_;
        } else {
          return timeBuilder_.getMessage();
        }
      }
      /**
       * <code>required .DateTime time = 2;</code>
       */
      public Builder setTime(RealtimeData.DateTime value) {
        if (timeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          time_ = value;
          onChanged();
        } else {
          timeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .DateTime time = 2;</code>
       */
      public Builder setTime(
          RealtimeData.DateTime.Builder builderForValue) {
        if (timeBuilder_ == null) {
          time_ = builderForValue.build();
          onChanged();
        } else {
          timeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .DateTime time = 2;</code>
       */
      public Builder mergeTime(RealtimeData.DateTime value) {
        if (timeBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
              time_ != null &&
              time_ != RealtimeData.DateTime.getDefaultInstance()) {
            time_ =
              RealtimeData.DateTime.newBuilder(time_).mergeFrom(value).buildPartial();
          } else {
            time_ = value;
          }
          onChanged();
        } else {
          timeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .DateTime time = 2;</code>
       */
      public Builder clearTime() {
        if (timeBuilder_ == null) {
          time_ = null;
          onChanged();
        } else {
          timeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <code>required .DateTime time = 2;</code>
       */
      public RealtimeData.DateTime.Builder getTimeBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getTimeFieldBuilder().getBuilder();
      }
      /**
       * <code>required .DateTime time = 2;</code>
       */
      public RealtimeData.DateTimeOrBuilder getTimeOrBuilder() {
        if (timeBuilder_ != null) {
          return timeBuilder_.getMessageOrBuilder();
        } else {
          return time_ == null ?
              RealtimeData.DateTime.getDefaultInstance() : time_;
        }
      }
      /**
       * <code>required .DateTime time = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          RealtimeData.DateTime, RealtimeData.DateTime.Builder, RealtimeData.DateTimeOrBuilder>
          getTimeFieldBuilder() {
        if (timeBuilder_ == null) {
          timeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              RealtimeData.DateTime, RealtimeData.DateTime.Builder, RealtimeData.DateTimeOrBuilder>(
                  getTime(),
                  getParentForChildren(),
                  isClean());
          time_ = null;
        }
        return timeBuilder_;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:ThirdPartyHealthTemp)
    }

    // @@protoc_insertion_point(class_scope:ThirdPartyHealthTemp)
    private static final ThirdPartyHealthTemp DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ThirdPartyHealthTemp();
    }

    public static ThirdPartyHealthTemp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public ThirdPartyHealthTemp getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ThirdPartyHealthGluOrBuilder extends
      // @@protoc_insertion_point(interface_extends:ThirdPartyHealthGlu)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required fixed32 glu = 1;</code>
     * @return Whether the glu field is set.
     */
    boolean hasGlu();
    /**
     * <code>required fixed32 glu = 1;</code>
     * @return The glu.
     */
    int getGlu();

    /**
     * <code>required .DateTime time = 2;</code>
     * @return Whether the time field is set.
     */
    boolean hasTime();
    /**
     * <code>required .DateTime time = 2;</code>
     * @return The time.
     */
    RealtimeData.DateTime getTime();
    /**
     * <code>required .DateTime time = 2;</code>
     */
    RealtimeData.DateTimeOrBuilder getTimeOrBuilder();
  }
  /**
   * Protobuf type {@code ThirdPartyHealthGlu}
   */
  public  static final class ThirdPartyHealthGlu extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:ThirdPartyHealthGlu)
      ThirdPartyHealthGluOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ThirdPartyHealthGlu.newBuilder() to construct.
    private ThirdPartyHealthGlu(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ThirdPartyHealthGlu() {
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new ThirdPartyHealthGlu();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ThirdPartyHealthGlu(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 13: {
              bitField0_ |= 0x00000001;
              glu_ = input.readFixed32();
              break;
            }
            case 18: {
              RealtimeData.DateTime.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) != 0)) {
                subBuilder = time_.toBuilder();
              }
              time_ = input.readMessage(RealtimeData.DateTime.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(time_);
                time_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, 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 {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ThirdPartyHealthData.internal_static_ThirdPartyHealthGlu_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ThirdPartyHealthData.internal_static_ThirdPartyHealthGlu_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ThirdPartyHealthGlu.class, Builder.class);
    }

    private int bitField0_;
    public static final int GLU_FIELD_NUMBER = 1;
    private int glu_;
    /**
     * <code>required fixed32 glu = 1;</code>
     * @return Whether the glu field is set.
     */
    public boolean hasGlu() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required fixed32 glu = 1;</code>
     * @return The glu.
     */
    public int getGlu() {
      return glu_;
    }

    public static final int TIME_FIELD_NUMBER = 2;
    private RealtimeData.DateTime time_;
    /**
     * <code>required .DateTime time = 2;</code>
     * @return Whether the time field is set.
     */
    public boolean hasTime() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required .DateTime time = 2;</code>
     * @return The time.
     */
    public RealtimeData.DateTime getTime() {
      return time_ == null ? RealtimeData.DateTime.getDefaultInstance() : time_;
    }
    /**
     * <code>required .DateTime time = 2;</code>
     */
    public RealtimeData.DateTimeOrBuilder getTimeOrBuilder() {
      return time_ == null ? RealtimeData.DateTime.getDefaultInstance() : time_;
    }

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

      if (!hasGlu()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTime()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getTime().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeFixed32(1, glu_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getTime());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(1, glu_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getTime());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ThirdPartyHealthGlu)) {
        return super.equals(obj);
      }
      ThirdPartyHealthGlu other = (ThirdPartyHealthGlu) obj;

      if (hasGlu() != other.hasGlu()) return false;
      if (hasGlu()) {
        if (getGlu()
            != other.getGlu()) return false;
      }
      if (hasTime() != other.hasTime()) return false;
      if (hasTime()) {
        if (!getTime()
            .equals(other.getTime())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasGlu()) {
        hash = (37 * hash) + GLU_FIELD_NUMBER;
        hash = (53 * hash) + getGlu();
      }
      if (hasTime()) {
        hash = (37 * hash) + TIME_FIELD_NUMBER;
        hash = (53 * hash) + getTime().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ThirdPartyHealthGlu parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ThirdPartyHealthGlu parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ThirdPartyHealthGlu parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ThirdPartyHealthGlu parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ThirdPartyHealthGlu parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ThirdPartyHealthGlu parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ThirdPartyHealthGlu parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ThirdPartyHealthGlu 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 ThirdPartyHealthGlu parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static ThirdPartyHealthGlu 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 ThirdPartyHealthGlu parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ThirdPartyHealthGlu parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ThirdPartyHealthGlu prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    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;
    }
    /**
     * Protobuf type {@code ThirdPartyHealthGlu}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:ThirdPartyHealthGlu)
        ThirdPartyHealthGluOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ThirdPartyHealthData.internal_static_ThirdPartyHealthGlu_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ThirdPartyHealthData.internal_static_ThirdPartyHealthGlu_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ThirdPartyHealthGlu.class, Builder.class);
      }

      // Construct using ThirdPartyHealthData.ThirdPartyHealthGlu.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getTimeFieldBuilder();
        }
      }
      @Override
      public Builder clear() {
        super.clear();
        glu_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (timeBuilder_ == null) {
          time_ = null;
        } else {
          timeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ThirdPartyHealthData.internal_static_ThirdPartyHealthGlu_descriptor;
      }

      @Override
      public ThirdPartyHealthGlu getDefaultInstanceForType() {
        return ThirdPartyHealthGlu.getDefaultInstance();
      }

      @Override
      public ThirdPartyHealthGlu build() {
        ThirdPartyHealthGlu result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public ThirdPartyHealthGlu buildPartial() {
        ThirdPartyHealthGlu result = new ThirdPartyHealthGlu(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.glu_ = glu_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          if (timeBuilder_ == null) {
            result.time_ = time_;
          } else {
            result.time_ = timeBuilder_.build();
          }
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(ThirdPartyHealthGlu other) {
        if (other == ThirdPartyHealthGlu.getDefaultInstance()) return this;
        if (other.hasGlu()) {
          setGlu(other.getGlu());
        }
        if (other.hasTime()) {
          mergeTime(other.getTime());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @Override
      public final boolean isInitialized() {
        if (!hasGlu()) {
          return false;
        }
        if (!hasTime()) {
          return false;
        }
        if (!getTime().isInitialized()) {
          return false;
        }
        return true;
      }

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

      private int glu_ ;
      /**
       * <code>required fixed32 glu = 1;</code>
       * @return Whether the glu field is set.
       */
      public boolean hasGlu() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required fixed32 glu = 1;</code>
       * @return The glu.
       */
      public int getGlu() {
        return glu_;
      }
      /**
       * <code>required fixed32 glu = 1;</code>
       * @param value The glu to set.
       * @return This builder for chaining.
       */
      public Builder setGlu(int value) {
        bitField0_ |= 0x00000001;
        glu_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required fixed32 glu = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearGlu() {
        bitField0_ = (bitField0_ & ~0x00000001);
        glu_ = 0;
        onChanged();
        return this;
      }

      private RealtimeData.DateTime time_;
      private com.google.protobuf.SingleFieldBuilderV3<
          RealtimeData.DateTime, RealtimeData.DateTime.Builder, RealtimeData.DateTimeOrBuilder> timeBuilder_;
      /**
       * <code>required .DateTime time = 2;</code>
       * @return Whether the time field is set.
       */
      public boolean hasTime() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required .DateTime time = 2;</code>
       * @return The time.
       */
      public RealtimeData.DateTime getTime() {
        if (timeBuilder_ == null) {
          return time_ == null ? RealtimeData.DateTime.getDefaultInstance() : time_;
        } else {
          return timeBuilder_.getMessage();
        }
      }
      /**
       * <code>required .DateTime time = 2;</code>
       */
      public Builder setTime(RealtimeData.DateTime value) {
        if (timeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          time_ = value;
          onChanged();
        } else {
          timeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .DateTime time = 2;</code>
       */
      public Builder setTime(
          RealtimeData.DateTime.Builder builderForValue) {
        if (timeBuilder_ == null) {
          time_ = builderForValue.build();
          onChanged();
        } else {
          timeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .DateTime time = 2;</code>
       */
      public Builder mergeTime(RealtimeData.DateTime value) {
        if (timeBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
              time_ != null &&
              time_ != RealtimeData.DateTime.getDefaultInstance()) {
            time_ =
              RealtimeData.DateTime.newBuilder(time_).mergeFrom(value).buildPartial();
          } else {
            time_ = value;
          }
          onChanged();
        } else {
          timeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .DateTime time = 2;</code>
       */
      public Builder clearTime() {
        if (timeBuilder_ == null) {
          time_ = null;
          onChanged();
        } else {
          timeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <code>required .DateTime time = 2;</code>
       */
      public RealtimeData.DateTime.Builder getTimeBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getTimeFieldBuilder().getBuilder();
      }
      /**
       * <code>required .DateTime time = 2;</code>
       */
      public RealtimeData.DateTimeOrBuilder getTimeOrBuilder() {
        if (timeBuilder_ != null) {
          return timeBuilder_.getMessageOrBuilder();
        } else {
          return time_ == null ?
              RealtimeData.DateTime.getDefaultInstance() : time_;
        }
      }
      /**
       * <code>required .DateTime time = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          RealtimeData.DateTime, RealtimeData.DateTime.Builder, RealtimeData.DateTimeOrBuilder>
          getTimeFieldBuilder() {
        if (timeBuilder_ == null) {
          timeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              RealtimeData.DateTime, RealtimeData.DateTime.Builder, RealtimeData.DateTimeOrBuilder>(
                  getTime(),
                  getParentForChildren(),
                  isClean());
          time_ = null;
        }
        return timeBuilder_;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:ThirdPartyHealthGlu)
    }

    // @@protoc_insertion_point(class_scope:ThirdPartyHealthGlu)
    private static final ThirdPartyHealthGlu DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ThirdPartyHealthGlu();
    }

    public static ThirdPartyHealthGlu getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public ThirdPartyHealthGlu getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ThirdPartyHealthBloodKetonesOrBuilder extends
      // @@protoc_insertion_point(interface_extends:ThirdPartyHealthBloodKetones)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required fixed32 BloodKetones = 1;</code>
     * @return Whether the bloodKetones field is set.
     */
    boolean hasBloodKetones();
    /**
     * <code>required fixed32 BloodKetones = 1;</code>
     * @return The bloodKetones.
     */
    int getBloodKetones();

    /**
     * <code>required .DateTime time = 2;</code>
     * @return Whether the time field is set.
     */
    boolean hasTime();
    /**
     * <code>required .DateTime time = 2;</code>
     * @return The time.
     */
    RealtimeData.DateTime getTime();
    /**
     * <code>required .DateTime time = 2;</code>
     */
    RealtimeData.DateTimeOrBuilder getTimeOrBuilder();
  }
  /**
   * Protobuf type {@code ThirdPartyHealthBloodKetones}
   */
  public  static final class ThirdPartyHealthBloodKetones extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:ThirdPartyHealthBloodKetones)
      ThirdPartyHealthBloodKetonesOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ThirdPartyHealthBloodKetones.newBuilder() to construct.
    private ThirdPartyHealthBloodKetones(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ThirdPartyHealthBloodKetones() {
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new ThirdPartyHealthBloodKetones();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ThirdPartyHealthBloodKetones(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 13: {
              bitField0_ |= 0x00000001;
              bloodKetones_ = input.readFixed32();
              break;
            }
            case 18: {
              RealtimeData.DateTime.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) != 0)) {
                subBuilder = time_.toBuilder();
              }
              time_ = input.readMessage(RealtimeData.DateTime.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(time_);
                time_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, 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 {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ThirdPartyHealthData.internal_static_ThirdPartyHealthBloodKetones_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ThirdPartyHealthData.internal_static_ThirdPartyHealthBloodKetones_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ThirdPartyHealthBloodKetones.class, Builder.class);
    }

    private int bitField0_;
    public static final int BLOODKETONES_FIELD_NUMBER = 1;
    private int bloodKetones_;
    /**
     * <code>required fixed32 BloodKetones = 1;</code>
     * @return Whether the bloodKetones field is set.
     */
    public boolean hasBloodKetones() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required fixed32 BloodKetones = 1;</code>
     * @return The bloodKetones.
     */
    public int getBloodKetones() {
      return bloodKetones_;
    }

    public static final int TIME_FIELD_NUMBER = 2;
    private RealtimeData.DateTime time_;
    /**
     * <code>required .DateTime time = 2;</code>
     * @return Whether the time field is set.
     */
    public boolean hasTime() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required .DateTime time = 2;</code>
     * @return The time.
     */
    public RealtimeData.DateTime getTime() {
      return time_ == null ? RealtimeData.DateTime.getDefaultInstance() : time_;
    }
    /**
     * <code>required .DateTime time = 2;</code>
     */
    public RealtimeData.DateTimeOrBuilder getTimeOrBuilder() {
      return time_ == null ? RealtimeData.DateTime.getDefaultInstance() : time_;
    }

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

      if (!hasBloodKetones()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTime()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getTime().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeFixed32(1, bloodKetones_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getTime());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(1, bloodKetones_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getTime());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ThirdPartyHealthBloodKetones)) {
        return super.equals(obj);
      }
      ThirdPartyHealthBloodKetones other = (ThirdPartyHealthBloodKetones) obj;

      if (hasBloodKetones() != other.hasBloodKetones()) return false;
      if (hasBloodKetones()) {
        if (getBloodKetones()
            != other.getBloodKetones()) return false;
      }
      if (hasTime() != other.hasTime()) return false;
      if (hasTime()) {
        if (!getTime()
            .equals(other.getTime())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasBloodKetones()) {
        hash = (37 * hash) + BLOODKETONES_FIELD_NUMBER;
        hash = (53 * hash) + getBloodKetones();
      }
      if (hasTime()) {
        hash = (37 * hash) + TIME_FIELD_NUMBER;
        hash = (53 * hash) + getTime().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ThirdPartyHealthBloodKetones parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ThirdPartyHealthBloodKetones parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ThirdPartyHealthBloodKetones parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ThirdPartyHealthBloodKetones parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ThirdPartyHealthBloodKetones parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ThirdPartyHealthBloodKetones parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ThirdPartyHealthBloodKetones parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ThirdPartyHealthBloodKetones 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 ThirdPartyHealthBloodKetones parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static ThirdPartyHealthBloodKetones 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 ThirdPartyHealthBloodKetones parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ThirdPartyHealthBloodKetones parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ThirdPartyHealthBloodKetones prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    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;
    }
    /**
     * Protobuf type {@code ThirdPartyHealthBloodKetones}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:ThirdPartyHealthBloodKetones)
        ThirdPartyHealthBloodKetonesOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ThirdPartyHealthData.internal_static_ThirdPartyHealthBloodKetones_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ThirdPartyHealthData.internal_static_ThirdPartyHealthBloodKetones_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ThirdPartyHealthBloodKetones.class, Builder.class);
      }

      // Construct using ThirdPartyHealthData.ThirdPartyHealthBloodKetones.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getTimeFieldBuilder();
        }
      }
      @Override
      public Builder clear() {
        super.clear();
        bloodKetones_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (timeBuilder_ == null) {
          time_ = null;
        } else {
          timeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ThirdPartyHealthData.internal_static_ThirdPartyHealthBloodKetones_descriptor;
      }

      @Override
      public ThirdPartyHealthBloodKetones getDefaultInstanceForType() {
        return ThirdPartyHealthBloodKetones.getDefaultInstance();
      }

      @Override
      public ThirdPartyHealthBloodKetones build() {
        ThirdPartyHealthBloodKetones result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public ThirdPartyHealthBloodKetones buildPartial() {
        ThirdPartyHealthBloodKetones result = new ThirdPartyHealthBloodKetones(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.bloodKetones_ = bloodKetones_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          if (timeBuilder_ == null) {
            result.time_ = time_;
          } else {
            result.time_ = timeBuilder_.build();
          }
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(ThirdPartyHealthBloodKetones other) {
        if (other == ThirdPartyHealthBloodKetones.getDefaultInstance()) return this;
        if (other.hasBloodKetones()) {
          setBloodKetones(other.getBloodKetones());
        }
        if (other.hasTime()) {
          mergeTime(other.getTime());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @Override
      public final boolean isInitialized() {
        if (!hasBloodKetones()) {
          return false;
        }
        if (!hasTime()) {
          return false;
        }
        if (!getTime().isInitialized()) {
          return false;
        }
        return true;
      }

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

      private int bloodKetones_ ;
      /**
       * <code>required fixed32 BloodKetones = 1;</code>
       * @return Whether the bloodKetones field is set.
       */
      public boolean hasBloodKetones() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required fixed32 BloodKetones = 1;</code>
       * @return The bloodKetones.
       */
      public int getBloodKetones() {
        return bloodKetones_;
      }
      /**
       * <code>required fixed32 BloodKetones = 1;</code>
       * @param value The bloodKetones to set.
       * @return This builder for chaining.
       */
      public Builder setBloodKetones(int value) {
        bitField0_ |= 0x00000001;
        bloodKetones_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required fixed32 BloodKetones = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearBloodKetones() {
        bitField0_ = (bitField0_ & ~0x00000001);
        bloodKetones_ = 0;
        onChanged();
        return this;
      }

      private RealtimeData.DateTime time_;
      private com.google.protobuf.SingleFieldBuilderV3<
          RealtimeData.DateTime, RealtimeData.DateTime.Builder, RealtimeData.DateTimeOrBuilder> timeBuilder_;
      /**
       * <code>required .DateTime time = 2;</code>
       * @return Whether the time field is set.
       */
      public boolean hasTime() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required .DateTime time = 2;</code>
       * @return The time.
       */
      public RealtimeData.DateTime getTime() {
        if (timeBuilder_ == null) {
          return time_ == null ? RealtimeData.DateTime.getDefaultInstance() : time_;
        } else {
          return timeBuilder_.getMessage();
        }
      }
      /**
       * <code>required .DateTime time = 2;</code>
       */
      public Builder setTime(RealtimeData.DateTime value) {
        if (timeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          time_ = value;
          onChanged();
        } else {
          timeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .DateTime time = 2;</code>
       */
      public Builder setTime(
          RealtimeData.DateTime.Builder builderForValue) {
        if (timeBuilder_ == null) {
          time_ = builderForValue.build();
          onChanged();
        } else {
          timeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .DateTime time = 2;</code>
       */
      public Builder mergeTime(RealtimeData.DateTime value) {
        if (timeBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
              time_ != null &&
              time_ != RealtimeData.DateTime.getDefaultInstance()) {
            time_ =
              RealtimeData.DateTime.newBuilder(time_).mergeFrom(value).buildPartial();
          } else {
            time_ = value;
          }
          onChanged();
        } else {
          timeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .DateTime time = 2;</code>
       */
      public Builder clearTime() {
        if (timeBuilder_ == null) {
          time_ = null;
          onChanged();
        } else {
          timeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <code>required .DateTime time = 2;</code>
       */
      public RealtimeData.DateTime.Builder getTimeBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getTimeFieldBuilder().getBuilder();
      }
      /**
       * <code>required .DateTime time = 2;</code>
       */
      public RealtimeData.DateTimeOrBuilder getTimeOrBuilder() {
        if (timeBuilder_ != null) {
          return timeBuilder_.getMessageOrBuilder();
        } else {
          return time_ == null ?
              RealtimeData.DateTime.getDefaultInstance() : time_;
        }
      }
      /**
       * <code>required .DateTime time = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          RealtimeData.DateTime, RealtimeData.DateTime.Builder, RealtimeData.DateTimeOrBuilder>
          getTimeFieldBuilder() {
        if (timeBuilder_ == null) {
          timeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              RealtimeData.DateTime, RealtimeData.DateTime.Builder, RealtimeData.DateTimeOrBuilder>(
                  getTime(),
                  getParentForChildren(),
                  isClean());
          time_ = null;
        }
        return timeBuilder_;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:ThirdPartyHealthBloodKetones)
    }

    // @@protoc_insertion_point(class_scope:ThirdPartyHealthBloodKetones)
    private static final ThirdPartyHealthBloodKetones DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ThirdPartyHealthBloodKetones();
    }

    public static ThirdPartyHealthBloodKetones getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public ThirdPartyHealthBloodKetones getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ThirdPartyHealthUricAcidOrBuilder extends
      // @@protoc_insertion_point(interface_extends:ThirdPartyHealthUricAcid)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required fixed32 UricAcid = 1;</code>
     * @return Whether the uricAcid field is set.
     */
    boolean hasUricAcid();
    /**
     * <code>required fixed32 UricAcid = 1;</code>
     * @return The uricAcid.
     */
    int getUricAcid();

    /**
     * <code>required .DateTime time = 2;</code>
     * @return Whether the time field is set.
     */
    boolean hasTime();
    /**
     * <code>required .DateTime time = 2;</code>
     * @return The time.
     */
    RealtimeData.DateTime getTime();
    /**
     * <code>required .DateTime time = 2;</code>
     */
    RealtimeData.DateTimeOrBuilder getTimeOrBuilder();
  }
  /**
   * Protobuf type {@code ThirdPartyHealthUricAcid}
   */
  public  static final class ThirdPartyHealthUricAcid extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:ThirdPartyHealthUricAcid)
      ThirdPartyHealthUricAcidOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ThirdPartyHealthUricAcid.newBuilder() to construct.
    private ThirdPartyHealthUricAcid(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ThirdPartyHealthUricAcid() {
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new ThirdPartyHealthUricAcid();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ThirdPartyHealthUricAcid(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 13: {
              bitField0_ |= 0x00000001;
              uricAcid_ = input.readFixed32();
              break;
            }
            case 18: {
              RealtimeData.DateTime.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) != 0)) {
                subBuilder = time_.toBuilder();
              }
              time_ = input.readMessage(RealtimeData.DateTime.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(time_);
                time_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, 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 {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ThirdPartyHealthData.internal_static_ThirdPartyHealthUricAcid_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ThirdPartyHealthData.internal_static_ThirdPartyHealthUricAcid_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ThirdPartyHealthUricAcid.class, Builder.class);
    }

    private int bitField0_;
    public static final int URICACID_FIELD_NUMBER = 1;
    private int uricAcid_;
    /**
     * <code>required fixed32 UricAcid = 1;</code>
     * @return Whether the uricAcid field is set.
     */
    public boolean hasUricAcid() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required fixed32 UricAcid = 1;</code>
     * @return The uricAcid.
     */
    public int getUricAcid() {
      return uricAcid_;
    }

    public static final int TIME_FIELD_NUMBER = 2;
    private RealtimeData.DateTime time_;
    /**
     * <code>required .DateTime time = 2;</code>
     * @return Whether the time field is set.
     */
    public boolean hasTime() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required .DateTime time = 2;</code>
     * @return The time.
     */
    public RealtimeData.DateTime getTime() {
      return time_ == null ? RealtimeData.DateTime.getDefaultInstance() : time_;
    }
    /**
     * <code>required .DateTime time = 2;</code>
     */
    public RealtimeData.DateTimeOrBuilder getTimeOrBuilder() {
      return time_ == null ? RealtimeData.DateTime.getDefaultInstance() : time_;
    }

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

      if (!hasUricAcid()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTime()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getTime().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeFixed32(1, uricAcid_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getTime());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(1, uricAcid_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getTime());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ThirdPartyHealthUricAcid)) {
        return super.equals(obj);
      }
      ThirdPartyHealthUricAcid other = (ThirdPartyHealthUricAcid) obj;

      if (hasUricAcid() != other.hasUricAcid()) return false;
      if (hasUricAcid()) {
        if (getUricAcid()
            != other.getUricAcid()) return false;
      }
      if (hasTime() != other.hasTime()) return false;
      if (hasTime()) {
        if (!getTime()
            .equals(other.getTime())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasUricAcid()) {
        hash = (37 * hash) + URICACID_FIELD_NUMBER;
        hash = (53 * hash) + getUricAcid();
      }
      if (hasTime()) {
        hash = (37 * hash) + TIME_FIELD_NUMBER;
        hash = (53 * hash) + getTime().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ThirdPartyHealthUricAcid parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ThirdPartyHealthUricAcid parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ThirdPartyHealthUricAcid parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ThirdPartyHealthUricAcid parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ThirdPartyHealthUricAcid parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ThirdPartyHealthUricAcid parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ThirdPartyHealthUricAcid parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ThirdPartyHealthUricAcid 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 ThirdPartyHealthUricAcid parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static ThirdPartyHealthUricAcid 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 ThirdPartyHealthUricAcid parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ThirdPartyHealthUricAcid parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ThirdPartyHealthUricAcid prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    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;
    }
    /**
     * Protobuf type {@code ThirdPartyHealthUricAcid}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:ThirdPartyHealthUricAcid)
        ThirdPartyHealthUricAcidOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ThirdPartyHealthData.internal_static_ThirdPartyHealthUricAcid_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ThirdPartyHealthData.internal_static_ThirdPartyHealthUricAcid_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ThirdPartyHealthUricAcid.class, Builder.class);
      }

      // Construct using ThirdPartyHealthData.ThirdPartyHealthUricAcid.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getTimeFieldBuilder();
        }
      }
      @Override
      public Builder clear() {
        super.clear();
        uricAcid_ = 0;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (timeBuilder_ == null) {
          time_ = null;
        } else {
          timeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ThirdPartyHealthData.internal_static_ThirdPartyHealthUricAcid_descriptor;
      }

      @Override
      public ThirdPartyHealthUricAcid getDefaultInstanceForType() {
        return ThirdPartyHealthUricAcid.getDefaultInstance();
      }

      @Override
      public ThirdPartyHealthUricAcid build() {
        ThirdPartyHealthUricAcid result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public ThirdPartyHealthUricAcid buildPartial() {
        ThirdPartyHealthUricAcid result = new ThirdPartyHealthUricAcid(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.uricAcid_ = uricAcid_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          if (timeBuilder_ == null) {
            result.time_ = time_;
          } else {
            result.time_ = timeBuilder_.build();
          }
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(ThirdPartyHealthUricAcid other) {
        if (other == ThirdPartyHealthUricAcid.getDefaultInstance()) return this;
        if (other.hasUricAcid()) {
          setUricAcid(other.getUricAcid());
        }
        if (other.hasTime()) {
          mergeTime(other.getTime());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @Override
      public final boolean isInitialized() {
        if (!hasUricAcid()) {
          return false;
        }
        if (!hasTime()) {
          return false;
        }
        if (!getTime().isInitialized()) {
          return false;
        }
        return true;
      }

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

      private int uricAcid_ ;
      /**
       * <code>required fixed32 UricAcid = 1;</code>
       * @return Whether the uricAcid field is set.
       */
      public boolean hasUricAcid() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required fixed32 UricAcid = 1;</code>
       * @return The uricAcid.
       */
      public int getUricAcid() {
        return uricAcid_;
      }
      /**
       * <code>required fixed32 UricAcid = 1;</code>
       * @param value The uricAcid to set.
       * @return This builder for chaining.
       */
      public Builder setUricAcid(int value) {
        bitField0_ |= 0x00000001;
        uricAcid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required fixed32 UricAcid = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearUricAcid() {
        bitField0_ = (bitField0_ & ~0x00000001);
        uricAcid_ = 0;
        onChanged();
        return this;
      }

      private RealtimeData.DateTime time_;
      private com.google.protobuf.SingleFieldBuilderV3<
          RealtimeData.DateTime, RealtimeData.DateTime.Builder, RealtimeData.DateTimeOrBuilder> timeBuilder_;
      /**
       * <code>required .DateTime time = 2;</code>
       * @return Whether the time field is set.
       */
      public boolean hasTime() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required .DateTime time = 2;</code>
       * @return The time.
       */
      public RealtimeData.DateTime getTime() {
        if (timeBuilder_ == null) {
          return time_ == null ? RealtimeData.DateTime.getDefaultInstance() : time_;
        } else {
          return timeBuilder_.getMessage();
        }
      }
      /**
       * <code>required .DateTime time = 2;</code>
       */
      public Builder setTime(RealtimeData.DateTime value) {
        if (timeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          time_ = value;
          onChanged();
        } else {
          timeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .DateTime time = 2;</code>
       */
      public Builder setTime(
          RealtimeData.DateTime.Builder builderForValue) {
        if (timeBuilder_ == null) {
          time_ = builderForValue.build();
          onChanged();
        } else {
          timeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .DateTime time = 2;</code>
       */
      public Builder mergeTime(RealtimeData.DateTime value) {
        if (timeBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
              time_ != null &&
              time_ != RealtimeData.DateTime.getDefaultInstance()) {
            time_ =
              RealtimeData.DateTime.newBuilder(time_).mergeFrom(value).buildPartial();
          } else {
            time_ = value;
          }
          onChanged();
        } else {
          timeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>required .DateTime time = 2;</code>
       */
      public Builder clearTime() {
        if (timeBuilder_ == null) {
          time_ = null;
          onChanged();
        } else {
          timeBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <code>required .DateTime time = 2;</code>
       */
      public RealtimeData.DateTime.Builder getTimeBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getTimeFieldBuilder().getBuilder();
      }
      /**
       * <code>required .DateTime time = 2;</code>
       */
      public RealtimeData.DateTimeOrBuilder getTimeOrBuilder() {
        if (timeBuilder_ != null) {
          return timeBuilder_.getMessageOrBuilder();
        } else {
          return time_ == null ?
              RealtimeData.DateTime.getDefaultInstance() : time_;
        }
      }
      /**
       * <code>required .DateTime time = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          RealtimeData.DateTime, RealtimeData.DateTime.Builder, RealtimeData.DateTimeOrBuilder>
          getTimeFieldBuilder() {
        if (timeBuilder_ == null) {
          timeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              RealtimeData.DateTime, RealtimeData.DateTime.Builder, RealtimeData.DateTimeOrBuilder>(
                  getTime(),
                  getParentForChildren(),
                  isClean());
          time_ = null;
        }
        return timeBuilder_;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:ThirdPartyHealthUricAcid)
    }

    // @@protoc_insertion_point(class_scope:ThirdPartyHealthUricAcid)
    private static final ThirdPartyHealthUricAcid DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ThirdPartyHealthUricAcid();
    }

    public static ThirdPartyHealthUricAcid getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public ThirdPartyHealthUricAcid getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ThirdPartyDataHealthOrBuilder extends
      // @@protoc_insertion_point(interface_extends:ThirdPartyDataHealth)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required string dev_name = 1;</code>
     * @return Whether the devName field is set.
     */
    boolean hasDevName();
    /**
     * <code>required string dev_name = 1;</code>
     * @return The devName.
     */
    String getDevName();
    /**
     * <code>required string dev_name = 1;</code>
     * @return The bytes for devName.
     */
    com.google.protobuf.ByteString
        getDevNameBytes();

    /**
     * <code>required string mac_addr = 2;</code>
     * @return Whether the macAddr field is set.
     */
    boolean hasMacAddr();
    /**
     * <code>required string mac_addr = 2;</code>
     * @return The macAddr.
     */
    String getMacAddr();
    /**
     * <code>required string mac_addr = 2;</code>
     * @return The bytes for macAddr.
     */
    com.google.protobuf.ByteString
        getMacAddrBytes();

    /**
     * <code>required fixed32 dev_type = 3;</code>
     * @return Whether the devType field is set.
     */
    boolean hasDevType();
    /**
     * <code>required fixed32 dev_type = 3;</code>
     * @return The devType.
     */
    int getDevType();

    /**
     * <code>required fixed32 user = 4;</code>
     * @return Whether the user field is set.
     */
    boolean hasUser();
    /**
     * <code>required fixed32 user = 4;</code>
     * @return The user.
     */
    int getUser();

    /**
     * <code>optional .ThirdPartyHealthBp bp_data = 5;</code>
     * @return Whether the bpData field is set.
     */
    boolean hasBpData();
    /**
     * <code>optional .ThirdPartyHealthBp bp_data = 5;</code>
     * @return The bpData.
     */
    ThirdPartyHealthBp getBpData();
    /**
     * <code>optional .ThirdPartyHealthBp bp_data = 5;</code>
     */
    ThirdPartyHealthBpOrBuilder getBpDataOrBuilder();

    /**
     * <code>optional .ThirdPartyHealthScale scale_data = 6;</code>
     * @return Whether the scaleData field is set.
     */
    boolean hasScaleData();
    /**
     * <code>optional .ThirdPartyHealthScale scale_data = 6;</code>
     * @return The scaleData.
     */
    ThirdPartyHealthScale getScaleData();
    /**
     * <code>optional .ThirdPartyHealthScale scale_data = 6;</code>
     */
    ThirdPartyHealthScaleOrBuilder getScaleDataOrBuilder();

    /**
     * <code>optional .ThirdPartyHealthSpo2 Spo2_data = 7;</code>
     * @return Whether the spo2Data field is set.
     */
    boolean hasSpo2Data();
    /**
     * <code>optional .ThirdPartyHealthSpo2 Spo2_data = 7;</code>
     * @return The spo2Data.
     */
    ThirdPartyHealthSpo2 getSpo2Data();
    /**
     * <code>optional .ThirdPartyHealthSpo2 Spo2_data = 7;</code>
     */
    ThirdPartyHealthSpo2OrBuilder getSpo2DataOrBuilder();

    /**
     * <code>optional .ThirdPartyHealthTemp Temp_data = 8;</code>
     * @return Whether the tempData field is set.
     */
    boolean hasTempData();
    /**
     * <code>optional .ThirdPartyHealthTemp Temp_data = 8;</code>
     * @return The tempData.
     */
    ThirdPartyHealthTemp getTempData();
    /**
     * <code>optional .ThirdPartyHealthTemp Temp_data = 8;</code>
     */
    ThirdPartyHealthTempOrBuilder getTempDataOrBuilder();

    /**
     * <code>optional .ThirdPartyHealthGlu Glu_data = 9;</code>
     * @return Whether the gluData field is set.
     */
    boolean hasGluData();
    /**
     * <code>optional .ThirdPartyHealthGlu Glu_data = 9;</code>
     * @return The gluData.
     */
    ThirdPartyHealthGlu getGluData();
    /**
     * <code>optional .ThirdPartyHealthGlu Glu_data = 9;</code>
     */
    ThirdPartyHealthGluOrBuilder getGluDataOrBuilder();

    /**
     * <code>optional .ThirdPartyHealthBloodKetones BloodKetones_data = 10;</code>
     * @return Whether the bloodKetonesData field is set.
     */
    boolean hasBloodKetonesData();
    /**
     * <code>optional .ThirdPartyHealthBloodKetones BloodKetones_data = 10;</code>
     * @return The bloodKetonesData.
     */
    ThirdPartyHealthBloodKetones getBloodKetonesData();
    /**
     * <code>optional .ThirdPartyHealthBloodKetones BloodKetones_data = 10;</code>
     */
    ThirdPartyHealthBloodKetonesOrBuilder getBloodKetonesDataOrBuilder();

    /**
     * <code>optional .ThirdPartyHealthUricAcid UricAcid_data = 11;</code>
     * @return Whether the uricAcidData field is set.
     */
    boolean hasUricAcidData();
    /**
     * <code>optional .ThirdPartyHealthUricAcid UricAcid_data = 11;</code>
     * @return The uricAcidData.
     */
    ThirdPartyHealthUricAcid getUricAcidData();
    /**
     * <code>optional .ThirdPartyHealthUricAcid UricAcid_data = 11;</code>
     */
    ThirdPartyHealthUricAcidOrBuilder getUricAcidDataOrBuilder();
  }
  /**
   * Protobuf type {@code ThirdPartyDataHealth}
   */
  public  static final class ThirdPartyDataHealth extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:ThirdPartyDataHealth)
      ThirdPartyDataHealthOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ThirdPartyDataHealth.newBuilder() to construct.
    private ThirdPartyDataHealth(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ThirdPartyDataHealth() {
      devName_ = "";
      macAddr_ = "";
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new ThirdPartyDataHealth();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ThirdPartyDataHealth(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              devName_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000002;
              macAddr_ = bs;
              break;
            }
            case 29: {
              bitField0_ |= 0x00000004;
              devType_ = input.readFixed32();
              break;
            }
            case 37: {
              bitField0_ |= 0x00000008;
              user_ = input.readFixed32();
              break;
            }
            case 42: {
              ThirdPartyHealthBp.Builder subBuilder = null;
              if (((bitField0_ & 0x00000010) != 0)) {
                subBuilder = bpData_.toBuilder();
              }
              bpData_ = input.readMessage(ThirdPartyHealthBp.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(bpData_);
                bpData_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000010;
              break;
            }
            case 50: {
              ThirdPartyHealthScale.Builder subBuilder = null;
              if (((bitField0_ & 0x00000020) != 0)) {
                subBuilder = scaleData_.toBuilder();
              }
              scaleData_ = input.readMessage(ThirdPartyHealthScale.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(scaleData_);
                scaleData_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000020;
              break;
            }
            case 58: {
              ThirdPartyHealthSpo2.Builder subBuilder = null;
              if (((bitField0_ & 0x00000040) != 0)) {
                subBuilder = spo2Data_.toBuilder();
              }
              spo2Data_ = input.readMessage(ThirdPartyHealthSpo2.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(spo2Data_);
                spo2Data_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000040;
              break;
            }
            case 66: {
              ThirdPartyHealthTemp.Builder subBuilder = null;
              if (((bitField0_ & 0x00000080) != 0)) {
                subBuilder = tempData_.toBuilder();
              }
              tempData_ = input.readMessage(ThirdPartyHealthTemp.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(tempData_);
                tempData_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000080;
              break;
            }
            case 74: {
              ThirdPartyHealthGlu.Builder subBuilder = null;
              if (((bitField0_ & 0x00000100) != 0)) {
                subBuilder = gluData_.toBuilder();
              }
              gluData_ = input.readMessage(ThirdPartyHealthGlu.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(gluData_);
                gluData_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000100;
              break;
            }
            case 82: {
              ThirdPartyHealthBloodKetones.Builder subBuilder = null;
              if (((bitField0_ & 0x00000200) != 0)) {
                subBuilder = bloodKetonesData_.toBuilder();
              }
              bloodKetonesData_ = input.readMessage(ThirdPartyHealthBloodKetones.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(bloodKetonesData_);
                bloodKetonesData_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000200;
              break;
            }
            case 90: {
              ThirdPartyHealthUricAcid.Builder subBuilder = null;
              if (((bitField0_ & 0x00000400) != 0)) {
                subBuilder = uricAcidData_.toBuilder();
              }
              uricAcidData_ = input.readMessage(ThirdPartyHealthUricAcid.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(uricAcidData_);
                uricAcidData_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000400;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, 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 {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ThirdPartyHealthData.internal_static_ThirdPartyDataHealth_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ThirdPartyHealthData.internal_static_ThirdPartyDataHealth_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ThirdPartyDataHealth.class, Builder.class);
    }

    private int bitField0_;
    public static final int DEV_NAME_FIELD_NUMBER = 1;
    private volatile Object devName_;
    /**
     * <code>required string dev_name = 1;</code>
     * @return Whether the devName field is set.
     */
    public boolean hasDevName() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required string dev_name = 1;</code>
     * @return The devName.
     */
    public String getDevName() {
      Object ref = devName_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          devName_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string dev_name = 1;</code>
     * @return The bytes for devName.
     */
    public com.google.protobuf.ByteString
        getDevNameBytes() {
      Object ref = devName_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        devName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MAC_ADDR_FIELD_NUMBER = 2;
    private volatile Object macAddr_;
    /**
     * <code>required string mac_addr = 2;</code>
     * @return Whether the macAddr field is set.
     */
    public boolean hasMacAddr() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required string mac_addr = 2;</code>
     * @return The macAddr.
     */
    public String getMacAddr() {
      Object ref = macAddr_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          macAddr_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string mac_addr = 2;</code>
     * @return The bytes for macAddr.
     */
    public com.google.protobuf.ByteString
        getMacAddrBytes() {
      Object ref = macAddr_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        macAddr_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DEV_TYPE_FIELD_NUMBER = 3;
    private int devType_;
    /**
     * <code>required fixed32 dev_type = 3;</code>
     * @return Whether the devType field is set.
     */
    public boolean hasDevType() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>required fixed32 dev_type = 3;</code>
     * @return The devType.
     */
    public int getDevType() {
      return devType_;
    }

    public static final int USER_FIELD_NUMBER = 4;
    private int user_;
    /**
     * <code>required fixed32 user = 4;</code>
     * @return Whether the user field is set.
     */
    public boolean hasUser() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>required fixed32 user = 4;</code>
     * @return The user.
     */
    public int getUser() {
      return user_;
    }

    public static final int BP_DATA_FIELD_NUMBER = 5;
    private ThirdPartyHealthBp bpData_;
    /**
     * <code>optional .ThirdPartyHealthBp bp_data = 5;</code>
     * @return Whether the bpData field is set.
     */
    public boolean hasBpData() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>optional .ThirdPartyHealthBp bp_data = 5;</code>
     * @return The bpData.
     */
    public ThirdPartyHealthBp getBpData() {
      return bpData_ == null ? ThirdPartyHealthBp.getDefaultInstance() : bpData_;
    }
    /**
     * <code>optional .ThirdPartyHealthBp bp_data = 5;</code>
     */
    public ThirdPartyHealthBpOrBuilder getBpDataOrBuilder() {
      return bpData_ == null ? ThirdPartyHealthBp.getDefaultInstance() : bpData_;
    }

    public static final int SCALE_DATA_FIELD_NUMBER = 6;
    private ThirdPartyHealthScale scaleData_;
    /**
     * <code>optional .ThirdPartyHealthScale scale_data = 6;</code>
     * @return Whether the scaleData field is set.
     */
    public boolean hasScaleData() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <code>optional .ThirdPartyHealthScale scale_data = 6;</code>
     * @return The scaleData.
     */
    public ThirdPartyHealthScale getScaleData() {
      return scaleData_ == null ? ThirdPartyHealthScale.getDefaultInstance() : scaleData_;
    }
    /**
     * <code>optional .ThirdPartyHealthScale scale_data = 6;</code>
     */
    public ThirdPartyHealthScaleOrBuilder getScaleDataOrBuilder() {
      return scaleData_ == null ? ThirdPartyHealthScale.getDefaultInstance() : scaleData_;
    }

    public static final int SPO2_DATA_FIELD_NUMBER = 7;
    private ThirdPartyHealthSpo2 spo2Data_;
    /**
     * <code>optional .ThirdPartyHealthSpo2 Spo2_data = 7;</code>
     * @return Whether the spo2Data field is set.
     */
    public boolean hasSpo2Data() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <code>optional .ThirdPartyHealthSpo2 Spo2_data = 7;</code>
     * @return The spo2Data.
     */
    public ThirdPartyHealthSpo2 getSpo2Data() {
      return spo2Data_ == null ? ThirdPartyHealthSpo2.getDefaultInstance() : spo2Data_;
    }
    /**
     * <code>optional .ThirdPartyHealthSpo2 Spo2_data = 7;</code>
     */
    public ThirdPartyHealthSpo2OrBuilder getSpo2DataOrBuilder() {
      return spo2Data_ == null ? ThirdPartyHealthSpo2.getDefaultInstance() : spo2Data_;
    }

    public static final int TEMP_DATA_FIELD_NUMBER = 8;
    private ThirdPartyHealthTemp tempData_;
    /**
     * <code>optional .ThirdPartyHealthTemp Temp_data = 8;</code>
     * @return Whether the tempData field is set.
     */
    public boolean hasTempData() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <code>optional .ThirdPartyHealthTemp Temp_data = 8;</code>
     * @return The tempData.
     */
    public ThirdPartyHealthTemp getTempData() {
      return tempData_ == null ? ThirdPartyHealthTemp.getDefaultInstance() : tempData_;
    }
    /**
     * <code>optional .ThirdPartyHealthTemp Temp_data = 8;</code>
     */
    public ThirdPartyHealthTempOrBuilder getTempDataOrBuilder() {
      return tempData_ == null ? ThirdPartyHealthTemp.getDefaultInstance() : tempData_;
    }

    public static final int GLU_DATA_FIELD_NUMBER = 9;
    private ThirdPartyHealthGlu gluData_;
    /**
     * <code>optional .ThirdPartyHealthGlu Glu_data = 9;</code>
     * @return Whether the gluData field is set.
     */
    public boolean hasGluData() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <code>optional .ThirdPartyHealthGlu Glu_data = 9;</code>
     * @return The gluData.
     */
    public ThirdPartyHealthGlu getGluData() {
      return gluData_ == null ? ThirdPartyHealthGlu.getDefaultInstance() : gluData_;
    }
    /**
     * <code>optional .ThirdPartyHealthGlu Glu_data = 9;</code>
     */
    public ThirdPartyHealthGluOrBuilder getGluDataOrBuilder() {
      return gluData_ == null ? ThirdPartyHealthGlu.getDefaultInstance() : gluData_;
    }

    public static final int BLOODKETONES_DATA_FIELD_NUMBER = 10;
    private ThirdPartyHealthBloodKetones bloodKetonesData_;
    /**
     * <code>optional .ThirdPartyHealthBloodKetones BloodKetones_data = 10;</code>
     * @return Whether the bloodKetonesData field is set.
     */
    public boolean hasBloodKetonesData() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <code>optional .ThirdPartyHealthBloodKetones BloodKetones_data = 10;</code>
     * @return The bloodKetonesData.
     */
    public ThirdPartyHealthBloodKetones getBloodKetonesData() {
      return bloodKetonesData_ == null ? ThirdPartyHealthBloodKetones.getDefaultInstance() : bloodKetonesData_;
    }
    /**
     * <code>optional .ThirdPartyHealthBloodKetones BloodKetones_data = 10;</code>
     */
    public ThirdPartyHealthBloodKetonesOrBuilder getBloodKetonesDataOrBuilder() {
      return bloodKetonesData_ == null ? ThirdPartyHealthBloodKetones.getDefaultInstance() : bloodKetonesData_;
    }

    public static final int URICACID_DATA_FIELD_NUMBER = 11;
    private ThirdPartyHealthUricAcid uricAcidData_;
    /**
     * <code>optional .ThirdPartyHealthUricAcid UricAcid_data = 11;</code>
     * @return Whether the uricAcidData field is set.
     */
    public boolean hasUricAcidData() {
      return ((bitField0_ & 0x00000400) != 0);
    }
    /**
     * <code>optional .ThirdPartyHealthUricAcid UricAcid_data = 11;</code>
     * @return The uricAcidData.
     */
    public ThirdPartyHealthUricAcid getUricAcidData() {
      return uricAcidData_ == null ? ThirdPartyHealthUricAcid.getDefaultInstance() : uricAcidData_;
    }
    /**
     * <code>optional .ThirdPartyHealthUricAcid UricAcid_data = 11;</code>
     */
    public ThirdPartyHealthUricAcidOrBuilder getUricAcidDataOrBuilder() {
      return uricAcidData_ == null ? ThirdPartyHealthUricAcid.getDefaultInstance() : uricAcidData_;
    }

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

      if (!hasDevName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasMacAddr()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasDevType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasUser()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (hasBpData()) {
        if (!getBpData().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasScaleData()) {
        if (!getScaleData().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasSpo2Data()) {
        if (!getSpo2Data().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasTempData()) {
        if (!getTempData().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasGluData()) {
        if (!getGluData().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasBloodKetonesData()) {
        if (!getBloodKetonesData().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasUricAcidData()) {
        if (!getUricAcidData().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, devName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, macAddr_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeFixed32(3, devType_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeFixed32(4, user_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeMessage(5, getBpData());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeMessage(6, getScaleData());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeMessage(7, getSpo2Data());
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeMessage(8, getTempData());
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        output.writeMessage(9, getGluData());
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        output.writeMessage(10, getBloodKetonesData());
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        output.writeMessage(11, getUricAcidData());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, devName_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, macAddr_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(3, devType_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFixed32Size(4, user_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getBpData());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getScaleData());
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getSpo2Data());
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getTempData());
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, getGluData());
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, getBloodKetonesData());
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, getUricAcidData());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof ThirdPartyDataHealth)) {
        return super.equals(obj);
      }
      ThirdPartyDataHealth other = (ThirdPartyDataHealth) obj;

      if (hasDevName() != other.hasDevName()) return false;
      if (hasDevName()) {
        if (!getDevName()
            .equals(other.getDevName())) return false;
      }
      if (hasMacAddr() != other.hasMacAddr()) return false;
      if (hasMacAddr()) {
        if (!getMacAddr()
            .equals(other.getMacAddr())) return false;
      }
      if (hasDevType() != other.hasDevType()) return false;
      if (hasDevType()) {
        if (getDevType()
            != other.getDevType()) return false;
      }
      if (hasUser() != other.hasUser()) return false;
      if (hasUser()) {
        if (getUser()
            != other.getUser()) return false;
      }
      if (hasBpData() != other.hasBpData()) return false;
      if (hasBpData()) {
        if (!getBpData()
            .equals(other.getBpData())) return false;
      }
      if (hasScaleData() != other.hasScaleData()) return false;
      if (hasScaleData()) {
        if (!getScaleData()
            .equals(other.getScaleData())) return false;
      }
      if (hasSpo2Data() != other.hasSpo2Data()) return false;
      if (hasSpo2Data()) {
        if (!getSpo2Data()
            .equals(other.getSpo2Data())) return false;
      }
      if (hasTempData() != other.hasTempData()) return false;
      if (hasTempData()) {
        if (!getTempData()
            .equals(other.getTempData())) return false;
      }
      if (hasGluData() != other.hasGluData()) return false;
      if (hasGluData()) {
        if (!getGluData()
            .equals(other.getGluData())) return false;
      }
      if (hasBloodKetonesData() != other.hasBloodKetonesData()) return false;
      if (hasBloodKetonesData()) {
        if (!getBloodKetonesData()
            .equals(other.getBloodKetonesData())) return false;
      }
      if (hasUricAcidData() != other.hasUricAcidData()) return false;
      if (hasUricAcidData()) {
        if (!getUricAcidData()
            .equals(other.getUricAcidData())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasDevName()) {
        hash = (37 * hash) + DEV_NAME_FIELD_NUMBER;
        hash = (53 * hash) + getDevName().hashCode();
      }
      if (hasMacAddr()) {
        hash = (37 * hash) + MAC_ADDR_FIELD_NUMBER;
        hash = (53 * hash) + getMacAddr().hashCode();
      }
      if (hasDevType()) {
        hash = (37 * hash) + DEV_TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getDevType();
      }
      if (hasUser()) {
        hash = (37 * hash) + USER_FIELD_NUMBER;
        hash = (53 * hash) + getUser();
      }
      if (hasBpData()) {
        hash = (37 * hash) + BP_DATA_FIELD_NUMBER;
        hash = (53 * hash) + getBpData().hashCode();
      }
      if (hasScaleData()) {
        hash = (37 * hash) + SCALE_DATA_FIELD_NUMBER;
        hash = (53 * hash) + getScaleData().hashCode();
      }
      if (hasSpo2Data()) {
        hash = (37 * hash) + SPO2_DATA_FIELD_NUMBER;
        hash = (53 * hash) + getSpo2Data().hashCode();
      }
      if (hasTempData()) {
        hash = (37 * hash) + TEMP_DATA_FIELD_NUMBER;
        hash = (53 * hash) + getTempData().hashCode();
      }
      if (hasGluData()) {
        hash = (37 * hash) + GLU_DATA_FIELD_NUMBER;
        hash = (53 * hash) + getGluData().hashCode();
      }
      if (hasBloodKetonesData()) {
        hash = (37 * hash) + BLOODKETONES_DATA_FIELD_NUMBER;
        hash = (53 * hash) + getBloodKetonesData().hashCode();
      }
      if (hasUricAcidData()) {
        hash = (37 * hash) + URICACID_DATA_FIELD_NUMBER;
        hash = (53 * hash) + getUricAcidData().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ThirdPartyDataHealth parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ThirdPartyDataHealth parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ThirdPartyDataHealth parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ThirdPartyDataHealth parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ThirdPartyDataHealth parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ThirdPartyDataHealth parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ThirdPartyDataHealth parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ThirdPartyDataHealth 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 ThirdPartyDataHealth parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static ThirdPartyDataHealth 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 ThirdPartyDataHealth parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ThirdPartyDataHealth parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ThirdPartyDataHealth prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    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;
    }
    /**
     * Protobuf type {@code ThirdPartyDataHealth}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:ThirdPartyDataHealth)
        ThirdPartyDataHealthOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ThirdPartyHealthData.internal_static_ThirdPartyDataHealth_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ThirdPartyHealthData.internal_static_ThirdPartyDataHealth_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ThirdPartyDataHealth.class, Builder.class);
      }

      // Construct using ThirdPartyHealthData.ThirdPartyDataHealth.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getBpDataFieldBuilder();
          getScaleDataFieldBuilder();
          getSpo2DataFieldBuilder();
          getTempDataFieldBuilder();
          getGluDataFieldBuilder();
          getBloodKetonesDataFieldBuilder();
          getUricAcidDataFieldBuilder();
        }
      }
      @Override
      public Builder clear() {
        super.clear();
        devName_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        macAddr_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        devType_ = 0;
        bitField0_ = (bitField0_ & ~0x00000004);
        user_ = 0;
        bitField0_ = (bitField0_ & ~0x00000008);
        if (bpDataBuilder_ == null) {
          bpData_ = null;
        } else {
          bpDataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        if (scaleDataBuilder_ == null) {
          scaleData_ = null;
        } else {
          scaleDataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000020);
        if (spo2DataBuilder_ == null) {
          spo2Data_ = null;
        } else {
          spo2DataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        if (tempDataBuilder_ == null) {
          tempData_ = null;
        } else {
          tempDataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        if (gluDataBuilder_ == null) {
          gluData_ = null;
        } else {
          gluDataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000100);
        if (bloodKetonesDataBuilder_ == null) {
          bloodKetonesData_ = null;
        } else {
          bloodKetonesDataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000200);
        if (uricAcidDataBuilder_ == null) {
          uricAcidData_ = null;
        } else {
          uricAcidDataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000400);
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ThirdPartyHealthData.internal_static_ThirdPartyDataHealth_descriptor;
      }

      @Override
      public ThirdPartyDataHealth getDefaultInstanceForType() {
        return ThirdPartyDataHealth.getDefaultInstance();
      }

      @Override
      public ThirdPartyDataHealth build() {
        ThirdPartyDataHealth result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public ThirdPartyDataHealth buildPartial() {
        ThirdPartyDataHealth result = new ThirdPartyDataHealth(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          to_bitField0_ |= 0x00000001;
        }
        result.devName_ = devName_;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          to_bitField0_ |= 0x00000002;
        }
        result.macAddr_ = macAddr_;
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.devType_ = devType_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.user_ = user_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          if (bpDataBuilder_ == null) {
            result.bpData_ = bpData_;
          } else {
            result.bpData_ = bpDataBuilder_.build();
          }
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          if (scaleDataBuilder_ == null) {
            result.scaleData_ = scaleData_;
          } else {
            result.scaleData_ = scaleDataBuilder_.build();
          }
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          if (spo2DataBuilder_ == null) {
            result.spo2Data_ = spo2Data_;
          } else {
            result.spo2Data_ = spo2DataBuilder_.build();
          }
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          if (tempDataBuilder_ == null) {
            result.tempData_ = tempData_;
          } else {
            result.tempData_ = tempDataBuilder_.build();
          }
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          if (gluDataBuilder_ == null) {
            result.gluData_ = gluData_;
          } else {
            result.gluData_ = gluDataBuilder_.build();
          }
          to_bitField0_ |= 0x00000100;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          if (bloodKetonesDataBuilder_ == null) {
            result.bloodKetonesData_ = bloodKetonesData_;
          } else {
            result.bloodKetonesData_ = bloodKetonesDataBuilder_.build();
          }
          to_bitField0_ |= 0x00000200;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          if (uricAcidDataBuilder_ == null) {
            result.uricAcidData_ = uricAcidData_;
          } else {
            result.uricAcidData_ = uricAcidDataBuilder_.build();
          }
          to_bitField0_ |= 0x00000400;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(ThirdPartyDataHealth other) {
        if (other == ThirdPartyDataHealth.getDefaultInstance()) return this;
        if (other.hasDevName()) {
          bitField0_ |= 0x00000001;
          devName_ = other.devName_;
          onChanged();
        }
        if (other.hasMacAddr()) {
          bitField0_ |= 0x00000002;
          macAddr_ = other.macAddr_;
          onChanged();
        }
        if (other.hasDevType()) {
          setDevType(other.getDevType());
        }
        if (other.hasUser()) {
          setUser(other.getUser());
        }
        if (other.hasBpData()) {
          mergeBpData(other.getBpData());
        }
        if (other.hasScaleData()) {
          mergeScaleData(other.getScaleData());
        }
        if (other.hasSpo2Data()) {
          mergeSpo2Data(other.getSpo2Data());
        }
        if (other.hasTempData()) {
          mergeTempData(other.getTempData());
        }
        if (other.hasGluData()) {
          mergeGluData(other.getGluData());
        }
        if (other.hasBloodKetonesData()) {
          mergeBloodKetonesData(other.getBloodKetonesData());
        }
        if (other.hasUricAcidData()) {
          mergeUricAcidData(other.getUricAcidData());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @Override
      public final boolean isInitialized() {
        if (!hasDevName()) {
          return false;
        }
        if (!hasMacAddr()) {
          return false;
        }
        if (!hasDevType()) {
          return false;
        }
        if (!hasUser()) {
          return false;
        }
        if (hasBpData()) {
          if (!getBpData().isInitialized()) {
            return false;
          }
        }
        if (hasScaleData()) {
          if (!getScaleData().isInitialized()) {
            return false;
          }
        }
        if (hasSpo2Data()) {
          if (!getSpo2Data().isInitialized()) {
            return false;
          }
        }
        if (hasTempData()) {
          if (!getTempData().isInitialized()) {
            return false;
          }
        }
        if (hasGluData()) {
          if (!getGluData().isInitialized()) {
            return false;
          }
        }
        if (hasBloodKetonesData()) {
          if (!getBloodKetonesData().isInitialized()) {
            return false;
          }
        }
        if (hasUricAcidData()) {
          if (!getUricAcidData().isInitialized()) {
            return false;
          }
        }
        return true;
      }

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

      private Object devName_ = "";
      /**
       * <code>required string dev_name = 1;</code>
       * @return Whether the devName field is set.
       */
      public boolean hasDevName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string dev_name = 1;</code>
       * @return The devName.
       */
      public String getDevName() {
        Object ref = devName_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            devName_ = s;
          }
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>required string dev_name = 1;</code>
       * @return The bytes for devName.
       */
      public com.google.protobuf.ByteString
          getDevNameBytes() {
        Object ref = devName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          devName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string dev_name = 1;</code>
       * @param value The devName to set.
       * @return This builder for chaining.
       */
      public Builder setDevName(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        devName_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string dev_name = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearDevName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        devName_ = getDefaultInstance().getDevName();
        onChanged();
        return this;
      }
      /**
       * <code>required string dev_name = 1;</code>
       * @param value The bytes for devName to set.
       * @return This builder for chaining.
       */
      public Builder setDevNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        devName_ = value;
        onChanged();
        return this;
      }

      private Object macAddr_ = "";
      /**
       * <code>required string mac_addr = 2;</code>
       * @return Whether the macAddr field is set.
       */
      public boolean hasMacAddr() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required string mac_addr = 2;</code>
       * @return The macAddr.
       */
      public String getMacAddr() {
        Object ref = macAddr_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            macAddr_ = s;
          }
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>required string mac_addr = 2;</code>
       * @return The bytes for macAddr.
       */
      public com.google.protobuf.ByteString
          getMacAddrBytes() {
        Object ref = macAddr_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          macAddr_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string mac_addr = 2;</code>
       * @param value The macAddr to set.
       * @return This builder for chaining.
       */
      public Builder setMacAddr(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        macAddr_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string mac_addr = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearMacAddr() {
        bitField0_ = (bitField0_ & ~0x00000002);
        macAddr_ = getDefaultInstance().getMacAddr();
        onChanged();
        return this;
      }
      /**
       * <code>required string mac_addr = 2;</code>
       * @param value The bytes for macAddr to set.
       * @return This builder for chaining.
       */
      public Builder setMacAddrBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        macAddr_ = value;
        onChanged();
        return this;
      }

      private int devType_ ;
      /**
       * <code>required fixed32 dev_type = 3;</code>
       * @return Whether the devType field is set.
       */
      public boolean hasDevType() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>required fixed32 dev_type = 3;</code>
       * @return The devType.
       */
      public int getDevType() {
        return devType_;
      }
      /**
       * <code>required fixed32 dev_type = 3;</code>
       * @param value The devType to set.
       * @return This builder for chaining.
       */
      public Builder setDevType(int value) {
        bitField0_ |= 0x00000004;
        devType_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required fixed32 dev_type = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearDevType() {
        bitField0_ = (bitField0_ & ~0x00000004);
        devType_ = 0;
        onChanged();
        return this;
      }

      private int user_ ;
      /**
       * <code>required fixed32 user = 4;</code>
       * @return Whether the user field is set.
       */
      public boolean hasUser() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>required fixed32 user = 4;</code>
       * @return The user.
       */
      public int getUser() {
        return user_;
      }
      /**
       * <code>required fixed32 user = 4;</code>
       * @param value The user to set.
       * @return This builder for chaining.
       */
      public Builder setUser(int value) {
        bitField0_ |= 0x00000008;
        user_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required fixed32 user = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearUser() {
        bitField0_ = (bitField0_ & ~0x00000008);
        user_ = 0;
        onChanged();
        return this;
      }

      private ThirdPartyHealthBp bpData_;
      private com.google.protobuf.SingleFieldBuilderV3<
          ThirdPartyHealthBp, ThirdPartyHealthBp.Builder, ThirdPartyHealthBpOrBuilder> bpDataBuilder_;
      /**
       * <code>optional .ThirdPartyHealthBp bp_data = 5;</code>
       * @return Whether the bpData field is set.
       */
      public boolean hasBpData() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional .ThirdPartyHealthBp bp_data = 5;</code>
       * @return The bpData.
       */
      public ThirdPartyHealthBp getBpData() {
        if (bpDataBuilder_ == null) {
          return bpData_ == null ? ThirdPartyHealthBp.getDefaultInstance() : bpData_;
        } else {
          return bpDataBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .ThirdPartyHealthBp bp_data = 5;</code>
       */
      public Builder setBpData(ThirdPartyHealthBp value) {
        if (bpDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          bpData_ = value;
          onChanged();
        } else {
          bpDataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .ThirdPartyHealthBp bp_data = 5;</code>
       */
      public Builder setBpData(
          ThirdPartyHealthBp.Builder builderForValue) {
        if (bpDataBuilder_ == null) {
          bpData_ = builderForValue.build();
          onChanged();
        } else {
          bpDataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .ThirdPartyHealthBp bp_data = 5;</code>
       */
      public Builder mergeBpData(ThirdPartyHealthBp value) {
        if (bpDataBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
              bpData_ != null &&
              bpData_ != ThirdPartyHealthBp.getDefaultInstance()) {
            bpData_ =
              ThirdPartyHealthBp.newBuilder(bpData_).mergeFrom(value).buildPartial();
          } else {
            bpData_ = value;
          }
          onChanged();
        } else {
          bpDataBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        return this;
      }
      /**
       * <code>optional .ThirdPartyHealthBp bp_data = 5;</code>
       */
      public Builder clearBpData() {
        if (bpDataBuilder_ == null) {
          bpData_ = null;
          onChanged();
        } else {
          bpDataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }
      /**
       * <code>optional .ThirdPartyHealthBp bp_data = 5;</code>
       */
      public ThirdPartyHealthBp.Builder getBpDataBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getBpDataFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .ThirdPartyHealthBp bp_data = 5;</code>
       */
      public ThirdPartyHealthBpOrBuilder getBpDataOrBuilder() {
        if (bpDataBuilder_ != null) {
          return bpDataBuilder_.getMessageOrBuilder();
        } else {
          return bpData_ == null ?
              ThirdPartyHealthBp.getDefaultInstance() : bpData_;
        }
      }
      /**
       * <code>optional .ThirdPartyHealthBp bp_data = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ThirdPartyHealthBp, ThirdPartyHealthBp.Builder, ThirdPartyHealthBpOrBuilder>
          getBpDataFieldBuilder() {
        if (bpDataBuilder_ == null) {
          bpDataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ThirdPartyHealthBp, ThirdPartyHealthBp.Builder, ThirdPartyHealthBpOrBuilder>(
                  getBpData(),
                  getParentForChildren(),
                  isClean());
          bpData_ = null;
        }
        return bpDataBuilder_;
      }

      private ThirdPartyHealthScale scaleData_;
      private com.google.protobuf.SingleFieldBuilderV3<
          ThirdPartyHealthScale, ThirdPartyHealthScale.Builder, ThirdPartyHealthScaleOrBuilder> scaleDataBuilder_;
      /**
       * <code>optional .ThirdPartyHealthScale scale_data = 6;</code>
       * @return Whether the scaleData field is set.
       */
      public boolean hasScaleData() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>optional .ThirdPartyHealthScale scale_data = 6;</code>
       * @return The scaleData.
       */
      public ThirdPartyHealthScale getScaleData() {
        if (scaleDataBuilder_ == null) {
          return scaleData_ == null ? ThirdPartyHealthScale.getDefaultInstance() : scaleData_;
        } else {
          return scaleDataBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .ThirdPartyHealthScale scale_data = 6;</code>
       */
      public Builder setScaleData(ThirdPartyHealthScale value) {
        if (scaleDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          scaleData_ = value;
          onChanged();
        } else {
          scaleDataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <code>optional .ThirdPartyHealthScale scale_data = 6;</code>
       */
      public Builder setScaleData(
          ThirdPartyHealthScale.Builder builderForValue) {
        if (scaleDataBuilder_ == null) {
          scaleData_ = builderForValue.build();
          onChanged();
        } else {
          scaleDataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <code>optional .ThirdPartyHealthScale scale_data = 6;</code>
       */
      public Builder mergeScaleData(ThirdPartyHealthScale value) {
        if (scaleDataBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0) &&
              scaleData_ != null &&
              scaleData_ != ThirdPartyHealthScale.getDefaultInstance()) {
            scaleData_ =
              ThirdPartyHealthScale.newBuilder(scaleData_).mergeFrom(value).buildPartial();
          } else {
            scaleData_ = value;
          }
          onChanged();
        } else {
          scaleDataBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000020;
        return this;
      }
      /**
       * <code>optional .ThirdPartyHealthScale scale_data = 6;</code>
       */
      public Builder clearScaleData() {
        if (scaleDataBuilder_ == null) {
          scaleData_ = null;
          onChanged();
        } else {
          scaleDataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000020);
        return this;
      }
      /**
       * <code>optional .ThirdPartyHealthScale scale_data = 6;</code>
       */
      public ThirdPartyHealthScale.Builder getScaleDataBuilder() {
        bitField0_ |= 0x00000020;
        onChanged();
        return getScaleDataFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .ThirdPartyHealthScale scale_data = 6;</code>
       */
      public ThirdPartyHealthScaleOrBuilder getScaleDataOrBuilder() {
        if (scaleDataBuilder_ != null) {
          return scaleDataBuilder_.getMessageOrBuilder();
        } else {
          return scaleData_ == null ?
              ThirdPartyHealthScale.getDefaultInstance() : scaleData_;
        }
      }
      /**
       * <code>optional .ThirdPartyHealthScale scale_data = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ThirdPartyHealthScale, ThirdPartyHealthScale.Builder, ThirdPartyHealthScaleOrBuilder>
          getScaleDataFieldBuilder() {
        if (scaleDataBuilder_ == null) {
          scaleDataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ThirdPartyHealthScale, ThirdPartyHealthScale.Builder, ThirdPartyHealthScaleOrBuilder>(
                  getScaleData(),
                  getParentForChildren(),
                  isClean());
          scaleData_ = null;
        }
        return scaleDataBuilder_;
      }

      private ThirdPartyHealthSpo2 spo2Data_;
      private com.google.protobuf.SingleFieldBuilderV3<
          ThirdPartyHealthSpo2, ThirdPartyHealthSpo2.Builder, ThirdPartyHealthSpo2OrBuilder> spo2DataBuilder_;
      /**
       * <code>optional .ThirdPartyHealthSpo2 Spo2_data = 7;</code>
       * @return Whether the spo2Data field is set.
       */
      public boolean hasSpo2Data() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <code>optional .ThirdPartyHealthSpo2 Spo2_data = 7;</code>
       * @return The spo2Data.
       */
      public ThirdPartyHealthSpo2 getSpo2Data() {
        if (spo2DataBuilder_ == null) {
          return spo2Data_ == null ? ThirdPartyHealthSpo2.getDefaultInstance() : spo2Data_;
        } else {
          return spo2DataBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .ThirdPartyHealthSpo2 Spo2_data = 7;</code>
       */
      public Builder setSpo2Data(ThirdPartyHealthSpo2 value) {
        if (spo2DataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          spo2Data_ = value;
          onChanged();
        } else {
          spo2DataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * <code>optional .ThirdPartyHealthSpo2 Spo2_data = 7;</code>
       */
      public Builder setSpo2Data(
          ThirdPartyHealthSpo2.Builder builderForValue) {
        if (spo2DataBuilder_ == null) {
          spo2Data_ = builderForValue.build();
          onChanged();
        } else {
          spo2DataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * <code>optional .ThirdPartyHealthSpo2 Spo2_data = 7;</code>
       */
      public Builder mergeSpo2Data(ThirdPartyHealthSpo2 value) {
        if (spo2DataBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0) &&
              spo2Data_ != null &&
              spo2Data_ != ThirdPartyHealthSpo2.getDefaultInstance()) {
            spo2Data_ =
              ThirdPartyHealthSpo2.newBuilder(spo2Data_).mergeFrom(value).buildPartial();
          } else {
            spo2Data_ = value;
          }
          onChanged();
        } else {
          spo2DataBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000040;
        return this;
      }
      /**
       * <code>optional .ThirdPartyHealthSpo2 Spo2_data = 7;</code>
       */
      public Builder clearSpo2Data() {
        if (spo2DataBuilder_ == null) {
          spo2Data_ = null;
          onChanged();
        } else {
          spo2DataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000040);
        return this;
      }
      /**
       * <code>optional .ThirdPartyHealthSpo2 Spo2_data = 7;</code>
       */
      public ThirdPartyHealthSpo2.Builder getSpo2DataBuilder() {
        bitField0_ |= 0x00000040;
        onChanged();
        return getSpo2DataFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .ThirdPartyHealthSpo2 Spo2_data = 7;</code>
       */
      public ThirdPartyHealthSpo2OrBuilder getSpo2DataOrBuilder() {
        if (spo2DataBuilder_ != null) {
          return spo2DataBuilder_.getMessageOrBuilder();
        } else {
          return spo2Data_ == null ?
              ThirdPartyHealthSpo2.getDefaultInstance() : spo2Data_;
        }
      }
      /**
       * <code>optional .ThirdPartyHealthSpo2 Spo2_data = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ThirdPartyHealthSpo2, ThirdPartyHealthSpo2.Builder, ThirdPartyHealthSpo2OrBuilder>
          getSpo2DataFieldBuilder() {
        if (spo2DataBuilder_ == null) {
          spo2DataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ThirdPartyHealthSpo2, ThirdPartyHealthSpo2.Builder, ThirdPartyHealthSpo2OrBuilder>(
                  getSpo2Data(),
                  getParentForChildren(),
                  isClean());
          spo2Data_ = null;
        }
        return spo2DataBuilder_;
      }

      private ThirdPartyHealthTemp tempData_;
      private com.google.protobuf.SingleFieldBuilderV3<
          ThirdPartyHealthTemp, ThirdPartyHealthTemp.Builder, ThirdPartyHealthTempOrBuilder> tempDataBuilder_;
      /**
       * <code>optional .ThirdPartyHealthTemp Temp_data = 8;</code>
       * @return Whether the tempData field is set.
       */
      public boolean hasTempData() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <code>optional .ThirdPartyHealthTemp Temp_data = 8;</code>
       * @return The tempData.
       */
      public ThirdPartyHealthTemp getTempData() {
        if (tempDataBuilder_ == null) {
          return tempData_ == null ? ThirdPartyHealthTemp.getDefaultInstance() : tempData_;
        } else {
          return tempDataBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .ThirdPartyHealthTemp Temp_data = 8;</code>
       */
      public Builder setTempData(ThirdPartyHealthTemp value) {
        if (tempDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          tempData_ = value;
          onChanged();
        } else {
          tempDataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <code>optional .ThirdPartyHealthTemp Temp_data = 8;</code>
       */
      public Builder setTempData(
          ThirdPartyHealthTemp.Builder builderForValue) {
        if (tempDataBuilder_ == null) {
          tempData_ = builderForValue.build();
          onChanged();
        } else {
          tempDataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <code>optional .ThirdPartyHealthTemp Temp_data = 8;</code>
       */
      public Builder mergeTempData(ThirdPartyHealthTemp value) {
        if (tempDataBuilder_ == null) {
          if (((bitField0_ & 0x00000080) != 0) &&
              tempData_ != null &&
              tempData_ != ThirdPartyHealthTemp.getDefaultInstance()) {
            tempData_ =
              ThirdPartyHealthTemp.newBuilder(tempData_).mergeFrom(value).buildPartial();
          } else {
            tempData_ = value;
          }
          onChanged();
        } else {
          tempDataBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000080;
        return this;
      }
      /**
       * <code>optional .ThirdPartyHealthTemp Temp_data = 8;</code>
       */
      public Builder clearTempData() {
        if (tempDataBuilder_ == null) {
          tempData_ = null;
          onChanged();
        } else {
          tempDataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        return this;
      }
      /**
       * <code>optional .ThirdPartyHealthTemp Temp_data = 8;</code>
       */
      public ThirdPartyHealthTemp.Builder getTempDataBuilder() {
        bitField0_ |= 0x00000080;
        onChanged();
        return getTempDataFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .ThirdPartyHealthTemp Temp_data = 8;</code>
       */
      public ThirdPartyHealthTempOrBuilder getTempDataOrBuilder() {
        if (tempDataBuilder_ != null) {
          return tempDataBuilder_.getMessageOrBuilder();
        } else {
          return tempData_ == null ?
              ThirdPartyHealthTemp.getDefaultInstance() : tempData_;
        }
      }
      /**
       * <code>optional .ThirdPartyHealthTemp Temp_data = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ThirdPartyHealthTemp, ThirdPartyHealthTemp.Builder, ThirdPartyHealthTempOrBuilder>
          getTempDataFieldBuilder() {
        if (tempDataBuilder_ == null) {
          tempDataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ThirdPartyHealthTemp, ThirdPartyHealthTemp.Builder, ThirdPartyHealthTempOrBuilder>(
                  getTempData(),
                  getParentForChildren(),
                  isClean());
          tempData_ = null;
        }
        return tempDataBuilder_;
      }

      private ThirdPartyHealthGlu gluData_;
      private com.google.protobuf.SingleFieldBuilderV3<
          ThirdPartyHealthGlu, ThirdPartyHealthGlu.Builder, ThirdPartyHealthGluOrBuilder> gluDataBuilder_;
      /**
       * <code>optional .ThirdPartyHealthGlu Glu_data = 9;</code>
       * @return Whether the gluData field is set.
       */
      public boolean hasGluData() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <code>optional .ThirdPartyHealthGlu Glu_data = 9;</code>
       * @return The gluData.
       */
      public ThirdPartyHealthGlu getGluData() {
        if (gluDataBuilder_ == null) {
          return gluData_ == null ? ThirdPartyHealthGlu.getDefaultInstance() : gluData_;
        } else {
          return gluDataBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .ThirdPartyHealthGlu Glu_data = 9;</code>
       */
      public Builder setGluData(ThirdPartyHealthGlu value) {
        if (gluDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          gluData_ = value;
          onChanged();
        } else {
          gluDataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000100;
        return this;
      }
      /**
       * <code>optional .ThirdPartyHealthGlu Glu_data = 9;</code>
       */
      public Builder setGluData(
          ThirdPartyHealthGlu.Builder builderForValue) {
        if (gluDataBuilder_ == null) {
          gluData_ = builderForValue.build();
          onChanged();
        } else {
          gluDataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000100;
        return this;
      }
      /**
       * <code>optional .ThirdPartyHealthGlu Glu_data = 9;</code>
       */
      public Builder mergeGluData(ThirdPartyHealthGlu value) {
        if (gluDataBuilder_ == null) {
          if (((bitField0_ & 0x00000100) != 0) &&
              gluData_ != null &&
              gluData_ != ThirdPartyHealthGlu.getDefaultInstance()) {
            gluData_ =
              ThirdPartyHealthGlu.newBuilder(gluData_).mergeFrom(value).buildPartial();
          } else {
            gluData_ = value;
          }
          onChanged();
        } else {
          gluDataBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000100;
        return this;
      }
      /**
       * <code>optional .ThirdPartyHealthGlu Glu_data = 9;</code>
       */
      public Builder clearGluData() {
        if (gluDataBuilder_ == null) {
          gluData_ = null;
          onChanged();
        } else {
          gluDataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000100);
        return this;
      }
      /**
       * <code>optional .ThirdPartyHealthGlu Glu_data = 9;</code>
       */
      public ThirdPartyHealthGlu.Builder getGluDataBuilder() {
        bitField0_ |= 0x00000100;
        onChanged();
        return getGluDataFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .ThirdPartyHealthGlu Glu_data = 9;</code>
       */
      public ThirdPartyHealthGluOrBuilder getGluDataOrBuilder() {
        if (gluDataBuilder_ != null) {
          return gluDataBuilder_.getMessageOrBuilder();
        } else {
          return gluData_ == null ?
              ThirdPartyHealthGlu.getDefaultInstance() : gluData_;
        }
      }
      /**
       * <code>optional .ThirdPartyHealthGlu Glu_data = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ThirdPartyHealthGlu, ThirdPartyHealthGlu.Builder, ThirdPartyHealthGluOrBuilder>
          getGluDataFieldBuilder() {
        if (gluDataBuilder_ == null) {
          gluDataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ThirdPartyHealthGlu, ThirdPartyHealthGlu.Builder, ThirdPartyHealthGluOrBuilder>(
                  getGluData(),
                  getParentForChildren(),
                  isClean());
          gluData_ = null;
        }
        return gluDataBuilder_;
      }

      private ThirdPartyHealthBloodKetones bloodKetonesData_;
      private com.google.protobuf.SingleFieldBuilderV3<
          ThirdPartyHealthBloodKetones, ThirdPartyHealthBloodKetones.Builder, ThirdPartyHealthBloodKetonesOrBuilder> bloodKetonesDataBuilder_;
      /**
       * <code>optional .ThirdPartyHealthBloodKetones BloodKetones_data = 10;</code>
       * @return Whether the bloodKetonesData field is set.
       */
      public boolean hasBloodKetonesData() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <code>optional .ThirdPartyHealthBloodKetones BloodKetones_data = 10;</code>
       * @return The bloodKetonesData.
       */
      public ThirdPartyHealthBloodKetones getBloodKetonesData() {
        if (bloodKetonesDataBuilder_ == null) {
          return bloodKetonesData_ == null ? ThirdPartyHealthBloodKetones.getDefaultInstance() : bloodKetonesData_;
        } else {
          return bloodKetonesDataBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .ThirdPartyHealthBloodKetones BloodKetones_data = 10;</code>
       */
      public Builder setBloodKetonesData(ThirdPartyHealthBloodKetones value) {
        if (bloodKetonesDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          bloodKetonesData_ = value;
          onChanged();
        } else {
          bloodKetonesDataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000200;
        return this;
      }
      /**
       * <code>optional .ThirdPartyHealthBloodKetones BloodKetones_data = 10;</code>
       */
      public Builder setBloodKetonesData(
          ThirdPartyHealthBloodKetones.Builder builderForValue) {
        if (bloodKetonesDataBuilder_ == null) {
          bloodKetonesData_ = builderForValue.build();
          onChanged();
        } else {
          bloodKetonesDataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000200;
        return this;
      }
      /**
       * <code>optional .ThirdPartyHealthBloodKetones BloodKetones_data = 10;</code>
       */
      public Builder mergeBloodKetonesData(ThirdPartyHealthBloodKetones value) {
        if (bloodKetonesDataBuilder_ == null) {
          if (((bitField0_ & 0x00000200) != 0) &&
              bloodKetonesData_ != null &&
              bloodKetonesData_ != ThirdPartyHealthBloodKetones.getDefaultInstance()) {
            bloodKetonesData_ =
              ThirdPartyHealthBloodKetones.newBuilder(bloodKetonesData_).mergeFrom(value).buildPartial();
          } else {
            bloodKetonesData_ = value;
          }
          onChanged();
        } else {
          bloodKetonesDataBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000200;
        return this;
      }
      /**
       * <code>optional .ThirdPartyHealthBloodKetones BloodKetones_data = 10;</code>
       */
      public Builder clearBloodKetonesData() {
        if (bloodKetonesDataBuilder_ == null) {
          bloodKetonesData_ = null;
          onChanged();
        } else {
          bloodKetonesDataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000200);
        return this;
      }
      /**
       * <code>optional .ThirdPartyHealthBloodKetones BloodKetones_data = 10;</code>
       */
      public ThirdPartyHealthBloodKetones.Builder getBloodKetonesDataBuilder() {
        bitField0_ |= 0x00000200;
        onChanged();
        return getBloodKetonesDataFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .ThirdPartyHealthBloodKetones BloodKetones_data = 10;</code>
       */
      public ThirdPartyHealthBloodKetonesOrBuilder getBloodKetonesDataOrBuilder() {
        if (bloodKetonesDataBuilder_ != null) {
          return bloodKetonesDataBuilder_.getMessageOrBuilder();
        } else {
          return bloodKetonesData_ == null ?
              ThirdPartyHealthBloodKetones.getDefaultInstance() : bloodKetonesData_;
        }
      }
      /**
       * <code>optional .ThirdPartyHealthBloodKetones BloodKetones_data = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ThirdPartyHealthBloodKetones, ThirdPartyHealthBloodKetones.Builder, ThirdPartyHealthBloodKetonesOrBuilder>
          getBloodKetonesDataFieldBuilder() {
        if (bloodKetonesDataBuilder_ == null) {
          bloodKetonesDataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ThirdPartyHealthBloodKetones, ThirdPartyHealthBloodKetones.Builder, ThirdPartyHealthBloodKetonesOrBuilder>(
                  getBloodKetonesData(),
                  getParentForChildren(),
                  isClean());
          bloodKetonesData_ = null;
        }
        return bloodKetonesDataBuilder_;
      }

      private ThirdPartyHealthUricAcid uricAcidData_;
      private com.google.protobuf.SingleFieldBuilderV3<
          ThirdPartyHealthUricAcid, ThirdPartyHealthUricAcid.Builder, ThirdPartyHealthUricAcidOrBuilder> uricAcidDataBuilder_;
      /**
       * <code>optional .ThirdPartyHealthUricAcid UricAcid_data = 11;</code>
       * @return Whether the uricAcidData field is set.
       */
      public boolean hasUricAcidData() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <code>optional .ThirdPartyHealthUricAcid UricAcid_data = 11;</code>
       * @return The uricAcidData.
       */
      public ThirdPartyHealthUricAcid getUricAcidData() {
        if (uricAcidDataBuilder_ == null) {
          return uricAcidData_ == null ? ThirdPartyHealthUricAcid.getDefaultInstance() : uricAcidData_;
        } else {
          return uricAcidDataBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .ThirdPartyHealthUricAcid UricAcid_data = 11;</code>
       */
      public Builder setUricAcidData(ThirdPartyHealthUricAcid value) {
        if (uricAcidDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          uricAcidData_ = value;
          onChanged();
        } else {
          uricAcidDataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000400;
        return this;
      }
      /**
       * <code>optional .ThirdPartyHealthUricAcid UricAcid_data = 11;</code>
       */
      public Builder setUricAcidData(
          ThirdPartyHealthUricAcid.Builder builderForValue) {
        if (uricAcidDataBuilder_ == null) {
          uricAcidData_ = builderForValue.build();
          onChanged();
        } else {
          uricAcidDataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000400;
        return this;
      }
      /**
       * <code>optional .ThirdPartyHealthUricAcid UricAcid_data = 11;</code>
       */
      public Builder mergeUricAcidData(ThirdPartyHealthUricAcid value) {
        if (uricAcidDataBuilder_ == null) {
          if (((bitField0_ & 0x00000400) != 0) &&
              uricAcidData_ != null &&
              uricAcidData_ != ThirdPartyHealthUricAcid.getDefaultInstance()) {
            uricAcidData_ =
              ThirdPartyHealthUricAcid.newBuilder(uricAcidData_).mergeFrom(value).buildPartial();
          } else {
            uricAcidData_ = value;
          }
          onChanged();
        } else {
          uricAcidDataBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000400;
        return this;
      }
      /**
       * <code>optional .ThirdPartyHealthUricAcid UricAcid_data = 11;</code>
       */
      public Builder clearUricAcidData() {
        if (uricAcidDataBuilder_ == null) {
          uricAcidData_ = null;
          onChanged();
        } else {
          uricAcidDataBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000400);
        return this;
      }
      /**
       * <code>optional .ThirdPartyHealthUricAcid UricAcid_data = 11;</code>
       */
      public ThirdPartyHealthUricAcid.Builder getUricAcidDataBuilder() {
        bitField0_ |= 0x00000400;
        onChanged();
        return getUricAcidDataFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .ThirdPartyHealthUricAcid UricAcid_data = 11;</code>
       */
      public ThirdPartyHealthUricAcidOrBuilder getUricAcidDataOrBuilder() {
        if (uricAcidDataBuilder_ != null) {
          return uricAcidDataBuilder_.getMessageOrBuilder();
        } else {
          return uricAcidData_ == null ?
              ThirdPartyHealthUricAcid.getDefaultInstance() : uricAcidData_;
        }
      }
      /**
       * <code>optional .ThirdPartyHealthUricAcid UricAcid_data = 11;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ThirdPartyHealthUricAcid, ThirdPartyHealthUricAcid.Builder, ThirdPartyHealthUricAcidOrBuilder>
          getUricAcidDataFieldBuilder() {
        if (uricAcidDataBuilder_ == null) {
          uricAcidDataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ThirdPartyHealthUricAcid, ThirdPartyHealthUricAcid.Builder, ThirdPartyHealthUricAcidOrBuilder>(
                  getUricAcidData(),
                  getParentForChildren(),
                  isClean());
          uricAcidData_ = null;
        }
        return uricAcidDataBuilder_;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:ThirdPartyDataHealth)
    }

    // @@protoc_insertion_point(class_scope:ThirdPartyDataHealth)
    private static final ThirdPartyDataHealth DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ThirdPartyDataHealth();
    }

    public static ThirdPartyDataHealth getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public ThirdPartyDataHealth getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface HisDataThirdPartyOrBuilder extends
      // @@protoc_insertion_point(interface_extends:HisDataThirdParty)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional .ThirdPartyDataHealth DataHealth = 1;</code>
     * @return Whether the dataHealth field is set.
     */
    boolean hasDataHealth();
    /**
     * <code>optional .ThirdPartyDataHealth DataHealth = 1;</code>
     * @return The dataHealth.
     */
    ThirdPartyDataHealth getDataHealth();
    /**
     * <code>optional .ThirdPartyDataHealth DataHealth = 1;</code>
     */
    ThirdPartyDataHealthOrBuilder getDataHealthOrBuilder();
  }
  /**
   * Protobuf type {@code HisDataThirdParty}
   */
  public  static final class HisDataThirdParty extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:HisDataThirdParty)
      HisDataThirdPartyOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use HisDataThirdParty.newBuilder() to construct.
    private HisDataThirdParty(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private HisDataThirdParty() {
    }

    @Override
    @SuppressWarnings({"unused"})
    protected Object newInstance(
        UnusedPrivateParameter unused) {
      return new HisDataThirdParty();
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private HisDataThirdParty(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              ThirdPartyDataHealth.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) != 0)) {
                subBuilder = dataHealth_.toBuilder();
              }
              dataHealth_ = input.readMessage(ThirdPartyDataHealth.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(dataHealth_);
                dataHealth_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, 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 {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ThirdPartyHealthData.internal_static_HisDataThirdParty_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ThirdPartyHealthData.internal_static_HisDataThirdParty_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              HisDataThirdParty.class, Builder.class);
    }

    private int bitField0_;
    public static final int DATAHEALTH_FIELD_NUMBER = 1;
    private ThirdPartyDataHealth dataHealth_;
    /**
     * <code>optional .ThirdPartyDataHealth DataHealth = 1;</code>
     * @return Whether the dataHealth field is set.
     */
    public boolean hasDataHealth() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional .ThirdPartyDataHealth DataHealth = 1;</code>
     * @return The dataHealth.
     */
    public ThirdPartyDataHealth getDataHealth() {
      return dataHealth_ == null ? ThirdPartyDataHealth.getDefaultInstance() : dataHealth_;
    }
    /**
     * <code>optional .ThirdPartyDataHealth DataHealth = 1;</code>
     */
    public ThirdPartyDataHealthOrBuilder getDataHealthOrBuilder() {
      return dataHealth_ == null ? ThirdPartyDataHealth.getDefaultInstance() : dataHealth_;
    }

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

      if (hasDataHealth()) {
        if (!getDataHealth().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getDataHealth());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getDataHealth());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof HisDataThirdParty)) {
        return super.equals(obj);
      }
      HisDataThirdParty other = (HisDataThirdParty) obj;

      if (hasDataHealth() != other.hasDataHealth()) return false;
      if (hasDataHealth()) {
        if (!getDataHealth()
            .equals(other.getDataHealth())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasDataHealth()) {
        hash = (37 * hash) + DATAHEALTH_FIELD_NUMBER;
        hash = (53 * hash) + getDataHealth().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static HisDataThirdParty parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static HisDataThirdParty parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static HisDataThirdParty parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static HisDataThirdParty parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static HisDataThirdParty parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static HisDataThirdParty parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static HisDataThirdParty parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static HisDataThirdParty 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 HisDataThirdParty parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static HisDataThirdParty 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 HisDataThirdParty parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static HisDataThirdParty parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(HisDataThirdParty prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    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;
    }
    /**
     * Protobuf type {@code HisDataThirdParty}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:HisDataThirdParty)
        HisDataThirdPartyOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ThirdPartyHealthData.internal_static_HisDataThirdParty_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ThirdPartyHealthData.internal_static_HisDataThirdParty_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                HisDataThirdParty.class, Builder.class);
      }

      // Construct using ThirdPartyHealthData.HisDataThirdParty.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getDataHealthFieldBuilder();
        }
      }
      @Override
      public Builder clear() {
        super.clear();
        if (dataHealthBuilder_ == null) {
          dataHealth_ = null;
        } else {
          dataHealthBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ThirdPartyHealthData.internal_static_HisDataThirdParty_descriptor;
      }

      @Override
      public HisDataThirdParty getDefaultInstanceForType() {
        return HisDataThirdParty.getDefaultInstance();
      }

      @Override
      public HisDataThirdParty build() {
        HisDataThirdParty result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public HisDataThirdParty buildPartial() {
        HisDataThirdParty result = new HisDataThirdParty(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          if (dataHealthBuilder_ == null) {
            result.dataHealth_ = dataHealth_;
          } else {
            result.dataHealth_ = dataHealthBuilder_.build();
          }
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(HisDataThirdParty other) {
        if (other == HisDataThirdParty.getDefaultInstance()) return this;
        if (other.hasDataHealth()) {
          mergeDataHealth(other.getDataHealth());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @Override
      public final boolean isInitialized() {
        if (hasDataHealth()) {
          if (!getDataHealth().isInitialized()) {
            return false;
          }
        }
        return true;
      }

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

      private ThirdPartyDataHealth dataHealth_;
      private com.google.protobuf.SingleFieldBuilderV3<
          ThirdPartyDataHealth, ThirdPartyDataHealth.Builder, ThirdPartyDataHealthOrBuilder> dataHealthBuilder_;
      /**
       * <code>optional .ThirdPartyDataHealth DataHealth = 1;</code>
       * @return Whether the dataHealth field is set.
       */
      public boolean hasDataHealth() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional .ThirdPartyDataHealth DataHealth = 1;</code>
       * @return The dataHealth.
       */
      public ThirdPartyDataHealth getDataHealth() {
        if (dataHealthBuilder_ == null) {
          return dataHealth_ == null ? ThirdPartyDataHealth.getDefaultInstance() : dataHealth_;
        } else {
          return dataHealthBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .ThirdPartyDataHealth DataHealth = 1;</code>
       */
      public Builder setDataHealth(ThirdPartyDataHealth value) {
        if (dataHealthBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          dataHealth_ = value;
          onChanged();
        } else {
          dataHealthBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .ThirdPartyDataHealth DataHealth = 1;</code>
       */
      public Builder setDataHealth(
          ThirdPartyDataHealth.Builder builderForValue) {
        if (dataHealthBuilder_ == null) {
          dataHealth_ = builderForValue.build();
          onChanged();
        } else {
          dataHealthBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .ThirdPartyDataHealth DataHealth = 1;</code>
       */
      public Builder mergeDataHealth(ThirdPartyDataHealth value) {
        if (dataHealthBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
              dataHealth_ != null &&
              dataHealth_ != ThirdPartyDataHealth.getDefaultInstance()) {
            dataHealth_ =
              ThirdPartyDataHealth.newBuilder(dataHealth_).mergeFrom(value).buildPartial();
          } else {
            dataHealth_ = value;
          }
          onChanged();
        } else {
          dataHealthBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .ThirdPartyDataHealth DataHealth = 1;</code>
       */
      public Builder clearDataHealth() {
        if (dataHealthBuilder_ == null) {
          dataHealth_ = null;
          onChanged();
        } else {
          dataHealthBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <code>optional .ThirdPartyDataHealth DataHealth = 1;</code>
       */
      public ThirdPartyDataHealth.Builder getDataHealthBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getDataHealthFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .ThirdPartyDataHealth DataHealth = 1;</code>
       */
      public ThirdPartyDataHealthOrBuilder getDataHealthOrBuilder() {
        if (dataHealthBuilder_ != null) {
          return dataHealthBuilder_.getMessageOrBuilder();
        } else {
          return dataHealth_ == null ?
              ThirdPartyDataHealth.getDefaultInstance() : dataHealth_;
        }
      }
      /**
       * <code>optional .ThirdPartyDataHealth DataHealth = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ThirdPartyDataHealth, ThirdPartyDataHealth.Builder, ThirdPartyDataHealthOrBuilder>
          getDataHealthFieldBuilder() {
        if (dataHealthBuilder_ == null) {
          dataHealthBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ThirdPartyDataHealth, ThirdPartyDataHealth.Builder, ThirdPartyDataHealthOrBuilder>(
                  getDataHealth(),
                  getParentForChildren(),
                  isClean());
          dataHealth_ = null;
        }
        return dataHealthBuilder_;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:HisDataThirdParty)
    }

    // @@protoc_insertion_point(class_scope:HisDataThirdParty)
    private static final HisDataThirdParty DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new HisDataThirdParty();
    }

    public static HisDataThirdParty getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @Override
    public HisDataThirdParty getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_ThirdPartyHealthBp_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_ThirdPartyHealthBp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_ThirdPartyHealthScale_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_ThirdPartyHealthScale_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_ThirdPartyHealthSpo2_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_ThirdPartyHealthSpo2_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_ThirdPartyHealthTemp_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_ThirdPartyHealthTemp_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_ThirdPartyHealthGlu_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_ThirdPartyHealthGlu_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_ThirdPartyHealthBloodKetones_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_ThirdPartyHealthBloodKetones_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_ThirdPartyHealthUricAcid_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_ThirdPartyHealthUricAcid_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_ThirdPartyDataHealth_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_ThirdPartyDataHealth_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_HisDataThirdParty_descriptor;
  private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_HisDataThirdParty_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    String[] descriptorData = {
      "\n\034ThirdParty_health_data.proto\032\023realtime" +
      "_data.proto\"\177\n\022ThirdPartyHealthBp\022\013\n\003sbp" +
      "\030\001 \002(\007\022\013\n\003dbp\030\002 \002(\007\022\n\n\002hr\030\003 \002(\007\022\r\n\005pulse" +
      "\030\004 \002(\007\022\027\n\004time\030\005 \002(\0132\t.DateTime\022\033\n\004MODE\030" +
      "\006 \002(\0162\r.MEASURE_MODE\"\177\n\025ThirdPartyHealth" +
      "Scale\022\016\n\006weight\030\001 \002(\007\022\021\n\timpedance\030\002 \002(\007" +
      "\022\r\n\005uints\030\003 \002(\007\022\033\n\023body_fat_percentage\030\004" +
      " \002(\007\022\027\n\004time\030\005 \002(\0132\t.DateTime\"V\n\024ThirdPa" +
      "rtyHealthSpo2\022\013\n\003bpm\030\001 \002(\007\022\014\n\004spo2\030\002 \002(\007" +
      "\022\n\n\002pi\030\003 \002(\007\022\027\n\004time\030\004 \002(\0132\t.DateTime\"B\n" +
      "\024ThirdPartyHealthTemp\022\021\n\tbody_temp\030\001 \002(\007" +
      "\022\027\n\004time\030\002 \002(\0132\t.DateTime\";\n\023ThirdPartyH" +
      "ealthGlu\022\013\n\003glu\030\001 \002(\007\022\027\n\004time\030\002 \002(\0132\t.Da" +
      "teTime\"M\n\034ThirdPartyHealthBloodKetones\022\024" +
      "\n\014BloodKetones\030\001 \002(\007\022\027\n\004time\030\002 \002(\0132\t.Dat" +
      "eTime\"E\n\030ThirdPartyHealthUricAcid\022\020\n\010Uri" +
      "cAcid\030\001 \002(\007\022\027\n\004time\030\002 \002(\0132\t.DateTime\"\224\003\n" +
      "\024ThirdPartyDataHealth\022\020\n\010dev_name\030\001 \002(\t\022" +
      "\020\n\010mac_addr\030\002 \002(\t\022\020\n\010dev_type\030\003 \002(\007\022\014\n\004u" +
      "ser\030\004 \002(\007\022$\n\007bp_data\030\005 \001(\0132\023.ThirdPartyH" +
      "ealthBp\022*\n\nscale_data\030\006 \001(\0132\026.ThirdParty" +
      "HealthScale\022(\n\tSpo2_data\030\007 \001(\0132\025.ThirdPa" +
      "rtyHealthSpo2\022(\n\tTemp_data\030\010 \001(\0132\025.Third" +
      "PartyHealthTemp\022&\n\010Glu_data\030\t \001(\0132\024.Thir" +
      "dPartyHealthGlu\0228\n\021BloodKetones_data\030\n \001" +
      "(\0132\035.ThirdPartyHealthBloodKetones\0220\n\rUri" +
      "cAcid_data\030\013 \001(\0132\031.ThirdPartyHealthUricA" +
      "cid\">\n\021HisDataThirdParty\022)\n\nDataHealth\030\001" +
      " \001(\0132\025.ThirdPartyDataHealth*$\n\014MEASURE_M" +
      "ODE\022\n\n\006MANUAL\020\000\022\010\n\004AUTO\020\001B\tZ\007./iwown"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          RealtimeData.getDescriptor(),
        });
    internal_static_ThirdPartyHealthBp_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_ThirdPartyHealthBp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_ThirdPartyHealthBp_descriptor,
        new String[] { "Sbp", "Dbp", "Hr", "Pulse", "Time", "MODE", });
    internal_static_ThirdPartyHealthScale_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_ThirdPartyHealthScale_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_ThirdPartyHealthScale_descriptor,
        new String[] { "Weight", "Impedance", "Uints", "BodyFatPercentage", "Time", });
    internal_static_ThirdPartyHealthSpo2_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_ThirdPartyHealthSpo2_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_ThirdPartyHealthSpo2_descriptor,
        new String[] { "Bpm", "Spo2", "Pi", "Time", });
    internal_static_ThirdPartyHealthTemp_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_ThirdPartyHealthTemp_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_ThirdPartyHealthTemp_descriptor,
        new String[] { "BodyTemp", "Time", });
    internal_static_ThirdPartyHealthGlu_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_ThirdPartyHealthGlu_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_ThirdPartyHealthGlu_descriptor,
        new String[] { "Glu", "Time", });
    internal_static_ThirdPartyHealthBloodKetones_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_ThirdPartyHealthBloodKetones_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_ThirdPartyHealthBloodKetones_descriptor,
        new String[] { "BloodKetones", "Time", });
    internal_static_ThirdPartyHealthUricAcid_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_ThirdPartyHealthUricAcid_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_ThirdPartyHealthUricAcid_descriptor,
        new String[] { "UricAcid", "Time", });
    internal_static_ThirdPartyDataHealth_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_ThirdPartyDataHealth_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_ThirdPartyDataHealth_descriptor,
        new String[] { "DevName", "MacAddr", "DevType", "User", "BpData", "ScaleData", "Spo2Data", "TempData", "GluData", "BloodKetonesData", "UricAcidData", });
    internal_static_HisDataThirdParty_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_HisDataThirdParty_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_HisDataThirdParty_descriptor,
        new String[] { "DataHealth", });
    RealtimeData.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
