// Code generated by protocol buffer compiler. Do not edit!
package emu.lunarcore.proto;

import java.io.IOException;
import us.hebi.quickbuf.FieldName;
import us.hebi.quickbuf.InvalidProtocolBufferException;
import us.hebi.quickbuf.JsonSink;
import us.hebi.quickbuf.JsonSource;
import us.hebi.quickbuf.MessageFactory;
import us.hebi.quickbuf.ProtoMessage;
import us.hebi.quickbuf.ProtoSink;
import us.hebi.quickbuf.ProtoSource;
import us.hebi.quickbuf.RepeatedInt;

public final class RogueScoreRewardInfoOuterClass {
  /**
   * Protobuf type {@code RogueScoreRewardInfo}
   */
  public static final class RogueScoreRewardInfo extends ProtoMessage<RogueScoreRewardInfo> implements Cloneable {
    private static final long serialVersionUID = 0L;

    /**
     * <code>optional uint32 BPHINIPOKHA = 1;</code>
     */
    private int bPHINIPOKHA;

    /**
     * <code>optional uint32 GAPFCCDFKJG = 2;</code>
     */
    private int gAPFCCDFKJG;

    /**
     * <code>optional uint32 pool_id = 3;</code>
     */
    private int poolId;

    /**
     * <code>optional uint32 DOMMGENHGKE = 5;</code>
     */
    private int dOMMGENHGKE;

    /**
     * <code>optional uint32 score = 6;</code>
     */
    private int score;

    /**
     * <code>optional bool has_taken_initial_score = 8;</code>
     */
    private boolean hasTakenInitialScore;

    /**
     * <code>optional bool pool_refreshed = 13;</code>
     */
    private boolean poolRefreshed;

    /**
     * <code>repeated uint32 CGEIEELAOHD = 7;</code>
     */
    private final RepeatedInt cGEIEELAOHD = RepeatedInt.newEmptyInstance();

    /**
     * <code>repeated uint32 taken_score_reward_list = 11;</code>
     */
    private final RepeatedInt takenScoreRewardList = RepeatedInt.newEmptyInstance();

    /**
     * <code>repeated uint32 FOPNDDBAGPJ = 14;</code>
     */
    private final RepeatedInt fOPNDDBAGPJ = RepeatedInt.newEmptyInstance();

    private RogueScoreRewardInfo() {
    }

    /**
     * @return a new empty instance of {@code RogueScoreRewardInfo}
     */
    public static RogueScoreRewardInfo newInstance() {
      return new RogueScoreRewardInfo();
    }

    /**
     * <code>optional uint32 BPHINIPOKHA = 1;</code>
     * @return whether the bPHINIPOKHA field is set
     */
    public boolean hasBPHINIPOKHA() {
      return (bitField0_ & 0x00000001) != 0;
    }

    /**
     * <code>optional uint32 BPHINIPOKHA = 1;</code>
     * @return this
     */
    public RogueScoreRewardInfo clearBPHINIPOKHA() {
      bitField0_ &= ~0x00000001;
      bPHINIPOKHA = 0;
      return this;
    }

    /**
     * <code>optional uint32 BPHINIPOKHA = 1;</code>
     * @return the bPHINIPOKHA
     */
    public int getBPHINIPOKHA() {
      return bPHINIPOKHA;
    }

    /**
     * <code>optional uint32 BPHINIPOKHA = 1;</code>
     * @param value the bPHINIPOKHA to set
     * @return this
     */
    public RogueScoreRewardInfo setBPHINIPOKHA(final int value) {
      bitField0_ |= 0x00000001;
      bPHINIPOKHA = value;
      return this;
    }

    /**
     * <code>optional uint32 GAPFCCDFKJG = 2;</code>
     * @return whether the gAPFCCDFKJG field is set
     */
    public boolean hasGAPFCCDFKJG() {
      return (bitField0_ & 0x00000002) != 0;
    }

    /**
     * <code>optional uint32 GAPFCCDFKJG = 2;</code>
     * @return this
     */
    public RogueScoreRewardInfo clearGAPFCCDFKJG() {
      bitField0_ &= ~0x00000002;
      gAPFCCDFKJG = 0;
      return this;
    }

    /**
     * <code>optional uint32 GAPFCCDFKJG = 2;</code>
     * @return the gAPFCCDFKJG
     */
    public int getGAPFCCDFKJG() {
      return gAPFCCDFKJG;
    }

