All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.figure.block.api.proto.groups.Proposal Maven / Gradle / Ivy

The newest version!
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: groups/proposal.proto

package com.figure.block.api.proto.groups;

public final class Proposal {
  private Proposal() {}
  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 ProposalStateOrBuilder extends
      // @@protoc_insertion_point(interface_extends:api.groups.ProposalState)
      com.google.protobuf.MessageOrBuilder {

    /**
     * int64 height = 1;
     * @return The height.
     */
    long getHeight();

    /**
     * int64 group_id = 2;
     * @return The groupId.
     */
    long getGroupId();

    /**
     * int64 proposal_id = 3;
     * @return The proposalId.
     */
    long getProposalId();

    /**
     * string group_policy_address = 4;
     * @return The groupPolicyAddress.
     */
    java.lang.String getGroupPolicyAddress();
    /**
     * string group_policy_address = 4;
     * @return The bytes for groupPolicyAddress.
     */
    com.google.protobuf.ByteString
        getGroupPolicyAddressBytes();

    /**
     * string metadata = 5;
     * @return The metadata.
     */
    java.lang.String getMetadata();
    /**
     * string metadata = 5;
     * @return The bytes for metadata.
     */
    com.google.protobuf.ByteString
        getMetadataBytes();

    /**
     * repeated string proposers = 6;
     * @return A list containing the proposers.
     */
    java.util.List
        getProposersList();
    /**
     * repeated string proposers = 6;
     * @return The count of proposers.
     */
    int getProposersCount();
    /**
     * repeated string proposers = 6;
     * @param index The index of the element to return.
     * @return The proposers at the given index.
     */
    java.lang.String getProposers(int index);
    /**
     * repeated string proposers = 6;
     * @param index The index of the value to return.
     * @return The bytes of the proposers at the given index.
     */
    com.google.protobuf.ByteString
        getProposersBytes(int index);

    /**
     * .google.protobuf.Timestamp submit_time = 7;
     * @return Whether the submitTime field is set.
     */
    boolean hasSubmitTime();
    /**
     * .google.protobuf.Timestamp submit_time = 7;
     * @return The submitTime.
     */
    com.google.protobuf.Timestamp getSubmitTime();
    /**
     * .google.protobuf.Timestamp submit_time = 7;
     */
    com.google.protobuf.TimestampOrBuilder getSubmitTimeOrBuilder();

    /**
     * int64 group_version = 8;
     * @return The groupVersion.
     */
    long getGroupVersion();

    /**
     * int64 group_policy_version = 9;
     * @return The groupPolicyVersion.
     */
    long getGroupPolicyVersion();

    /**
     * string status = 10;
     * @return The status.
     */
    java.lang.String getStatus();
    /**
     * string status = 10;
     * @return The bytes for status.
     */
    com.google.protobuf.ByteString
        getStatusBytes();

    /**
     * .api.groups.TallyResult final_tally_result = 11;
     * @return Whether the finalTallyResult field is set.
     */
    boolean hasFinalTallyResult();
    /**
     * .api.groups.TallyResult final_tally_result = 11;
     * @return The finalTallyResult.
     */
    com.figure.block.api.proto.groups.Proposal.TallyResult getFinalTallyResult();
    /**
     * .api.groups.TallyResult final_tally_result = 11;
     */
    com.figure.block.api.proto.groups.Proposal.TallyResultOrBuilder getFinalTallyResultOrBuilder();

    /**
     * .google.protobuf.Timestamp voting_period_end = 12;
     * @return Whether the votingPeriodEnd field is set.
     */
    boolean hasVotingPeriodEnd();
    /**
     * .google.protobuf.Timestamp voting_period_end = 12;
     * @return The votingPeriodEnd.
     */
    com.google.protobuf.Timestamp getVotingPeriodEnd();
    /**
     * .google.protobuf.Timestamp voting_period_end = 12;
     */
    com.google.protobuf.TimestampOrBuilder getVotingPeriodEndOrBuilder();

    /**
     * string executor_result = 13;
     * @return The executorResult.
     */
    java.lang.String getExecutorResult();
    /**
     * string executor_result = 13;
     * @return The bytes for executorResult.
     */
    com.google.protobuf.ByteString
        getExecutorResultBytes();

    /**
     * repeated .google.protobuf.Any messages = 14;
     */
    java.util.List 
        getMessagesList();
    /**
     * repeated .google.protobuf.Any messages = 14;
     */
    com.google.protobuf.Any getMessages(int index);
    /**
     * repeated .google.protobuf.Any messages = 14;
     */
    int getMessagesCount();
    /**
     * repeated .google.protobuf.Any messages = 14;
     */
    java.util.List 
        getMessagesOrBuilderList();
    /**
     * repeated .google.protobuf.Any messages = 14;
     */
    com.google.protobuf.AnyOrBuilder getMessagesOrBuilder(
        int index);

    /**
     * repeated .api.groups.Vote votes = 15;
     */
    java.util.List 
        getVotesList();
    /**
     * repeated .api.groups.Vote votes = 15;
     */
    com.figure.block.api.proto.groups.Proposal.Vote getVotes(int index);
    /**
     * repeated .api.groups.Vote votes = 15;
     */
    int getVotesCount();
    /**
     * repeated .api.groups.Vote votes = 15;
     */
    java.util.List 
        getVotesOrBuilderList();
    /**
     * repeated .api.groups.Vote votes = 15;
     */
    com.figure.block.api.proto.groups.Proposal.VoteOrBuilder getVotesOrBuilder(
        int index);

    /**
     * .api.groups.TallyResult calculated_tally_result = 16;
     * @return Whether the calculatedTallyResult field is set.
     */
    boolean hasCalculatedTallyResult();
    /**
     * .api.groups.TallyResult calculated_tally_result = 16;
     * @return The calculatedTallyResult.
     */
    com.figure.block.api.proto.groups.Proposal.TallyResult getCalculatedTallyResult();
    /**
     * .api.groups.TallyResult calculated_tally_result = 16;
     */
    com.figure.block.api.proto.groups.Proposal.TallyResultOrBuilder getCalculatedTallyResultOrBuilder();

    /**
     * bool pruned = 17;
     * @return The pruned.
     */
    boolean getPruned();

    /**
     * string tx_hash = 18;
     * @return The txHash.
     */
    java.lang.String getTxHash();
    /**
     * string tx_hash = 18;
     * @return The bytes for txHash.
     */
    com.google.protobuf.ByteString
        getTxHashBytes();
  }
  /**
   * Protobuf type {@code api.groups.ProposalState}
   */
  public static final class ProposalState extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:api.groups.ProposalState)
      ProposalStateOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ProposalState.newBuilder() to construct.
    private ProposalState(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ProposalState() {
      groupPolicyAddress_ = "";
      metadata_ = "";
      proposers_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      status_ = "";
      executorResult_ = "";
      messages_ = java.util.Collections.emptyList();
      votes_ = java.util.Collections.emptyList();
      txHash_ = "";
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.figure.block.api.proto.groups.Proposal.internal_static_api_groups_ProposalState_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.figure.block.api.proto.groups.Proposal.internal_static_api_groups_ProposalState_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.figure.block.api.proto.groups.Proposal.ProposalState.class, com.figure.block.api.proto.groups.Proposal.ProposalState.Builder.class);
    }

    private int bitField0_;
    public static final int HEIGHT_FIELD_NUMBER = 1;
    private long height_ = 0L;
    /**
     * int64 height = 1;
     * @return The height.
     */
    @java.lang.Override
    public long getHeight() {
      return height_;
    }

    public static final int GROUP_ID_FIELD_NUMBER = 2;
    private long groupId_ = 0L;
    /**
     * int64 group_id = 2;
     * @return The groupId.
     */
    @java.lang.Override
    public long getGroupId() {
      return groupId_;
    }

    public static final int PROPOSAL_ID_FIELD_NUMBER = 3;
    private long proposalId_ = 0L;
    /**
     * int64 proposal_id = 3;
     * @return The proposalId.
     */
    @java.lang.Override
    public long getProposalId() {
      return proposalId_;
    }

    public static final int GROUP_POLICY_ADDRESS_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object groupPolicyAddress_ = "";
    /**
     * string group_policy_address = 4;
     * @return The groupPolicyAddress.
     */
    @java.lang.Override
    public java.lang.String getGroupPolicyAddress() {
      java.lang.Object ref = groupPolicyAddress_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        groupPolicyAddress_ = s;
        return s;
      }
    }
    /**
     * string group_policy_address = 4;
     * @return The bytes for groupPolicyAddress.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getGroupPolicyAddressBytes() {
      java.lang.Object ref = groupPolicyAddress_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        groupPolicyAddress_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int METADATA_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object metadata_ = "";
    /**
     * string metadata = 5;
     * @return The metadata.
     */
    @java.lang.Override
    public java.lang.String getMetadata() {
      java.lang.Object ref = metadata_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        metadata_ = s;
        return s;
      }
    }
    /**
     * string metadata = 5;
     * @return The bytes for metadata.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getMetadataBytes() {
      java.lang.Object ref = metadata_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        metadata_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PROPOSERS_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList proposers_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * repeated string proposers = 6;
     * @return A list containing the proposers.
     */
    public com.google.protobuf.ProtocolStringList
        getProposersList() {
      return proposers_;
    }
    /**
     * repeated string proposers = 6;
     * @return The count of proposers.
     */
    public int getProposersCount() {
      return proposers_.size();
    }
    /**
     * repeated string proposers = 6;
     * @param index The index of the element to return.
     * @return The proposers at the given index.
     */
    public java.lang.String getProposers(int index) {
      return proposers_.get(index);
    }
    /**
     * repeated string proposers = 6;
     * @param index The index of the value to return.
     * @return The bytes of the proposers at the given index.
     */
    public com.google.protobuf.ByteString
        getProposersBytes(int index) {
      return proposers_.getByteString(index);
    }

    public static final int SUBMIT_TIME_FIELD_NUMBER = 7;
    private com.google.protobuf.Timestamp submitTime_;
    /**
     * .google.protobuf.Timestamp submit_time = 7;
     * @return Whether the submitTime field is set.
     */
    @java.lang.Override
    public boolean hasSubmitTime() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * .google.protobuf.Timestamp submit_time = 7;
     * @return The submitTime.
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getSubmitTime() {
      return submitTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : submitTime_;
    }
    /**
     * .google.protobuf.Timestamp submit_time = 7;
     */
    @java.lang.Override
    public com.google.protobuf.TimestampOrBuilder getSubmitTimeOrBuilder() {
      return submitTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : submitTime_;
    }

    public static final int GROUP_VERSION_FIELD_NUMBER = 8;
    private long groupVersion_ = 0L;
    /**
     * int64 group_version = 8;
     * @return The groupVersion.
     */
    @java.lang.Override
    public long getGroupVersion() {
      return groupVersion_;
    }

    public static final int GROUP_POLICY_VERSION_FIELD_NUMBER = 9;
    private long groupPolicyVersion_ = 0L;
    /**
     * int64 group_policy_version = 9;
     * @return The groupPolicyVersion.
     */
    @java.lang.Override
    public long getGroupPolicyVersion() {
      return groupPolicyVersion_;
    }

    public static final int STATUS_FIELD_NUMBER = 10;
    @SuppressWarnings("serial")
    private volatile java.lang.Object status_ = "";
    /**
     * string status = 10;
     * @return The status.
     */
    @java.lang.Override
    public java.lang.String getStatus() {
      java.lang.Object ref = status_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        status_ = s;
        return s;
      }
    }
    /**
     * string status = 10;
     * @return The bytes for status.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getStatusBytes() {
      java.lang.Object ref = status_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        status_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FINAL_TALLY_RESULT_FIELD_NUMBER = 11;
    private com.figure.block.api.proto.groups.Proposal.TallyResult finalTallyResult_;
    /**
     * .api.groups.TallyResult final_tally_result = 11;
     * @return Whether the finalTallyResult field is set.
     */
    @java.lang.Override
    public boolean hasFinalTallyResult() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * .api.groups.TallyResult final_tally_result = 11;
     * @return The finalTallyResult.
     */
    @java.lang.Override
    public com.figure.block.api.proto.groups.Proposal.TallyResult getFinalTallyResult() {
      return finalTallyResult_ == null ? com.figure.block.api.proto.groups.Proposal.TallyResult.getDefaultInstance() : finalTallyResult_;
    }
    /**
     * .api.groups.TallyResult final_tally_result = 11;
     */
    @java.lang.Override
    public com.figure.block.api.proto.groups.Proposal.TallyResultOrBuilder getFinalTallyResultOrBuilder() {
      return finalTallyResult_ == null ? com.figure.block.api.proto.groups.Proposal.TallyResult.getDefaultInstance() : finalTallyResult_;
    }

    public static final int VOTING_PERIOD_END_FIELD_NUMBER = 12;
    private com.google.protobuf.Timestamp votingPeriodEnd_;
    /**
     * .google.protobuf.Timestamp voting_period_end = 12;
     * @return Whether the votingPeriodEnd field is set.
     */
    @java.lang.Override
    public boolean hasVotingPeriodEnd() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * .google.protobuf.Timestamp voting_period_end = 12;
     * @return The votingPeriodEnd.
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getVotingPeriodEnd() {
      return votingPeriodEnd_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : votingPeriodEnd_;
    }
    /**
     * .google.protobuf.Timestamp voting_period_end = 12;
     */
    @java.lang.Override
    public com.google.protobuf.TimestampOrBuilder getVotingPeriodEndOrBuilder() {
      return votingPeriodEnd_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : votingPeriodEnd_;
    }

    public static final int EXECUTOR_RESULT_FIELD_NUMBER = 13;
    @SuppressWarnings("serial")
    private volatile java.lang.Object executorResult_ = "";
    /**
     * string executor_result = 13;
     * @return The executorResult.
     */
    @java.lang.Override
    public java.lang.String getExecutorResult() {
      java.lang.Object ref = executorResult_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        executorResult_ = s;
        return s;
      }
    }
    /**
     * string executor_result = 13;
     * @return The bytes for executorResult.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getExecutorResultBytes() {
      java.lang.Object ref = executorResult_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        executorResult_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MESSAGES_FIELD_NUMBER = 14;
    @SuppressWarnings("serial")
    private java.util.List messages_;
    /**
     * repeated .google.protobuf.Any messages = 14;
     */
    @java.lang.Override
    public java.util.List getMessagesList() {
      return messages_;
    }
    /**
     * repeated .google.protobuf.Any messages = 14;
     */
    @java.lang.Override
    public java.util.List 
        getMessagesOrBuilderList() {
      return messages_;
    }
    /**
     * repeated .google.protobuf.Any messages = 14;
     */
    @java.lang.Override
    public int getMessagesCount() {
      return messages_.size();
    }
    /**
     * repeated .google.protobuf.Any messages = 14;
     */
    @java.lang.Override
    public com.google.protobuf.Any getMessages(int index) {
      return messages_.get(index);
    }
    /**
     * repeated .google.protobuf.Any messages = 14;
     */
    @java.lang.Override
    public com.google.protobuf.AnyOrBuilder getMessagesOrBuilder(
        int index) {
      return messages_.get(index);
    }

    public static final int VOTES_FIELD_NUMBER = 15;
    @SuppressWarnings("serial")
    private java.util.List votes_;
    /**
     * repeated .api.groups.Vote votes = 15;
     */
    @java.lang.Override
    public java.util.List getVotesList() {
      return votes_;
    }
    /**
     * repeated .api.groups.Vote votes = 15;
     */
    @java.lang.Override
    public java.util.List 
        getVotesOrBuilderList() {
      return votes_;
    }
    /**
     * repeated .api.groups.Vote votes = 15;
     */
    @java.lang.Override
    public int getVotesCount() {
      return votes_.size();
    }
    /**
     * repeated .api.groups.Vote votes = 15;
     */
    @java.lang.Override
    public com.figure.block.api.proto.groups.Proposal.Vote getVotes(int index) {
      return votes_.get(index);
    }
    /**
     * repeated .api.groups.Vote votes = 15;
     */
    @java.lang.Override
    public com.figure.block.api.proto.groups.Proposal.VoteOrBuilder getVotesOrBuilder(
        int index) {
      return votes_.get(index);
    }

    public static final int CALCULATED_TALLY_RESULT_FIELD_NUMBER = 16;
    private com.figure.block.api.proto.groups.Proposal.TallyResult calculatedTallyResult_;
    /**
     * .api.groups.TallyResult calculated_tally_result = 16;
     * @return Whether the calculatedTallyResult field is set.
     */
    @java.lang.Override
    public boolean hasCalculatedTallyResult() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * .api.groups.TallyResult calculated_tally_result = 16;
     * @return The calculatedTallyResult.
     */
    @java.lang.Override
    public com.figure.block.api.proto.groups.Proposal.TallyResult getCalculatedTallyResult() {
      return calculatedTallyResult_ == null ? com.figure.block.api.proto.groups.Proposal.TallyResult.getDefaultInstance() : calculatedTallyResult_;
    }
    /**
     * .api.groups.TallyResult calculated_tally_result = 16;
     */
    @java.lang.Override
    public com.figure.block.api.proto.groups.Proposal.TallyResultOrBuilder getCalculatedTallyResultOrBuilder() {
      return calculatedTallyResult_ == null ? com.figure.block.api.proto.groups.Proposal.TallyResult.getDefaultInstance() : calculatedTallyResult_;
    }

    public static final int PRUNED_FIELD_NUMBER = 17;
    private boolean pruned_ = false;
    /**
     * bool pruned = 17;
     * @return The pruned.
     */
    @java.lang.Override
    public boolean getPruned() {
      return pruned_;
    }

    public static final int TX_HASH_FIELD_NUMBER = 18;
    @SuppressWarnings("serial")
    private volatile java.lang.Object txHash_ = "";
    /**
     * string tx_hash = 18;
     * @return The txHash.
     */
    @java.lang.Override
    public java.lang.String getTxHash() {
      java.lang.Object ref = txHash_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        txHash_ = s;
        return s;
      }
    }
    /**
     * string tx_hash = 18;
     * @return The bytes for txHash.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTxHashBytes() {
      java.lang.Object ref = txHash_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        txHash_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    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 (height_ != 0L) {
        output.writeInt64(1, height_);
      }
      if (groupId_ != 0L) {
        output.writeInt64(2, groupId_);
      }
      if (proposalId_ != 0L) {
        output.writeInt64(3, proposalId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(groupPolicyAddress_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, groupPolicyAddress_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(metadata_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, metadata_);
      }
      for (int i = 0; i < proposers_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, proposers_.getRaw(i));
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(7, getSubmitTime());
      }
      if (groupVersion_ != 0L) {
        output.writeInt64(8, groupVersion_);
      }
      if (groupPolicyVersion_ != 0L) {
        output.writeInt64(9, groupPolicyVersion_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(status_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 10, status_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(11, getFinalTallyResult());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(12, getVotingPeriodEnd());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(executorResult_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 13, executorResult_);
      }
      for (int i = 0; i < messages_.size(); i++) {
        output.writeMessage(14, messages_.get(i));
      }
      for (int i = 0; i < votes_.size(); i++) {
        output.writeMessage(15, votes_.get(i));
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(16, getCalculatedTallyResult());
      }
      if (pruned_ != false) {
        output.writeBool(17, pruned_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(txHash_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 18, txHash_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (height_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, height_);
      }
      if (groupId_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, groupId_);
      }
      if (proposalId_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, proposalId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(groupPolicyAddress_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, groupPolicyAddress_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(metadata_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, metadata_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < proposers_.size(); i++) {
          dataSize += computeStringSizeNoTag(proposers_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getProposersList().size();
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getSubmitTime());
      }
      if (groupVersion_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(8, groupVersion_);
      }
      if (groupPolicyVersion_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(9, groupPolicyVersion_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(status_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, status_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, getFinalTallyResult());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, getVotingPeriodEnd());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(executorResult_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(13, executorResult_);
      }
      for (int i = 0; i < messages_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(14, messages_.get(i));
      }
      for (int i = 0; i < votes_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(15, votes_.get(i));
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(16, getCalculatedTallyResult());
      }
      if (pruned_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(17, pruned_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(txHash_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(18, txHash_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.figure.block.api.proto.groups.Proposal.ProposalState)) {
        return super.equals(obj);
      }
      com.figure.block.api.proto.groups.Proposal.ProposalState other = (com.figure.block.api.proto.groups.Proposal.ProposalState) obj;

      if (getHeight()
          != other.getHeight()) return false;
      if (getGroupId()
          != other.getGroupId()) return false;
      if (getProposalId()
          != other.getProposalId()) return false;
      if (!getGroupPolicyAddress()
          .equals(other.getGroupPolicyAddress())) return false;
      if (!getMetadata()
          .equals(other.getMetadata())) return false;
      if (!getProposersList()
          .equals(other.getProposersList())) return false;
      if (hasSubmitTime() != other.hasSubmitTime()) return false;
      if (hasSubmitTime()) {
        if (!getSubmitTime()
            .equals(other.getSubmitTime())) return false;
      }
      if (getGroupVersion()
          != other.getGroupVersion()) return false;
      if (getGroupPolicyVersion()
          != other.getGroupPolicyVersion()) return false;
      if (!getStatus()
          .equals(other.getStatus())) return false;
      if (hasFinalTallyResult() != other.hasFinalTallyResult()) return false;
      if (hasFinalTallyResult()) {
        if (!getFinalTallyResult()
            .equals(other.getFinalTallyResult())) return false;
      }
      if (hasVotingPeriodEnd() != other.hasVotingPeriodEnd()) return false;
      if (hasVotingPeriodEnd()) {
        if (!getVotingPeriodEnd()
            .equals(other.getVotingPeriodEnd())) return false;
      }
      if (!getExecutorResult()
          .equals(other.getExecutorResult())) return false;
      if (!getMessagesList()
          .equals(other.getMessagesList())) return false;
      if (!getVotesList()
          .equals(other.getVotesList())) return false;
      if (hasCalculatedTallyResult() != other.hasCalculatedTallyResult()) return false;
      if (hasCalculatedTallyResult()) {
        if (!getCalculatedTallyResult()
            .equals(other.getCalculatedTallyResult())) return false;
      }
      if (getPruned()
          != other.getPruned()) return false;
      if (!getTxHash()
          .equals(other.getTxHash())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) 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) + HEIGHT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getHeight());
      hash = (37 * hash) + GROUP_ID_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getGroupId());
      hash = (37 * hash) + PROPOSAL_ID_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getProposalId());
      hash = (37 * hash) + GROUP_POLICY_ADDRESS_FIELD_NUMBER;
      hash = (53 * hash) + getGroupPolicyAddress().hashCode();
      hash = (37 * hash) + METADATA_FIELD_NUMBER;
      hash = (53 * hash) + getMetadata().hashCode();
      if (getProposersCount() > 0) {
        hash = (37 * hash) + PROPOSERS_FIELD_NUMBER;
        hash = (53 * hash) + getProposersList().hashCode();
      }
      if (hasSubmitTime()) {
        hash = (37 * hash) + SUBMIT_TIME_FIELD_NUMBER;
        hash = (53 * hash) + getSubmitTime().hashCode();
      }
      hash = (37 * hash) + GROUP_VERSION_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getGroupVersion());
      hash = (37 * hash) + GROUP_POLICY_VERSION_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getGroupPolicyVersion());
      hash = (37 * hash) + STATUS_FIELD_NUMBER;
      hash = (53 * hash) + getStatus().hashCode();
      if (hasFinalTallyResult()) {
        hash = (37 * hash) + FINAL_TALLY_RESULT_FIELD_NUMBER;
        hash = (53 * hash) + getFinalTallyResult().hashCode();
      }
      if (hasVotingPeriodEnd()) {
        hash = (37 * hash) + VOTING_PERIOD_END_FIELD_NUMBER;
        hash = (53 * hash) + getVotingPeriodEnd().hashCode();
      }
      hash = (37 * hash) + EXECUTOR_RESULT_FIELD_NUMBER;
      hash = (53 * hash) + getExecutorResult().hashCode();
      if (getMessagesCount() > 0) {
        hash = (37 * hash) + MESSAGES_FIELD_NUMBER;
        hash = (53 * hash) + getMessagesList().hashCode();
      }
      if (getVotesCount() > 0) {
        hash = (37 * hash) + VOTES_FIELD_NUMBER;
        hash = (53 * hash) + getVotesList().hashCode();
      }
      if (hasCalculatedTallyResult()) {
        hash = (37 * hash) + CALCULATED_TALLY_RESULT_FIELD_NUMBER;
        hash = (53 * hash) + getCalculatedTallyResult().hashCode();
      }
      hash = (37 * hash) + PRUNED_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getPruned());
      hash = (37 * hash) + TX_HASH_FIELD_NUMBER;
      hash = (53 * hash) + getTxHash().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static com.figure.block.api.proto.groups.Proposal.ProposalState 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 com.figure.block.api.proto.groups.Proposal.ProposalState parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.figure.block.api.proto.groups.Proposal.ProposalState 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(com.figure.block.api.proto.groups.Proposal.ProposalState 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 api.groups.ProposalState}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:api.groups.ProposalState)
        com.figure.block.api.proto.groups.Proposal.ProposalStateOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.figure.block.api.proto.groups.Proposal.internal_static_api_groups_ProposalState_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.figure.block.api.proto.groups.Proposal.internal_static_api_groups_ProposalState_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.figure.block.api.proto.groups.Proposal.ProposalState.class, com.figure.block.api.proto.groups.Proposal.ProposalState.Builder.class);
      }

      // Construct using com.figure.block.api.proto.groups.Proposal.ProposalState.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getSubmitTimeFieldBuilder();
          getFinalTallyResultFieldBuilder();
          getVotingPeriodEndFieldBuilder();
          getMessagesFieldBuilder();
          getVotesFieldBuilder();
          getCalculatedTallyResultFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        height_ = 0L;
        groupId_ = 0L;
        proposalId_ = 0L;
        groupPolicyAddress_ = "";
        metadata_ = "";
        proposers_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        submitTime_ = null;
        if (submitTimeBuilder_ != null) {
          submitTimeBuilder_.dispose();
          submitTimeBuilder_ = null;
        }
        groupVersion_ = 0L;
        groupPolicyVersion_ = 0L;
        status_ = "";
        finalTallyResult_ = null;
        if (finalTallyResultBuilder_ != null) {
          finalTallyResultBuilder_.dispose();
          finalTallyResultBuilder_ = null;
        }
        votingPeriodEnd_ = null;
        if (votingPeriodEndBuilder_ != null) {
          votingPeriodEndBuilder_.dispose();
          votingPeriodEndBuilder_ = null;
        }
        executorResult_ = "";
        if (messagesBuilder_ == null) {
          messages_ = java.util.Collections.emptyList();
        } else {
          messages_ = null;
          messagesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00002000);
        if (votesBuilder_ == null) {
          votes_ = java.util.Collections.emptyList();
        } else {
          votes_ = null;
          votesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00004000);
        calculatedTallyResult_ = null;
        if (calculatedTallyResultBuilder_ != null) {
          calculatedTallyResultBuilder_.dispose();
          calculatedTallyResultBuilder_ = null;
        }
        pruned_ = false;
        txHash_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.figure.block.api.proto.groups.Proposal.internal_static_api_groups_ProposalState_descriptor;
      }

      @java.lang.Override
      public com.figure.block.api.proto.groups.Proposal.ProposalState getDefaultInstanceForType() {
        return com.figure.block.api.proto.groups.Proposal.ProposalState.getDefaultInstance();
      }

      @java.lang.Override
      public com.figure.block.api.proto.groups.Proposal.ProposalState build() {
        com.figure.block.api.proto.groups.Proposal.ProposalState result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.figure.block.api.proto.groups.Proposal.ProposalState buildPartial() {
        com.figure.block.api.proto.groups.Proposal.ProposalState result = new com.figure.block.api.proto.groups.Proposal.ProposalState(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(com.figure.block.api.proto.groups.Proposal.ProposalState result) {
        if (messagesBuilder_ == null) {
          if (((bitField0_ & 0x00002000) != 0)) {
            messages_ = java.util.Collections.unmodifiableList(messages_);
            bitField0_ = (bitField0_ & ~0x00002000);
          }
          result.messages_ = messages_;
        } else {
          result.messages_ = messagesBuilder_.build();
        }
        if (votesBuilder_ == null) {
          if (((bitField0_ & 0x00004000) != 0)) {
            votes_ = java.util.Collections.unmodifiableList(votes_);
            bitField0_ = (bitField0_ & ~0x00004000);
          }
          result.votes_ = votes_;
        } else {
          result.votes_ = votesBuilder_.build();
        }
      }

      private void buildPartial0(com.figure.block.api.proto.groups.Proposal.ProposalState result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.height_ = height_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.groupId_ = groupId_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.proposalId_ = proposalId_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.groupPolicyAddress_ = groupPolicyAddress_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.metadata_ = metadata_;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          proposers_.makeImmutable();
          result.proposers_ = proposers_;
        }
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.submitTime_ = submitTimeBuilder_ == null
              ? submitTime_
              : submitTimeBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.groupVersion_ = groupVersion_;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.groupPolicyVersion_ = groupPolicyVersion_;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.status_ = status_;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.finalTallyResult_ = finalTallyResultBuilder_ == null
              ? finalTallyResult_
              : finalTallyResultBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000800) != 0)) {
          result.votingPeriodEnd_ = votingPeriodEndBuilder_ == null
              ? votingPeriodEnd_
              : votingPeriodEndBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00001000) != 0)) {
          result.executorResult_ = executorResult_;
        }
        if (((from_bitField0_ & 0x00008000) != 0)) {
          result.calculatedTallyResult_ = calculatedTallyResultBuilder_ == null
              ? calculatedTallyResult_
              : calculatedTallyResultBuilder_.build();
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00010000) != 0)) {
          result.pruned_ = pruned_;
        }
        if (((from_bitField0_ & 0x00020000) != 0)) {
          result.txHash_ = txHash_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @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 com.figure.block.api.proto.groups.Proposal.ProposalState) {
          return mergeFrom((com.figure.block.api.proto.groups.Proposal.ProposalState)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.figure.block.api.proto.groups.Proposal.ProposalState other) {
        if (other == com.figure.block.api.proto.groups.Proposal.ProposalState.getDefaultInstance()) return this;
        if (other.getHeight() != 0L) {
          setHeight(other.getHeight());
        }
        if (other.getGroupId() != 0L) {
          setGroupId(other.getGroupId());
        }
        if (other.getProposalId() != 0L) {
          setProposalId(other.getProposalId());
        }
        if (!other.getGroupPolicyAddress().isEmpty()) {
          groupPolicyAddress_ = other.groupPolicyAddress_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (!other.getMetadata().isEmpty()) {
          metadata_ = other.metadata_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (!other.proposers_.isEmpty()) {
          if (proposers_.isEmpty()) {
            proposers_ = other.proposers_;
            bitField0_ |= 0x00000020;
          } else {
            ensureProposersIsMutable();
            proposers_.addAll(other.proposers_);
          }
          onChanged();
        }
        if (other.hasSubmitTime()) {
          mergeSubmitTime(other.getSubmitTime());
        }
        if (other.getGroupVersion() != 0L) {
          setGroupVersion(other.getGroupVersion());
        }
        if (other.getGroupPolicyVersion() != 0L) {
          setGroupPolicyVersion(other.getGroupPolicyVersion());
        }
        if (!other.getStatus().isEmpty()) {
          status_ = other.status_;
          bitField0_ |= 0x00000200;
          onChanged();
        }
        if (other.hasFinalTallyResult()) {
          mergeFinalTallyResult(other.getFinalTallyResult());
        }
        if (other.hasVotingPeriodEnd()) {
          mergeVotingPeriodEnd(other.getVotingPeriodEnd());
        }
        if (!other.getExecutorResult().isEmpty()) {
          executorResult_ = other.executorResult_;
          bitField0_ |= 0x00001000;
          onChanged();
        }
        if (messagesBuilder_ == null) {
          if (!other.messages_.isEmpty()) {
            if (messages_.isEmpty()) {
              messages_ = other.messages_;
              bitField0_ = (bitField0_ & ~0x00002000);
            } else {
              ensureMessagesIsMutable();
              messages_.addAll(other.messages_);
            }
            onChanged();
          }
        } else {
          if (!other.messages_.isEmpty()) {
            if (messagesBuilder_.isEmpty()) {
              messagesBuilder_.dispose();
              messagesBuilder_ = null;
              messages_ = other.messages_;
              bitField0_ = (bitField0_ & ~0x00002000);
              messagesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getMessagesFieldBuilder() : null;
            } else {
              messagesBuilder_.addAllMessages(other.messages_);
            }
          }
        }
        if (votesBuilder_ == null) {
          if (!other.votes_.isEmpty()) {
            if (votes_.isEmpty()) {
              votes_ = other.votes_;
              bitField0_ = (bitField0_ & ~0x00004000);
            } else {
              ensureVotesIsMutable();
              votes_.addAll(other.votes_);
            }
            onChanged();
          }
        } else {
          if (!other.votes_.isEmpty()) {
            if (votesBuilder_.isEmpty()) {
              votesBuilder_.dispose();
              votesBuilder_ = null;
              votes_ = other.votes_;
              bitField0_ = (bitField0_ & ~0x00004000);
              votesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getVotesFieldBuilder() : null;
            } else {
              votesBuilder_.addAllMessages(other.votes_);
            }
          }
        }
        if (other.hasCalculatedTallyResult()) {
          mergeCalculatedTallyResult(other.getCalculatedTallyResult());
        }
        if (other.getPruned() != false) {
          setPruned(other.getPruned());
        }
        if (!other.getTxHash().isEmpty()) {
          txHash_ = other.txHash_;
          bitField0_ |= 0x00020000;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                height_ = input.readInt64();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                groupId_ = input.readInt64();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                proposalId_ = input.readInt64();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 34: {
                groupPolicyAddress_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                metadata_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureProposersIsMutable();
                proposers_.add(s);
                break;
              } // case 50
              case 58: {
                input.readMessage(
                    getSubmitTimeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 64: {
                groupVersion_ = input.readInt64();
                bitField0_ |= 0x00000080;
                break;
              } // case 64
              case 72: {
                groupPolicyVersion_ = input.readInt64();
                bitField0_ |= 0x00000100;
                break;
              } // case 72
              case 82: {
                status_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000200;
                break;
              } // case 82
              case 90: {
                input.readMessage(
                    getFinalTallyResultFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000400;
                break;
              } // case 90
              case 98: {
                input.readMessage(
                    getVotingPeriodEndFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000800;
                break;
              } // case 98
              case 106: {
                executorResult_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00001000;
                break;
              } // case 106
              case 114: {
                com.google.protobuf.Any m =
                    input.readMessage(
                        com.google.protobuf.Any.parser(),
                        extensionRegistry);
                if (messagesBuilder_ == null) {
                  ensureMessagesIsMutable();
                  messages_.add(m);
                } else {
                  messagesBuilder_.addMessage(m);
                }
                break;
              } // case 114
              case 122: {
                com.figure.block.api.proto.groups.Proposal.Vote m =
                    input.readMessage(
                        com.figure.block.api.proto.groups.Proposal.Vote.parser(),
                        extensionRegistry);
                if (votesBuilder_ == null) {
                  ensureVotesIsMutable();
                  votes_.add(m);
                } else {
                  votesBuilder_.addMessage(m);
                }
                break;
              } // case 122
              case 130: {
                input.readMessage(
                    getCalculatedTallyResultFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00008000;
                break;
              } // case 130
              case 136: {
                pruned_ = input.readBool();
                bitField0_ |= 0x00010000;
                break;
              } // case 136
              case 146: {
                txHash_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00020000;
                break;
              } // case 146
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private long height_ ;
      /**
       * int64 height = 1;
       * @return The height.
       */
      @java.lang.Override
      public long getHeight() {
        return height_;
      }
      /**
       * int64 height = 1;
       * @param value The height to set.
       * @return This builder for chaining.
       */
      public Builder setHeight(long value) {

        height_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * int64 height = 1;
       * @return This builder for chaining.
       */
      public Builder clearHeight() {
        bitField0_ = (bitField0_ & ~0x00000001);
        height_ = 0L;
        onChanged();
        return this;
      }

      private long groupId_ ;
      /**
       * int64 group_id = 2;
       * @return The groupId.
       */
      @java.lang.Override
      public long getGroupId() {
        return groupId_;
      }
      /**
       * int64 group_id = 2;
       * @param value The groupId to set.
       * @return This builder for chaining.
       */
      public Builder setGroupId(long value) {

        groupId_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * int64 group_id = 2;
       * @return This builder for chaining.
       */
      public Builder clearGroupId() {
        bitField0_ = (bitField0_ & ~0x00000002);
        groupId_ = 0L;
        onChanged();
        return this;
      }

      private long proposalId_ ;
      /**
       * int64 proposal_id = 3;
       * @return The proposalId.
       */
      @java.lang.Override
      public long getProposalId() {
        return proposalId_;
      }
      /**
       * int64 proposal_id = 3;
       * @param value The proposalId to set.
       * @return This builder for chaining.
       */
      public Builder setProposalId(long value) {

        proposalId_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * int64 proposal_id = 3;
       * @return This builder for chaining.
       */
      public Builder clearProposalId() {
        bitField0_ = (bitField0_ & ~0x00000004);
        proposalId_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object groupPolicyAddress_ = "";
      /**
       * string group_policy_address = 4;
       * @return The groupPolicyAddress.
       */
      public java.lang.String getGroupPolicyAddress() {
        java.lang.Object ref = groupPolicyAddress_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          groupPolicyAddress_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string group_policy_address = 4;
       * @return The bytes for groupPolicyAddress.
       */
      public com.google.protobuf.ByteString
          getGroupPolicyAddressBytes() {
        java.lang.Object ref = groupPolicyAddress_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          groupPolicyAddress_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string group_policy_address = 4;
       * @param value The groupPolicyAddress to set.
       * @return This builder for chaining.
       */
      public Builder setGroupPolicyAddress(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        groupPolicyAddress_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * string group_policy_address = 4;
       * @return This builder for chaining.
       */
      public Builder clearGroupPolicyAddress() {
        groupPolicyAddress_ = getDefaultInstance().getGroupPolicyAddress();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * string group_policy_address = 4;
       * @param value The bytes for groupPolicyAddress to set.
       * @return This builder for chaining.
       */
      public Builder setGroupPolicyAddressBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        groupPolicyAddress_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private java.lang.Object metadata_ = "";
      /**
       * string metadata = 5;
       * @return The metadata.
       */
      public java.lang.String getMetadata() {
        java.lang.Object ref = metadata_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          metadata_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string metadata = 5;
       * @return The bytes for metadata.
       */
      public com.google.protobuf.ByteString
          getMetadataBytes() {
        java.lang.Object ref = metadata_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          metadata_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string metadata = 5;
       * @param value The metadata to set.
       * @return This builder for chaining.
       */
      public Builder setMetadata(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        metadata_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * string metadata = 5;
       * @return This builder for chaining.
       */
      public Builder clearMetadata() {
        metadata_ = getDefaultInstance().getMetadata();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * string metadata = 5;
       * @param value The bytes for metadata to set.
       * @return This builder for chaining.
       */
      public Builder setMetadataBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        metadata_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList proposers_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureProposersIsMutable() {
        if (!proposers_.isModifiable()) {
          proposers_ = new com.google.protobuf.LazyStringArrayList(proposers_);
        }
        bitField0_ |= 0x00000020;
      }
      /**
       * repeated string proposers = 6;
       * @return A list containing the proposers.
       */
      public com.google.protobuf.ProtocolStringList
          getProposersList() {
        proposers_.makeImmutable();
        return proposers_;
      }
      /**
       * repeated string proposers = 6;
       * @return The count of proposers.
       */
      public int getProposersCount() {
        return proposers_.size();
      }
      /**
       * repeated string proposers = 6;
       * @param index The index of the element to return.
       * @return The proposers at the given index.
       */
      public java.lang.String getProposers(int index) {
        return proposers_.get(index);
      }
      /**
       * repeated string proposers = 6;
       * @param index The index of the value to return.
       * @return The bytes of the proposers at the given index.
       */
      public com.google.protobuf.ByteString
          getProposersBytes(int index) {
        return proposers_.getByteString(index);
      }
      /**
       * repeated string proposers = 6;
       * @param index The index to set the value at.
       * @param value The proposers to set.
       * @return This builder for chaining.
       */
      public Builder setProposers(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureProposersIsMutable();
        proposers_.set(index, value);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * repeated string proposers = 6;
       * @param value The proposers to add.
       * @return This builder for chaining.
       */
      public Builder addProposers(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureProposersIsMutable();
        proposers_.add(value);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * repeated string proposers = 6;
       * @param values The proposers to add.
       * @return This builder for chaining.
       */
      public Builder addAllProposers(
          java.lang.Iterable values) {
        ensureProposersIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, proposers_);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * repeated string proposers = 6;
       * @return This builder for chaining.
       */
      public Builder clearProposers() {
        proposers_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);;
        onChanged();
        return this;
      }
      /**
       * repeated string proposers = 6;
       * @param value The bytes of the proposers to add.
       * @return This builder for chaining.
       */
      public Builder addProposersBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ensureProposersIsMutable();
        proposers_.add(value);
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }

      private com.google.protobuf.Timestamp submitTime_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> submitTimeBuilder_;
      /**
       * .google.protobuf.Timestamp submit_time = 7;
       * @return Whether the submitTime field is set.
       */
      public boolean hasSubmitTime() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * .google.protobuf.Timestamp submit_time = 7;
       * @return The submitTime.
       */
      public com.google.protobuf.Timestamp getSubmitTime() {
        if (submitTimeBuilder_ == null) {
          return submitTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : submitTime_;
        } else {
          return submitTimeBuilder_.getMessage();
        }
      }
      /**
       * .google.protobuf.Timestamp submit_time = 7;
       */
      public Builder setSubmitTime(com.google.protobuf.Timestamp value) {
        if (submitTimeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          submitTime_ = value;
        } else {
          submitTimeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * .google.protobuf.Timestamp submit_time = 7;
       */
      public Builder setSubmitTime(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        if (submitTimeBuilder_ == null) {
          submitTime_ = builderForValue.build();
        } else {
          submitTimeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * .google.protobuf.Timestamp submit_time = 7;
       */
      public Builder mergeSubmitTime(com.google.protobuf.Timestamp value) {
        if (submitTimeBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0) &&
            submitTime_ != null &&
            submitTime_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
            getSubmitTimeBuilder().mergeFrom(value);
          } else {
            submitTime_ = value;
          }
        } else {
          submitTimeBuilder_.mergeFrom(value);
        }
        if (submitTime_ != null) {
          bitField0_ |= 0x00000040;
          onChanged();
        }
        return this;
      }
      /**
       * .google.protobuf.Timestamp submit_time = 7;
       */
      public Builder clearSubmitTime() {
        bitField0_ = (bitField0_ & ~0x00000040);
        submitTime_ = null;
        if (submitTimeBuilder_ != null) {
          submitTimeBuilder_.dispose();
          submitTimeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .google.protobuf.Timestamp submit_time = 7;
       */
      public com.google.protobuf.Timestamp.Builder getSubmitTimeBuilder() {
        bitField0_ |= 0x00000040;
        onChanged();
        return getSubmitTimeFieldBuilder().getBuilder();
      }
      /**
       * .google.protobuf.Timestamp submit_time = 7;
       */
      public com.google.protobuf.TimestampOrBuilder getSubmitTimeOrBuilder() {
        if (submitTimeBuilder_ != null) {
          return submitTimeBuilder_.getMessageOrBuilder();
        } else {
          return submitTime_ == null ?
              com.google.protobuf.Timestamp.getDefaultInstance() : submitTime_;
        }
      }
      /**
       * .google.protobuf.Timestamp submit_time = 7;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> 
          getSubmitTimeFieldBuilder() {
        if (submitTimeBuilder_ == null) {
          submitTimeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
                  getSubmitTime(),
                  getParentForChildren(),
                  isClean());
          submitTime_ = null;
        }
        return submitTimeBuilder_;
      }

      private long groupVersion_ ;
      /**
       * int64 group_version = 8;
       * @return The groupVersion.
       */
      @java.lang.Override
      public long getGroupVersion() {
        return groupVersion_;
      }
      /**
       * int64 group_version = 8;
       * @param value The groupVersion to set.
       * @return This builder for chaining.
       */
      public Builder setGroupVersion(long value) {

        groupVersion_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * int64 group_version = 8;
       * @return This builder for chaining.
       */
      public Builder clearGroupVersion() {
        bitField0_ = (bitField0_ & ~0x00000080);
        groupVersion_ = 0L;
        onChanged();
        return this;
      }

      private long groupPolicyVersion_ ;
      /**
       * int64 group_policy_version = 9;
       * @return The groupPolicyVersion.
       */
      @java.lang.Override
      public long getGroupPolicyVersion() {
        return groupPolicyVersion_;
      }
      /**
       * int64 group_policy_version = 9;
       * @param value The groupPolicyVersion to set.
       * @return This builder for chaining.
       */
      public Builder setGroupPolicyVersion(long value) {

        groupPolicyVersion_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * int64 group_policy_version = 9;
       * @return This builder for chaining.
       */
      public Builder clearGroupPolicyVersion() {
        bitField0_ = (bitField0_ & ~0x00000100);
        groupPolicyVersion_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object status_ = "";
      /**
       * string status = 10;
       * @return The status.
       */
      public java.lang.String getStatus() {
        java.lang.Object ref = status_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          status_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string status = 10;
       * @return The bytes for status.
       */
      public com.google.protobuf.ByteString
          getStatusBytes() {
        java.lang.Object ref = status_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          status_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string status = 10;
       * @param value The status to set.
       * @return This builder for chaining.
       */
      public Builder setStatus(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        status_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * string status = 10;
       * @return This builder for chaining.
       */
      public Builder clearStatus() {
        status_ = getDefaultInstance().getStatus();
        bitField0_ = (bitField0_ & ~0x00000200);
        onChanged();
        return this;
      }
      /**
       * string status = 10;
       * @param value The bytes for status to set.
       * @return This builder for chaining.
       */
      public Builder setStatusBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        status_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }

      private com.figure.block.api.proto.groups.Proposal.TallyResult finalTallyResult_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.figure.block.api.proto.groups.Proposal.TallyResult, com.figure.block.api.proto.groups.Proposal.TallyResult.Builder, com.figure.block.api.proto.groups.Proposal.TallyResultOrBuilder> finalTallyResultBuilder_;
      /**
       * .api.groups.TallyResult final_tally_result = 11;
       * @return Whether the finalTallyResult field is set.
       */
      public boolean hasFinalTallyResult() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * .api.groups.TallyResult final_tally_result = 11;
       * @return The finalTallyResult.
       */
      public com.figure.block.api.proto.groups.Proposal.TallyResult getFinalTallyResult() {
        if (finalTallyResultBuilder_ == null) {
          return finalTallyResult_ == null ? com.figure.block.api.proto.groups.Proposal.TallyResult.getDefaultInstance() : finalTallyResult_;
        } else {
          return finalTallyResultBuilder_.getMessage();
        }
      }
      /**
       * .api.groups.TallyResult final_tally_result = 11;
       */
      public Builder setFinalTallyResult(com.figure.block.api.proto.groups.Proposal.TallyResult value) {
        if (finalTallyResultBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          finalTallyResult_ = value;
        } else {
          finalTallyResultBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * .api.groups.TallyResult final_tally_result = 11;
       */
      public Builder setFinalTallyResult(
          com.figure.block.api.proto.groups.Proposal.TallyResult.Builder builderForValue) {
        if (finalTallyResultBuilder_ == null) {
          finalTallyResult_ = builderForValue.build();
        } else {
          finalTallyResultBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * .api.groups.TallyResult final_tally_result = 11;
       */
      public Builder mergeFinalTallyResult(com.figure.block.api.proto.groups.Proposal.TallyResult value) {
        if (finalTallyResultBuilder_ == null) {
          if (((bitField0_ & 0x00000400) != 0) &&
            finalTallyResult_ != null &&
            finalTallyResult_ != com.figure.block.api.proto.groups.Proposal.TallyResult.getDefaultInstance()) {
            getFinalTallyResultBuilder().mergeFrom(value);
          } else {
            finalTallyResult_ = value;
          }
        } else {
          finalTallyResultBuilder_.mergeFrom(value);
        }
        if (finalTallyResult_ != null) {
          bitField0_ |= 0x00000400;
          onChanged();
        }
        return this;
      }
      /**
       * .api.groups.TallyResult final_tally_result = 11;
       */
      public Builder clearFinalTallyResult() {
        bitField0_ = (bitField0_ & ~0x00000400);
        finalTallyResult_ = null;
        if (finalTallyResultBuilder_ != null) {
          finalTallyResultBuilder_.dispose();
          finalTallyResultBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .api.groups.TallyResult final_tally_result = 11;
       */
      public com.figure.block.api.proto.groups.Proposal.TallyResult.Builder getFinalTallyResultBuilder() {
        bitField0_ |= 0x00000400;
        onChanged();
        return getFinalTallyResultFieldBuilder().getBuilder();
      }
      /**
       * .api.groups.TallyResult final_tally_result = 11;
       */
      public com.figure.block.api.proto.groups.Proposal.TallyResultOrBuilder getFinalTallyResultOrBuilder() {
        if (finalTallyResultBuilder_ != null) {
          return finalTallyResultBuilder_.getMessageOrBuilder();
        } else {
          return finalTallyResult_ == null ?
              com.figure.block.api.proto.groups.Proposal.TallyResult.getDefaultInstance() : finalTallyResult_;
        }
      }
      /**
       * .api.groups.TallyResult final_tally_result = 11;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.figure.block.api.proto.groups.Proposal.TallyResult, com.figure.block.api.proto.groups.Proposal.TallyResult.Builder, com.figure.block.api.proto.groups.Proposal.TallyResultOrBuilder> 
          getFinalTallyResultFieldBuilder() {
        if (finalTallyResultBuilder_ == null) {
          finalTallyResultBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.figure.block.api.proto.groups.Proposal.TallyResult, com.figure.block.api.proto.groups.Proposal.TallyResult.Builder, com.figure.block.api.proto.groups.Proposal.TallyResultOrBuilder>(
                  getFinalTallyResult(),
                  getParentForChildren(),
                  isClean());
          finalTallyResult_ = null;
        }
        return finalTallyResultBuilder_;
      }

      private com.google.protobuf.Timestamp votingPeriodEnd_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> votingPeriodEndBuilder_;
      /**
       * .google.protobuf.Timestamp voting_period_end = 12;
       * @return Whether the votingPeriodEnd field is set.
       */
      public boolean hasVotingPeriodEnd() {
        return ((bitField0_ & 0x00000800) != 0);
      }
      /**
       * .google.protobuf.Timestamp voting_period_end = 12;
       * @return The votingPeriodEnd.
       */
      public com.google.protobuf.Timestamp getVotingPeriodEnd() {
        if (votingPeriodEndBuilder_ == null) {
          return votingPeriodEnd_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : votingPeriodEnd_;
        } else {
          return votingPeriodEndBuilder_.getMessage();
        }
      }
      /**
       * .google.protobuf.Timestamp voting_period_end = 12;
       */
      public Builder setVotingPeriodEnd(com.google.protobuf.Timestamp value) {
        if (votingPeriodEndBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          votingPeriodEnd_ = value;
        } else {
          votingPeriodEndBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * .google.protobuf.Timestamp voting_period_end = 12;
       */
      public Builder setVotingPeriodEnd(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        if (votingPeriodEndBuilder_ == null) {
          votingPeriodEnd_ = builderForValue.build();
        } else {
          votingPeriodEndBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * .google.protobuf.Timestamp voting_period_end = 12;
       */
      public Builder mergeVotingPeriodEnd(com.google.protobuf.Timestamp value) {
        if (votingPeriodEndBuilder_ == null) {
          if (((bitField0_ & 0x00000800) != 0) &&
            votingPeriodEnd_ != null &&
            votingPeriodEnd_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
            getVotingPeriodEndBuilder().mergeFrom(value);
          } else {
            votingPeriodEnd_ = value;
          }
        } else {
          votingPeriodEndBuilder_.mergeFrom(value);
        }
        if (votingPeriodEnd_ != null) {
          bitField0_ |= 0x00000800;
          onChanged();
        }
        return this;
      }
      /**
       * .google.protobuf.Timestamp voting_period_end = 12;
       */
      public Builder clearVotingPeriodEnd() {
        bitField0_ = (bitField0_ & ~0x00000800);
        votingPeriodEnd_ = null;
        if (votingPeriodEndBuilder_ != null) {
          votingPeriodEndBuilder_.dispose();
          votingPeriodEndBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .google.protobuf.Timestamp voting_period_end = 12;
       */
      public com.google.protobuf.Timestamp.Builder getVotingPeriodEndBuilder() {
        bitField0_ |= 0x00000800;
        onChanged();
        return getVotingPeriodEndFieldBuilder().getBuilder();
      }
      /**
       * .google.protobuf.Timestamp voting_period_end = 12;
       */
      public com.google.protobuf.TimestampOrBuilder getVotingPeriodEndOrBuilder() {
        if (votingPeriodEndBuilder_ != null) {
          return votingPeriodEndBuilder_.getMessageOrBuilder();
        } else {
          return votingPeriodEnd_ == null ?
              com.google.protobuf.Timestamp.getDefaultInstance() : votingPeriodEnd_;
        }
      }
      /**
       * .google.protobuf.Timestamp voting_period_end = 12;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> 
          getVotingPeriodEndFieldBuilder() {
        if (votingPeriodEndBuilder_ == null) {
          votingPeriodEndBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
                  getVotingPeriodEnd(),
                  getParentForChildren(),
                  isClean());
          votingPeriodEnd_ = null;
        }
        return votingPeriodEndBuilder_;
      }

      private java.lang.Object executorResult_ = "";
      /**
       * string executor_result = 13;
       * @return The executorResult.
       */
      public java.lang.String getExecutorResult() {
        java.lang.Object ref = executorResult_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          executorResult_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string executor_result = 13;
       * @return The bytes for executorResult.
       */
      public com.google.protobuf.ByteString
          getExecutorResultBytes() {
        java.lang.Object ref = executorResult_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          executorResult_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string executor_result = 13;
       * @param value The executorResult to set.
       * @return This builder for chaining.
       */
      public Builder setExecutorResult(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        executorResult_ = value;
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * string executor_result = 13;
       * @return This builder for chaining.
       */
      public Builder clearExecutorResult() {
        executorResult_ = getDefaultInstance().getExecutorResult();
        bitField0_ = (bitField0_ & ~0x00001000);
        onChanged();
        return this;
      }
      /**
       * string executor_result = 13;
       * @param value The bytes for executorResult to set.
       * @return This builder for chaining.
       */
      public Builder setExecutorResultBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        executorResult_ = value;
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }

      private java.util.List messages_ =
        java.util.Collections.emptyList();
      private void ensureMessagesIsMutable() {
        if (!((bitField0_ & 0x00002000) != 0)) {
          messages_ = new java.util.ArrayList(messages_);
          bitField0_ |= 0x00002000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.Any, com.google.protobuf.Any.Builder, com.google.protobuf.AnyOrBuilder> messagesBuilder_;

      /**
       * repeated .google.protobuf.Any messages = 14;
       */
      public java.util.List getMessagesList() {
        if (messagesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(messages_);
        } else {
          return messagesBuilder_.getMessageList();
        }
      }
      /**
       * repeated .google.protobuf.Any messages = 14;
       */
      public int getMessagesCount() {
        if (messagesBuilder_ == null) {
          return messages_.size();
        } else {
          return messagesBuilder_.getCount();
        }
      }
      /**
       * repeated .google.protobuf.Any messages = 14;
       */
      public com.google.protobuf.Any getMessages(int index) {
        if (messagesBuilder_ == null) {
          return messages_.get(index);
        } else {
          return messagesBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .google.protobuf.Any messages = 14;
       */
      public Builder setMessages(
          int index, com.google.protobuf.Any value) {
        if (messagesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMessagesIsMutable();
          messages_.set(index, value);
          onChanged();
        } else {
          messagesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.Any messages = 14;
       */
      public Builder setMessages(
          int index, com.google.protobuf.Any.Builder builderForValue) {
        if (messagesBuilder_ == null) {
          ensureMessagesIsMutable();
          messages_.set(index, builderForValue.build());
          onChanged();
        } else {
          messagesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.Any messages = 14;
       */
      public Builder addMessages(com.google.protobuf.Any value) {
        if (messagesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMessagesIsMutable();
          messages_.add(value);
          onChanged();
        } else {
          messagesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.Any messages = 14;
       */
      public Builder addMessages(
          int index, com.google.protobuf.Any value) {
        if (messagesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMessagesIsMutable();
          messages_.add(index, value);
          onChanged();
        } else {
          messagesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.Any messages = 14;
       */
      public Builder addMessages(
          com.google.protobuf.Any.Builder builderForValue) {
        if (messagesBuilder_ == null) {
          ensureMessagesIsMutable();
          messages_.add(builderForValue.build());
          onChanged();
        } else {
          messagesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.Any messages = 14;
       */
      public Builder addMessages(
          int index, com.google.protobuf.Any.Builder builderForValue) {
        if (messagesBuilder_ == null) {
          ensureMessagesIsMutable();
          messages_.add(index, builderForValue.build());
          onChanged();
        } else {
          messagesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .google.protobuf.Any messages = 14;
       */
      public Builder addAllMessages(
          java.lang.Iterable values) {
        if (messagesBuilder_ == null) {
          ensureMessagesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, messages_);
          onChanged();
        } else {
          messagesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.Any messages = 14;
       */
      public Builder clearMessages() {
        if (messagesBuilder_ == null) {
          messages_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00002000);
          onChanged();
        } else {
          messagesBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .google.protobuf.Any messages = 14;
       */
      public Builder removeMessages(int index) {
        if (messagesBuilder_ == null) {
          ensureMessagesIsMutable();
          messages_.remove(index);
          onChanged();
        } else {
          messagesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .google.protobuf.Any messages = 14;
       */
      public com.google.protobuf.Any.Builder getMessagesBuilder(
          int index) {
        return getMessagesFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .google.protobuf.Any messages = 14;
       */
      public com.google.protobuf.AnyOrBuilder getMessagesOrBuilder(
          int index) {
        if (messagesBuilder_ == null) {
          return messages_.get(index);  } else {
          return messagesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .google.protobuf.Any messages = 14;
       */
      public java.util.List 
           getMessagesOrBuilderList() {
        if (messagesBuilder_ != null) {
          return messagesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(messages_);
        }
      }
      /**
       * repeated .google.protobuf.Any messages = 14;
       */
      public com.google.protobuf.Any.Builder addMessagesBuilder() {
        return getMessagesFieldBuilder().addBuilder(
            com.google.protobuf.Any.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.Any messages = 14;
       */
      public com.google.protobuf.Any.Builder addMessagesBuilder(
          int index) {
        return getMessagesFieldBuilder().addBuilder(
            index, com.google.protobuf.Any.getDefaultInstance());
      }
      /**
       * repeated .google.protobuf.Any messages = 14;
       */
      public java.util.List 
           getMessagesBuilderList() {
        return getMessagesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.protobuf.Any, com.google.protobuf.Any.Builder, com.google.protobuf.AnyOrBuilder> 
          getMessagesFieldBuilder() {
        if (messagesBuilder_ == null) {
          messagesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.protobuf.Any, com.google.protobuf.Any.Builder, com.google.protobuf.AnyOrBuilder>(
                  messages_,
                  ((bitField0_ & 0x00002000) != 0),
                  getParentForChildren(),
                  isClean());
          messages_ = null;
        }
        return messagesBuilder_;
      }

      private java.util.List votes_ =
        java.util.Collections.emptyList();
      private void ensureVotesIsMutable() {
        if (!((bitField0_ & 0x00004000) != 0)) {
          votes_ = new java.util.ArrayList(votes_);
          bitField0_ |= 0x00004000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.figure.block.api.proto.groups.Proposal.Vote, com.figure.block.api.proto.groups.Proposal.Vote.Builder, com.figure.block.api.proto.groups.Proposal.VoteOrBuilder> votesBuilder_;

      /**
       * repeated .api.groups.Vote votes = 15;
       */
      public java.util.List getVotesList() {
        if (votesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(votes_);
        } else {
          return votesBuilder_.getMessageList();
        }
      }
      /**
       * repeated .api.groups.Vote votes = 15;
       */
      public int getVotesCount() {
        if (votesBuilder_ == null) {
          return votes_.size();
        } else {
          return votesBuilder_.getCount();
        }
      }
      /**
       * repeated .api.groups.Vote votes = 15;
       */
      public com.figure.block.api.proto.groups.Proposal.Vote getVotes(int index) {
        if (votesBuilder_ == null) {
          return votes_.get(index);
        } else {
          return votesBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .api.groups.Vote votes = 15;
       */
      public Builder setVotes(
          int index, com.figure.block.api.proto.groups.Proposal.Vote value) {
        if (votesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVotesIsMutable();
          votes_.set(index, value);
          onChanged();
        } else {
          votesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .api.groups.Vote votes = 15;
       */
      public Builder setVotes(
          int index, com.figure.block.api.proto.groups.Proposal.Vote.Builder builderForValue) {
        if (votesBuilder_ == null) {
          ensureVotesIsMutable();
          votes_.set(index, builderForValue.build());
          onChanged();
        } else {
          votesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .api.groups.Vote votes = 15;
       */
      public Builder addVotes(com.figure.block.api.proto.groups.Proposal.Vote value) {
        if (votesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVotesIsMutable();
          votes_.add(value);
          onChanged();
        } else {
          votesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .api.groups.Vote votes = 15;
       */
      public Builder addVotes(
          int index, com.figure.block.api.proto.groups.Proposal.Vote value) {
        if (votesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVotesIsMutable();
          votes_.add(index, value);
          onChanged();
        } else {
          votesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .api.groups.Vote votes = 15;
       */
      public Builder addVotes(
          com.figure.block.api.proto.groups.Proposal.Vote.Builder builderForValue) {
        if (votesBuilder_ == null) {
          ensureVotesIsMutable();
          votes_.add(builderForValue.build());
          onChanged();
        } else {
          votesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .api.groups.Vote votes = 15;
       */
      public Builder addVotes(
          int index, com.figure.block.api.proto.groups.Proposal.Vote.Builder builderForValue) {
        if (votesBuilder_ == null) {
          ensureVotesIsMutable();
          votes_.add(index, builderForValue.build());
          onChanged();
        } else {
          votesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .api.groups.Vote votes = 15;
       */
      public Builder addAllVotes(
          java.lang.Iterable values) {
        if (votesBuilder_ == null) {
          ensureVotesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, votes_);
          onChanged();
        } else {
          votesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .api.groups.Vote votes = 15;
       */
      public Builder clearVotes() {
        if (votesBuilder_ == null) {
          votes_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00004000);
          onChanged();
        } else {
          votesBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .api.groups.Vote votes = 15;
       */
      public Builder removeVotes(int index) {
        if (votesBuilder_ == null) {
          ensureVotesIsMutable();
          votes_.remove(index);
          onChanged();
        } else {
          votesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .api.groups.Vote votes = 15;
       */
      public com.figure.block.api.proto.groups.Proposal.Vote.Builder getVotesBuilder(
          int index) {
        return getVotesFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .api.groups.Vote votes = 15;
       */
      public com.figure.block.api.proto.groups.Proposal.VoteOrBuilder getVotesOrBuilder(
          int index) {
        if (votesBuilder_ == null) {
          return votes_.get(index);  } else {
          return votesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .api.groups.Vote votes = 15;
       */
      public java.util.List 
           getVotesOrBuilderList() {
        if (votesBuilder_ != null) {
          return votesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(votes_);
        }
      }
      /**
       * repeated .api.groups.Vote votes = 15;
       */
      public com.figure.block.api.proto.groups.Proposal.Vote.Builder addVotesBuilder() {
        return getVotesFieldBuilder().addBuilder(
            com.figure.block.api.proto.groups.Proposal.Vote.getDefaultInstance());
      }
      /**
       * repeated .api.groups.Vote votes = 15;
       */
      public com.figure.block.api.proto.groups.Proposal.Vote.Builder addVotesBuilder(
          int index) {
        return getVotesFieldBuilder().addBuilder(
            index, com.figure.block.api.proto.groups.Proposal.Vote.getDefaultInstance());
      }
      /**
       * repeated .api.groups.Vote votes = 15;
       */
      public java.util.List 
           getVotesBuilderList() {
        return getVotesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.figure.block.api.proto.groups.Proposal.Vote, com.figure.block.api.proto.groups.Proposal.Vote.Builder, com.figure.block.api.proto.groups.Proposal.VoteOrBuilder> 
          getVotesFieldBuilder() {
        if (votesBuilder_ == null) {
          votesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.figure.block.api.proto.groups.Proposal.Vote, com.figure.block.api.proto.groups.Proposal.Vote.Builder, com.figure.block.api.proto.groups.Proposal.VoteOrBuilder>(
                  votes_,
                  ((bitField0_ & 0x00004000) != 0),
                  getParentForChildren(),
                  isClean());
          votes_ = null;
        }
        return votesBuilder_;
      }

      private com.figure.block.api.proto.groups.Proposal.TallyResult calculatedTallyResult_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.figure.block.api.proto.groups.Proposal.TallyResult, com.figure.block.api.proto.groups.Proposal.TallyResult.Builder, com.figure.block.api.proto.groups.Proposal.TallyResultOrBuilder> calculatedTallyResultBuilder_;
      /**
       * .api.groups.TallyResult calculated_tally_result = 16;
       * @return Whether the calculatedTallyResult field is set.
       */
      public boolean hasCalculatedTallyResult() {
        return ((bitField0_ & 0x00008000) != 0);
      }
      /**
       * .api.groups.TallyResult calculated_tally_result = 16;
       * @return The calculatedTallyResult.
       */
      public com.figure.block.api.proto.groups.Proposal.TallyResult getCalculatedTallyResult() {
        if (calculatedTallyResultBuilder_ == null) {
          return calculatedTallyResult_ == null ? com.figure.block.api.proto.groups.Proposal.TallyResult.getDefaultInstance() : calculatedTallyResult_;
        } else {
          return calculatedTallyResultBuilder_.getMessage();
        }
      }
      /**
       * .api.groups.TallyResult calculated_tally_result = 16;
       */
      public Builder setCalculatedTallyResult(com.figure.block.api.proto.groups.Proposal.TallyResult value) {
        if (calculatedTallyResultBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          calculatedTallyResult_ = value;
        } else {
          calculatedTallyResultBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }
      /**
       * .api.groups.TallyResult calculated_tally_result = 16;
       */
      public Builder setCalculatedTallyResult(
          com.figure.block.api.proto.groups.Proposal.TallyResult.Builder builderForValue) {
        if (calculatedTallyResultBuilder_ == null) {
          calculatedTallyResult_ = builderForValue.build();
        } else {
          calculatedTallyResultBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }
      /**
       * .api.groups.TallyResult calculated_tally_result = 16;
       */
      public Builder mergeCalculatedTallyResult(com.figure.block.api.proto.groups.Proposal.TallyResult value) {
        if (calculatedTallyResultBuilder_ == null) {
          if (((bitField0_ & 0x00008000) != 0) &&
            calculatedTallyResult_ != null &&
            calculatedTallyResult_ != com.figure.block.api.proto.groups.Proposal.TallyResult.getDefaultInstance()) {
            getCalculatedTallyResultBuilder().mergeFrom(value);
          } else {
            calculatedTallyResult_ = value;
          }
        } else {
          calculatedTallyResultBuilder_.mergeFrom(value);
        }
        if (calculatedTallyResult_ != null) {
          bitField0_ |= 0x00008000;
          onChanged();
        }
        return this;
      }
      /**
       * .api.groups.TallyResult calculated_tally_result = 16;
       */
      public Builder clearCalculatedTallyResult() {
        bitField0_ = (bitField0_ & ~0x00008000);
        calculatedTallyResult_ = null;
        if (calculatedTallyResultBuilder_ != null) {
          calculatedTallyResultBuilder_.dispose();
          calculatedTallyResultBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .api.groups.TallyResult calculated_tally_result = 16;
       */
      public com.figure.block.api.proto.groups.Proposal.TallyResult.Builder getCalculatedTallyResultBuilder() {
        bitField0_ |= 0x00008000;
        onChanged();
        return getCalculatedTallyResultFieldBuilder().getBuilder();
      }
      /**
       * .api.groups.TallyResult calculated_tally_result = 16;
       */
      public com.figure.block.api.proto.groups.Proposal.TallyResultOrBuilder getCalculatedTallyResultOrBuilder() {
        if (calculatedTallyResultBuilder_ != null) {
          return calculatedTallyResultBuilder_.getMessageOrBuilder();
        } else {
          return calculatedTallyResult_ == null ?
              com.figure.block.api.proto.groups.Proposal.TallyResult.getDefaultInstance() : calculatedTallyResult_;
        }
      }
      /**
       * .api.groups.TallyResult calculated_tally_result = 16;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.figure.block.api.proto.groups.Proposal.TallyResult, com.figure.block.api.proto.groups.Proposal.TallyResult.Builder, com.figure.block.api.proto.groups.Proposal.TallyResultOrBuilder> 
          getCalculatedTallyResultFieldBuilder() {
        if (calculatedTallyResultBuilder_ == null) {
          calculatedTallyResultBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.figure.block.api.proto.groups.Proposal.TallyResult, com.figure.block.api.proto.groups.Proposal.TallyResult.Builder, com.figure.block.api.proto.groups.Proposal.TallyResultOrBuilder>(
                  getCalculatedTallyResult(),
                  getParentForChildren(),
                  isClean());
          calculatedTallyResult_ = null;
        }
        return calculatedTallyResultBuilder_;
      }

      private boolean pruned_ ;
      /**
       * bool pruned = 17;
       * @return The pruned.
       */
      @java.lang.Override
      public boolean getPruned() {
        return pruned_;
      }
      /**
       * bool pruned = 17;
       * @param value The pruned to set.
       * @return This builder for chaining.
       */
      public Builder setPruned(boolean value) {

        pruned_ = value;
        bitField0_ |= 0x00010000;
        onChanged();
        return this;
      }
      /**
       * bool pruned = 17;
       * @return This builder for chaining.
       */
      public Builder clearPruned() {
        bitField0_ = (bitField0_ & ~0x00010000);
        pruned_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object txHash_ = "";
      /**
       * string tx_hash = 18;
       * @return The txHash.
       */
      public java.lang.String getTxHash() {
        java.lang.Object ref = txHash_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          txHash_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string tx_hash = 18;
       * @return The bytes for txHash.
       */
      public com.google.protobuf.ByteString
          getTxHashBytes() {
        java.lang.Object ref = txHash_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          txHash_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string tx_hash = 18;
       * @param value The txHash to set.
       * @return This builder for chaining.
       */
      public Builder setTxHash(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        txHash_ = value;
        bitField0_ |= 0x00020000;
        onChanged();
        return this;
      }
      /**
       * string tx_hash = 18;
       * @return This builder for chaining.
       */
      public Builder clearTxHash() {
        txHash_ = getDefaultInstance().getTxHash();
        bitField0_ = (bitField0_ & ~0x00020000);
        onChanged();
        return this;
      }
      /**
       * string tx_hash = 18;
       * @param value The bytes for txHash to set.
       * @return This builder for chaining.
       */
      public Builder setTxHashBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        txHash_ = value;
        bitField0_ |= 0x00020000;
        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:api.groups.ProposalState)
    }

    // @@protoc_insertion_point(class_scope:api.groups.ProposalState)
    private static final com.figure.block.api.proto.groups.Proposal.ProposalState DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.figure.block.api.proto.groups.Proposal.ProposalState();
    }

    public static com.figure.block.api.proto.groups.Proposal.ProposalState getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ProposalState parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.figure.block.api.proto.groups.Proposal.ProposalState getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TallyResultOrBuilder extends
      // @@protoc_insertion_point(interface_extends:api.groups.TallyResult)
      com.google.protobuf.MessageOrBuilder {

    /**
     * string yes_count = 1;
     * @return The yesCount.
     */
    java.lang.String getYesCount();
    /**
     * string yes_count = 1;
     * @return The bytes for yesCount.
     */
    com.google.protobuf.ByteString
        getYesCountBytes();

    /**
     * string abstain_count = 2;
     * @return The abstainCount.
     */
    java.lang.String getAbstainCount();
    /**
     * string abstain_count = 2;
     * @return The bytes for abstainCount.
     */
    com.google.protobuf.ByteString
        getAbstainCountBytes();

    /**
     * string no_count = 3;
     * @return The noCount.
     */
    java.lang.String getNoCount();
    /**
     * string no_count = 3;
     * @return The bytes for noCount.
     */
    com.google.protobuf.ByteString
        getNoCountBytes();

    /**
     * string no_with_veto_count = 4;
     * @return The noWithVetoCount.
     */
    java.lang.String getNoWithVetoCount();
    /**
     * string no_with_veto_count = 4;
     * @return The bytes for noWithVetoCount.
     */
    com.google.protobuf.ByteString
        getNoWithVetoCountBytes();
  }
  /**
   * Protobuf type {@code api.groups.TallyResult}
   */
  public static final class TallyResult extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:api.groups.TallyResult)
      TallyResultOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TallyResult.newBuilder() to construct.
    private TallyResult(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private TallyResult() {
      yesCount_ = "";
      abstainCount_ = "";
      noCount_ = "";
      noWithVetoCount_ = "";
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.figure.block.api.proto.groups.Proposal.internal_static_api_groups_TallyResult_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.figure.block.api.proto.groups.Proposal.internal_static_api_groups_TallyResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.figure.block.api.proto.groups.Proposal.TallyResult.class, com.figure.block.api.proto.groups.Proposal.TallyResult.Builder.class);
    }

    public static final int YES_COUNT_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object yesCount_ = "";
    /**
     * string yes_count = 1;
     * @return The yesCount.
     */
    @java.lang.Override
    public java.lang.String getYesCount() {
      java.lang.Object ref = yesCount_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        yesCount_ = s;
        return s;
      }
    }
    /**
     * string yes_count = 1;
     * @return The bytes for yesCount.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getYesCountBytes() {
      java.lang.Object ref = yesCount_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        yesCount_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ABSTAIN_COUNT_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object abstainCount_ = "";
    /**
     * string abstain_count = 2;
     * @return The abstainCount.
     */
    @java.lang.Override
    public java.lang.String getAbstainCount() {
      java.lang.Object ref = abstainCount_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        abstainCount_ = s;
        return s;
      }
    }
    /**
     * string abstain_count = 2;
     * @return The bytes for abstainCount.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAbstainCountBytes() {
      java.lang.Object ref = abstainCount_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        abstainCount_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NO_COUNT_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object noCount_ = "";
    /**
     * string no_count = 3;
     * @return The noCount.
     */
    @java.lang.Override
    public java.lang.String getNoCount() {
      java.lang.Object ref = noCount_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        noCount_ = s;
        return s;
      }
    }
    /**
     * string no_count = 3;
     * @return The bytes for noCount.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNoCountBytes() {
      java.lang.Object ref = noCount_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        noCount_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NO_WITH_VETO_COUNT_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object noWithVetoCount_ = "";
    /**
     * string no_with_veto_count = 4;
     * @return The noWithVetoCount.
     */
    @java.lang.Override
    public java.lang.String getNoWithVetoCount() {
      java.lang.Object ref = noWithVetoCount_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        noWithVetoCount_ = s;
        return s;
      }
    }
    /**
     * string no_with_veto_count = 4;
     * @return The bytes for noWithVetoCount.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNoWithVetoCountBytes() {
      java.lang.Object ref = noWithVetoCount_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        noWithVetoCount_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    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 (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(yesCount_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, yesCount_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(abstainCount_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, abstainCount_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(noCount_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, noCount_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(noWithVetoCount_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, noWithVetoCount_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(yesCount_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, yesCount_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(abstainCount_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, abstainCount_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(noCount_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, noCount_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(noWithVetoCount_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, noWithVetoCount_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.figure.block.api.proto.groups.Proposal.TallyResult)) {
        return super.equals(obj);
      }
      com.figure.block.api.proto.groups.Proposal.TallyResult other = (com.figure.block.api.proto.groups.Proposal.TallyResult) obj;

      if (!getYesCount()
          .equals(other.getYesCount())) return false;
      if (!getAbstainCount()
          .equals(other.getAbstainCount())) return false;
      if (!getNoCount()
          .equals(other.getNoCount())) return false;
      if (!getNoWithVetoCount()
          .equals(other.getNoWithVetoCount())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) 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) + YES_COUNT_FIELD_NUMBER;
      hash = (53 * hash) + getYesCount().hashCode();
      hash = (37 * hash) + ABSTAIN_COUNT_FIELD_NUMBER;
      hash = (53 * hash) + getAbstainCount().hashCode();
      hash = (37 * hash) + NO_COUNT_FIELD_NUMBER;
      hash = (53 * hash) + getNoCount().hashCode();
      hash = (37 * hash) + NO_WITH_VETO_COUNT_FIELD_NUMBER;
      hash = (53 * hash) + getNoWithVetoCount().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static com.figure.block.api.proto.groups.Proposal.TallyResult 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 com.figure.block.api.proto.groups.Proposal.TallyResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.figure.block.api.proto.groups.Proposal.TallyResult 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(com.figure.block.api.proto.groups.Proposal.TallyResult 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 api.groups.TallyResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:api.groups.TallyResult)
        com.figure.block.api.proto.groups.Proposal.TallyResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.figure.block.api.proto.groups.Proposal.internal_static_api_groups_TallyResult_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.figure.block.api.proto.groups.Proposal.internal_static_api_groups_TallyResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.figure.block.api.proto.groups.Proposal.TallyResult.class, com.figure.block.api.proto.groups.Proposal.TallyResult.Builder.class);
      }

      // Construct using com.figure.block.api.proto.groups.Proposal.TallyResult.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        yesCount_ = "";
        abstainCount_ = "";
        noCount_ = "";
        noWithVetoCount_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.figure.block.api.proto.groups.Proposal.internal_static_api_groups_TallyResult_descriptor;
      }

      @java.lang.Override
      public com.figure.block.api.proto.groups.Proposal.TallyResult getDefaultInstanceForType() {
        return com.figure.block.api.proto.groups.Proposal.TallyResult.getDefaultInstance();
      }

      @java.lang.Override
      public com.figure.block.api.proto.groups.Proposal.TallyResult build() {
        com.figure.block.api.proto.groups.Proposal.TallyResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.figure.block.api.proto.groups.Proposal.TallyResult buildPartial() {
        com.figure.block.api.proto.groups.Proposal.TallyResult result = new com.figure.block.api.proto.groups.Proposal.TallyResult(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.figure.block.api.proto.groups.Proposal.TallyResult result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.yesCount_ = yesCount_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.abstainCount_ = abstainCount_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.noCount_ = noCount_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.noWithVetoCount_ = noWithVetoCount_;
        }
      }

      @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 com.figure.block.api.proto.groups.Proposal.TallyResult) {
          return mergeFrom((com.figure.block.api.proto.groups.Proposal.TallyResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.figure.block.api.proto.groups.Proposal.TallyResult other) {
        if (other == com.figure.block.api.proto.groups.Proposal.TallyResult.getDefaultInstance()) return this;
        if (!other.getYesCount().isEmpty()) {
          yesCount_ = other.yesCount_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.getAbstainCount().isEmpty()) {
          abstainCount_ = other.abstainCount_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (!other.getNoCount().isEmpty()) {
          noCount_ = other.noCount_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (!other.getNoWithVetoCount().isEmpty()) {
          noWithVetoCount_ = other.noWithVetoCount_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                yesCount_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                abstainCount_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                noCount_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                noWithVetoCount_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object yesCount_ = "";
      /**
       * string yes_count = 1;
       * @return The yesCount.
       */
      public java.lang.String getYesCount() {
        java.lang.Object ref = yesCount_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          yesCount_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string yes_count = 1;
       * @return The bytes for yesCount.
       */
      public com.google.protobuf.ByteString
          getYesCountBytes() {
        java.lang.Object ref = yesCount_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          yesCount_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string yes_count = 1;
       * @param value The yesCount to set.
       * @return This builder for chaining.
       */
      public Builder setYesCount(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        yesCount_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * string yes_count = 1;
       * @return This builder for chaining.
       */
      public Builder clearYesCount() {
        yesCount_ = getDefaultInstance().getYesCount();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * string yes_count = 1;
       * @param value The bytes for yesCount to set.
       * @return This builder for chaining.
       */
      public Builder setYesCountBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        yesCount_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object abstainCount_ = "";
      /**
       * string abstain_count = 2;
       * @return The abstainCount.
       */
      public java.lang.String getAbstainCount() {
        java.lang.Object ref = abstainCount_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          abstainCount_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string abstain_count = 2;
       * @return The bytes for abstainCount.
       */
      public com.google.protobuf.ByteString
          getAbstainCountBytes() {
        java.lang.Object ref = abstainCount_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          abstainCount_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string abstain_count = 2;
       * @param value The abstainCount to set.
       * @return This builder for chaining.
       */
      public Builder setAbstainCount(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        abstainCount_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * string abstain_count = 2;
       * @return This builder for chaining.
       */
      public Builder clearAbstainCount() {
        abstainCount_ = getDefaultInstance().getAbstainCount();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * string abstain_count = 2;
       * @param value The bytes for abstainCount to set.
       * @return This builder for chaining.
       */
      public Builder setAbstainCountBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        abstainCount_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object noCount_ = "";
      /**
       * string no_count = 3;
       * @return The noCount.
       */
      public java.lang.String getNoCount() {
        java.lang.Object ref = noCount_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          noCount_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string no_count = 3;
       * @return The bytes for noCount.
       */
      public com.google.protobuf.ByteString
          getNoCountBytes() {
        java.lang.Object ref = noCount_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          noCount_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string no_count = 3;
       * @param value The noCount to set.
       * @return This builder for chaining.
       */
      public Builder setNoCount(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        noCount_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * string no_count = 3;
       * @return This builder for chaining.
       */
      public Builder clearNoCount() {
        noCount_ = getDefaultInstance().getNoCount();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * string no_count = 3;
       * @param value The bytes for noCount to set.
       * @return This builder for chaining.
       */
      public Builder setNoCountBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        noCount_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object noWithVetoCount_ = "";
      /**
       * string no_with_veto_count = 4;
       * @return The noWithVetoCount.
       */
      public java.lang.String getNoWithVetoCount() {
        java.lang.Object ref = noWithVetoCount_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          noWithVetoCount_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string no_with_veto_count = 4;
       * @return The bytes for noWithVetoCount.
       */
      public com.google.protobuf.ByteString
          getNoWithVetoCountBytes() {
        java.lang.Object ref = noWithVetoCount_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          noWithVetoCount_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string no_with_veto_count = 4;
       * @param value The noWithVetoCount to set.
       * @return This builder for chaining.
       */
      public Builder setNoWithVetoCount(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        noWithVetoCount_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * string no_with_veto_count = 4;
       * @return This builder for chaining.
       */
      public Builder clearNoWithVetoCount() {
        noWithVetoCount_ = getDefaultInstance().getNoWithVetoCount();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * string no_with_veto_count = 4;
       * @param value The bytes for noWithVetoCount to set.
       * @return This builder for chaining.
       */
      public Builder setNoWithVetoCountBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        noWithVetoCount_ = value;
        bitField0_ |= 0x00000008;
        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:api.groups.TallyResult)
    }

    // @@protoc_insertion_point(class_scope:api.groups.TallyResult)
    private static final com.figure.block.api.proto.groups.Proposal.TallyResult DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.figure.block.api.proto.groups.Proposal.TallyResult();
    }

    public static com.figure.block.api.proto.groups.Proposal.TallyResult getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public TallyResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.figure.block.api.proto.groups.Proposal.TallyResult getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface VoteOrBuilder extends
      // @@protoc_insertion_point(interface_extends:api.groups.Vote)
      com.google.protobuf.MessageOrBuilder {

    /**
     * int64 proposal_id = 1;
     * @return The proposalId.
     */
    long getProposalId();

    /**
     * string voter = 2;
     * @return The voter.
     */
    java.lang.String getVoter();
    /**
     * string voter = 2;
     * @return The bytes for voter.
     */
    com.google.protobuf.ByteString
        getVoterBytes();

    /**
     * string option = 3;
     * @return The option.
     */
    java.lang.String getOption();
    /**
     * string option = 3;
     * @return The bytes for option.
     */
    com.google.protobuf.ByteString
        getOptionBytes();

    /**
     * string metadata = 4;
     * @return The metadata.
     */
    java.lang.String getMetadata();
    /**
     * string metadata = 4;
     * @return The bytes for metadata.
     */
    com.google.protobuf.ByteString
        getMetadataBytes();

    /**
     * .google.protobuf.Timestamp submit_time = 5;
     * @return Whether the submitTime field is set.
     */
    boolean hasSubmitTime();
    /**
     * .google.protobuf.Timestamp submit_time = 5;
     * @return The submitTime.
     */
    com.google.protobuf.Timestamp getSubmitTime();
    /**
     * .google.protobuf.Timestamp submit_time = 5;
     */
    com.google.protobuf.TimestampOrBuilder getSubmitTimeOrBuilder();

    /**
     * string weight = 6;
     * @return The weight.
     */
    java.lang.String getWeight();
    /**
     * string weight = 6;
     * @return The bytes for weight.
     */
    com.google.protobuf.ByteString
        getWeightBytes();

    /**
     * bool no_longer_in_group = 7;
     * @return The noLongerInGroup.
     */
    boolean getNoLongerInGroup();
  }
  /**
   * Protobuf type {@code api.groups.Vote}
   */
  public static final class Vote extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:api.groups.Vote)
      VoteOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Vote.newBuilder() to construct.
    private Vote(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private Vote() {
      voter_ = "";
      option_ = "";
      metadata_ = "";
      weight_ = "";
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.figure.block.api.proto.groups.Proposal.internal_static_api_groups_Vote_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.figure.block.api.proto.groups.Proposal.internal_static_api_groups_Vote_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.figure.block.api.proto.groups.Proposal.Vote.class, com.figure.block.api.proto.groups.Proposal.Vote.Builder.class);
    }

    private int bitField0_;
    public static final int PROPOSAL_ID_FIELD_NUMBER = 1;
    private long proposalId_ = 0L;
    /**
     * int64 proposal_id = 1;
     * @return The proposalId.
     */
    @java.lang.Override
    public long getProposalId() {
      return proposalId_;
    }

    public static final int VOTER_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object voter_ = "";
    /**
     * string voter = 2;
     * @return The voter.
     */
    @java.lang.Override
    public java.lang.String getVoter() {
      java.lang.Object ref = voter_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        voter_ = s;
        return s;
      }
    }
    /**
     * string voter = 2;
     * @return The bytes for voter.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getVoterBytes() {
      java.lang.Object ref = voter_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        voter_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OPTION_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object option_ = "";
    /**
     * string option = 3;
     * @return The option.
     */
    @java.lang.Override
    public java.lang.String getOption() {
      java.lang.Object ref = option_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        option_ = s;
        return s;
      }
    }
    /**
     * string option = 3;
     * @return The bytes for option.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getOptionBytes() {
      java.lang.Object ref = option_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        option_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int METADATA_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object metadata_ = "";
    /**
     * string metadata = 4;
     * @return The metadata.
     */
    @java.lang.Override
    public java.lang.String getMetadata() {
      java.lang.Object ref = metadata_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        metadata_ = s;
        return s;
      }
    }
    /**
     * string metadata = 4;
     * @return The bytes for metadata.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getMetadataBytes() {
      java.lang.Object ref = metadata_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        metadata_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SUBMIT_TIME_FIELD_NUMBER = 5;
    private com.google.protobuf.Timestamp submitTime_;
    /**
     * .google.protobuf.Timestamp submit_time = 5;
     * @return Whether the submitTime field is set.
     */
    @java.lang.Override
    public boolean hasSubmitTime() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * .google.protobuf.Timestamp submit_time = 5;
     * @return The submitTime.
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getSubmitTime() {
      return submitTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : submitTime_;
    }
    /**
     * .google.protobuf.Timestamp submit_time = 5;
     */
    @java.lang.Override
    public com.google.protobuf.TimestampOrBuilder getSubmitTimeOrBuilder() {
      return submitTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : submitTime_;
    }

    public static final int WEIGHT_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object weight_ = "";
    /**
     * string weight = 6;
     * @return The weight.
     */
    @java.lang.Override
    public java.lang.String getWeight() {
      java.lang.Object ref = weight_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        weight_ = s;
        return s;
      }
    }
    /**
     * string weight = 6;
     * @return The bytes for weight.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getWeightBytes() {
      java.lang.Object ref = weight_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        weight_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NO_LONGER_IN_GROUP_FIELD_NUMBER = 7;
    private boolean noLongerInGroup_ = false;
    /**
     * bool no_longer_in_group = 7;
     * @return The noLongerInGroup.
     */
    @java.lang.Override
    public boolean getNoLongerInGroup() {
      return noLongerInGroup_;
    }

    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 (proposalId_ != 0L) {
        output.writeInt64(1, proposalId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(voter_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, voter_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(option_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, option_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(metadata_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, metadata_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(5, getSubmitTime());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(weight_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, weight_);
      }
      if (noLongerInGroup_ != false) {
        output.writeBool(7, noLongerInGroup_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (proposalId_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, proposalId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(voter_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, voter_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(option_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, option_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(metadata_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, metadata_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getSubmitTime());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(weight_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, weight_);
      }
      if (noLongerInGroup_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(7, noLongerInGroup_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.figure.block.api.proto.groups.Proposal.Vote)) {
        return super.equals(obj);
      }
      com.figure.block.api.proto.groups.Proposal.Vote other = (com.figure.block.api.proto.groups.Proposal.Vote) obj;

      if (getProposalId()
          != other.getProposalId()) return false;
      if (!getVoter()
          .equals(other.getVoter())) return false;
      if (!getOption()
          .equals(other.getOption())) return false;
      if (!getMetadata()
          .equals(other.getMetadata())) return false;
      if (hasSubmitTime() != other.hasSubmitTime()) return false;
      if (hasSubmitTime()) {
        if (!getSubmitTime()
            .equals(other.getSubmitTime())) return false;
      }
      if (!getWeight()
          .equals(other.getWeight())) return false;
      if (getNoLongerInGroup()
          != other.getNoLongerInGroup()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) 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) + PROPOSAL_ID_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getProposalId());
      hash = (37 * hash) + VOTER_FIELD_NUMBER;
      hash = (53 * hash) + getVoter().hashCode();
      hash = (37 * hash) + OPTION_FIELD_NUMBER;
      hash = (53 * hash) + getOption().hashCode();
      hash = (37 * hash) + METADATA_FIELD_NUMBER;
      hash = (53 * hash) + getMetadata().hashCode();
      if (hasSubmitTime()) {
        hash = (37 * hash) + SUBMIT_TIME_FIELD_NUMBER;
        hash = (53 * hash) + getSubmitTime().hashCode();
      }
      hash = (37 * hash) + WEIGHT_FIELD_NUMBER;
      hash = (53 * hash) + getWeight().hashCode();
      hash = (37 * hash) + NO_LONGER_IN_GROUP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getNoLongerInGroup());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static com.figure.block.api.proto.groups.Proposal.Vote 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 com.figure.block.api.proto.groups.Proposal.Vote parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.figure.block.api.proto.groups.Proposal.Vote 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(com.figure.block.api.proto.groups.Proposal.Vote 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 api.groups.Vote}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:api.groups.Vote)
        com.figure.block.api.proto.groups.Proposal.VoteOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.figure.block.api.proto.groups.Proposal.internal_static_api_groups_Vote_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.figure.block.api.proto.groups.Proposal.internal_static_api_groups_Vote_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.figure.block.api.proto.groups.Proposal.Vote.class, com.figure.block.api.proto.groups.Proposal.Vote.Builder.class);
      }

      // Construct using com.figure.block.api.proto.groups.Proposal.Vote.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getSubmitTimeFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        proposalId_ = 0L;
        voter_ = "";
        option_ = "";
        metadata_ = "";
        submitTime_ = null;
        if (submitTimeBuilder_ != null) {
          submitTimeBuilder_.dispose();
          submitTimeBuilder_ = null;
        }
        weight_ = "";
        noLongerInGroup_ = false;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.figure.block.api.proto.groups.Proposal.internal_static_api_groups_Vote_descriptor;
      }

      @java.lang.Override
      public com.figure.block.api.proto.groups.Proposal.Vote getDefaultInstanceForType() {
        return com.figure.block.api.proto.groups.Proposal.Vote.getDefaultInstance();
      }

      @java.lang.Override
      public com.figure.block.api.proto.groups.Proposal.Vote build() {
        com.figure.block.api.proto.groups.Proposal.Vote result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.figure.block.api.proto.groups.Proposal.Vote buildPartial() {
        com.figure.block.api.proto.groups.Proposal.Vote result = new com.figure.block.api.proto.groups.Proposal.Vote(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.figure.block.api.proto.groups.Proposal.Vote result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.proposalId_ = proposalId_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.voter_ = voter_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.option_ = option_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.metadata_ = metadata_;
        }
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.submitTime_ = submitTimeBuilder_ == null
              ? submitTime_
              : submitTimeBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.weight_ = weight_;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.noLongerInGroup_ = noLongerInGroup_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @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 com.figure.block.api.proto.groups.Proposal.Vote) {
          return mergeFrom((com.figure.block.api.proto.groups.Proposal.Vote)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.figure.block.api.proto.groups.Proposal.Vote other) {
        if (other == com.figure.block.api.proto.groups.Proposal.Vote.getDefaultInstance()) return this;
        if (other.getProposalId() != 0L) {
          setProposalId(other.getProposalId());
        }
        if (!other.getVoter().isEmpty()) {
          voter_ = other.voter_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (!other.getOption().isEmpty()) {
          option_ = other.option_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (!other.getMetadata().isEmpty()) {
          metadata_ = other.metadata_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.hasSubmitTime()) {
          mergeSubmitTime(other.getSubmitTime());
        }
        if (!other.getWeight().isEmpty()) {
          weight_ = other.weight_;
          bitField0_ |= 0x00000020;
          onChanged();
        }
        if (other.getNoLongerInGroup() != false) {
          setNoLongerInGroup(other.getNoLongerInGroup());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                proposalId_ = input.readInt64();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                voter_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                option_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                metadata_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                input.readMessage(
                    getSubmitTimeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                weight_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 56: {
                noLongerInGroup_ = input.readBool();
                bitField0_ |= 0x00000040;
                break;
              } // case 56
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private long proposalId_ ;
      /**
       * int64 proposal_id = 1;
       * @return The proposalId.
       */
      @java.lang.Override
      public long getProposalId() {
        return proposalId_;
      }
      /**
       * int64 proposal_id = 1;
       * @param value The proposalId to set.
       * @return This builder for chaining.
       */
      public Builder setProposalId(long value) {

        proposalId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * int64 proposal_id = 1;
       * @return This builder for chaining.
       */
      public Builder clearProposalId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        proposalId_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object voter_ = "";
      /**
       * string voter = 2;
       * @return The voter.
       */
      public java.lang.String getVoter() {
        java.lang.Object ref = voter_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          voter_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string voter = 2;
       * @return The bytes for voter.
       */
      public com.google.protobuf.ByteString
          getVoterBytes() {
        java.lang.Object ref = voter_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          voter_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string voter = 2;
       * @param value The voter to set.
       * @return This builder for chaining.
       */
      public Builder setVoter(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        voter_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * string voter = 2;
       * @return This builder for chaining.
       */
      public Builder clearVoter() {
        voter_ = getDefaultInstance().getVoter();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * string voter = 2;
       * @param value The bytes for voter to set.
       * @return This builder for chaining.
       */
      public Builder setVoterBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        voter_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object option_ = "";
      /**
       * string option = 3;
       * @return The option.
       */
      public java.lang.String getOption() {
        java.lang.Object ref = option_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          option_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string option = 3;
       * @return The bytes for option.
       */
      public com.google.protobuf.ByteString
          getOptionBytes() {
        java.lang.Object ref = option_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          option_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string option = 3;
       * @param value The option to set.
       * @return This builder for chaining.
       */
      public Builder setOption(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        option_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * string option = 3;
       * @return This builder for chaining.
       */
      public Builder clearOption() {
        option_ = getDefaultInstance().getOption();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * string option = 3;
       * @param value The bytes for option to set.
       * @return This builder for chaining.
       */
      public Builder setOptionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        option_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object metadata_ = "";
      /**
       * string metadata = 4;
       * @return The metadata.
       */
      public java.lang.String getMetadata() {
        java.lang.Object ref = metadata_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          metadata_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string metadata = 4;
       * @return The bytes for metadata.
       */
      public com.google.protobuf.ByteString
          getMetadataBytes() {
        java.lang.Object ref = metadata_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          metadata_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string metadata = 4;
       * @param value The metadata to set.
       * @return This builder for chaining.
       */
      public Builder setMetadata(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        metadata_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * string metadata = 4;
       * @return This builder for chaining.
       */
      public Builder clearMetadata() {
        metadata_ = getDefaultInstance().getMetadata();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * string metadata = 4;
       * @param value The bytes for metadata to set.
       * @return This builder for chaining.
       */
      public Builder setMetadataBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        metadata_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private com.google.protobuf.Timestamp submitTime_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> submitTimeBuilder_;
      /**
       * .google.protobuf.Timestamp submit_time = 5;
       * @return Whether the submitTime field is set.
       */
      public boolean hasSubmitTime() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * .google.protobuf.Timestamp submit_time = 5;
       * @return The submitTime.
       */
      public com.google.protobuf.Timestamp getSubmitTime() {
        if (submitTimeBuilder_ == null) {
          return submitTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : submitTime_;
        } else {
          return submitTimeBuilder_.getMessage();
        }
      }
      /**
       * .google.protobuf.Timestamp submit_time = 5;
       */
      public Builder setSubmitTime(com.google.protobuf.Timestamp value) {
        if (submitTimeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          submitTime_ = value;
        } else {
          submitTimeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * .google.protobuf.Timestamp submit_time = 5;
       */
      public Builder setSubmitTime(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        if (submitTimeBuilder_ == null) {
          submitTime_ = builderForValue.build();
        } else {
          submitTimeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * .google.protobuf.Timestamp submit_time = 5;
       */
      public Builder mergeSubmitTime(com.google.protobuf.Timestamp value) {
        if (submitTimeBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            submitTime_ != null &&
            submitTime_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
            getSubmitTimeBuilder().mergeFrom(value);
          } else {
            submitTime_ = value;
          }
        } else {
          submitTimeBuilder_.mergeFrom(value);
        }
        if (submitTime_ != null) {
          bitField0_ |= 0x00000010;
          onChanged();
        }
        return this;
      }
      /**
       * .google.protobuf.Timestamp submit_time = 5;
       */
      public Builder clearSubmitTime() {
        bitField0_ = (bitField0_ & ~0x00000010);
        submitTime_ = null;
        if (submitTimeBuilder_ != null) {
          submitTimeBuilder_.dispose();
          submitTimeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .google.protobuf.Timestamp submit_time = 5;
       */
      public com.google.protobuf.Timestamp.Builder getSubmitTimeBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getSubmitTimeFieldBuilder().getBuilder();
      }
      /**
       * .google.protobuf.Timestamp submit_time = 5;
       */
      public com.google.protobuf.TimestampOrBuilder getSubmitTimeOrBuilder() {
        if (submitTimeBuilder_ != null) {
          return submitTimeBuilder_.getMessageOrBuilder();
        } else {
          return submitTime_ == null ?
              com.google.protobuf.Timestamp.getDefaultInstance() : submitTime_;
        }
      }
      /**
       * .google.protobuf.Timestamp submit_time = 5;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> 
          getSubmitTimeFieldBuilder() {
        if (submitTimeBuilder_ == null) {
          submitTimeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
                  getSubmitTime(),
                  getParentForChildren(),
                  isClean());
          submitTime_ = null;
        }
        return submitTimeBuilder_;
      }

      private java.lang.Object weight_ = "";
      /**
       * string weight = 6;
       * @return The weight.
       */
      public java.lang.String getWeight() {
        java.lang.Object ref = weight_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          weight_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string weight = 6;
       * @return The bytes for weight.
       */
      public com.google.protobuf.ByteString
          getWeightBytes() {
        java.lang.Object ref = weight_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          weight_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string weight = 6;
       * @param value The weight to set.
       * @return This builder for chaining.
       */
      public Builder setWeight(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        weight_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * string weight = 6;
       * @return This builder for chaining.
       */
      public Builder clearWeight() {
        weight_ = getDefaultInstance().getWeight();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * string weight = 6;
       * @param value The bytes for weight to set.
       * @return This builder for chaining.
       */
      public Builder setWeightBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        weight_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }

      private boolean noLongerInGroup_ ;
      /**
       * bool no_longer_in_group = 7;
       * @return The noLongerInGroup.
       */
      @java.lang.Override
      public boolean getNoLongerInGroup() {
        return noLongerInGroup_;
      }
      /**
       * bool no_longer_in_group = 7;
       * @param value The noLongerInGroup to set.
       * @return This builder for chaining.
       */
      public Builder setNoLongerInGroup(boolean value) {

        noLongerInGroup_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * bool no_longer_in_group = 7;
       * @return This builder for chaining.
       */
      public Builder clearNoLongerInGroup() {
        bitField0_ = (bitField0_ & ~0x00000040);
        noLongerInGroup_ = false;
        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:api.groups.Vote)
    }

    // @@protoc_insertion_point(class_scope:api.groups.Vote)
    private static final com.figure.block.api.proto.groups.Proposal.Vote DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.figure.block.api.proto.groups.Proposal.Vote();
    }

    public static com.figure.block.api.proto.groups.Proposal.Vote getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public Vote parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.figure.block.api.proto.groups.Proposal.Vote getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_api_groups_ProposalState_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_api_groups_ProposalState_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_api_groups_TallyResult_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_api_groups_TallyResult_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_api_groups_Vote_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_api_groups_Vote_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\025groups/proposal.proto\022\napi.groups\032\031goo" +
      "gle/protobuf/any.proto\032\037google/protobuf/" +
      "timestamp.proto\"\250\004\n\rProposalState\022\016\n\006hei" +
      "ght\030\001 \001(\003\022\020\n\010group_id\030\002 \001(\003\022\023\n\013proposal_" +
      "id\030\003 \001(\003\022\034\n\024group_policy_address\030\004 \001(\t\022\020" +
      "\n\010metadata\030\005 \001(\t\022\021\n\tproposers\030\006 \003(\t\022/\n\013s" +
      "ubmit_time\030\007 \001(\0132\032.google.protobuf.Times" +
      "tamp\022\025\n\rgroup_version\030\010 \001(\003\022\034\n\024group_pol" +
      "icy_version\030\t \001(\003\022\016\n\006status\030\n \001(\t\0223\n\022fin" +
      "al_tally_result\030\013 \001(\0132\027.api.groups.Tally" +
      "Result\0225\n\021voting_period_end\030\014 \001(\0132\032.goog" +
      "le.protobuf.Timestamp\022\027\n\017executor_result" +
      "\030\r \001(\t\022&\n\010messages\030\016 \003(\0132\024.google.protob" +
      "uf.Any\022\037\n\005votes\030\017 \003(\0132\020.api.groups.Vote\022" +
      "8\n\027calculated_tally_result\030\020 \001(\0132\027.api.g" +
      "roups.TallyResult\022\016\n\006pruned\030\021 \001(\010\022\017\n\007tx_" +
      "hash\030\022 \001(\t\"e\n\013TallyResult\022\021\n\tyes_count\030\001" +
      " \001(\t\022\025\n\rabstain_count\030\002 \001(\t\022\020\n\010no_count\030" +
      "\003 \001(\t\022\032\n\022no_with_veto_count\030\004 \001(\t\"\251\001\n\004Vo" +
      "te\022\023\n\013proposal_id\030\001 \001(\003\022\r\n\005voter\030\002 \001(\t\022\016" +
      "\n\006option\030\003 \001(\t\022\020\n\010metadata\030\004 \001(\t\022/\n\013subm" +
      "it_time\030\005 \001(\0132\032.google.protobuf.Timestam" +
      "p\022\016\n\006weight\030\006 \001(\t\022\032\n\022no_longer_in_group\030" +
      "\007 \001(\010BW\n!com.figure.block.api.proto.grou" +
      "psZ2github.com/FigureTechnologies/proven" +
      "ance-block-apib\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          com.google.protobuf.AnyProto.getDescriptor(),
          com.google.protobuf.TimestampProto.getDescriptor(),
        });
    internal_static_api_groups_ProposalState_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_api_groups_ProposalState_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_api_groups_ProposalState_descriptor,
        new java.lang.String[] { "Height", "GroupId", "ProposalId", "GroupPolicyAddress", "Metadata", "Proposers", "SubmitTime", "GroupVersion", "GroupPolicyVersion", "Status", "FinalTallyResult", "VotingPeriodEnd", "ExecutorResult", "Messages", "Votes", "CalculatedTallyResult", "Pruned", "TxHash", });
    internal_static_api_groups_TallyResult_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_api_groups_TallyResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_api_groups_TallyResult_descriptor,
        new java.lang.String[] { "YesCount", "AbstainCount", "NoCount", "NoWithVetoCount", });
    internal_static_api_groups_Vote_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_api_groups_Vote_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_api_groups_Vote_descriptor,
        new java.lang.String[] { "ProposalId", "Voter", "Option", "Metadata", "SubmitTime", "Weight", "NoLongerInGroup", });
    com.google.protobuf.AnyProto.getDescriptor();
    com.google.protobuf.TimestampProto.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy