// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: Purgatory.proto

package pb.xiugou.x1.protobuf.purgatory;

public final class Purgatory {
  private Purgatory() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  public interface PurgatoryInfoResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.PurgatoryInfoResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *最高阶数（相当于sceneId）
     * </pre>
     *
     * <code>int32 level = 1;</code>
     * @return The level.
     */
    int getLevel();

    /**
     * <pre>
     *玩家当天已使用的免费加成次数
     * </pre>
     *
     * <code>int32 free_times = 2;</code>
     * @return The freeTimes.
     */
    int getFreeTimes();

    /**
     * <pre>
     *剩余加成次数
     * </pre>
     *
     * <code>int32 times = 3;</code>
     * @return The times.
     */
    int getTimes();

    /**
     * <pre>
     *玩家当前赛季加成 阶-属性
     * </pre>
     *
     * <code>repeated .pb.PbLevelAttr attrs = 4;</code>
     */
    java.util.List<pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr> 
        getAttrsList();
    /**
     * <pre>
     *玩家当前赛季加成 阶-属性
     * </pre>
     *
     * <code>repeated .pb.PbLevelAttr attrs = 4;</code>
     */
    pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr getAttrs(int index);
    /**
     * <pre>
     *玩家当前赛季加成 阶-属性
     * </pre>
     *
     * <code>repeated .pb.PbLevelAttr attrs = 4;</code>
     */
    int getAttrsCount();
    /**
     * <pre>
     *玩家当前赛季加成 阶-属性
     * </pre>
     *
     * <code>repeated .pb.PbLevelAttr attrs = 4;</code>
     */
    java.util.List<? extends pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttrOrBuilder> 
        getAttrsOrBuilderList();
    /**
     * <pre>
     *玩家当前赛季加成 阶-属性
     * </pre>
     *
     * <code>repeated .pb.PbLevelAttr attrs = 4;</code>
     */
    pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttrOrBuilder getAttrsOrBuilder(
        int index);