    /**
     * <code>optional uint32 GAPFCCDFKJG = 2;</code>
     * @param value the gAPFCCDFKJG to set
     * @return this
     */
    public RogueScoreRewardInfo setGAPFCCDFKJG(final int value) {
      bitField0_ |= 0x00000002;
      gAPFCCDFKJG = value;
      return this;
    }

    /**
     * <code>optional uint32 pool_id = 3;</code>
     * @return whether the poolId field is set
     */
    public boolean hasPoolId() {
      return (bitField0_ & 0x00000004) != 0;
    }

    /**
     * <code>optional uint32 pool_id = 3;</code>
     * @return this
     */
    public RogueScoreRewardInfo clearPoolId() {
      bitField0_ &= ~0x00000004;
      poolId = 0;
      return this;
    }

    /**
     * <code>optional uint32 pool_id = 3;</code>
     * @return the poolId
     */
    public int getPoolId() {
      return poolId;
    }

    /**
     * <code>optional uint32 pool_id = 3;</code>
     * @param value the poolId to set
     * @return this
     */
    public RogueScoreRewardInfo setPoolId(final int value) {
      bitField0_ |= 0x00000004;
      poolId = value;
      return this;
    }

    /**
     * <code>optional uint32 DOMMGENHGKE = 5;</code>
     * @return whether the dOMMGENHGKE field is set
     */
    public boolean hasDOMMGENHGKE() {
      return (bitField0_ & 0x00000008) != 0;
    }

    /**
     * <code>optional uint32 DOMMGENHGKE = 5;</code>
     * @return this
     */
    public RogueScoreRewardInfo clearDOMMGENHGKE() {
      bitField0_ &= ~0x00000008;
      dOMMGENHGKE = 0;
      return this;
    }

    /**
     * <code>optional uint32 DOMMGENHGKE = 5;</code>
     * @return the dOMMGENHGKE
     */
    public int getDOMMGENHGKE() {
      return dOMMGENHGKE;
    }

    /**
     * <code>optional uint32 DOMMGENHGKE = 5;</code>
     * @param value the dOMMGENHGKE to set
     * @return this
     */
    public RogueScoreRewardInfo setDOMMGENHGKE(final int value) {
      bitField0_ |= 0x00000008;
      dOMMGENHGKE = value;
      return this;
    }

    /**
     * <code>optional uint32 score = 6;</code>
     * @return whether the score field is set
     */
    public boolean hasScore() {
      return (bitField0_ & 0x00000010) != 0;
    }

    /**
     * <code>optional uint32 score = 6;</code>
     * @return this
     */
    public RogueScoreRewardInfo clearScore() {
      bitField0_ &= ~0x00000010;
      score = 0;
      return this;
    }

    /**
     * <code>optional uint32 score = 6;</code>
     * @return the score
     */
    public int getScore() {
      return score;
    }

    /**
     * <code>optional uint32 score = 6;</code>
     * @param value the score to set
     * @return this
     */
    public RogueScoreRewardInfo setScore(final int value) {
      bitField0_ |= 0x00000010;
      score = value;
      return this;
    }

    /**
     * <code>optional bool has_taken_initial_score = 8;</code>
     * @return whether the hasTakenInitialScore field is set
     */
    public boolean hasHasTakenInitialScore() {
      return (bitField0_ & 0x00000020) != 0;
    }

    /**
     * <code>optional bool has_taken_initial_score = 8;</code>
     * @return this
     */
    public RogueScoreRewardInfo clearHasTakenInitialScore() {
      bitField0_ &= ~0x00000020;
      hasTakenInitialScore = false;
      return this;
    }

    /**
     * <code>optional bool has_taken_initial_score = 8;</code>
     * @return the hasTakenInitialScore
     */
    public boolean getHasTakenInitialScore() {
      return hasTakenInitialScore;
    }

    /**
     * <code>optional bool has_taken_initial_score = 8;</code>
     * @param value the hasTakenInitialScore to set
     * @return this
     */
    public RogueScoreRewardInfo setHasTakenInitialScore(final boolean value) {
      bitField0_ |= 0x00000020;
      hasTakenInitialScore = value;
      return this;
    }

    /**
     * <code>optional bool pool_refreshed = 13;</code>
     * @return whether the poolRefreshed field is set
     */
    public boolean hasPoolRefreshed() {
      return (bitField0_ & 0x00000040) != 0;
    }

    /**
     * <code>optional bool pool_refreshed = 13;</code>
     * @return this
     */
    public RogueScoreRewardInfo clearPoolRefreshed() {
      bitField0_ &= ~0x00000040;
      poolRefreshed = false;
      return this;
    }

    /**
     * <code>optional bool pool_refreshed = 13;</code>
     * @return the poolRefreshed
     */
    public boolean getPoolRefreshed() {
      return poolRefreshed;
    }

    /**
     * <code>optional bool pool_refreshed = 13;</code>
     * @param value the poolRefreshed to set
     * @return this
     */
    public RogueScoreRewardInfo setPoolRefreshed(final boolean value) {
      bitField0_ |= 0x00000040;
      poolRefreshed = value;
      return this;
    }

    /**
     * <code>repeated uint32 CGEIEELAOHD = 7;</code>
     * @return whether the cGEIEELAOHD field is set
     */
    public boolean hasCGEIEELAOHD() {
      return (bitField0_ & 0x00000080) != 0;
    }

    /**
     * <code>repeated uint32 CGEIEELAOHD = 7;</code>
     * @return this
     */
    public RogueScoreRewardInfo clearCGEIEELAOHD() {
      bitField0_ &= ~0x00000080;
      cGEIEELAOHD.clear();
      return this;
    }

    /**
     * <code>repeated uint32 CGEIEELAOHD = 7;</code>
     *
     * This method returns the internal storage object without modifying any has state.
     * The returned object should not be modified and be treated as read-only.
     *
     * Use {@link #getMutableCGEIEELAOHD()} if you want to modify it.
     *
     * @return internal storage object for reading
     */
    public RepeatedInt getCGEIEELAOHD() {
      return cGEIEELAOHD;
    }

    /**
     * <code>repeated uint32 CGEIEELAOHD = 7;</code>
     *
     * This method returns the internal storage object and sets the corresponding
     * has state. The returned object will become part of this message and its
     * contents may be modified as long as the has state is not cleared.
     *
     * @return internal storage object for modifications
     */
    public RepeatedInt getMutableCGEIEELAOHD() {
      bitField0_ |= 0x00000080;
      return cGEIEELAOHD;
    }

    /**
     * <code>repeated uint32 CGEIEELAOHD = 7;</code>
     * @param value the cGEIEELAOHD to add
     * @return this
     */
    public RogueScoreRewardInfo addCGEIEELAOHD(final int value) {
      bitField0_ |= 0x00000080;
      cGEIEELAOHD.add(value);
      return this;
    }

    /**
     * <code>repeated uint32 CGEIEELAOHD = 7;</code>
     * @param values the cGEIEELAOHD to add
     * @return this
     */
    public RogueScoreRewardInfo addAllCGEIEELAOHD(final int... values) {
      bitField0_ |= 0x00000080;
      cGEIEELAOHD.addAll(values);
      return this;
    }

    /**
     * <code>repeated uint32 taken_score_reward_list = 11;</code>
     * @return whether the takenScoreRewardList field is set
     */
    public boolean hasTakenScoreRewardList() {
      return (bitField0_ & 0x00000100) != 0;
    }

    /**
     * <code>repeated uint32 taken_score_reward_list = 11;</code>
     * @return this
     */
    public RogueScoreRewardInfo clearTakenScoreRewardList() {
      bitField0_ &= ~0x00000100;
      takenScoreRewardList.clear();
      return this;
    }

    /**
     * <code>repeated uint32 taken_score_reward_list = 11;</code>
     *
     * This method returns the internal storage object without modifying any has state.
     * The returned object should not be modified and be treated as read-only.
     *
     * Use {@link #getMutableTakenScoreRewardList()} if you want to modify it.
     *
     * @return internal storage object for reading
     */
    public RepeatedInt getTakenScoreRewardList() {
      return takenScoreRewardList;
    }

    /**
     * <code>repeated uint32 taken_score_reward_list = 11;</code>
     *
     * This method returns the internal storage object and sets the corresponding
     * has state. The returned object will become part of this message and its
     * contents may be modified as long as the has state is not cleared.
     *
     * @return internal storage object for modifications
     */
    public RepeatedInt getMutableTakenScoreRewardList() {
      bitField0_ |= 0x00000100;
      return takenScoreRewardList;
    }