    /**
     * <pre>
     *下次重置时间
     * </pre>
     *
     * <code>int64 next_reset_time = 5;</code>
     * @return The nextResetTime.
     */
    long getNextResetTime();
  }
  /**
   * <pre>
   *炼狱轮回数据
   * </pre>
   *
   * Protobuf type {@code pb.PurgatoryInfoResponse}
   */
  public  static final class PurgatoryInfoResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.PurgatoryInfoResponse)
      PurgatoryInfoResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PurgatoryInfoResponse.newBuilder() to construct.
    private PurgatoryInfoResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PurgatoryInfoResponse() {
      attrs_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PurgatoryInfoResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PurgatoryInfoResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.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 8: {

              level_ = input.readInt32();
              break;
            }
            case 16: {

              freeTimes_ = input.readInt32();
              break;
            }
            case 24: {

              times_ = input.readInt32();
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                attrs_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr>();
                mutable_bitField0_ |= 0x00000001;
              }
              attrs_.add(
                  input.readMessage(pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr.parser(), extensionRegistry));
              break;
            }
            case 40: {

              nextResetTime_ = input.readInt64();
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          attrs_ = java.util.Collections.unmodifiableList(attrs_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryInfoResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryInfoResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryInfoResponse.class, pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryInfoResponse.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.PurgatoryInfoResponse.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 2600001;</code>
       */
      ID(2600001),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 2600001;</code>
       */
      public static final int ID_VALUE = 2600001;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        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.
       */
      @java.lang.Deprecated
      public static Proto 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 Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 2600001: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.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 pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryInfoResponse.getDescriptor().getEnumTypes().get(0);
      }

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

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

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:pb.PurgatoryInfoResponse.Proto)
    }

    public static final int LEVEL_FIELD_NUMBER = 1;
    private int level_;
    /**
     * <pre>
     *最高阶数（相当于sceneId）
     * </pre>
     *
     * <code>int32 level = 1;</code>
     * @return The level.
     */
    public int getLevel() {
      return level_;
    }

    public static final int FREE_TIMES_FIELD_NUMBER = 2;
    private int freeTimes_;
    /**
     * <pre>
     *玩家当天已使用的免费加成次数
     * </pre>
     *
     * <code>int32 free_times = 2;</code>
     * @return The freeTimes.
     */
    public int getFreeTimes() {
      return freeTimes_;
    }

    public static final int TIMES_FIELD_NUMBER = 3;
    private int times_;
    /**
     * <pre>
     *剩余加成次数
     * </pre>
     *
     * <code>int32 times = 3;</code>
     * @return The times.
     */
    public int getTimes() {
      return times_;
    }

    public static final int ATTRS_FIELD_NUMBER = 4;
    private java.util.List<pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr> attrs_;
    /**
     * <pre>
     *玩家当前赛季加成 阶-属性
     * </pre>
     *
     * <code>repeated .pb.PbLevelAttr attrs = 4;</code>
     */
    public java.util.List<pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr> getAttrsList() {
      return attrs_;
    }
    /**
     * <pre>
     *玩家当前赛季加成 阶-属性
     * </pre>
     *
     * <code>repeated .pb.PbLevelAttr attrs = 4;</code>
     */
    public java.util.List<? extends pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttrOrBuilder> 
        getAttrsOrBuilderList() {
      return attrs_;
    }
    /**
     * <pre>
     *玩家当前赛季加成 阶-属性
     * </pre>
     *
     * <code>repeated .pb.PbLevelAttr attrs = 4;</code>
     */
    public int getAttrsCount() {
      return attrs_.size();
    }
    /**
     * <pre>
     *玩家当前赛季加成 阶-属性
     * </pre>
     *
     * <code>repeated .pb.PbLevelAttr attrs = 4;</code>
     */
    public pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr getAttrs(int index) {
      return attrs_.get(index);
    }
    /**
     * <pre>
     *玩家当前赛季加成 阶-属性
     * </pre>
     *
     * <code>repeated .pb.PbLevelAttr attrs = 4;</code>
     */
    public pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttrOrBuilder getAttrsOrBuilder(
        int index) {
      return attrs_.get(index);
    }

    public static final int NEXT_RESET_TIME_FIELD_NUMBER = 5;
    private long nextResetTime_;
    /**
     * <pre>
     *下次重置时间
     * </pre>
     *
     * <code>int64 next_reset_time = 5;</code>
     * @return The nextResetTime.
     */
    public long getNextResetTime() {
      return nextResetTime_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (level_ != 0) {
        output.writeInt32(1, level_);
      }
      if (freeTimes_ != 0) {
        output.writeInt32(2, freeTimes_);
      }
      if (times_ != 0) {
        output.writeInt32(3, times_);
      }
      for (int i = 0; i < attrs_.size(); i++) {
        output.writeMessage(4, attrs_.get(i));
      }
      if (nextResetTime_ != 0L) {
        output.writeInt64(5, nextResetTime_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (level_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, level_);
      }
      if (freeTimes_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, freeTimes_);
      }
      if (times_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, times_);
      }
      for (int i = 0; i < attrs_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, attrs_.get(i));
      }
      if (nextResetTime_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, nextResetTime_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryInfoResponse)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryInfoResponse other = (pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryInfoResponse) obj;

      if (getLevel()
          != other.getLevel()) return false;
      if (getFreeTimes()
          != other.getFreeTimes()) return false;
      if (getTimes()
          != other.getTimes()) return false;
      if (!getAttrsList()
          .equals(other.getAttrsList())) return false;
      if (getNextResetTime()
          != other.getNextResetTime()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + LEVEL_FIELD_NUMBER;
      hash = (53 * hash) + getLevel();
      hash = (37 * hash) + FREE_TIMES_FIELD_NUMBER;
      hash = (53 * hash) + getFreeTimes();
      hash = (37 * hash) + TIMES_FIELD_NUMBER;
      hash = (53 * hash) + getTimes();
      if (getAttrsCount() > 0) {
        hash = (37 * hash) + ATTRS_FIELD_NUMBER;
        hash = (53 * hash) + getAttrsList().hashCode();
      }
      hash = (37 * hash) + NEXT_RESET_TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getNextResetTime());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryInfoResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *炼狱轮回数据
     * </pre>
     *
     * Protobuf type {@code pb.PurgatoryInfoResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.PurgatoryInfoResponse)
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryInfoResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryInfoResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryInfoResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryInfoResponse.class, pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryInfoResponse.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryInfoResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getAttrsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        level_ = 0;

        freeTimes_ = 0;

        times_ = 0;

        if (attrsBuilder_ == null) {
          attrs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          attrsBuilder_.clear();
        }
        nextResetTime_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryInfoResponse_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryInfoResponse getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryInfoResponse.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryInfoResponse build() {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryInfoResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryInfoResponse buildPartial() {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryInfoResponse result = new pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryInfoResponse(this);
        int from_bitField0_ = bitField0_;
        result.level_ = level_;
        result.freeTimes_ = freeTimes_;
        result.times_ = times_;
        if (attrsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            attrs_ = java.util.Collections.unmodifiableList(attrs_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.attrs_ = attrs_;
        } else {
          result.attrs_ = attrsBuilder_.build();
        }
        result.nextResetTime_ = nextResetTime_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryInfoResponse other) {
        if (other == pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryInfoResponse.getDefaultInstance()) return this;
        if (other.getLevel() != 0) {
          setLevel(other.getLevel());
        }
        if (other.getFreeTimes() != 0) {
          setFreeTimes(other.getFreeTimes());
        }
        if (other.getTimes() != 0) {
          setTimes(other.getTimes());
        }
        if (attrsBuilder_ == null) {
          if (!other.attrs_.isEmpty()) {
            if (attrs_.isEmpty()) {
              attrs_ = other.attrs_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureAttrsIsMutable();
              attrs_.addAll(other.attrs_);
            }
            onChanged();
          }
        } else {
          if (!other.attrs_.isEmpty()) {
            if (attrsBuilder_.isEmpty()) {
              attrsBuilder_.dispose();
              attrsBuilder_ = null;
              attrs_ = other.attrs_;
              bitField0_ = (bitField0_ & ~0x00000001);
              attrsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getAttrsFieldBuilder() : null;
            } else {
              attrsBuilder_.addAllMessages(other.attrs_);
            }
          }
        }
        if (other.getNextResetTime() != 0L) {
          setNextResetTime(other.getNextResetTime());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

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

      private int level_ ;
      /**
       * <pre>
       *最高阶数（相当于sceneId）
       * </pre>
       *
       * <code>int32 level = 1;</code>
       * @return The level.
       */
      public int getLevel() {
        return level_;
      }
      /**
       * <pre>
       *最高阶数（相当于sceneId）
       * </pre>
       *
       * <code>int32 level = 1;</code>
       * @param value The level to set.
       * @return This builder for chaining.
       */
      public Builder setLevel(int value) {
        
        level_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *最高阶数（相当于sceneId）
       * </pre>
       *
       * <code>int32 level = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearLevel() {
        
        level_ = 0;
        onChanged();
        return this;
      }

      private int freeTimes_ ;
      /**
       * <pre>
       *玩家当天已使用的免费加成次数
       * </pre>
       *
       * <code>int32 free_times = 2;</code>
       * @return The freeTimes.
       */
      public int getFreeTimes() {
        return freeTimes_;
      }
      /**
       * <pre>
       *玩家当天已使用的免费加成次数
       * </pre>
       *
       * <code>int32 free_times = 2;</code>
       * @param value The freeTimes to set.
       * @return This builder for chaining.
       */
      public Builder setFreeTimes(int value) {
        
        freeTimes_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *玩家当天已使用的免费加成次数
       * </pre>
       *
       * <code>int32 free_times = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearFreeTimes() {
        
        freeTimes_ = 0;
        onChanged();
        return this;
      }

      private int times_ ;
      /**
       * <pre>
       *剩余加成次数
       * </pre>
       *
       * <code>int32 times = 3;</code>
       * @return The times.
       */
      public int getTimes() {
        return times_;
      }
      /**
       * <pre>
       *剩余加成次数
       * </pre>
       *
       * <code>int32 times = 3;</code>
       * @param value The times to set.
       * @return This builder for chaining.
       */
      public Builder setTimes(int value) {
        
        times_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *剩余加成次数
       * </pre>
       *
       * <code>int32 times = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimes() {
        
        times_ = 0;
        onChanged();
        return this;
      }

      private java.util.List<pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr> attrs_ =
        java.util.Collections.emptyList();
      private void ensureAttrsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          attrs_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr>(attrs_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr, pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr.Builder, pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttrOrBuilder> attrsBuilder_;

      /**
       * <pre>
       *玩家当前赛季加成 阶-属性
       * </pre>
       *
       * <code>repeated .pb.PbLevelAttr attrs = 4;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr> getAttrsList() {
        if (attrsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(attrs_);
        } else {
          return attrsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *玩家当前赛季加成 阶-属性
       * </pre>
       *
       * <code>repeated .pb.PbLevelAttr attrs = 4;</code>
       */
      public int getAttrsCount() {
        if (attrsBuilder_ == null) {
          return attrs_.size();
        } else {
          return attrsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *玩家当前赛季加成 阶-属性
       * </pre>
       *
       * <code>repeated .pb.PbLevelAttr attrs = 4;</code>
       */
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr getAttrs(int index) {
        if (attrsBuilder_ == null) {
          return attrs_.get(index);
        } else {
          return attrsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *玩家当前赛季加成 阶-属性
       * </pre>
       *
       * <code>repeated .pb.PbLevelAttr attrs = 4;</code>
       */
      public Builder setAttrs(
          int index, pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr value) {
        if (attrsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAttrsIsMutable();
          attrs_.set(index, value);
          onChanged();
        } else {
          attrsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *玩家当前赛季加成 阶-属性
       * </pre>
       *
       * <code>repeated .pb.PbLevelAttr attrs = 4;</code>
       */
      public Builder setAttrs(
          int index, pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr.Builder builderForValue) {
        if (attrsBuilder_ == null) {
          ensureAttrsIsMutable();
          attrs_.set(index, builderForValue.build());
          onChanged();
        } else {
          attrsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *玩家当前赛季加成 阶-属性
       * </pre>
       *
       * <code>repeated .pb.PbLevelAttr attrs = 4;</code>
       */
      public Builder addAttrs(pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr value) {
        if (attrsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAttrsIsMutable();
          attrs_.add(value);
          onChanged();
        } else {
          attrsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *玩家当前赛季加成 阶-属性
       * </pre>
       *
       * <code>repeated .pb.PbLevelAttr attrs = 4;</code>
       */
      public Builder addAttrs(
          int index, pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr value) {
        if (attrsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAttrsIsMutable();
          attrs_.add(index, value);
          onChanged();
        } else {
          attrsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *玩家当前赛季加成 阶-属性
       * </pre>
       *
       * <code>repeated .pb.PbLevelAttr attrs = 4;</code>
       */
      public Builder addAttrs(
          pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr.Builder builderForValue) {
        if (attrsBuilder_ == null) {
          ensureAttrsIsMutable();
          attrs_.add(builderForValue.build());
          onChanged();
        } else {
          attrsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *玩家当前赛季加成 阶-属性
       * </pre>
       *
       * <code>repeated .pb.PbLevelAttr attrs = 4;</code>
       */
      public Builder addAttrs(
          int index, pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr.Builder builderForValue) {
        if (attrsBuilder_ == null) {
          ensureAttrsIsMutable();
          attrs_.add(index, builderForValue.build());
          onChanged();
        } else {
          attrsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *玩家当前赛季加成 阶-属性
       * </pre>
       *
       * <code>repeated .pb.PbLevelAttr attrs = 4;</code>
       */
      public Builder addAllAttrs(
          java.lang.Iterable<? extends pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr> values) {
        if (attrsBuilder_ == null) {
          ensureAttrsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, attrs_);
          onChanged();
        } else {
          attrsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *玩家当前赛季加成 阶-属性
       * </pre>
       *
       * <code>repeated .pb.PbLevelAttr attrs = 4;</code>
       */
      public Builder clearAttrs() {
        if (attrsBuilder_ == null) {
          attrs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          attrsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *玩家当前赛季加成 阶-属性
       * </pre>
       *
       * <code>repeated .pb.PbLevelAttr attrs = 4;</code>
       */
      public Builder removeAttrs(int index) {
        if (attrsBuilder_ == null) {
          ensureAttrsIsMutable();
          attrs_.remove(index);
          onChanged();
        } else {
          attrsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *玩家当前赛季加成 阶-属性
       * </pre>
       *
       * <code>repeated .pb.PbLevelAttr attrs = 4;</code>
       */
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr.Builder getAttrsBuilder(
          int index) {
        return getAttrsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *玩家当前赛季加成 阶-属性
       * </pre>
       *
       * <code>repeated .pb.PbLevelAttr attrs = 4;</code>
       */
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttrOrBuilder getAttrsOrBuilder(
          int index) {
        if (attrsBuilder_ == null) {
          return attrs_.get(index);  } else {
          return attrsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *玩家当前赛季加成 阶-属性
       * </pre>
       *
       * <code>repeated .pb.PbLevelAttr attrs = 4;</code>
       */
      public java.util.List<? extends pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttrOrBuilder> 
           getAttrsOrBuilderList() {
        if (attrsBuilder_ != null) {
          return attrsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(attrs_);
        }
      }
      /**
       * <pre>
       *玩家当前赛季加成 阶-属性
       * </pre>
       *
       * <code>repeated .pb.PbLevelAttr attrs = 4;</code>
       */
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr.Builder addAttrsBuilder() {
        return getAttrsFieldBuilder().addBuilder(
            pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr.getDefaultInstance());
      }
      /**
       * <pre>
       *玩家当前赛季加成 阶-属性
       * </pre>
       *
       * <code>repeated .pb.PbLevelAttr attrs = 4;</code>
       */
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr.Builder addAttrsBuilder(
          int index) {
        return getAttrsFieldBuilder().addBuilder(
            index, pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr.getDefaultInstance());
      }
      /**
       * <pre>
       *玩家当前赛季加成 阶-属性
       * </pre>
       *
       * <code>repeated .pb.PbLevelAttr attrs = 4;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr.Builder> 
           getAttrsBuilderList() {
        return getAttrsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr, pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr.Builder, pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttrOrBuilder> 
          getAttrsFieldBuilder() {
        if (attrsBuilder_ == null) {
          attrsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr, pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr.Builder, pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttrOrBuilder>(
                  attrs_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          attrs_ = null;
        }
        return attrsBuilder_;
      }

      private long nextResetTime_ ;
      /**
       * <pre>
       *下次重置时间
       * </pre>
       *
       * <code>int64 next_reset_time = 5;</code>
       * @return The nextResetTime.
       */
      public long getNextResetTime() {
        return nextResetTime_;
      }
      /**
       * <pre>
       *下次重置时间
       * </pre>
       *
       * <code>int64 next_reset_time = 5;</code>
       * @param value The nextResetTime to set.
       * @return This builder for chaining.
       */
      public Builder setNextResetTime(long value) {
        
        nextResetTime_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *下次重置时间
       * </pre>
       *
       * <code>int64 next_reset_time = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearNextResetTime() {
        
        nextResetTime_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:pb.PurgatoryInfoResponse)
    }

    // @@protoc_insertion_point(class_scope:pb.PurgatoryInfoResponse)
    private static final pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryInfoResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryInfoResponse();
    }

    public static pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryInfoResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryInfoResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PurgatoryBuyPlusTimesRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.PurgatoryBuyPlusTimesRequest)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   *购买加成次数
   * </pre>
   *
   * Protobuf type {@code pb.PurgatoryBuyPlusTimesRequest}
   */
  public  static final class PurgatoryBuyPlusTimesRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.PurgatoryBuyPlusTimesRequest)
      PurgatoryBuyPlusTimesRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PurgatoryBuyPlusTimesRequest.newBuilder() to construct.
    private PurgatoryBuyPlusTimesRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PurgatoryBuyPlusTimesRequest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PurgatoryBuyPlusTimesRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PurgatoryBuyPlusTimesRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            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 pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryBuyPlusTimesRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryBuyPlusTimesRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesRequest.class, pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesRequest.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.PurgatoryBuyPlusTimesRequest.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 2600002;</code>
       */
      ID(2600002),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 2600002;</code>
       */
      public static final int ID_VALUE = 2600002;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        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.
       */
      @java.lang.Deprecated
      public static Proto 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 Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 2600002: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.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 pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesRequest.getDescriptor().getEnumTypes().get(0);
      }

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

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

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:pb.PurgatoryBuyPlusTimesRequest.Proto)
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      unknownFields.writeTo(output);
    }

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

      size = 0;
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesRequest)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesRequest other = (pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesRequest) obj;

      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *购买加成次数
     * </pre>
     *
     * Protobuf type {@code pb.PurgatoryBuyPlusTimesRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.PurgatoryBuyPlusTimesRequest)
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryBuyPlusTimesRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryBuyPlusTimesRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesRequest.class, pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesRequest.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryBuyPlusTimesRequest_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesRequest getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesRequest.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesRequest build() {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesRequest buildPartial() {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesRequest result = new pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesRequest(this);
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesRequest other) {
        if (other == pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesRequest.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:pb.PurgatoryBuyPlusTimesRequest)
    }

    // @@protoc_insertion_point(class_scope:pb.PurgatoryBuyPlusTimesRequest)
    private static final pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesRequest();
    }

    public static pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PurgatoryBuyPlusTimesResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.PurgatoryBuyPlusTimesResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *剩余次数
     * </pre>
     *
     * <code>int32 times = 1;</code>
     * @return The times.
     */
    int getTimes();
  }
  /**
   * Protobuf type {@code pb.PurgatoryBuyPlusTimesResponse}
   */
  public  static final class PurgatoryBuyPlusTimesResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.PurgatoryBuyPlusTimesResponse)
      PurgatoryBuyPlusTimesResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PurgatoryBuyPlusTimesResponse.newBuilder() to construct.
    private PurgatoryBuyPlusTimesResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PurgatoryBuyPlusTimesResponse() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PurgatoryBuyPlusTimesResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PurgatoryBuyPlusTimesResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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 8: {

              times_ = input.readInt32();
              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 pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryBuyPlusTimesResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryBuyPlusTimesResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesResponse.class, pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesResponse.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.PurgatoryBuyPlusTimesResponse.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 2600002;</code>
       */
      ID(2600002),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 2600002;</code>
       */
      public static final int ID_VALUE = 2600002;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        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.
       */
      @java.lang.Deprecated
      public static Proto 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 Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 2600002: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.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 pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesResponse.getDescriptor().getEnumTypes().get(0);
      }

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

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

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:pb.PurgatoryBuyPlusTimesResponse.Proto)
    }

    public static final int TIMES_FIELD_NUMBER = 1;
    private int times_;
    /**
     * <pre>
     *剩余次数
     * </pre>
     *
     * <code>int32 times = 1;</code>
     * @return The times.
     */
    public int getTimes() {
      return times_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (times_ != 0) {
        output.writeInt32(1, times_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (times_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, times_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesResponse)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesResponse other = (pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesResponse) obj;

      if (getTimes()
          != other.getTimes()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TIMES_FIELD_NUMBER;
      hash = (53 * hash) + getTimes();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code pb.PurgatoryBuyPlusTimesResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.PurgatoryBuyPlusTimesResponse)
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryBuyPlusTimesResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryBuyPlusTimesResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesResponse.class, pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesResponse.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        times_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryBuyPlusTimesResponse_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesResponse getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesResponse.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesResponse build() {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesResponse buildPartial() {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesResponse result = new pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesResponse(this);
        result.times_ = times_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesResponse other) {
        if (other == pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesResponse.getDefaultInstance()) return this;
        if (other.getTimes() != 0) {
          setTimes(other.getTimes());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int times_ ;
      /**
       * <pre>
       *剩余次数
       * </pre>
       *
       * <code>int32 times = 1;</code>
       * @return The times.
       */
      public int getTimes() {
        return times_;
      }
      /**
       * <pre>
       *剩余次数
       * </pre>
       *
       * <code>int32 times = 1;</code>
       * @param value The times to set.
       * @return This builder for chaining.
       */
      public Builder setTimes(int value) {
        
        times_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *剩余次数
       * </pre>
       *
       * <code>int32 times = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimes() {
        
        times_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:pb.PurgatoryBuyPlusTimesResponse)
    }

    // @@protoc_insertion_point(class_scope:pb.PurgatoryBuyPlusTimesResponse)
    private static final pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesResponse();
    }

    public static pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyPlusTimesResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PurgatoryRefineRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.PurgatoryRefineRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *阶数 准备洗练那一阶的属性
     * </pre>
     *
     * <code>int32 level = 1;</code>
     * @return The level.
     */
    int getLevel();

    /**
     * <pre>
     *状态 1是 2不是  是否是胜利后唤起，该参数后端不做验证
     * </pre>
     *
     * <code>int32 status = 2;</code>
     * @return The status.
     */
    int getStatus();
  }
  /**
   * <pre>
   *洗练
   * </pre>
   *
   * Protobuf type {@code pb.PurgatoryRefineRequest}
   */
  public  static final class PurgatoryRefineRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.PurgatoryRefineRequest)
      PurgatoryRefineRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PurgatoryRefineRequest.newBuilder() to construct.
    private PurgatoryRefineRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PurgatoryRefineRequest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PurgatoryRefineRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PurgatoryRefineRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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 8: {

              level_ = input.readInt32();
              break;
            }
            case 16: {

              status_ = input.readInt32();
              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 pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryRefineRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryRefineRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineRequest.class, pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineRequest.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.PurgatoryRefineRequest.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 2600003;</code>
       */
      ID(2600003),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 2600003;</code>
       */
      public static final int ID_VALUE = 2600003;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        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.
       */
      @java.lang.Deprecated
      public static Proto 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 Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 2600003: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.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 pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineRequest.getDescriptor().getEnumTypes().get(0);
      }

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

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

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:pb.PurgatoryRefineRequest.Proto)
    }

    public static final int LEVEL_FIELD_NUMBER = 1;
    private int level_;
    /**
     * <pre>
     *阶数 准备洗练那一阶的属性
     * </pre>
     *
     * <code>int32 level = 1;</code>
     * @return The level.
     */
    public int getLevel() {
      return level_;
    }

    public static final int STATUS_FIELD_NUMBER = 2;
    private int status_;
    /**
     * <pre>
     *状态 1是 2不是  是否是胜利后唤起，该参数后端不做验证
     * </pre>
     *
     * <code>int32 status = 2;</code>
     * @return The status.
     */
    public int getStatus() {
      return status_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (level_ != 0) {
        output.writeInt32(1, level_);
      }
      if (status_ != 0) {
        output.writeInt32(2, status_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (level_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, level_);
      }
      if (status_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, status_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineRequest)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineRequest other = (pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineRequest) obj;

      if (getLevel()
          != other.getLevel()) return false;
      if (getStatus()
          != other.getStatus()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + LEVEL_FIELD_NUMBER;
      hash = (53 * hash) + getLevel();
      hash = (37 * hash) + STATUS_FIELD_NUMBER;
      hash = (53 * hash) + getStatus();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *洗练
     * </pre>
     *
     * Protobuf type {@code pb.PurgatoryRefineRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.PurgatoryRefineRequest)
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryRefineRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryRefineRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineRequest.class, pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineRequest.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        level_ = 0;

        status_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryRefineRequest_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineRequest getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineRequest.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineRequest build() {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineRequest buildPartial() {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineRequest result = new pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineRequest(this);
        result.level_ = level_;
        result.status_ = status_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineRequest other) {
        if (other == pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineRequest.getDefaultInstance()) return this;
        if (other.getLevel() != 0) {
          setLevel(other.getLevel());
        }
        if (other.getStatus() != 0) {
          setStatus(other.getStatus());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int level_ ;
      /**
       * <pre>
       *阶数 准备洗练那一阶的属性
       * </pre>
       *
       * <code>int32 level = 1;</code>
       * @return The level.
       */
      public int getLevel() {
        return level_;
      }
      /**
       * <pre>
       *阶数 准备洗练那一阶的属性
       * </pre>
       *
       * <code>int32 level = 1;</code>
       * @param value The level to set.
       * @return This builder for chaining.
       */
      public Builder setLevel(int value) {
        
        level_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *阶数 准备洗练那一阶的属性
       * </pre>
       *
       * <code>int32 level = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearLevel() {
        
        level_ = 0;
        onChanged();
        return this;
      }

      private int status_ ;
      /**
       * <pre>
       *状态 1是 2不是  是否是胜利后唤起，该参数后端不做验证
       * </pre>
       *
       * <code>int32 status = 2;</code>
       * @return The status.
       */
      public int getStatus() {
        return status_;
      }
      /**
       * <pre>
       *状态 1是 2不是  是否是胜利后唤起，该参数后端不做验证
       * </pre>
       *
       * <code>int32 status = 2;</code>
       * @param value The status to set.
       * @return This builder for chaining.
       */
      public Builder setStatus(int value) {
        
        status_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *状态 1是 2不是  是否是胜利后唤起，该参数后端不做验证
       * </pre>
       *
       * <code>int32 status = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearStatus() {
        
        status_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:pb.PurgatoryRefineRequest)
    }

    // @@protoc_insertion_point(class_scope:pb.PurgatoryRefineRequest)
    private static final pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineRequest();
    }

    public static pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PurgatoryRefineResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.PurgatoryRefineResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *临时属性
     * </pre>
     *
     * <code>.pb.PbAttr attr = 1;</code>
     * @return Whether the attr field is set.
     */
    boolean hasAttr();
    /**
     * <pre>
     *临时属性
     * </pre>
     *
     * <code>.pb.PbAttr attr = 1;</code>
     * @return The attr.
     */
    pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr getAttr();
    /**
     * <pre>
     *临时属性
     * </pre>
     *
     * <code>.pb.PbAttr attr = 1;</code>
     */
    pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttrOrBuilder getAttrOrBuilder();
  }
  /**
   * Protobuf type {@code pb.PurgatoryRefineResponse}
   */
  public  static final class PurgatoryRefineResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.PurgatoryRefineResponse)
      PurgatoryRefineResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PurgatoryRefineResponse.newBuilder() to construct.
    private PurgatoryRefineResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PurgatoryRefineResponse() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PurgatoryRefineResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PurgatoryRefineResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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: {
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.Builder subBuilder = null;
              if (attr_ != null) {
                subBuilder = attr_.toBuilder();
              }
              attr_ = input.readMessage(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(attr_);
                attr_ = subBuilder.buildPartial();
              }

              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 pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryRefineResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryRefineResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineResponse.class, pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineResponse.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.PurgatoryRefineResponse.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 2600003;</code>
       */
      ID(2600003),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 2600003;</code>
       */
      public static final int ID_VALUE = 2600003;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        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.
       */
      @java.lang.Deprecated
      public static Proto 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 Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 2600003: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.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 pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineResponse.getDescriptor().getEnumTypes().get(0);
      }

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

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

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:pb.PurgatoryRefineResponse.Proto)
    }

    public static final int ATTR_FIELD_NUMBER = 1;
    private pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr attr_;
    /**
     * <pre>
     *临时属性
     * </pre>
     *
     * <code>.pb.PbAttr attr = 1;</code>
     * @return Whether the attr field is set.
     */
    public boolean hasAttr() {
      return attr_ != null;
    }
    /**
     * <pre>
     *临时属性
     * </pre>
     *
     * <code>.pb.PbAttr attr = 1;</code>
     * @return The attr.
     */
    public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr getAttr() {
      return attr_ == null ? pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.getDefaultInstance() : attr_;
    }
    /**
     * <pre>
     *临时属性
     * </pre>
     *
     * <code>.pb.PbAttr attr = 1;</code>
     */
    public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttrOrBuilder getAttrOrBuilder() {
      return getAttr();
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (attr_ != null) {
        output.writeMessage(1, getAttr());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (attr_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getAttr());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineResponse)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineResponse other = (pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineResponse) obj;

      if (hasAttr() != other.hasAttr()) return false;
      if (hasAttr()) {
        if (!getAttr()
            .equals(other.getAttr())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasAttr()) {
        hash = (37 * hash) + ATTR_FIELD_NUMBER;
        hash = (53 * hash) + getAttr().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code pb.PurgatoryRefineResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.PurgatoryRefineResponse)
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryRefineResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryRefineResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineResponse.class, pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineResponse.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (attrBuilder_ == null) {
          attr_ = null;
        } else {
          attr_ = null;
          attrBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryRefineResponse_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineResponse getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineResponse.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineResponse build() {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineResponse buildPartial() {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineResponse result = new pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineResponse(this);
        if (attrBuilder_ == null) {
          result.attr_ = attr_;
        } else {
          result.attr_ = attrBuilder_.build();
        }
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineResponse other) {
        if (other == pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineResponse.getDefaultInstance()) return this;
        if (other.hasAttr()) {
          mergeAttr(other.getAttr());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr attr_;
      private com.google.protobuf.SingleFieldBuilderV3<
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.Builder, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttrOrBuilder> attrBuilder_;
      /**
       * <pre>
       *临时属性
       * </pre>
       *
       * <code>.pb.PbAttr attr = 1;</code>
       * @return Whether the attr field is set.
       */
      public boolean hasAttr() {
        return attrBuilder_ != null || attr_ != null;
      }
      /**
       * <pre>
       *临时属性
       * </pre>
       *
       * <code>.pb.PbAttr attr = 1;</code>
       * @return The attr.
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr getAttr() {
        if (attrBuilder_ == null) {
          return attr_ == null ? pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.getDefaultInstance() : attr_;
        } else {
          return attrBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *临时属性
       * </pre>
       *
       * <code>.pb.PbAttr attr = 1;</code>
       */
      public Builder setAttr(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr value) {
        if (attrBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          attr_ = value;
          onChanged();
        } else {
          attrBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       *临时属性
       * </pre>
       *
       * <code>.pb.PbAttr attr = 1;</code>
       */
      public Builder setAttr(
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.Builder builderForValue) {
        if (attrBuilder_ == null) {
          attr_ = builderForValue.build();
          onChanged();
        } else {
          attrBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       *临时属性
       * </pre>
       *
       * <code>.pb.PbAttr attr = 1;</code>
       */
      public Builder mergeAttr(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr value) {
        if (attrBuilder_ == null) {
          if (attr_ != null) {
            attr_ =
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.newBuilder(attr_).mergeFrom(value).buildPartial();
          } else {
            attr_ = value;
          }
          onChanged();
        } else {
          attrBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       *临时属性
       * </pre>
       *
       * <code>.pb.PbAttr attr = 1;</code>
       */
      public Builder clearAttr() {
        if (attrBuilder_ == null) {
          attr_ = null;
          onChanged();
        } else {
          attr_ = null;
          attrBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       *临时属性
       * </pre>
       *
       * <code>.pb.PbAttr attr = 1;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.Builder getAttrBuilder() {
        
        onChanged();
        return getAttrFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *临时属性
       * </pre>
       *
       * <code>.pb.PbAttr attr = 1;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttrOrBuilder getAttrOrBuilder() {
        if (attrBuilder_ != null) {
          return attrBuilder_.getMessageOrBuilder();
        } else {
          return attr_ == null ?
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.getDefaultInstance() : attr_;
        }
      }
      /**
       * <pre>
       *临时属性
       * </pre>
       *
       * <code>.pb.PbAttr attr = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.Builder, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttrOrBuilder> 
          getAttrFieldBuilder() {
        if (attrBuilder_ == null) {
          attrBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.Builder, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttrOrBuilder>(
                  getAttr(),
                  getParentForChildren(),
                  isClean());
          attr_ = null;
        }
        return attrBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:pb.PurgatoryRefineResponse)
    }

    // @@protoc_insertion_point(class_scope:pb.PurgatoryRefineResponse)
    private static final pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineResponse();
    }

    public static pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryRefineResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PurgatoryConfirmRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.PurgatoryConfirmRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *阶数洗练那一阶的属性
     * </pre>
     *
     * <code>int32 level = 1;</code>
     * @return The level.
     */
    int getLevel();
  }
  /**
   * <pre>
   *确认洗练
   * </pre>
   *
   * Protobuf type {@code pb.PurgatoryConfirmRequest}
   */
  public  static final class PurgatoryConfirmRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.PurgatoryConfirmRequest)
      PurgatoryConfirmRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PurgatoryConfirmRequest.newBuilder() to construct.
    private PurgatoryConfirmRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PurgatoryConfirmRequest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PurgatoryConfirmRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PurgatoryConfirmRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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 8: {

              level_ = input.readInt32();
              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 pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryConfirmRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryConfirmRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmRequest.class, pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmRequest.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.PurgatoryConfirmRequest.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 2600004;</code>
       */
      ID(2600004),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 2600004;</code>
       */
      public static final int ID_VALUE = 2600004;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        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.
       */
      @java.lang.Deprecated
      public static Proto 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 Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 2600004: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.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 pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmRequest.getDescriptor().getEnumTypes().get(0);
      }

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

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

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:pb.PurgatoryConfirmRequest.Proto)
    }

    public static final int LEVEL_FIELD_NUMBER = 1;
    private int level_;
    /**
     * <pre>
     *阶数洗练那一阶的属性
     * </pre>
     *
     * <code>int32 level = 1;</code>
     * @return The level.
     */
    public int getLevel() {
      return level_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (level_ != 0) {
        output.writeInt32(1, level_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (level_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, level_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmRequest)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmRequest other = (pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmRequest) obj;

      if (getLevel()
          != other.getLevel()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + LEVEL_FIELD_NUMBER;
      hash = (53 * hash) + getLevel();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *确认洗练
     * </pre>
     *
     * Protobuf type {@code pb.PurgatoryConfirmRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.PurgatoryConfirmRequest)
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryConfirmRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryConfirmRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmRequest.class, pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmRequest.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        level_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryConfirmRequest_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmRequest getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmRequest.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmRequest build() {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmRequest buildPartial() {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmRequest result = new pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmRequest(this);
        result.level_ = level_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmRequest other) {
        if (other == pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmRequest.getDefaultInstance()) return this;
        if (other.getLevel() != 0) {
          setLevel(other.getLevel());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int level_ ;
      /**
       * <pre>
       *阶数洗练那一阶的属性
       * </pre>
       *
       * <code>int32 level = 1;</code>
       * @return The level.
       */
      public int getLevel() {
        return level_;
      }
      /**
       * <pre>
       *阶数洗练那一阶的属性
       * </pre>
       *
       * <code>int32 level = 1;</code>
       * @param value The level to set.
       * @return This builder for chaining.
       */
      public Builder setLevel(int value) {
        
        level_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *阶数洗练那一阶的属性
       * </pre>
       *
       * <code>int32 level = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearLevel() {
        
        level_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:pb.PurgatoryConfirmRequest)
    }

    // @@protoc_insertion_point(class_scope:pb.PurgatoryConfirmRequest)
    private static final pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmRequest();
    }

    public static pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PurgatoryConfirmResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.PurgatoryConfirmResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *确认属性
     * </pre>
     *
     * <code>.pb.PbAttr attr = 1;</code>
     * @return Whether the attr field is set.
     */
    boolean hasAttr();
    /**
     * <pre>
     *确认属性
     * </pre>
     *
     * <code>.pb.PbAttr attr = 1;</code>
     * @return The attr.
     */
    pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr getAttr();
    /**
     * <pre>
     *确认属性
     * </pre>
     *
     * <code>.pb.PbAttr attr = 1;</code>
     */
    pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttrOrBuilder getAttrOrBuilder();
  }
  /**
   * Protobuf type {@code pb.PurgatoryConfirmResponse}
   */
  public  static final class PurgatoryConfirmResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.PurgatoryConfirmResponse)
      PurgatoryConfirmResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PurgatoryConfirmResponse.newBuilder() to construct.
    private PurgatoryConfirmResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PurgatoryConfirmResponse() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PurgatoryConfirmResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PurgatoryConfirmResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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: {
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.Builder subBuilder = null;
              if (attr_ != null) {
                subBuilder = attr_.toBuilder();
              }
              attr_ = input.readMessage(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(attr_);
                attr_ = subBuilder.buildPartial();
              }

              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 pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryConfirmResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryConfirmResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmResponse.class, pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmResponse.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.PurgatoryConfirmResponse.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 2600004;</code>
       */
      ID(2600004),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 2600004;</code>
       */
      public static final int ID_VALUE = 2600004;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        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.
       */
      @java.lang.Deprecated
      public static Proto 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 Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 2600004: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.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 pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmResponse.getDescriptor().getEnumTypes().get(0);
      }

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

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

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:pb.PurgatoryConfirmResponse.Proto)
    }

    public static final int ATTR_FIELD_NUMBER = 1;
    private pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr attr_;
    /**
     * <pre>
     *确认属性
     * </pre>
     *
     * <code>.pb.PbAttr attr = 1;</code>
     * @return Whether the attr field is set.
     */
    public boolean hasAttr() {
      return attr_ != null;
    }
    /**
     * <pre>
     *确认属性
     * </pre>
     *
     * <code>.pb.PbAttr attr = 1;</code>
     * @return The attr.
     */
    public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr getAttr() {
      return attr_ == null ? pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.getDefaultInstance() : attr_;
    }
    /**
     * <pre>
     *确认属性
     * </pre>
     *
     * <code>.pb.PbAttr attr = 1;</code>
     */
    public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttrOrBuilder getAttrOrBuilder() {
      return getAttr();
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (attr_ != null) {
        output.writeMessage(1, getAttr());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (attr_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getAttr());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmResponse)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmResponse other = (pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmResponse) obj;

      if (hasAttr() != other.hasAttr()) return false;
      if (hasAttr()) {
        if (!getAttr()
            .equals(other.getAttr())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasAttr()) {
        hash = (37 * hash) + ATTR_FIELD_NUMBER;
        hash = (53 * hash) + getAttr().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code pb.PurgatoryConfirmResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.PurgatoryConfirmResponse)
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryConfirmResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryConfirmResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmResponse.class, pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmResponse.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (attrBuilder_ == null) {
          attr_ = null;
        } else {
          attr_ = null;
          attrBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryConfirmResponse_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmResponse getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmResponse.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmResponse build() {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmResponse buildPartial() {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmResponse result = new pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmResponse(this);
        if (attrBuilder_ == null) {
          result.attr_ = attr_;
        } else {
          result.attr_ = attrBuilder_.build();
        }
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmResponse other) {
        if (other == pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmResponse.getDefaultInstance()) return this;
        if (other.hasAttr()) {
          mergeAttr(other.getAttr());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr attr_;
      private com.google.protobuf.SingleFieldBuilderV3<
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.Builder, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttrOrBuilder> attrBuilder_;
      /**
       * <pre>
       *确认属性
       * </pre>
       *
       * <code>.pb.PbAttr attr = 1;</code>
       * @return Whether the attr field is set.
       */
      public boolean hasAttr() {
        return attrBuilder_ != null || attr_ != null;
      }
      /**
       * <pre>
       *确认属性
       * </pre>
       *
       * <code>.pb.PbAttr attr = 1;</code>
       * @return The attr.
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr getAttr() {
        if (attrBuilder_ == null) {
          return attr_ == null ? pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.getDefaultInstance() : attr_;
        } else {
          return attrBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *确认属性
       * </pre>
       *
       * <code>.pb.PbAttr attr = 1;</code>
       */
      public Builder setAttr(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr value) {
        if (attrBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          attr_ = value;
          onChanged();
        } else {
          attrBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       *确认属性
       * </pre>
       *
       * <code>.pb.PbAttr attr = 1;</code>
       */
      public Builder setAttr(
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.Builder builderForValue) {
        if (attrBuilder_ == null) {
          attr_ = builderForValue.build();
          onChanged();
        } else {
          attrBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       *确认属性
       * </pre>
       *
       * <code>.pb.PbAttr attr = 1;</code>
       */
      public Builder mergeAttr(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr value) {
        if (attrBuilder_ == null) {
          if (attr_ != null) {
            attr_ =
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.newBuilder(attr_).mergeFrom(value).buildPartial();
          } else {
            attr_ = value;
          }
          onChanged();
        } else {
          attrBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       *确认属性
       * </pre>
       *
       * <code>.pb.PbAttr attr = 1;</code>
       */
      public Builder clearAttr() {
        if (attrBuilder_ == null) {
          attr_ = null;
          onChanged();
        } else {
          attr_ = null;
          attrBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       *确认属性
       * </pre>
       *
       * <code>.pb.PbAttr attr = 1;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.Builder getAttrBuilder() {
        
        onChanged();
        return getAttrFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *确认属性
       * </pre>
       *
       * <code>.pb.PbAttr attr = 1;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttrOrBuilder getAttrOrBuilder() {
        if (attrBuilder_ != null) {
          return attrBuilder_.getMessageOrBuilder();
        } else {
          return attr_ == null ?
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.getDefaultInstance() : attr_;
        }
      }
      /**
       * <pre>
       *确认属性
       * </pre>
       *
       * <code>.pb.PbAttr attr = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.Builder, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttrOrBuilder> 
          getAttrFieldBuilder() {
        if (attrBuilder_ == null) {
          attrBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.Builder, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttrOrBuilder>(
                  getAttr(),
                  getParentForChildren(),
                  isClean());
          attr_ = null;
        }
        return attrBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:pb.PurgatoryConfirmResponse)
    }

    // @@protoc_insertion_point(class_scope:pb.PurgatoryConfirmResponse)
    private static final pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmResponse();
    }

    public static pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryConfirmResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PurgatoryBuyRefineItemRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.PurgatoryBuyRefineItemRequest)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   *购买洗练道具
   * </pre>
   *
   * Protobuf type {@code pb.PurgatoryBuyRefineItemRequest}
   */
  public  static final class PurgatoryBuyRefineItemRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.PurgatoryBuyRefineItemRequest)
      PurgatoryBuyRefineItemRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PurgatoryBuyRefineItemRequest.newBuilder() to construct.
    private PurgatoryBuyRefineItemRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PurgatoryBuyRefineItemRequest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PurgatoryBuyRefineItemRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PurgatoryBuyRefineItemRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            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 pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryBuyRefineItemRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryBuyRefineItemRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemRequest.class, pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemRequest.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.PurgatoryBuyRefineItemRequest.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 2600005;</code>
       */
      ID(2600005),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 2600005;</code>
       */
      public static final int ID_VALUE = 2600005;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        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.
       */
      @java.lang.Deprecated
      public static Proto 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 Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 2600005: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.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 pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemRequest.getDescriptor().getEnumTypes().get(0);
      }

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

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

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:pb.PurgatoryBuyRefineItemRequest.Proto)
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      unknownFields.writeTo(output);
    }

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

      size = 0;
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemRequest)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemRequest other = (pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemRequest) obj;

      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

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

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *购买洗练道具
     * </pre>
     *
     * Protobuf type {@code pb.PurgatoryBuyRefineItemRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.PurgatoryBuyRefineItemRequest)
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryBuyRefineItemRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryBuyRefineItemRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemRequest.class, pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemRequest.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryBuyRefineItemRequest_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemRequest getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemRequest.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemRequest build() {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemRequest buildPartial() {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemRequest result = new pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemRequest(this);
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemRequest other) {
        if (other == pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemRequest.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:pb.PurgatoryBuyRefineItemRequest)
    }

    // @@protoc_insertion_point(class_scope:pb.PurgatoryBuyRefineItemRequest)
    private static final pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemRequest();
    }

    public static pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PurgatoryBuyRefineItemResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.PurgatoryBuyRefineItemResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *发放道具
     * </pre>
     *
     * <code>.pb.PbItem rewards = 1;</code>
     * @return Whether the rewards field is set.
     */
    boolean hasRewards();
    /**
     * <pre>
     *发放道具
     * </pre>
     *
     * <code>.pb.PbItem rewards = 1;</code>
     * @return The rewards.
     */
    pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem getRewards();
    /**
     * <pre>
     *发放道具
     * </pre>
     *
     * <code>.pb.PbItem rewards = 1;</code>
     */
    pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItemOrBuilder getRewardsOrBuilder();
  }
  /**
   * Protobuf type {@code pb.PurgatoryBuyRefineItemResponse}
   */
  public  static final class PurgatoryBuyRefineItemResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.PurgatoryBuyRefineItemResponse)
      PurgatoryBuyRefineItemResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PurgatoryBuyRefineItemResponse.newBuilder() to construct.
    private PurgatoryBuyRefineItemResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PurgatoryBuyRefineItemResponse() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PurgatoryBuyRefineItemResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PurgatoryBuyRefineItemResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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: {
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.Builder subBuilder = null;
              if (rewards_ != null) {
                subBuilder = rewards_.toBuilder();
              }
              rewards_ = input.readMessage(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(rewards_);
                rewards_ = subBuilder.buildPartial();
              }

              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 pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryBuyRefineItemResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryBuyRefineItemResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemResponse.class, pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemResponse.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.PurgatoryBuyRefineItemResponse.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 2600005;</code>
       */
      ID(2600005),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 2600005;</code>
       */
      public static final int ID_VALUE = 2600005;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        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.
       */
      @java.lang.Deprecated
      public static Proto 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 Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 2600005: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.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 pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemResponse.getDescriptor().getEnumTypes().get(0);
      }

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

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

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:pb.PurgatoryBuyRefineItemResponse.Proto)
    }

    public static final int REWARDS_FIELD_NUMBER = 1;
    private pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem rewards_;
    /**
     * <pre>
     *发放道具
     * </pre>
     *
     * <code>.pb.PbItem rewards = 1;</code>
     * @return Whether the rewards field is set.
     */
    public boolean hasRewards() {
      return rewards_ != null;
    }
    /**
     * <pre>
     *发放道具
     * </pre>
     *
     * <code>.pb.PbItem rewards = 1;</code>
     * @return The rewards.
     */
    public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem getRewards() {
      return rewards_ == null ? pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.getDefaultInstance() : rewards_;
    }
    /**
     * <pre>
     *发放道具
     * </pre>
     *
     * <code>.pb.PbItem rewards = 1;</code>
     */
    public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItemOrBuilder getRewardsOrBuilder() {
      return getRewards();
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (rewards_ != null) {
        output.writeMessage(1, getRewards());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (rewards_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getRewards());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemResponse)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemResponse other = (pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemResponse) obj;

      if (hasRewards() != other.hasRewards()) return false;
      if (hasRewards()) {
        if (!getRewards()
            .equals(other.getRewards())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasRewards()) {
        hash = (37 * hash) + REWARDS_FIELD_NUMBER;
        hash = (53 * hash) + getRewards().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code pb.PurgatoryBuyRefineItemResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.PurgatoryBuyRefineItemResponse)
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryBuyRefineItemResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryBuyRefineItemResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemResponse.class, pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemResponse.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (rewardsBuilder_ == null) {
          rewards_ = null;
        } else {
          rewards_ = null;
          rewardsBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PurgatoryBuyRefineItemResponse_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemResponse getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemResponse.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemResponse build() {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemResponse buildPartial() {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemResponse result = new pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemResponse(this);
        if (rewardsBuilder_ == null) {
          result.rewards_ = rewards_;
        } else {
          result.rewards_ = rewardsBuilder_.build();
        }
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemResponse other) {
        if (other == pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemResponse.getDefaultInstance()) return this;
        if (other.hasRewards()) {
          mergeRewards(other.getRewards());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem rewards_;
      private com.google.protobuf.SingleFieldBuilderV3<
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.Builder, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItemOrBuilder> rewardsBuilder_;
      /**
       * <pre>
       *发放道具
       * </pre>
       *
       * <code>.pb.PbItem rewards = 1;</code>
       * @return Whether the rewards field is set.
       */
      public boolean hasRewards() {
        return rewardsBuilder_ != null || rewards_ != null;
      }
      /**
       * <pre>
       *发放道具
       * </pre>
       *
       * <code>.pb.PbItem rewards = 1;</code>
       * @return The rewards.
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem getRewards() {
        if (rewardsBuilder_ == null) {
          return rewards_ == null ? pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.getDefaultInstance() : rewards_;
        } else {
          return rewardsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *发放道具
       * </pre>
       *
       * <code>.pb.PbItem rewards = 1;</code>
       */
      public Builder setRewards(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem value) {
        if (rewardsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          rewards_ = value;
          onChanged();
        } else {
          rewardsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       *发放道具
       * </pre>
       *
       * <code>.pb.PbItem rewards = 1;</code>
       */
      public Builder setRewards(
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.Builder builderForValue) {
        if (rewardsBuilder_ == null) {
          rewards_ = builderForValue.build();
          onChanged();
        } else {
          rewardsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       *发放道具
       * </pre>
       *
       * <code>.pb.PbItem rewards = 1;</code>
       */
      public Builder mergeRewards(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem value) {
        if (rewardsBuilder_ == null) {
          if (rewards_ != null) {
            rewards_ =
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.newBuilder(rewards_).mergeFrom(value).buildPartial();
          } else {
            rewards_ = value;
          }
          onChanged();
        } else {
          rewardsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       *发放道具
       * </pre>
       *
       * <code>.pb.PbItem rewards = 1;</code>
       */
      public Builder clearRewards() {
        if (rewardsBuilder_ == null) {
          rewards_ = null;
          onChanged();
        } else {
          rewards_ = null;
          rewardsBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       *发放道具
       * </pre>
       *
       * <code>.pb.PbItem rewards = 1;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.Builder getRewardsBuilder() {
        
        onChanged();
        return getRewardsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *发放道具
       * </pre>
       *
       * <code>.pb.PbItem rewards = 1;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItemOrBuilder getRewardsOrBuilder() {
        if (rewardsBuilder_ != null) {
          return rewardsBuilder_.getMessageOrBuilder();
        } else {
          return rewards_ == null ?
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.getDefaultInstance() : rewards_;
        }
      }
      /**
       * <pre>
       *发放道具
       * </pre>
       *
       * <code>.pb.PbItem rewards = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.Builder, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItemOrBuilder> 
          getRewardsFieldBuilder() {
        if (rewardsBuilder_ == null) {
          rewardsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItem.Builder, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbItemOrBuilder>(
                  getRewards(),
                  getParentForChildren(),
                  isClean());
          rewards_ = null;
        }
        return rewardsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:pb.PurgatoryBuyRefineItemResponse)
    }

    // @@protoc_insertion_point(class_scope:pb.PurgatoryBuyRefineItemResponse)
    private static final pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemResponse();
    }

    public static pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.purgatory.Purgatory.PurgatoryBuyRefineItemResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PbPurgatoryBattleParamOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.PbPurgatoryBattleParam)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *奖励加成标识 0为不加成 1为加成
     * </pre>
     *
     * <code>int32 plus_flag = 1;</code>
     * @return The plusFlag.
     */
    int getPlusFlag();
  }
  /**
   * Protobuf type {@code pb.PbPurgatoryBattleParam}
   */
  public  static final class PbPurgatoryBattleParam extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.PbPurgatoryBattleParam)
      PbPurgatoryBattleParamOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PbPurgatoryBattleParam.newBuilder() to construct.
    private PbPurgatoryBattleParam(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PbPurgatoryBattleParam() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PbPurgatoryBattleParam();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PbPurgatoryBattleParam(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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 8: {

              plusFlag_ = input.readInt32();
              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 pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PbPurgatoryBattleParam_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PbPurgatoryBattleParam_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleParam.class, pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleParam.Builder.class);
    }

    public static final int PLUS_FLAG_FIELD_NUMBER = 1;
    private int plusFlag_;
    /**
     * <pre>
     *奖励加成标识 0为不加成 1为加成
     * </pre>
     *
     * <code>int32 plus_flag = 1;</code>
     * @return The plusFlag.
     */
    public int getPlusFlag() {
      return plusFlag_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (plusFlag_ != 0) {
        output.writeInt32(1, plusFlag_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (plusFlag_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, plusFlag_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleParam)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleParam other = (pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleParam) obj;

      if (getPlusFlag()
          != other.getPlusFlag()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + PLUS_FLAG_FIELD_NUMBER;
      hash = (53 * hash) + getPlusFlag();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleParam prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code pb.PbPurgatoryBattleParam}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.PbPurgatoryBattleParam)
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleParamOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PbPurgatoryBattleParam_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PbPurgatoryBattleParam_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleParam.class, pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleParam.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleParam.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        plusFlag_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PbPurgatoryBattleParam_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleParam getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleParam.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleParam build() {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleParam result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleParam buildPartial() {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleParam result = new pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleParam(this);
        result.plusFlag_ = plusFlag_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleParam other) {
        if (other == pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleParam.getDefaultInstance()) return this;
        if (other.getPlusFlag() != 0) {
          setPlusFlag(other.getPlusFlag());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleParam parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleParam) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int plusFlag_ ;
      /**
       * <pre>
       *奖励加成标识 0为不加成 1为加成
       * </pre>
       *
       * <code>int32 plus_flag = 1;</code>
       * @return The plusFlag.
       */
      public int getPlusFlag() {
        return plusFlag_;
      }
      /**
       * <pre>
       *奖励加成标识 0为不加成 1为加成
       * </pre>
       *
       * <code>int32 plus_flag = 1;</code>
       * @param value The plusFlag to set.
       * @return This builder for chaining.
       */
      public Builder setPlusFlag(int value) {
        
        plusFlag_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *奖励加成标识 0为不加成 1为加成
       * </pre>
       *
       * <code>int32 plus_flag = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPlusFlag() {
        
        plusFlag_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:pb.PbPurgatoryBattleParam)
    }

    // @@protoc_insertion_point(class_scope:pb.PbPurgatoryBattleParam)
    private static final pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleParam DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleParam();
    }

    public static pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleParam getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleParam getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PbPurgatoryBattleResultOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.PbPurgatoryBattleResult)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *当前阶
     * </pre>
     *
     * <code>int32 level = 1;</code>
     * @return The level.
     */
    int getLevel();

    /**
     * <pre>
     *最大阶
     * </pre>
     *
     * <code>int32 max_level = 2;</code>
     * @return The maxLevel.
     */
    int getMaxLevel();

    /**
     * <pre>
     *通关奖励
     * </pre>
     *
     * <code>repeated .pb.PbThing rewards = 3;</code>
     */
    java.util.List<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing> 
        getRewardsList();
    /**
     * <pre>
     *通关奖励
     * </pre>
     *
     * <code>repeated .pb.PbThing rewards = 3;</code>
     */
    pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing getRewards(int index);
    /**
     * <pre>
     *通关奖励
     * </pre>
     *
     * <code>repeated .pb.PbThing rewards = 3;</code>
     */
    int getRewardsCount();
    /**
     * <pre>
     *通关奖励
     * </pre>
     *
     * <code>repeated .pb.PbThing rewards = 3;</code>
     */
    java.util.List<? extends pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingOrBuilder> 
        getRewardsOrBuilderList();
    /**
     * <pre>
     *通关奖励
     * </pre>
     *
     * <code>repeated .pb.PbThing rewards = 3;</code>
     */
    pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingOrBuilder getRewardsOrBuilder(
        int index);

    /**
     * <pre>
     *打完随出来的属性 或者当前阶的属性
     * </pre>
     *
     * <code>.pb.PbAttr attr = 4;</code>
     * @return Whether the attr field is set.
     */
    boolean hasAttr();
    /**
     * <pre>
     *打完随出来的属性 或者当前阶的属性
     * </pre>
     *
     * <code>.pb.PbAttr attr = 4;</code>
     * @return The attr.
     */
    pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr getAttr();
    /**
     * <pre>
     *打完随出来的属性 或者当前阶的属性
     * </pre>
     *
     * <code>.pb.PbAttr attr = 4;</code>
     */
    pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttrOrBuilder getAttrOrBuilder();
  }
  /**
   * Protobuf type {@code pb.PbPurgatoryBattleResult}
   */
  public  static final class PbPurgatoryBattleResult extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.PbPurgatoryBattleResult)
      PbPurgatoryBattleResultOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PbPurgatoryBattleResult.newBuilder() to construct.
    private PbPurgatoryBattleResult(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PbPurgatoryBattleResult() {
      rewards_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PbPurgatoryBattleResult();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PbPurgatoryBattleResult(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.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 8: {

              level_ = input.readInt32();
              break;
            }
            case 16: {

              maxLevel_ = input.readInt32();
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                rewards_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing>();
                mutable_bitField0_ |= 0x00000001;
              }
              rewards_.add(
                  input.readMessage(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.parser(), extensionRegistry));
              break;
            }
            case 34: {
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.Builder subBuilder = null;
              if (attr_ != null) {
                subBuilder = attr_.toBuilder();
              }
              attr_ = input.readMessage(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(attr_);
                attr_ = subBuilder.buildPartial();
              }

              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          rewards_ = java.util.Collections.unmodifiableList(rewards_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PbPurgatoryBattleResult_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PbPurgatoryBattleResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleResult.class, pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleResult.Builder.class);
    }

    public static final int LEVEL_FIELD_NUMBER = 1;
    private int level_;
    /**
     * <pre>
     *当前阶
     * </pre>
     *
     * <code>int32 level = 1;</code>
     * @return The level.
     */
    public int getLevel() {
      return level_;
    }

    public static final int MAX_LEVEL_FIELD_NUMBER = 2;
    private int maxLevel_;
    /**
     * <pre>
     *最大阶
     * </pre>
     *
     * <code>int32 max_level = 2;</code>
     * @return The maxLevel.
     */
    public int getMaxLevel() {
      return maxLevel_;
    }

    public static final int REWARDS_FIELD_NUMBER = 3;
    private java.util.List<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing> rewards_;
    /**
     * <pre>
     *通关奖励
     * </pre>
     *
     * <code>repeated .pb.PbThing rewards = 3;</code>
     */
    public java.util.List<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing> getRewardsList() {
      return rewards_;
    }
    /**
     * <pre>
     *通关奖励
     * </pre>
     *
     * <code>repeated .pb.PbThing rewards = 3;</code>
     */
    public java.util.List<? extends pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingOrBuilder> 
        getRewardsOrBuilderList() {
      return rewards_;
    }
    /**
     * <pre>
     *通关奖励
     * </pre>
     *
     * <code>repeated .pb.PbThing rewards = 3;</code>
     */
    public int getRewardsCount() {
      return rewards_.size();
    }
    /**
     * <pre>
     *通关奖励
     * </pre>
     *
     * <code>repeated .pb.PbThing rewards = 3;</code>
     */
    public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing getRewards(int index) {
      return rewards_.get(index);
    }
    /**
     * <pre>
     *通关奖励
     * </pre>
     *
     * <code>repeated .pb.PbThing rewards = 3;</code>
     */
    public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingOrBuilder getRewardsOrBuilder(
        int index) {
      return rewards_.get(index);
    }

    public static final int ATTR_FIELD_NUMBER = 4;
    private pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr attr_;
    /**
     * <pre>
     *打完随出来的属性 或者当前阶的属性
     * </pre>
     *
     * <code>.pb.PbAttr attr = 4;</code>
     * @return Whether the attr field is set.
     */
    public boolean hasAttr() {
      return attr_ != null;
    }
    /**
     * <pre>
     *打完随出来的属性 或者当前阶的属性
     * </pre>
     *
     * <code>.pb.PbAttr attr = 4;</code>
     * @return The attr.
     */
    public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr getAttr() {
      return attr_ == null ? pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.getDefaultInstance() : attr_;
    }
    /**
     * <pre>
     *打完随出来的属性 或者当前阶的属性
     * </pre>
     *
     * <code>.pb.PbAttr attr = 4;</code>
     */
    public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttrOrBuilder getAttrOrBuilder() {
      return getAttr();
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (level_ != 0) {
        output.writeInt32(1, level_);
      }
      if (maxLevel_ != 0) {
        output.writeInt32(2, maxLevel_);
      }
      for (int i = 0; i < rewards_.size(); i++) {
        output.writeMessage(3, rewards_.get(i));
      }
      if (attr_ != null) {
        output.writeMessage(4, getAttr());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (level_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, level_);
      }
      if (maxLevel_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, maxLevel_);
      }
      for (int i = 0; i < rewards_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, rewards_.get(i));
      }
      if (attr_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getAttr());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleResult)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleResult other = (pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleResult) obj;

      if (getLevel()
          != other.getLevel()) return false;
      if (getMaxLevel()
          != other.getMaxLevel()) return false;
      if (!getRewardsList()
          .equals(other.getRewardsList())) return false;
      if (hasAttr() != other.hasAttr()) return false;
      if (hasAttr()) {
        if (!getAttr()
            .equals(other.getAttr())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + LEVEL_FIELD_NUMBER;
      hash = (53 * hash) + getLevel();
      hash = (37 * hash) + MAX_LEVEL_FIELD_NUMBER;
      hash = (53 * hash) + getMaxLevel();
      if (getRewardsCount() > 0) {
        hash = (37 * hash) + REWARDS_FIELD_NUMBER;
        hash = (53 * hash) + getRewardsList().hashCode();
      }
      if (hasAttr()) {
        hash = (37 * hash) + ATTR_FIELD_NUMBER;
        hash = (53 * hash) + getAttr().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleResult prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code pb.PbPurgatoryBattleResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.PbPurgatoryBattleResult)
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PbPurgatoryBattleResult_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PbPurgatoryBattleResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleResult.class, pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleResult.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleResult.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getRewardsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        level_ = 0;

        maxLevel_ = 0;

        if (rewardsBuilder_ == null) {
          rewards_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          rewardsBuilder_.clear();
        }
        if (attrBuilder_ == null) {
          attr_ = null;
        } else {
          attr_ = null;
          attrBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PbPurgatoryBattleResult_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleResult getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleResult.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleResult build() {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleResult buildPartial() {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleResult result = new pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleResult(this);
        int from_bitField0_ = bitField0_;
        result.level_ = level_;
        result.maxLevel_ = maxLevel_;
        if (rewardsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            rewards_ = java.util.Collections.unmodifiableList(rewards_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.rewards_ = rewards_;
        } else {
          result.rewards_ = rewardsBuilder_.build();
        }
        if (attrBuilder_ == null) {
          result.attr_ = attr_;
        } else {
          result.attr_ = attrBuilder_.build();
        }
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleResult other) {
        if (other == pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleResult.getDefaultInstance()) return this;
        if (other.getLevel() != 0) {
          setLevel(other.getLevel());
        }
        if (other.getMaxLevel() != 0) {
          setMaxLevel(other.getMaxLevel());
        }
        if (rewardsBuilder_ == null) {
          if (!other.rewards_.isEmpty()) {
            if (rewards_.isEmpty()) {
              rewards_ = other.rewards_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureRewardsIsMutable();
              rewards_.addAll(other.rewards_);
            }
            onChanged();
          }
        } else {
          if (!other.rewards_.isEmpty()) {
            if (rewardsBuilder_.isEmpty()) {
              rewardsBuilder_.dispose();
              rewardsBuilder_ = null;
              rewards_ = other.rewards_;
              bitField0_ = (bitField0_ & ~0x00000001);
              rewardsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getRewardsFieldBuilder() : null;
            } else {
              rewardsBuilder_.addAllMessages(other.rewards_);
            }
          }
        }
        if (other.hasAttr()) {
          mergeAttr(other.getAttr());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

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

      private int level_ ;
      /**
       * <pre>
       *当前阶
       * </pre>
       *
       * <code>int32 level = 1;</code>
       * @return The level.
       */
      public int getLevel() {
        return level_;
      }
      /**
       * <pre>
       *当前阶
       * </pre>
       *
       * <code>int32 level = 1;</code>
       * @param value The level to set.
       * @return This builder for chaining.
       */
      public Builder setLevel(int value) {
        
        level_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *当前阶
       * </pre>
       *
       * <code>int32 level = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearLevel() {
        
        level_ = 0;
        onChanged();
        return this;
      }

      private int maxLevel_ ;
      /**
       * <pre>
       *最大阶
       * </pre>
       *
       * <code>int32 max_level = 2;</code>
       * @return The maxLevel.
       */
      public int getMaxLevel() {
        return maxLevel_;
      }
      /**
       * <pre>
       *最大阶
       * </pre>
       *
       * <code>int32 max_level = 2;</code>
       * @param value The maxLevel to set.
       * @return This builder for chaining.
       */
      public Builder setMaxLevel(int value) {
        
        maxLevel_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *最大阶
       * </pre>
       *
       * <code>int32 max_level = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearMaxLevel() {
        
        maxLevel_ = 0;
        onChanged();
        return this;
      }

      private java.util.List<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing> rewards_ =
        java.util.Collections.emptyList();
      private void ensureRewardsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          rewards_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing>(rewards_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.Builder, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingOrBuilder> rewardsBuilder_;

      /**
       * <pre>
       *通关奖励
       * </pre>
       *
       * <code>repeated .pb.PbThing rewards = 3;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing> getRewardsList() {
        if (rewardsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(rewards_);
        } else {
          return rewardsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *通关奖励
       * </pre>
       *
       * <code>repeated .pb.PbThing rewards = 3;</code>
       */
      public int getRewardsCount() {
        if (rewardsBuilder_ == null) {
          return rewards_.size();
        } else {
          return rewardsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *通关奖励
       * </pre>
       *
       * <code>repeated .pb.PbThing rewards = 3;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing getRewards(int index) {
        if (rewardsBuilder_ == null) {
          return rewards_.get(index);
        } else {
          return rewardsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *通关奖励
       * </pre>
       *
       * <code>repeated .pb.PbThing rewards = 3;</code>
       */
      public Builder setRewards(
          int index, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing value) {
        if (rewardsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRewardsIsMutable();
          rewards_.set(index, value);
          onChanged();
        } else {
          rewardsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *通关奖励
       * </pre>
       *
       * <code>repeated .pb.PbThing rewards = 3;</code>
       */
      public Builder setRewards(
          int index, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.Builder builderForValue) {
        if (rewardsBuilder_ == null) {
          ensureRewardsIsMutable();
          rewards_.set(index, builderForValue.build());
          onChanged();
        } else {
          rewardsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *通关奖励
       * </pre>
       *
       * <code>repeated .pb.PbThing rewards = 3;</code>
       */
      public Builder addRewards(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing value) {
        if (rewardsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRewardsIsMutable();
          rewards_.add(value);
          onChanged();
        } else {
          rewardsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *通关奖励
       * </pre>
       *
       * <code>repeated .pb.PbThing rewards = 3;</code>
       */
      public Builder addRewards(
          int index, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing value) {
        if (rewardsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRewardsIsMutable();
          rewards_.add(index, value);
          onChanged();
        } else {
          rewardsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *通关奖励
       * </pre>
       *
       * <code>repeated .pb.PbThing rewards = 3;</code>
       */
      public Builder addRewards(
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.Builder builderForValue) {
        if (rewardsBuilder_ == null) {
          ensureRewardsIsMutable();
          rewards_.add(builderForValue.build());
          onChanged();
        } else {
          rewardsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *通关奖励
       * </pre>
       *
       * <code>repeated .pb.PbThing rewards = 3;</code>
       */
      public Builder addRewards(
          int index, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.Builder builderForValue) {
        if (rewardsBuilder_ == null) {
          ensureRewardsIsMutable();
          rewards_.add(index, builderForValue.build());
          onChanged();
        } else {
          rewardsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *通关奖励
       * </pre>
       *
       * <code>repeated .pb.PbThing rewards = 3;</code>
       */
      public Builder addAllRewards(
          java.lang.Iterable<? extends pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing> values) {
        if (rewardsBuilder_ == null) {
          ensureRewardsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, rewards_);
          onChanged();
        } else {
          rewardsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *通关奖励
       * </pre>
       *
       * <code>repeated .pb.PbThing rewards = 3;</code>
       */
      public Builder clearRewards() {
        if (rewardsBuilder_ == null) {
          rewards_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          rewardsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *通关奖励
       * </pre>
       *
       * <code>repeated .pb.PbThing rewards = 3;</code>
       */
      public Builder removeRewards(int index) {
        if (rewardsBuilder_ == null) {
          ensureRewardsIsMutable();
          rewards_.remove(index);
          onChanged();
        } else {
          rewardsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *通关奖励
       * </pre>
       *
       * <code>repeated .pb.PbThing rewards = 3;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.Builder getRewardsBuilder(
          int index) {
        return getRewardsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *通关奖励
       * </pre>
       *
       * <code>repeated .pb.PbThing rewards = 3;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingOrBuilder getRewardsOrBuilder(
          int index) {
        if (rewardsBuilder_ == null) {
          return rewards_.get(index);  } else {
          return rewardsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *通关奖励
       * </pre>
       *
       * <code>repeated .pb.PbThing rewards = 3;</code>
       */
      public java.util.List<? extends pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingOrBuilder> 
           getRewardsOrBuilderList() {
        if (rewardsBuilder_ != null) {
          return rewardsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(rewards_);
        }
      }
      /**
       * <pre>
       *通关奖励
       * </pre>
       *
       * <code>repeated .pb.PbThing rewards = 3;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.Builder addRewardsBuilder() {
        return getRewardsFieldBuilder().addBuilder(
            pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.getDefaultInstance());
      }
      /**
       * <pre>
       *通关奖励
       * </pre>
       *
       * <code>repeated .pb.PbThing rewards = 3;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.Builder addRewardsBuilder(
          int index) {
        return getRewardsFieldBuilder().addBuilder(
            index, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.getDefaultInstance());
      }
      /**
       * <pre>
       *通关奖励
       * </pre>
       *
       * <code>repeated .pb.PbThing rewards = 3;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.Builder> 
           getRewardsBuilderList() {
        return getRewardsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.Builder, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingOrBuilder> 
          getRewardsFieldBuilder() {
        if (rewardsBuilder_ == null) {
          rewardsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThing.Builder, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbThingOrBuilder>(
                  rewards_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          rewards_ = null;
        }
        return rewardsBuilder_;
      }

      private pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr attr_;
      private com.google.protobuf.SingleFieldBuilderV3<
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.Builder, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttrOrBuilder> attrBuilder_;
      /**
       * <pre>
       *打完随出来的属性 或者当前阶的属性
       * </pre>
       *
       * <code>.pb.PbAttr attr = 4;</code>
       * @return Whether the attr field is set.
       */
      public boolean hasAttr() {
        return attrBuilder_ != null || attr_ != null;
      }
      /**
       * <pre>
       *打完随出来的属性 或者当前阶的属性
       * </pre>
       *
       * <code>.pb.PbAttr attr = 4;</code>
       * @return The attr.
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr getAttr() {
        if (attrBuilder_ == null) {
          return attr_ == null ? pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.getDefaultInstance() : attr_;
        } else {
          return attrBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       *打完随出来的属性 或者当前阶的属性
       * </pre>
       *
       * <code>.pb.PbAttr attr = 4;</code>
       */
      public Builder setAttr(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr value) {
        if (attrBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          attr_ = value;
          onChanged();
        } else {
          attrBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       *打完随出来的属性 或者当前阶的属性
       * </pre>
       *
       * <code>.pb.PbAttr attr = 4;</code>
       */
      public Builder setAttr(
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.Builder builderForValue) {
        if (attrBuilder_ == null) {
          attr_ = builderForValue.build();
          onChanged();
        } else {
          attrBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       *打完随出来的属性 或者当前阶的属性
       * </pre>
       *
       * <code>.pb.PbAttr attr = 4;</code>
       */
      public Builder mergeAttr(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr value) {
        if (attrBuilder_ == null) {
          if (attr_ != null) {
            attr_ =
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.newBuilder(attr_).mergeFrom(value).buildPartial();
          } else {
            attr_ = value;
          }
          onChanged();
        } else {
          attrBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       *打完随出来的属性 或者当前阶的属性
       * </pre>
       *
       * <code>.pb.PbAttr attr = 4;</code>
       */
      public Builder clearAttr() {
        if (attrBuilder_ == null) {
          attr_ = null;
          onChanged();
        } else {
          attr_ = null;
          attrBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       *打完随出来的属性 或者当前阶的属性
       * </pre>
       *
       * <code>.pb.PbAttr attr = 4;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.Builder getAttrBuilder() {
        
        onChanged();
        return getAttrFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       *打完随出来的属性 或者当前阶的属性
       * </pre>
       *
       * <code>.pb.PbAttr attr = 4;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttrOrBuilder getAttrOrBuilder() {
        if (attrBuilder_ != null) {
          return attrBuilder_.getMessageOrBuilder();
        } else {
          return attr_ == null ?
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.getDefaultInstance() : attr_;
        }
      }
      /**
       * <pre>
       *打完随出来的属性 或者当前阶的属性
       * </pre>
       *
       * <code>.pb.PbAttr attr = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.Builder, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttrOrBuilder> 
          getAttrFieldBuilder() {
        if (attrBuilder_ == null) {
          attrBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.Builder, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttrOrBuilder>(
                  getAttr(),
                  getParentForChildren(),
                  isClean());
          attr_ = null;
        }
        return attrBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:pb.PbPurgatoryBattleResult)
    }

    // @@protoc_insertion_point(class_scope:pb.PbPurgatoryBattleResult)
    private static final pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleResult DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleResult();
    }

    public static pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleResult getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.purgatory.Purgatory.PbPurgatoryBattleResult getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PbLevelAttrOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.PbLevelAttr)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>int32 level = 1;</code>
     * @return The level.
     */
    int getLevel();

    /**
     * <code>.pb.PbAttr pbAttr = 2;</code>
     * @return Whether the pbAttr field is set.
     */
    boolean hasPbAttr();
    /**
     * <code>.pb.PbAttr pbAttr = 2;</code>
     * @return The pbAttr.
     */
    pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr getPbAttr();
    /**
     * <code>.pb.PbAttr pbAttr = 2;</code>
     */
    pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttrOrBuilder getPbAttrOrBuilder();
  }
  /**
   * Protobuf type {@code pb.PbLevelAttr}
   */
  public  static final class PbLevelAttr extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.PbLevelAttr)
      PbLevelAttrOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PbLevelAttr.newBuilder() to construct.
    private PbLevelAttr(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PbLevelAttr() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PbLevelAttr();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PbLevelAttr(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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 8: {

              level_ = input.readInt32();
              break;
            }
            case 18: {
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.Builder subBuilder = null;
              if (pbAttr_ != null) {
                subBuilder = pbAttr_.toBuilder();
              }
              pbAttr_ = input.readMessage(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(pbAttr_);
                pbAttr_ = subBuilder.buildPartial();
              }

              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 pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PbLevelAttr_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PbLevelAttr_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr.class, pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr.Builder.class);
    }

    public static final int LEVEL_FIELD_NUMBER = 1;
    private int level_;
    /**
     * <code>int32 level = 1;</code>
     * @return The level.
     */
    public int getLevel() {
      return level_;
    }

    public static final int PBATTR_FIELD_NUMBER = 2;
    private pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr pbAttr_;
    /**
     * <code>.pb.PbAttr pbAttr = 2;</code>
     * @return Whether the pbAttr field is set.
     */
    public boolean hasPbAttr() {
      return pbAttr_ != null;
    }
    /**
     * <code>.pb.PbAttr pbAttr = 2;</code>
     * @return The pbAttr.
     */
    public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr getPbAttr() {
      return pbAttr_ == null ? pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.getDefaultInstance() : pbAttr_;
    }
    /**
     * <code>.pb.PbAttr pbAttr = 2;</code>
     */
    public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttrOrBuilder getPbAttrOrBuilder() {
      return getPbAttr();
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (level_ != 0) {
        output.writeInt32(1, level_);
      }
      if (pbAttr_ != null) {
        output.writeMessage(2, getPbAttr());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (level_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, level_);
      }
      if (pbAttr_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getPbAttr());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr other = (pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr) obj;

      if (getLevel()
          != other.getLevel()) return false;
      if (hasPbAttr() != other.hasPbAttr()) return false;
      if (hasPbAttr()) {
        if (!getPbAttr()
            .equals(other.getPbAttr())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + LEVEL_FIELD_NUMBER;
      hash = (53 * hash) + getLevel();
      if (hasPbAttr()) {
        hash = (37 * hash) + PBATTR_FIELD_NUMBER;
        hash = (53 * hash) + getPbAttr().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code pb.PbLevelAttr}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.PbLevelAttr)
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttrOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PbLevelAttr_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PbLevelAttr_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr.class, pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        level_ = 0;

        if (pbAttrBuilder_ == null) {
          pbAttr_ = null;
        } else {
          pbAttr_ = null;
          pbAttrBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.internal_static_pb_PbLevelAttr_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr build() {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr buildPartial() {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr result = new pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr(this);
        result.level_ = level_;
        if (pbAttrBuilder_ == null) {
          result.pbAttr_ = pbAttr_;
        } else {
          result.pbAttr_ = pbAttrBuilder_.build();
        }
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr other) {
        if (other == pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr.getDefaultInstance()) return this;
        if (other.getLevel() != 0) {
          setLevel(other.getLevel());
        }
        if (other.hasPbAttr()) {
          mergePbAttr(other.getPbAttr());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int level_ ;
      /**
       * <code>int32 level = 1;</code>
       * @return The level.
       */
      public int getLevel() {
        return level_;
      }
      /**
       * <code>int32 level = 1;</code>
       * @param value The level to set.
       * @return This builder for chaining.
       */
      public Builder setLevel(int value) {
        
        level_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 level = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearLevel() {
        
        level_ = 0;
        onChanged();
        return this;
      }

      private pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr pbAttr_;
      private com.google.protobuf.SingleFieldBuilderV3<
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.Builder, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttrOrBuilder> pbAttrBuilder_;
      /**
       * <code>.pb.PbAttr pbAttr = 2;</code>
       * @return Whether the pbAttr field is set.
       */
      public boolean hasPbAttr() {
        return pbAttrBuilder_ != null || pbAttr_ != null;
      }
      /**
       * <code>.pb.PbAttr pbAttr = 2;</code>
       * @return The pbAttr.
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr getPbAttr() {
        if (pbAttrBuilder_ == null) {
          return pbAttr_ == null ? pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.getDefaultInstance() : pbAttr_;
        } else {
          return pbAttrBuilder_.getMessage();
        }
      }
      /**
       * <code>.pb.PbAttr pbAttr = 2;</code>
       */
      public Builder setPbAttr(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr value) {
        if (pbAttrBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          pbAttr_ = value;
          onChanged();
        } else {
          pbAttrBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.pb.PbAttr pbAttr = 2;</code>
       */
      public Builder setPbAttr(
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.Builder builderForValue) {
        if (pbAttrBuilder_ == null) {
          pbAttr_ = builderForValue.build();
          onChanged();
        } else {
          pbAttrBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.pb.PbAttr pbAttr = 2;</code>
       */
      public Builder mergePbAttr(pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr value) {
        if (pbAttrBuilder_ == null) {
          if (pbAttr_ != null) {
            pbAttr_ =
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.newBuilder(pbAttr_).mergeFrom(value).buildPartial();
          } else {
            pbAttr_ = value;
          }
          onChanged();
        } else {
          pbAttrBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.pb.PbAttr pbAttr = 2;</code>
       */
      public Builder clearPbAttr() {
        if (pbAttrBuilder_ == null) {
          pbAttr_ = null;
          onChanged();
        } else {
          pbAttr_ = null;
          pbAttrBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.pb.PbAttr pbAttr = 2;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.Builder getPbAttrBuilder() {
        
        onChanged();
        return getPbAttrFieldBuilder().getBuilder();
      }
      /**
       * <code>.pb.PbAttr pbAttr = 2;</code>
       */
      public pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttrOrBuilder getPbAttrOrBuilder() {
        if (pbAttrBuilder_ != null) {
          return pbAttrBuilder_.getMessageOrBuilder();
        } else {
          return pbAttr_ == null ?
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.getDefaultInstance() : pbAttr_;
        }
      }
      /**
       * <code>.pb.PbAttr pbAttr = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.Builder, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttrOrBuilder> 
          getPbAttrFieldBuilder() {
        if (pbAttrBuilder_ == null) {
          pbAttrBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttr.Builder, pb.xiugou.x1.protobuf.ministruct.MiniStruct.PbAttrOrBuilder>(
                  getPbAttr(),
                  getParentForChildren(),
                  isClean());
          pbAttr_ = null;
        }
        return pbAttrBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:pb.PbLevelAttr)
    }

    // @@protoc_insertion_point(class_scope:pb.PbLevelAttr)
    private static final pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr();
    }

    public static pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.purgatory.Purgatory.PbLevelAttr getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_PurgatoryInfoResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_PurgatoryInfoResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_PurgatoryBuyPlusTimesRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_PurgatoryBuyPlusTimesRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_PurgatoryBuyPlusTimesResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_PurgatoryBuyPlusTimesResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_PurgatoryRefineRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_PurgatoryRefineRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_PurgatoryRefineResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_PurgatoryRefineResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_PurgatoryConfirmRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_PurgatoryConfirmRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_PurgatoryConfirmResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_PurgatoryConfirmResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_PurgatoryBuyRefineItemRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_PurgatoryBuyRefineItemRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_PurgatoryBuyRefineItemResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_PurgatoryBuyRefineItemResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_PbPurgatoryBattleParam_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_PbPurgatoryBattleParam_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_PbPurgatoryBattleResult_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_PbPurgatoryBattleResult_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_PbLevelAttr_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_PbLevelAttr_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\017Purgatory.proto\022\002pb\032\020MiniStruct.proto\"" +
      "\243\001\n\025PurgatoryInfoResponse\022\r\n\005level\030\001 \001(\005" +
      "\022\022\n\nfree_times\030\002 \001(\005\022\r\n\005times\030\003 \001(\005\022\036\n\005a" +
      "ttrs\030\004 \003(\0132\017.pb.PbLevelAttr\022\027\n\017next_rese" +
      "t_time\030\005 \001(\003\"\037\n\005Proto\022\013\n\007UNKNOWN\020\000\022\t\n\002ID" +
      "\020\301\330\236\001\"?\n\034PurgatoryBuyPlusTimesRequest\"\037\n" +
      "\005Proto\022\013\n\007UNKNOWN\020\000\022\t\n\002ID\020\302\330\236\001\"O\n\035Purgat" +
      "oryBuyPlusTimesResponse\022\r\n\005times\030\001 \001(\005\"\037" +
      "\n\005Proto\022\013\n\007UNKNOWN\020\000\022\t\n\002ID\020\302\330\236\001\"X\n\026Purga" +
      "toryRefineRequest\022\r\n\005level\030\001 \001(\005\022\016\n\006stat" +
      "us\030\002 \001(\005\"\037\n\005Proto\022\013\n\007UNKNOWN\020\000\022\t\n\002ID\020\303\330\236" +
      "\001\"T\n\027PurgatoryRefineResponse\022\030\n\004attr\030\001 \001" +
      "(\0132\n.pb.PbAttr\"\037\n\005Proto\022\013\n\007UNKNOWN\020\000\022\t\n\002" +
      "ID\020\303\330\236\001\"I\n\027PurgatoryConfirmRequest\022\r\n\005le" +
      "vel\030\001 \001(\005\"\037\n\005Proto\022\013\n\007UNKNOWN\020\000\022\t\n\002ID\020\304\330" +
      "\236\001\"U\n\030PurgatoryConfirmResponse\022\030\n\004attr\030\001" +
      " \001(\0132\n.pb.PbAttr\"\037\n\005Proto\022\013\n\007UNKNOWN\020\000\022\t" +
      "\n\002ID\020\304\330\236\001\"@\n\035PurgatoryBuyRefineItemReque" +
      "st\"\037\n\005Proto\022\013\n\007UNKNOWN\020\000\022\t\n\002ID\020\305\330\236\001\"^\n\036P" +
      "urgatoryBuyRefineItemResponse\022\033\n\007rewards" +
      "\030\001 \001(\0132\n.pb.PbItem\"\037\n\005Proto\022\013\n\007UNKNOWN\020\000" +
      "\022\t\n\002ID\020\305\330\236\001\"+\n\026PbPurgatoryBattleParam\022\021\n" +
      "\tplus_flag\030\001 \001(\005\"s\n\027PbPurgatoryBattleRes" +
      "ult\022\r\n\005level\030\001 \001(\005\022\021\n\tmax_level\030\002 \001(\005\022\034\n" +
      "\007rewards\030\003 \003(\0132\013.pb.PbThing\022\030\n\004attr\030\004 \001(" +
      "\0132\n.pb.PbAttr\"8\n\013PbLevelAttr\022\r\n\005level\030\001 " +
      "\001(\005\022\032\n\006pbAttr\030\002 \001(\0132\n.pb.PbAttrB9\n\037pb.xi" +
      "ugou.x1.protobuf.purgatory\252\002\025pb.xiugou.x" +
      "1.protobufb\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          pb.xiugou.x1.protobuf.ministruct.MiniStruct.getDescriptor(),
        });
    internal_static_pb_PurgatoryInfoResponse_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_pb_PurgatoryInfoResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_PurgatoryInfoResponse_descriptor,
        new java.lang.String[] { "Level", "FreeTimes", "Times", "Attrs", "NextResetTime", });
    internal_static_pb_PurgatoryBuyPlusTimesRequest_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_pb_PurgatoryBuyPlusTimesRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_PurgatoryBuyPlusTimesRequest_descriptor,
        new java.lang.String[] { });
    internal_static_pb_PurgatoryBuyPlusTimesResponse_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_pb_PurgatoryBuyPlusTimesResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_PurgatoryBuyPlusTimesResponse_descriptor,
        new java.lang.String[] { "Times", });
    internal_static_pb_PurgatoryRefineRequest_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_pb_PurgatoryRefineRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_PurgatoryRefineRequest_descriptor,
        new java.lang.String[] { "Level", "Status", });
    internal_static_pb_PurgatoryRefineResponse_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_pb_PurgatoryRefineResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_PurgatoryRefineResponse_descriptor,
        new java.lang.String[] { "Attr", });
    internal_static_pb_PurgatoryConfirmRequest_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_pb_PurgatoryConfirmRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_PurgatoryConfirmRequest_descriptor,
        new java.lang.String[] { "Level", });
    internal_static_pb_PurgatoryConfirmResponse_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_pb_PurgatoryConfirmResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_PurgatoryConfirmResponse_descriptor,
        new java.lang.String[] { "Attr", });
    internal_static_pb_PurgatoryBuyRefineItemRequest_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_pb_PurgatoryBuyRefineItemRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_PurgatoryBuyRefineItemRequest_descriptor,
        new java.lang.String[] { });
    internal_static_pb_PurgatoryBuyRefineItemResponse_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_pb_PurgatoryBuyRefineItemResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_PurgatoryBuyRefineItemResponse_descriptor,
        new java.lang.String[] { "Rewards", });
    internal_static_pb_PbPurgatoryBattleParam_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_pb_PbPurgatoryBattleParam_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_PbPurgatoryBattleParam_descriptor,
        new java.lang.String[] { "PlusFlag", });
    internal_static_pb_PbPurgatoryBattleResult_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_pb_PbPurgatoryBattleResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_PbPurgatoryBattleResult_descriptor,
        new java.lang.String[] { "Level", "MaxLevel", "Rewards", "Attr", });
    internal_static_pb_PbLevelAttr_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_pb_PbLevelAttr_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_PbLevelAttr_descriptor,
        new java.lang.String[] { "Level", "PbAttr", });
    pb.xiugou.x1.protobuf.ministruct.MiniStruct.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