    /**
     * <code>repeated uint32 taken_score_reward_list = 11;</code>
     * @param value the takenScoreRewardList to add
     * @return this
     */
    public RogueScoreRewardInfo addTakenScoreRewardList(final int value) {
      bitField0_ |= 0x00000100;
      takenScoreRewardList.add(value);
      return this;
    }

    /**
     * <code>repeated uint32 taken_score_reward_list = 11;</code>
     * @param values the takenScoreRewardList to add
     * @return this
     */
    public RogueScoreRewardInfo addAllTakenScoreRewardList(final int... values) {
      bitField0_ |= 0x00000100;
      takenScoreRewardList.addAll(values);
      return this;
    }

    /**
     * <code>repeated uint32 FOPNDDBAGPJ = 14;</code>
     * @return whether the fOPNDDBAGPJ field is set
     */
    public boolean hasFOPNDDBAGPJ() {
      return (bitField0_ & 0x00000200) != 0;
    }

    /**
     * <code>repeated uint32 FOPNDDBAGPJ = 14;</code>
     * @return this
     */
    public RogueScoreRewardInfo clearFOPNDDBAGPJ() {
      bitField0_ &= ~0x00000200;
      fOPNDDBAGPJ.clear();
      return this;
    }

    /**
     * <code>repeated uint32 FOPNDDBAGPJ = 14;</code>
     *
     * This method returns the internal storage object without modifying any has state.
     * The returned object should not be modified and be treated as read-only.
     *
     * Use {@link #getMutableFOPNDDBAGPJ()} if you want to modify it.
     *
     * @return internal storage object for reading
     */
    public RepeatedInt getFOPNDDBAGPJ() {
      return fOPNDDBAGPJ;
    }

    /**
     * <code>repeated uint32 FOPNDDBAGPJ = 14;</code>
     *
     * This method returns the internal storage object and sets the corresponding
     * has state. The returned object will become part of this message and its
     * contents may be modified as long as the has state is not cleared.
     *
     * @return internal storage object for modifications
     */
    public RepeatedInt getMutableFOPNDDBAGPJ() {
      bitField0_ |= 0x00000200;
      return fOPNDDBAGPJ;
    }

    /**
     * <code>repeated uint32 FOPNDDBAGPJ = 14;</code>
     * @param value the fOPNDDBAGPJ to add
     * @return this
     */
    public RogueScoreRewardInfo addFOPNDDBAGPJ(final int value) {
      bitField0_ |= 0x00000200;
      fOPNDDBAGPJ.add(value);
      return this;
    }

    /**
     * <code>repeated uint32 FOPNDDBAGPJ = 14;</code>
     * @param values the fOPNDDBAGPJ to add
     * @return this
     */
    public RogueScoreRewardInfo addAllFOPNDDBAGPJ(final int... values) {
      bitField0_ |= 0x00000200;
      fOPNDDBAGPJ.addAll(values);
      return this;
    }

    @Override
    public RogueScoreRewardInfo copyFrom(final RogueScoreRewardInfo other) {
      cachedSize = other.cachedSize;
      if ((bitField0_ | other.bitField0_) != 0) {
        bitField0_ = other.bitField0_;
        bPHINIPOKHA = other.bPHINIPOKHA;
        gAPFCCDFKJG = other.gAPFCCDFKJG;
        poolId = other.poolId;
        dOMMGENHGKE = other.dOMMGENHGKE;
        score = other.score;
        hasTakenInitialScore = other.hasTakenInitialScore;
        poolRefreshed = other.poolRefreshed;
        cGEIEELAOHD.copyFrom(other.cGEIEELAOHD);
        takenScoreRewardList.copyFrom(other.takenScoreRewardList);
        fOPNDDBAGPJ.copyFrom(other.fOPNDDBAGPJ);
      }
      return this;
    }

    @Override
    public RogueScoreRewardInfo mergeFrom(final RogueScoreRewardInfo other) {
      if (other.isEmpty()) {
        return this;
      }
      cachedSize = -1;
      if (other.hasBPHINIPOKHA()) {
        setBPHINIPOKHA(other.bPHINIPOKHA);
      }
      if (other.hasGAPFCCDFKJG()) {
        setGAPFCCDFKJG(other.gAPFCCDFKJG);
      }
      if (other.hasPoolId()) {
        setPoolId(other.poolId);
      }
      if (other.hasDOMMGENHGKE()) {
        setDOMMGENHGKE(other.dOMMGENHGKE);
      }
      if (other.hasScore()) {
        setScore(other.score);
      }
      if (other.hasHasTakenInitialScore()) {
        setHasTakenInitialScore(other.hasTakenInitialScore);
      }
      if (other.hasPoolRefreshed()) {
        setPoolRefreshed(other.poolRefreshed);
      }
      if (other.hasCGEIEELAOHD()) {
        getMutableCGEIEELAOHD().addAll(other.cGEIEELAOHD);
      }
      if (other.hasTakenScoreRewardList()) {
        getMutableTakenScoreRewardList().addAll(other.takenScoreRewardList);
      }
      if (other.hasFOPNDDBAGPJ()) {
        getMutableFOPNDDBAGPJ().addAll(other.fOPNDDBAGPJ);
      }
      return this;
    }

    @Override
    public RogueScoreRewardInfo clear() {
      if (isEmpty()) {
        return this;
      }
      cachedSize = -1;
      bitField0_ = 0;
      bPHINIPOKHA = 0;
      gAPFCCDFKJG = 0;
      poolId = 0;
      dOMMGENHGKE = 0;
      score = 0;
      hasTakenInitialScore = false;
      poolRefreshed = false;
      cGEIEELAOHD.clear();
      takenScoreRewardList.clear();
      fOPNDDBAGPJ.clear();
      return this;
    }

    @Override
    public RogueScoreRewardInfo clearQuick() {
      if (isEmpty()) {
        return this;
      }
      cachedSize = -1;
      bitField0_ = 0;
      cGEIEELAOHD.clear();
      takenScoreRewardList.clear();
      fOPNDDBAGPJ.clear();
      return this;
    }

    @Override
    public boolean equals(Object o) {
      if (o == this) {
        return true;
      }
      if (!(o instanceof RogueScoreRewardInfo)) {
        return false;
      }
      RogueScoreRewardInfo other = (RogueScoreRewardInfo) o;
      return bitField0_ == other.bitField0_
        && (!hasBPHINIPOKHA() || bPHINIPOKHA == other.bPHINIPOKHA)
        && (!hasGAPFCCDFKJG() || gAPFCCDFKJG == other.gAPFCCDFKJG)
        && (!hasPoolId() || poolId == other.poolId)
        && (!hasDOMMGENHGKE() || dOMMGENHGKE == other.dOMMGENHGKE)
        && (!hasScore() || score == other.score)
        && (!hasHasTakenInitialScore() || hasTakenInitialScore == other.hasTakenInitialScore)
        && (!hasPoolRefreshed() || poolRefreshed == other.poolRefreshed)
        && (!hasCGEIEELAOHD() || cGEIEELAOHD.equals(other.cGEIEELAOHD))
        && (!hasTakenScoreRewardList() || takenScoreRewardList.equals(other.takenScoreRewardList))
        && (!hasFOPNDDBAGPJ() || fOPNDDBAGPJ.equals(other.fOPNDDBAGPJ));
    }

    @Override
    public void writeTo(final ProtoSink output) throws IOException {
      if ((bitField0_ & 0x00000001) != 0) {
        output.writeRawByte((byte) 8);
        output.writeUInt32NoTag(bPHINIPOKHA);
      }
      if ((bitField0_ & 0x00000002) != 0) {
        output.writeRawByte((byte) 16);
        output.writeUInt32NoTag(gAPFCCDFKJG);
      }
      if ((bitField0_ & 0x00000004) != 0) {
        output.writeRawByte((byte) 24);
        output.writeUInt32NoTag(poolId);
      }
      if ((bitField0_ & 0x00000008) != 0) {
        output.writeRawByte((byte) 40);
        output.writeUInt32NoTag(dOMMGENHGKE);
      }
      if ((bitField0_ & 0x00000010) != 0) {
        output.writeRawByte((byte) 48);
        output.writeUInt32NoTag(score);
      }
      if ((bitField0_ & 0x00000020) != 0) {
        output.writeRawByte((byte) 64);
        output.writeBoolNoTag(hasTakenInitialScore);
      }
      if ((bitField0_ & 0x00000040) != 0) {
        output.writeRawByte((byte) 104);
        output.writeBoolNoTag(poolRefreshed);
      }
      if ((bitField0_ & 0x00000080) != 0) {
        for (int i = 0; i < cGEIEELAOHD.length(); i++) {
          output.writeRawByte((byte) 56);
          output.writeUInt32NoTag(cGEIEELAOHD.array()[i]);
        }
      }
      if ((bitField0_ & 0x00000100) != 0) {
        for (int i = 0; i < takenScoreRewardList.length(); i++) {
          output.writeRawByte((byte) 88);
          output.writeUInt32NoTag(takenScoreRewardList.array()[i]);
        }
      }
      if ((bitField0_ & 0x00000200) != 0) {
        for (int i = 0; i < fOPNDDBAGPJ.length(); i++) {
          output.writeRawByte((byte) 112);
          output.writeUInt32NoTag(fOPNDDBAGPJ.array()[i]);
        }
      }
    }

    @Override
    protected int computeSerializedSize() {
      int size = 0;
      if ((bitField0_ & 0x00000001) != 0) {
        size += 1 + ProtoSink.computeUInt32SizeNoTag(bPHINIPOKHA);
      }
      if ((bitField0_ & 0x00000002) != 0) {
        size += 1 + ProtoSink.computeUInt32SizeNoTag(gAPFCCDFKJG);
      }
      if ((bitField0_ & 0x00000004) != 0) {
        size += 1 + ProtoSink.computeUInt32SizeNoTag(poolId);
      }
      if ((bitField0_ & 0x00000008) != 0) {
        size += 1 + ProtoSink.computeUInt32SizeNoTag(dOMMGENHGKE);
      }
      if ((bitField0_ & 0x00000010) != 0) {
        size += 1 + ProtoSink.computeUInt32SizeNoTag(score);
      }
      if ((bitField0_ & 0x00000020) != 0) {
        size += 2;
      }
      if ((bitField0_ & 0x00000040) != 0) {
        size += 2;
      }
      if ((bitField0_ & 0x00000080) != 0) {
        size += (1 * cGEIEELAOHD.length()) + ProtoSink.computeRepeatedUInt32SizeNoTag(cGEIEELAOHD);
      }
      if ((bitField0_ & 0x00000100) != 0) {
        size += (1 * takenScoreRewardList.length()) + ProtoSink.computeRepeatedUInt32SizeNoTag(takenScoreRewardList);
      }
      if ((bitField0_ & 0x00000200) != 0) {
        size += (1 * fOPNDDBAGPJ.length()) + ProtoSink.computeRepeatedUInt32SizeNoTag(fOPNDDBAGPJ);
      }
      return size;
    }

    @Override
    @SuppressWarnings("fallthrough")
    public RogueScoreRewardInfo mergeFrom(final ProtoSource input) throws IOException {
      // Enabled Fall-Through Optimization (QuickBuffers)
      int tag = input.readTag();
      while (true) {
        switch (tag) {
          case 8: {
            // bPHINIPOKHA
            bPHINIPOKHA = input.readUInt32();
            bitField0_ |= 0x00000001;
            tag = input.readTag();
            if (tag != 16) {
              break;
            }
          }
          case 16: {
            // gAPFCCDFKJG
            gAPFCCDFKJG = input.readUInt32();
            bitField0_ |= 0x00000002;
            tag = input.readTag();
            if (tag != 24) {
              break;
            }
          }
          case 24: {
            // poolId
            poolId = input.readUInt32();
            bitField0_ |= 0x00000004;
            tag = input.readTag();
            if (tag != 40) {
              break;
            }
          }
          case 40: {
            // dOMMGENHGKE
            dOMMGENHGKE = input.readUInt32();
            bitField0_ |= 0x00000008;
            tag = input.readTag();
            if (tag != 48) {
              break;
            }
          }
          case 48: {
            // score
            score = input.readUInt32();
            bitField0_ |= 0x00000010;
            tag = input.readTag();
            if (tag != 64) {
              break;
            }
          }
          case 64: {
            // hasTakenInitialScore
            hasTakenInitialScore = input.readBool();
            bitField0_ |= 0x00000020;
            tag = input.readTag();
            if (tag != 104) {
              break;
            }
          }
          case 104: {
            // poolRefreshed
            poolRefreshed = input.readBool();
            bitField0_ |= 0x00000040;
            tag = input.readTag();
            if (tag != 58) {
              break;
            }
          }
          case 58: {
            // cGEIEELAOHD [packed=true]
            input.readPackedUInt32(cGEIEELAOHD, tag);
            bitField0_ |= 0x00000080;
            tag = input.readTag();
            if (tag != 90) {
              break;
            }
          }
          case 90: {
            // takenScoreRewardList [packed=true]
            input.readPackedUInt32(takenScoreRewardList, tag);
            bitField0_ |= 0x00000100;
            tag = input.readTag();
            if (tag != 114) {
              break;
            }
          }
          case 114: {
            // fOPNDDBAGPJ [packed=true]
            input.readPackedUInt32(fOPNDDBAGPJ, tag);
            bitField0_ |= 0x00000200;
            tag = input.readTag();
            if (tag != 0) {
              break;
            }
          }
          case 0: {
            return this;
          }
          default: {
            if (!input.skipField(tag)) {
              return this;
            }
            tag = input.readTag();
            break;
          }
          case 56: {
            // cGEIEELAOHD [packed=false]
            tag = input.readRepeatedUInt32(cGEIEELAOHD, tag);
            bitField0_ |= 0x00000080;
            break;
          }
          case 88: {
            // takenScoreRewardList [packed=false]
            tag = input.readRepeatedUInt32(takenScoreRewardList, tag);
            bitField0_ |= 0x00000100;
            break;
          }
          case 112: {
            // fOPNDDBAGPJ [packed=false]
            tag = input.readRepeatedUInt32(fOPNDDBAGPJ, tag);
            bitField0_ |= 0x00000200;
            break;
          }
        }
      }
    }

    @Override
    public void writeTo(final JsonSink output) throws IOException {
      output.beginObject();
      if ((bitField0_ & 0x00000001) != 0) {
        output.writeUInt32(FieldNames.bPHINIPOKHA, bPHINIPOKHA);
      }
      if ((bitField0_ & 0x00000002) != 0) {
        output.writeUInt32(FieldNames.gAPFCCDFKJG, gAPFCCDFKJG);
      }
      if ((bitField0_ & 0x00000004) != 0) {
        output.writeUInt32(FieldNames.poolId, poolId);
      }
      if ((bitField0_ & 0x00000008) != 0) {
        output.writeUInt32(FieldNames.dOMMGENHGKE, dOMMGENHGKE);
      }
      if ((bitField0_ & 0x00000010) != 0) {
        output.writeUInt32(FieldNames.score, score);
      }
      if ((bitField0_ & 0x00000020) != 0) {
        output.writeBool(FieldNames.hasTakenInitialScore, hasTakenInitialScore);
      }
      if ((bitField0_ & 0x00000040) != 0) {
        output.writeBool(FieldNames.poolRefreshed, poolRefreshed);
      }
      if ((bitField0_ & 0x00000080) != 0) {
        output.writeRepeatedUInt32(FieldNames.cGEIEELAOHD, cGEIEELAOHD);
      }
      if ((bitField0_ & 0x00000100) != 0) {
        output.writeRepeatedUInt32(FieldNames.takenScoreRewardList, takenScoreRewardList);
      }
      if ((bitField0_ & 0x00000200) != 0) {
        output.writeRepeatedUInt32(FieldNames.fOPNDDBAGPJ, fOPNDDBAGPJ);
      }
      output.endObject();
    }

    @Override
    public RogueScoreRewardInfo mergeFrom(final JsonSource input) throws IOException {
      if (!input.beginObject()) {
        return this;
      }
      while (!input.isAtEnd()) {
        switch (input.readFieldHash()) {
          case -1415402853: {
            if (input.isAtField(FieldNames.bPHINIPOKHA)) {
              if (!input.trySkipNullValue()) {
                bPHINIPOKHA = input.readUInt32();
                bitField0_ |= 0x00000001;
              }
            } else {
              input.skipUnknownField();
            }
            break;
          }
          case 1568516182: {
            if (input.isAtField(FieldNames.gAPFCCDFKJG)) {
              if (!input.trySkipNullValue()) {
                gAPFCCDFKJG = input.readUInt32();
                bitField0_ |= 0x00000002;
              }
            } else {
              input.skipUnknownField();
            }
            break;
          }
          case -982578601:
          case -395144162: {
            if (input.isAtField(FieldNames.poolId)) {
              if (!input.trySkipNullValue()) {
                poolId = input.readUInt32();
                bitField0_ |= 0x00000004;
              }
            } else {
              input.skipUnknownField();
            }
            break;
          }
          case -323022850: {
            if (input.isAtField(FieldNames.dOMMGENHGKE)) {
              if (!input.trySkipNullValue()) {
                dOMMGENHGKE = input.readUInt32();
                bitField0_ |= 0x00000008;
              }
            } else {
              input.skipUnknownField();
            }
            break;
          }
          case 109264530: {
            if (input.isAtField(FieldNames.score)) {
              if (!input.trySkipNullValue()) {
                score = input.readUInt32();
                bitField0_ |= 0x00000010;
              }
            } else {
              input.skipUnknownField();
            }
            break;
          }
          case 1561171099:
          case -1786836166: {
            if (input.isAtField(FieldNames.hasTakenInitialScore)) {
              if (!input.trySkipNullValue()) {
                hasTakenInitialScore = input.readBool();
                bitField0_ |= 0x00000020;
              }
            } else {
              input.skipUnknownField();
            }
            break;
          }
          case -1555416066:
          case -403409833: {
            if (input.isAtField(FieldNames.poolRefreshed)) {
              if (!input.trySkipNullValue()) {
                poolRefreshed = input.readBool();
                bitField0_ |= 0x00000040;
              }
            } else {
              input.skipUnknownField();
            }
            break;
          }
          case 167440974: {
            if (input.isAtField(FieldNames.cGEIEELAOHD)) {
              if (!input.trySkipNullValue()) {
                input.readRepeatedUInt32(cGEIEELAOHD);
                bitField0_ |= 0x00000080;
              }
            } else {
              input.skipUnknownField();
            }
            break;
          }
          case -1204149032:
          case -1139944439: {
            if (input.isAtField(FieldNames.takenScoreRewardList)) {
              if (!input.trySkipNullValue()) {
                input.readRepeatedUInt32(takenScoreRewardList);
                bitField0_ |= 0x00000100;
              }
            } else {
              input.skipUnknownField();
            }
            break;
          }
          case -1708974853: {
            if (input.isAtField(FieldNames.fOPNDDBAGPJ)) {
              if (!input.trySkipNullValue()) {
                input.readRepeatedUInt32(fOPNDDBAGPJ);
                bitField0_ |= 0x00000200;
              }
            } else {
              input.skipUnknownField();
            }
            break;
          }
          default: {
            input.skipUnknownField();
            break;
          }
        }
      }
      input.endObject();
      return this;
    }

    @Override
    public RogueScoreRewardInfo clone() {
      return new RogueScoreRewardInfo().copyFrom(this);
    }

    @Override
    public boolean isEmpty() {
      return ((bitField0_) == 0);
    }

    public static RogueScoreRewardInfo parseFrom(final byte[] data) throws
        InvalidProtocolBufferException {
      return ProtoMessage.mergeFrom(new RogueScoreRewardInfo(), data).checkInitialized();
    }

    public static RogueScoreRewardInfo parseFrom(final ProtoSource input) throws IOException {
      return ProtoMessage.mergeFrom(new RogueScoreRewardInfo(), input).checkInitialized();
    }

    public static RogueScoreRewardInfo parseFrom(final JsonSource input) throws IOException {
      return ProtoMessage.mergeFrom(new RogueScoreRewardInfo(), input).checkInitialized();
    }

    /**
     * @return factory for creating RogueScoreRewardInfo messages
     */
    public static MessageFactory<RogueScoreRewardInfo> getFactory() {
      return RogueScoreRewardInfoFactory.INSTANCE;
    }

    private enum RogueScoreRewardInfoFactory implements MessageFactory<RogueScoreRewardInfo> {
      INSTANCE;

      @Override
      public RogueScoreRewardInfo create() {
        return RogueScoreRewardInfo.newInstance();
      }
    }

    /**
     * Contains name constants used for serializing JSON
     */
    static class FieldNames {
      static final FieldName bPHINIPOKHA = FieldName.forField("BPHINIPOKHA");

      static final FieldName gAPFCCDFKJG = FieldName.forField("GAPFCCDFKJG");

      static final FieldName poolId = FieldName.forField("poolId", "pool_id");

      static final FieldName dOMMGENHGKE = FieldName.forField("DOMMGENHGKE");

      static final FieldName score = FieldName.forField("score");

      static final FieldName hasTakenInitialScore = FieldName.forField("hasTakenInitialScore", "has_taken_initial_score");

      static final FieldName poolRefreshed = FieldName.forField("poolRefreshed", "pool_refreshed");

      static final FieldName cGEIEELAOHD = FieldName.forField("CGEIEELAOHD");

      static final FieldName takenScoreRewardList = FieldName.forField("takenScoreRewardList", "taken_score_reward_list");

      static final FieldName fOPNDDBAGPJ = FieldName.forField("FOPNDDBAGPJ");
    }
  }
}
