package com.shepherd.mallorder.factory;

/**
 * @author fjzheng
 * @version 1.0
 * @date 2021/7/9 10:07
 */
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: RichMsg.proto

public final class RichMsg {
    private RichMsg() {}
    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 ForwardExtraOrBuilder extends
            // @@protoc_insertion_point(interface_extends:ForwardExtra)
            com.google.protobuf.MessageOrBuilder {

        /**
         * <code>int32 forward_orgId = 1;</code>
         * @return The forwardOrgId.
         */
        int getForwardOrgId();

        /**
         * <code>string forward_orgUin = 2;</code>
         * @return The forwardOrgUin.
         */
        java.lang.String getForwardOrgUin();
        /**
         * <code>string forward_orgUin = 2;</code>
         * @return The bytes for forwardOrgUin.
         */
        com.google.protobuf.ByteString
        getForwardOrgUinBytes();

        /**
         * <code>int32 forward_orgUinType = 3;</code>
         * @return The forwardOrgUinType.
         */
        int getForwardOrgUinType();

        /**
         * <code>string forward_orgUrl = 4;</code>
         * @return The forwardOrgUrl.
         */
        java.lang.String getForwardOrgUrl();
        /**
         * <code>string forward_orgUrl = 4;</code>
         * @return The bytes for forwardOrgUrl.
         */
        com.google.protobuf.ByteString
        getForwardOrgUrlBytes();

        /**
         * <code>string forward_thumbPath = 5;</code>
         * @return The forwardThumbPath.
         */
        java.lang.String getForwardThumbPath();
        /**
         * <code>string forward_thumbPath = 5;</code>
         * @return The bytes for forwardThumbPath.
         */
        com.google.protobuf.ByteString
        getForwardThumbPathBytes();

        /**
         * <code>int32 forward_orgFileSizeType = 6;</code>
         * @return The forwardOrgFileSizeType.
         */
        int getForwardOrgFileSizeType();
    }
    /**
     * Protobuf type {@code ForwardExtra}
     */
    public static final class ForwardExtra extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:ForwardExtra)
            ForwardExtraOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use ForwardExtra.newBuilder() to construct.
        private ForwardExtra(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private ForwardExtra() {
            forwardOrgUin_ = "";
            forwardOrgUrl_ = "";
            forwardThumbPath_ = "";
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private ForwardExtra(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            this();
            if (extensionRegistry == null) {
                throw new java.lang.NullPointerException();
            }
            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
                    com.google.protobuf.UnknownFieldSet.newBuilder();
            try {
                boolean done = false;
                while (!done) {
                    int tag = input.readTag();
                    switch (tag) {
                        case 0:
                            done = true;
                            break;
                        case 8: {

                            forwardOrgId_ = input.readInt32();
                            break;
                        }
                        case 18: {
                            java.lang.String s = input.readStringRequireUtf8();

                            forwardOrgUin_ = s;
                            break;
                        }
                        case 24: {

                            forwardOrgUinType_ = input.readInt32();
                            break;
                        }
                        case 34: {
                            java.lang.String s = input.readStringRequireUtf8();

                            forwardOrgUrl_ = s;
                            break;
                        }
                        case 42: {
                            java.lang.String s = input.readStringRequireUtf8();

                            forwardThumbPath_ = s;
                            break;
                        }
                        case 48: {

                            forwardOrgFileSizeType_ = input.readInt32();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
                throw new com.google.protobuf.InvalidProtocolBufferException(
                        e).setUnfinishedMessage(this);
            } finally {
                this.unknownFields = unknownFields.build();
                makeExtensionsImmutable();
            }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
            return RichMsg.internal_static_ForwardExtra_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return RichMsg.internal_static_ForwardExtra_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            RichMsg.ForwardExtra.class, RichMsg.ForwardExtra.Builder.class);
        }

        public static final int FORWARD_ORGID_FIELD_NUMBER = 1;
        private int forwardOrgId_;
        /**
         * <code>int32 forward_orgId = 1;</code>
         * @return The forwardOrgId.
         */
        @java.lang.Override
        public int getForwardOrgId() {
            return forwardOrgId_;
        }

        public static final int FORWARD_ORGUIN_FIELD_NUMBER = 2;
        private volatile java.lang.Object forwardOrgUin_;
        /**
         * <code>string forward_orgUin = 2;</code>
         * @return The forwardOrgUin.
         */
        @java.lang.Override
        public java.lang.String getForwardOrgUin() {
            java.lang.Object ref = forwardOrgUin_;
            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();
                forwardOrgUin_ = s;
                return s;
            }
        }
        /**
         * <code>string forward_orgUin = 2;</code>
         * @return The bytes for forwardOrgUin.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getForwardOrgUinBytes() {
            java.lang.Object ref = forwardOrgUin_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                forwardOrgUin_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int FORWARD_ORGUINTYPE_FIELD_NUMBER = 3;
        private int forwardOrgUinType_;
        /**
         * <code>int32 forward_orgUinType = 3;</code>
         * @return The forwardOrgUinType.
         */
        @java.lang.Override
        public int getForwardOrgUinType() {
            return forwardOrgUinType_;
        }

        public static final int FORWARD_ORGURL_FIELD_NUMBER = 4;
        private volatile java.lang.Object forwardOrgUrl_;
        /**
         * <code>string forward_orgUrl = 4;</code>
         * @return The forwardOrgUrl.
         */
        @java.lang.Override
        public java.lang.String getForwardOrgUrl() {
            java.lang.Object ref = forwardOrgUrl_;
            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();
                forwardOrgUrl_ = s;
                return s;
            }
        }
        /**
         * <code>string forward_orgUrl = 4;</code>
         * @return The bytes for forwardOrgUrl.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getForwardOrgUrlBytes() {
            java.lang.Object ref = forwardOrgUrl_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                forwardOrgUrl_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int FORWARD_THUMBPATH_FIELD_NUMBER = 5;
        private volatile java.lang.Object forwardThumbPath_;
        /**
         * <code>string forward_thumbPath = 5;</code>
         * @return The forwardThumbPath.
         */
        @java.lang.Override
        public java.lang.String getForwardThumbPath() {
            java.lang.Object ref = forwardThumbPath_;
            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();
                forwardThumbPath_ = s;
                return s;
            }
        }
        /**
         * <code>string forward_thumbPath = 5;</code>
         * @return The bytes for forwardThumbPath.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getForwardThumbPathBytes() {
            java.lang.Object ref = forwardThumbPath_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                forwardThumbPath_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int FORWARD_ORGFILESIZETYPE_FIELD_NUMBER = 6;
        private int forwardOrgFileSizeType_;
        /**
         * <code>int32 forward_orgFileSizeType = 6;</code>
         * @return The forwardOrgFileSizeType.
         */
        @java.lang.Override
        public int getForwardOrgFileSizeType() {
            return forwardOrgFileSizeType_;
        }

        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 (forwardOrgId_ != 0) {
                output.writeInt32(1, forwardOrgId_);
            }
            if (!getForwardOrgUinBytes().isEmpty()) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, forwardOrgUin_);
            }
            if (forwardOrgUinType_ != 0) {
                output.writeInt32(3, forwardOrgUinType_);
            }
            if (!getForwardOrgUrlBytes().isEmpty()) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 4, forwardOrgUrl_);
            }
            if (!getForwardThumbPathBytes().isEmpty()) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 5, forwardThumbPath_);
            }
            if (forwardOrgFileSizeType_ != 0) {
                output.writeInt32(6, forwardOrgFileSizeType_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (forwardOrgId_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(1, forwardOrgId_);
            }
            if (!getForwardOrgUinBytes().isEmpty()) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, forwardOrgUin_);
            }
            if (forwardOrgUinType_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(3, forwardOrgUinType_);
            }
            if (!getForwardOrgUrlBytes().isEmpty()) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, forwardOrgUrl_);
            }
            if (!getForwardThumbPathBytes().isEmpty()) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, forwardThumbPath_);
            }
            if (forwardOrgFileSizeType_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(6, forwardOrgFileSizeType_);
            }
            size += unknownFields.getSerializedSize();
            memoizedSize = size;
            return size;
        }

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

            if (getForwardOrgId()
                    != other.getForwardOrgId()) return false;
            if (!getForwardOrgUin()
                    .equals(other.getForwardOrgUin())) return false;
            if (getForwardOrgUinType()
                    != other.getForwardOrgUinType()) return false;
            if (!getForwardOrgUrl()
                    .equals(other.getForwardOrgUrl())) return false;
            if (!getForwardThumbPath()
                    .equals(other.getForwardThumbPath())) return false;
            if (getForwardOrgFileSizeType()
                    != other.getForwardOrgFileSizeType()) return false;
            if (!unknownFields.equals(other.unknownFields)) return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + FORWARD_ORGID_FIELD_NUMBER;
            hash = (53 * hash) + getForwardOrgId();
            hash = (37 * hash) + FORWARD_ORGUIN_FIELD_NUMBER;
            hash = (53 * hash) + getForwardOrgUin().hashCode();
            hash = (37 * hash) + FORWARD_ORGUINTYPE_FIELD_NUMBER;
            hash = (53 * hash) + getForwardOrgUinType();
            hash = (37 * hash) + FORWARD_ORGURL_FIELD_NUMBER;
            hash = (53 * hash) + getForwardOrgUrl().hashCode();
            hash = (37 * hash) + FORWARD_THUMBPATH_FIELD_NUMBER;
            hash = (53 * hash) + getForwardThumbPath().hashCode();
            hash = (37 * hash) + FORWARD_ORGFILESIZETYPE_FIELD_NUMBER;
            hash = (53 * hash) + getForwardOrgFileSizeType();
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static RichMsg.ForwardExtra parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static RichMsg.ForwardExtra parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static RichMsg.ForwardExtra parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static RichMsg.ForwardExtra parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static RichMsg.ForwardExtra parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static RichMsg.ForwardExtra parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static RichMsg.ForwardExtra parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static RichMsg.ForwardExtra 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 RichMsg.ForwardExtra parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static RichMsg.ForwardExtra 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 RichMsg.ForwardExtra parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static RichMsg.ForwardExtra 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(RichMsg.ForwardExtra 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 ForwardExtra}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:ForwardExtra)
                RichMsg.ForwardExtraOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return RichMsg.internal_static_ForwardExtra_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return RichMsg.internal_static_ForwardExtra_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                RichMsg.ForwardExtra.class, RichMsg.ForwardExtra.Builder.class);
            }

            // Construct using RichMsg.ForwardExtra.newBuilder()
            private Builder() {
                maybeForceBuilderInitialization();
            }

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

                forwardOrgUin_ = "";

                forwardOrgUinType_ = 0;

                forwardOrgUrl_ = "";

                forwardThumbPath_ = "";

                forwardOrgFileSizeType_ = 0;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return RichMsg.internal_static_ForwardExtra_descriptor;
            }

            @java.lang.Override
            public RichMsg.ForwardExtra getDefaultInstanceForType() {
                return RichMsg.ForwardExtra.getDefaultInstance();
            }

            @java.lang.Override
            public RichMsg.ForwardExtra build() {
                RichMsg.ForwardExtra result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public RichMsg.ForwardExtra buildPartial() {
                RichMsg.ForwardExtra result = new RichMsg.ForwardExtra(this);
                result.forwardOrgId_ = forwardOrgId_;
                result.forwardOrgUin_ = forwardOrgUin_;
                result.forwardOrgUinType_ = forwardOrgUinType_;
                result.forwardOrgUrl_ = forwardOrgUrl_;
                result.forwardThumbPath_ = forwardThumbPath_;
                result.forwardOrgFileSizeType_ = forwardOrgFileSizeType_;
                onBuilt();
                return result;
            }

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

            public Builder mergeFrom(RichMsg.ForwardExtra other) {
                if (other == RichMsg.ForwardExtra.getDefaultInstance()) return this;
                if (other.getForwardOrgId() != 0) {
                    setForwardOrgId(other.getForwardOrgId());
                }
                if (!other.getForwardOrgUin().isEmpty()) {
                    forwardOrgUin_ = other.forwardOrgUin_;
                    onChanged();
                }
                if (other.getForwardOrgUinType() != 0) {
                    setForwardOrgUinType(other.getForwardOrgUinType());
                }
                if (!other.getForwardOrgUrl().isEmpty()) {
                    forwardOrgUrl_ = other.forwardOrgUrl_;
                    onChanged();
                }
                if (!other.getForwardThumbPath().isEmpty()) {
                    forwardThumbPath_ = other.forwardThumbPath_;
                    onChanged();
                }
                if (other.getForwardOrgFileSizeType() != 0) {
                    setForwardOrgFileSizeType(other.getForwardOrgFileSizeType());
                }
                this.mergeUnknownFields(other.unknownFields);
                onChanged();
                return this;
            }

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

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

            private int forwardOrgId_ ;
            /**
             * <code>int32 forward_orgId = 1;</code>
             * @return The forwardOrgId.
             */
            @java.lang.Override
            public int getForwardOrgId() {
                return forwardOrgId_;
            }
            /**
             * <code>int32 forward_orgId = 1;</code>
             * @param value The forwardOrgId to set.
             * @return This builder for chaining.
             */
            public Builder setForwardOrgId(int value) {

                forwardOrgId_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>int32 forward_orgId = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearForwardOrgId() {

                forwardOrgId_ = 0;
                onChanged();
                return this;
            }

            private java.lang.Object forwardOrgUin_ = "";
            /**
             * <code>string forward_orgUin = 2;</code>
             * @return The forwardOrgUin.
             */
            public java.lang.String getForwardOrgUin() {
                java.lang.Object ref = forwardOrgUin_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    forwardOrgUin_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <code>string forward_orgUin = 2;</code>
             * @return The bytes for forwardOrgUin.
             */
            public com.google.protobuf.ByteString
            getForwardOrgUinBytes() {
                java.lang.Object ref = forwardOrgUin_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    forwardOrgUin_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <code>string forward_orgUin = 2;</code>
             * @param value The forwardOrgUin to set.
             * @return This builder for chaining.
             */
            public Builder setForwardOrgUin(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                forwardOrgUin_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>string forward_orgUin = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearForwardOrgUin() {

                forwardOrgUin_ = getDefaultInstance().getForwardOrgUin();
                onChanged();
                return this;
            }
            /**
             * <code>string forward_orgUin = 2;</code>
             * @param value The bytes for forwardOrgUin to set.
             * @return This builder for chaining.
             */
            public Builder setForwardOrgUinBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private int forwardOrgUinType_ ;
            /**
             * <code>int32 forward_orgUinType = 3;</code>
             * @return The forwardOrgUinType.
             */
            @java.lang.Override
            public int getForwardOrgUinType() {
                return forwardOrgUinType_;
            }
            /**
             * <code>int32 forward_orgUinType = 3;</code>
             * @param value The forwardOrgUinType to set.
             * @return This builder for chaining.
             */
            public Builder setForwardOrgUinType(int value) {

                forwardOrgUinType_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>int32 forward_orgUinType = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearForwardOrgUinType() {

                forwardOrgUinType_ = 0;
                onChanged();
                return this;
            }

            private java.lang.Object forwardOrgUrl_ = "";
            /**
             * <code>string forward_orgUrl = 4;</code>
             * @return The forwardOrgUrl.
             */
            public java.lang.String getForwardOrgUrl() {
                java.lang.Object ref = forwardOrgUrl_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    forwardOrgUrl_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <code>string forward_orgUrl = 4;</code>
             * @return The bytes for forwardOrgUrl.
             */
            public com.google.protobuf.ByteString
            getForwardOrgUrlBytes() {
                java.lang.Object ref = forwardOrgUrl_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    forwardOrgUrl_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <code>string forward_orgUrl = 4;</code>
             * @param value The forwardOrgUrl to set.
             * @return This builder for chaining.
             */
            public Builder setForwardOrgUrl(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                forwardOrgUrl_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>string forward_orgUrl = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearForwardOrgUrl() {

                forwardOrgUrl_ = getDefaultInstance().getForwardOrgUrl();
                onChanged();
                return this;
            }
            /**
             * <code>string forward_orgUrl = 4;</code>
             * @param value The bytes for forwardOrgUrl to set.
             * @return This builder for chaining.
             */
            public Builder setForwardOrgUrlBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private java.lang.Object forwardThumbPath_ = "";
            /**
             * <code>string forward_thumbPath = 5;</code>
             * @return The forwardThumbPath.
             */
            public java.lang.String getForwardThumbPath() {
                java.lang.Object ref = forwardThumbPath_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    forwardThumbPath_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <code>string forward_thumbPath = 5;</code>
             * @return The bytes for forwardThumbPath.
             */
            public com.google.protobuf.ByteString
            getForwardThumbPathBytes() {
                java.lang.Object ref = forwardThumbPath_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    forwardThumbPath_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <code>string forward_thumbPath = 5;</code>
             * @param value The forwardThumbPath to set.
             * @return This builder for chaining.
             */
            public Builder setForwardThumbPath(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                forwardThumbPath_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>string forward_thumbPath = 5;</code>
             * @return This builder for chaining.
             */
            public Builder clearForwardThumbPath() {

                forwardThumbPath_ = getDefaultInstance().getForwardThumbPath();
                onChanged();
                return this;
            }
            /**
             * <code>string forward_thumbPath = 5;</code>
             * @param value The bytes for forwardThumbPath to set.
             * @return This builder for chaining.
             */
            public Builder setForwardThumbPathBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private int forwardOrgFileSizeType_ ;
            /**
             * <code>int32 forward_orgFileSizeType = 6;</code>
             * @return The forwardOrgFileSizeType.
             */
            @java.lang.Override
            public int getForwardOrgFileSizeType() {
                return forwardOrgFileSizeType_;
            }
            /**
             * <code>int32 forward_orgFileSizeType = 6;</code>
             * @param value The forwardOrgFileSizeType to set.
             * @return This builder for chaining.
             */
            public Builder setForwardOrgFileSizeType(int value) {

                forwardOrgFileSizeType_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>int32 forward_orgFileSizeType = 6;</code>
             * @return This builder for chaining.
             */
            public Builder clearForwardOrgFileSizeType() {

                forwardOrgFileSizeType_ = 0;
                onChanged();
                return this;
            }
            @java.lang.Override
            public final Builder setUnknownFields(
                    final com.google.protobuf.UnknownFieldSet unknownFields) {
                return super.setUnknownFields(unknownFields);
            }

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


            // @@protoc_insertion_point(builder_scope:ForwardExtra)
        }

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

        public static RichMsg.ForwardExtra getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public RichMsg.ForwardExtra getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

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

        /**
         * <code>string localPath = 1;</code>
         * @return The localPath.
         */
        java.lang.String getLocalPath();
        /**
         * <code>string localPath = 1;</code>
         * @return The bytes for localPath.
         */
        com.google.protobuf.ByteString
        getLocalPathBytes();

        /**
         * <code>int32 size = 2;</code>
         * @return The size.
         */
        int getSize();

        /**
         * <code>int32 type = 3;</code>
         * @return The type.
         */
        int getType();

        /**
         * <code>bool isRead = 4;</code>
         * @return The isRead.
         */
        boolean getIsRead();

        /**
         * <code>string uuid = 5;</code>
         * @return The uuid.
         */
        java.lang.String getUuid();
        /**
         * <code>string uuid = 5;</code>
         * @return The bytes for uuid.
         */
        com.google.protobuf.ByteString
        getUuidBytes();

        /**
         * <code>string md5 = 6;</code>
         * @return The md5.
         */
        java.lang.String getMd5();
        /**
         * <code>string md5 = 6;</code>
         * @return The bytes for md5.
         */
        com.google.protobuf.ByteString
        getMd5Bytes();

        /**
         * <code>string serverStorageSource = 7;</code>
         * @return The serverStorageSource.
         */
        java.lang.String getServerStorageSource();
        /**
         * <code>string serverStorageSource = 7;</code>
         * @return The bytes for serverStorageSource.
         */
        com.google.protobuf.ByteString
        getServerStorageSourceBytes();

        /**
         * <code>string thumbMsgUrl = 8;</code>
         * @return The thumbMsgUrl.
         */
        java.lang.String getThumbMsgUrl();
        /**
         * <code>string thumbMsgUrl = 8;</code>
         * @return The bytes for thumbMsgUrl.
         */
        com.google.protobuf.ByteString
        getThumbMsgUrlBytes();

        /**
         * <code>string bigMsgUrl = 9;</code>
         * @return The bigMsgUrl.
         */
        java.lang.String getBigMsgUrl();
        /**
         * <code>string bigMsgUrl = 9;</code>
         * @return The bytes for bigMsgUrl.
         */
        com.google.protobuf.ByteString
        getBigMsgUrlBytes();

        /**
         * <code>string rawMsgUrl = 10;</code>
         * @return The rawMsgUrl.
         */
        java.lang.String getRawMsgUrl();
        /**
         * <code>string rawMsgUrl = 10;</code>
         * @return The bytes for rawMsgUrl.
         */
        com.google.protobuf.ByteString
        getRawMsgUrlBytes();

        /**
         * <code>int32 fileSizeFlag = 11;</code>
         * @return The fileSizeFlag.
         */
        int getFileSizeFlag();

        /**
         * <code>int32 uiOperatorFlag = 12;</code>
         * @return The uiOperatorFlag.
         */
        int getUiOperatorFlag();

        /**
         * <code>.ForwardExtra forwardInfo = 13;</code>
         * @return Whether the forwardInfo field is set.
         */
        boolean hasForwardInfo();
        /**
         * <code>.ForwardExtra forwardInfo = 13;</code>
         * @return The forwardInfo.
         */
        RichMsg.ForwardExtra getForwardInfo();
        /**
         * <code>.ForwardExtra forwardInfo = 13;</code>
         */
        RichMsg.ForwardExtraOrBuilder getForwardInfoOrBuilder();

        /**
         * <code>int32 version = 14;</code>
         * @return The version.
         */
        int getVersion();

        /**
         * <code>int32 isReport = 15;</code>
         * @return The isReport.
         */
        int getIsReport();

        /**
         * <code>uint64 groupFileID = 16;</code>
         * @return The groupFileID.
         */
        long getGroupFileID();

        /**
         * <code>string localUUID = 17;</code>
         * @return The localUUID.
         */
        java.lang.String getLocalUUID();
        /**
         * <code>string localUUID = 17;</code>
         * @return The bytes for localUUID.
         */
        com.google.protobuf.ByteString
        getLocalUUIDBytes();

        /**
         * <code>int32 preDownState = 18;</code>
         * @return The preDownState.
         */
        int getPreDownState();

        /**
         * <code>int32 preDownNetwork = 19;</code>
         * @return The preDownNetwork.
         */
        int getPreDownNetwork();

        /**
         * <code>int32 previewed = 20;</code>
         * @return The previewed.
         */
        int getPreviewed();

        /**
         * <code>uint32 uint32_thumb_width = 21;</code>
         * @return The uint32ThumbWidth.
         */
        int getUint32ThumbWidth();

        /**
         * <code>uint32 uint32_thumb_height = 22;</code>
         * @return The uint32ThumbHeight.
         */
        int getUint32ThumbHeight();

        /**
         * <code>uint32 uint32_width = 23;</code>
         * @return The uint32Width.
         */
        int getUint32Width();

        /**
         * <code>uint32 uint32_height = 24;</code>
         * @return The uint32Height.
         */
        int getUint32Height();

        /**
         * <code>uint32 uint32_image_type = 25;</code>
         * @return The uint32ImageType.
         */
        int getUint32ImageType();

        /**
         * <code>uint32 uint32_show_len = 26;</code>
         * @return The uint32ShowLen.
         */
        int getUint32ShowLen();

        /**
         * <code>uint32 uint32_download_len = 27;</code>
         * @return The uint32DownloadLen.
         */
        int getUint32DownloadLen();

        /**
         * <code>uint32 uint32_current_len = 28;</code>
         * @return The uint32CurrentLen.
         */
        int getUint32CurrentLen();

        /**
         * <code>uint32 notPreDownloadReason = 29;</code>
         * @return The notPreDownloadReason.
         */
        int getNotPreDownloadReason();

        /**
         * <code>bool enableEnc = 30;</code>
         * @return The enableEnc.
         */
        boolean getEnableEnc();

        /**
         * <code>string bigThumbMsgUrl = 31;</code>
         * @return The bigThumbMsgUrl.
         */
        java.lang.String getBigThumbMsgUrl();
        /**
         * <code>string bigThumbMsgUrl = 31;</code>
         * @return The bytes for bigThumbMsgUrl.
         */
        com.google.protobuf.ByteString
        getBigThumbMsgUrlBytes();

        /**
         * <code>bytes bytes_pb_reserved = 32;</code>
         * @return The bytesPbReserved.
         */
        com.google.protobuf.ByteString getBytesPbReserved();

        /**
         * <code>bool bool_story_pic_send_to_recent = 33;</code>
         * @return The boolStoryPicSendToRecent.
         */
        boolean getBoolStoryPicSendToRecent();
    }
    /**
     * Protobuf type {@code PicRec}
     */
    public static final class PicRec extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:PicRec)
            PicRecOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use PicRec.newBuilder() to construct.
        private PicRec(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private PicRec() {
            localPath_ = "";
            uuid_ = "";
            md5_ = "";
            serverStorageSource_ = "";
            thumbMsgUrl_ = "";
            bigMsgUrl_ = "";
            rawMsgUrl_ = "";
            localUUID_ = "";
            bigThumbMsgUrl_ = "";
            bytesPbReserved_ = com.google.protobuf.ByteString.EMPTY;
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private PicRec(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            this();
            if (extensionRegistry == null) {
                throw new java.lang.NullPointerException();
            }
            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
                    com.google.protobuf.UnknownFieldSet.newBuilder();
            try {
                boolean done = false;
                while (!done) {
                    int tag = input.readTag();
                    switch (tag) {
                        case 0:
                            done = true;
                            break;
                        case 10: {
                            java.lang.String s = input.readStringRequireUtf8();

                            localPath_ = s;
                            break;
                        }
                        case 16: {

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

                            type_ = input.readInt32();
                            break;
                        }
                        case 32: {

                            isRead_ = input.readBool();
                            break;
                        }
                        case 42: {
                            java.lang.String s = input.readStringRequireUtf8();

                            uuid_ = s;
                            break;
                        }
                        case 50: {
                            java.lang.String s = input.readStringRequireUtf8();

                            md5_ = s;
                            break;
                        }
                        case 58: {
                            java.lang.String s = input.readStringRequireUtf8();

                            serverStorageSource_ = s;
                            break;
                        }
                        case 66: {
                            java.lang.String s = input.readStringRequireUtf8();

                            thumbMsgUrl_ = s;
                            break;
                        }
                        case 74: {
                            java.lang.String s = input.readStringRequireUtf8();

                            bigMsgUrl_ = s;
                            break;
                        }
                        case 82: {
                            java.lang.String s = input.readStringRequireUtf8();

                            rawMsgUrl_ = s;
                            break;
                        }
                        case 88: {

                            fileSizeFlag_ = input.readInt32();
                            break;
                        }
                        case 96: {

                            uiOperatorFlag_ = input.readInt32();
                            break;
                        }
                        case 106: {
                            RichMsg.ForwardExtra.Builder subBuilder = null;
                            if (forwardInfo_ != null) {
                                subBuilder = forwardInfo_.toBuilder();
                            }
                            forwardInfo_ = input.readMessage(RichMsg.ForwardExtra.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(forwardInfo_);
                                forwardInfo_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 112: {

                            version_ = input.readInt32();
                            break;
                        }
                        case 120: {

                            isReport_ = input.readInt32();
                            break;
                        }
                        case 128: {

                            groupFileID_ = input.readUInt64();
                            break;
                        }
                        case 138: {
                            java.lang.String s = input.readStringRequireUtf8();

                            localUUID_ = s;
                            break;
                        }
                        case 144: {

                            preDownState_ = input.readInt32();
                            break;
                        }
                        case 152: {

                            preDownNetwork_ = input.readInt32();
                            break;
                        }
                        case 160: {

                            previewed_ = input.readInt32();
                            break;
                        }
                        case 168: {

                            uint32ThumbWidth_ = input.readUInt32();
                            break;
                        }
                        case 176: {

                            uint32ThumbHeight_ = input.readUInt32();
                            break;
                        }
                        case 184: {

                            uint32Width_ = input.readUInt32();
                            break;
                        }
                        case 192: {

                            uint32Height_ = input.readUInt32();
                            break;
                        }
                        case 200: {

                            uint32ImageType_ = input.readUInt32();
                            break;
                        }
                        case 208: {

                            uint32ShowLen_ = input.readUInt32();
                            break;
                        }
                        case 216: {

                            uint32DownloadLen_ = input.readUInt32();
                            break;
                        }
                        case 224: {

                            uint32CurrentLen_ = input.readUInt32();
                            break;
                        }
                        case 232: {

                            notPreDownloadReason_ = input.readUInt32();
                            break;
                        }
                        case 240: {

                            enableEnc_ = input.readBool();
                            break;
                        }
                        case 250: {
                            java.lang.String s = input.readStringRequireUtf8();

                            bigThumbMsgUrl_ = s;
                            break;
                        }
                        case 258: {

                            bytesPbReserved_ = input.readBytes();
                            break;
                        }
                        case 264: {

                            boolStoryPicSendToRecent_ = input.readBool();
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
                throw new com.google.protobuf.InvalidProtocolBufferException(
                        e).setUnfinishedMessage(this);
            } finally {
                this.unknownFields = unknownFields.build();
                makeExtensionsImmutable();
            }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
            return RichMsg.internal_static_PicRec_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return RichMsg.internal_static_PicRec_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            RichMsg.PicRec.class, RichMsg.PicRec.Builder.class);
        }

        public static final int LOCALPATH_FIELD_NUMBER = 1;
        private volatile java.lang.Object localPath_;
        /**
         * <code>string localPath = 1;</code>
         * @return The localPath.
         */
        @java.lang.Override
        public java.lang.String getLocalPath() {
            java.lang.Object ref = localPath_;
            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();
                localPath_ = s;
                return s;
            }
        }
        /**
         * <code>string localPath = 1;</code>
         * @return The bytes for localPath.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getLocalPathBytes() {
            java.lang.Object ref = localPath_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                localPath_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int SIZE_FIELD_NUMBER = 2;
        private int size_;
        /**
         * <code>int32 size = 2;</code>
         * @return The size.
         */
        @java.lang.Override
        public int getSize() {
            return size_;
        }

        public static final int TYPE_FIELD_NUMBER = 3;
        private int type_;
        /**
         * <code>int32 type = 3;</code>
         * @return The type.
         */
        @java.lang.Override
        public int getType() {
            return type_;
        }

        public static final int ISREAD_FIELD_NUMBER = 4;
        private boolean isRead_;
        /**
         * <code>bool isRead = 4;</code>
         * @return The isRead.
         */
        @java.lang.Override
        public boolean getIsRead() {
            return isRead_;
        }

        public static final int UUID_FIELD_NUMBER = 5;
        private volatile java.lang.Object uuid_;
        /**
         * <code>string uuid = 5;</code>
         * @return The uuid.
         */
        @java.lang.Override
        public java.lang.String getUuid() {
            java.lang.Object ref = uuid_;
            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();
                uuid_ = s;
                return s;
            }
        }
        /**
         * <code>string uuid = 5;</code>
         * @return The bytes for uuid.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getUuidBytes() {
            java.lang.Object ref = uuid_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                uuid_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int MD5_FIELD_NUMBER = 6;
        private volatile java.lang.Object md5_;
        /**
         * <code>string md5 = 6;</code>
         * @return The md5.
         */
        @java.lang.Override
        public java.lang.String getMd5() {
            java.lang.Object ref = md5_;
            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();
                md5_ = s;
                return s;
            }
        }
        /**
         * <code>string md5 = 6;</code>
         * @return The bytes for md5.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getMd5Bytes() {
            java.lang.Object ref = md5_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                md5_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int SERVERSTORAGESOURCE_FIELD_NUMBER = 7;
        private volatile java.lang.Object serverStorageSource_;
        /**
         * <code>string serverStorageSource = 7;</code>
         * @return The serverStorageSource.
         */
        @java.lang.Override
        public java.lang.String getServerStorageSource() {
            java.lang.Object ref = serverStorageSource_;
            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();
                serverStorageSource_ = s;
                return s;
            }
        }
        /**
         * <code>string serverStorageSource = 7;</code>
         * @return The bytes for serverStorageSource.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getServerStorageSourceBytes() {
            java.lang.Object ref = serverStorageSource_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                serverStorageSource_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int THUMBMSGURL_FIELD_NUMBER = 8;
        private volatile java.lang.Object thumbMsgUrl_;
        /**
         * <code>string thumbMsgUrl = 8;</code>
         * @return The thumbMsgUrl.
         */
        @java.lang.Override
        public java.lang.String getThumbMsgUrl() {
            java.lang.Object ref = thumbMsgUrl_;
            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();
                thumbMsgUrl_ = s;
                return s;
            }
        }
        /**
         * <code>string thumbMsgUrl = 8;</code>
         * @return The bytes for thumbMsgUrl.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getThumbMsgUrlBytes() {
            java.lang.Object ref = thumbMsgUrl_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                thumbMsgUrl_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int BIGMSGURL_FIELD_NUMBER = 9;
        private volatile java.lang.Object bigMsgUrl_;
        /**
         * <code>string bigMsgUrl = 9;</code>
         * @return The bigMsgUrl.
         */
        @java.lang.Override
        public java.lang.String getBigMsgUrl() {
            java.lang.Object ref = bigMsgUrl_;
            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();
                bigMsgUrl_ = s;
                return s;
            }
        }
        /**
         * <code>string bigMsgUrl = 9;</code>
         * @return The bytes for bigMsgUrl.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getBigMsgUrlBytes() {
            java.lang.Object ref = bigMsgUrl_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                bigMsgUrl_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int RAWMSGURL_FIELD_NUMBER = 10;
        private volatile java.lang.Object rawMsgUrl_;
        /**
         * <code>string rawMsgUrl = 10;</code>
         * @return The rawMsgUrl.
         */
        @java.lang.Override
        public java.lang.String getRawMsgUrl() {
            java.lang.Object ref = rawMsgUrl_;
            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();
                rawMsgUrl_ = s;
                return s;
            }
        }
        /**
         * <code>string rawMsgUrl = 10;</code>
         * @return The bytes for rawMsgUrl.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getRawMsgUrlBytes() {
            java.lang.Object ref = rawMsgUrl_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                rawMsgUrl_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int FILESIZEFLAG_FIELD_NUMBER = 11;
        private int fileSizeFlag_;
        /**
         * <code>int32 fileSizeFlag = 11;</code>
         * @return The fileSizeFlag.
         */
        @java.lang.Override
        public int getFileSizeFlag() {
            return fileSizeFlag_;
        }

        public static final int UIOPERATORFLAG_FIELD_NUMBER = 12;
        private int uiOperatorFlag_;
        /**
         * <code>int32 uiOperatorFlag = 12;</code>
         * @return The uiOperatorFlag.
         */
        @java.lang.Override
        public int getUiOperatorFlag() {
            return uiOperatorFlag_;
        }

        public static final int FORWARDINFO_FIELD_NUMBER = 13;
        private RichMsg.ForwardExtra forwardInfo_;
        /**
         * <code>.ForwardExtra forwardInfo = 13;</code>
         * @return Whether the forwardInfo field is set.
         */
        @java.lang.Override
        public boolean hasForwardInfo() {
            return forwardInfo_ != null;
        }
        /**
         * <code>.ForwardExtra forwardInfo = 13;</code>
         * @return The forwardInfo.
         */
        @java.lang.Override
        public RichMsg.ForwardExtra getForwardInfo() {
            return forwardInfo_ == null ? RichMsg.ForwardExtra.getDefaultInstance() : forwardInfo_;
        }
        /**
         * <code>.ForwardExtra forwardInfo = 13;</code>
         */
        @java.lang.Override
        public RichMsg.ForwardExtraOrBuilder getForwardInfoOrBuilder() {
            return getForwardInfo();
        }

        public static final int VERSION_FIELD_NUMBER = 14;
        private int version_;
        /**
         * <code>int32 version = 14;</code>
         * @return The version.
         */
        @java.lang.Override
        public int getVersion() {
            return version_;
        }

        public static final int ISREPORT_FIELD_NUMBER = 15;
        private int isReport_;
        /**
         * <code>int32 isReport = 15;</code>
         * @return The isReport.
         */
        @java.lang.Override
        public int getIsReport() {
            return isReport_;
        }

        public static final int GROUPFILEID_FIELD_NUMBER = 16;
        private long groupFileID_;
        /**
         * <code>uint64 groupFileID = 16;</code>
         * @return The groupFileID.
         */
        @java.lang.Override
        public long getGroupFileID() {
            return groupFileID_;
        }

        public static final int LOCALUUID_FIELD_NUMBER = 17;
        private volatile java.lang.Object localUUID_;
        /**
         * <code>string localUUID = 17;</code>
         * @return The localUUID.
         */
        @java.lang.Override
        public java.lang.String getLocalUUID() {
            java.lang.Object ref = localUUID_;
            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();
                localUUID_ = s;
                return s;
            }
        }
        /**
         * <code>string localUUID = 17;</code>
         * @return The bytes for localUUID.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getLocalUUIDBytes() {
            java.lang.Object ref = localUUID_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                localUUID_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int PREDOWNSTATE_FIELD_NUMBER = 18;
        private int preDownState_;
        /**
         * <code>int32 preDownState = 18;</code>
         * @return The preDownState.
         */
        @java.lang.Override
        public int getPreDownState() {
            return preDownState_;
        }

        public static final int PREDOWNNETWORK_FIELD_NUMBER = 19;
        private int preDownNetwork_;
        /**
         * <code>int32 preDownNetwork = 19;</code>
         * @return The preDownNetwork.
         */
        @java.lang.Override
        public int getPreDownNetwork() {
            return preDownNetwork_;
        }

        public static final int PREVIEWED_FIELD_NUMBER = 20;
        private int previewed_;
        /**
         * <code>int32 previewed = 20;</code>
         * @return The previewed.
         */
        @java.lang.Override
        public int getPreviewed() {
            return previewed_;
        }

        public static final int UINT32_THUMB_WIDTH_FIELD_NUMBER = 21;
        private int uint32ThumbWidth_;
        /**
         * <code>uint32 uint32_thumb_width = 21;</code>
         * @return The uint32ThumbWidth.
         */
        @java.lang.Override
        public int getUint32ThumbWidth() {
            return uint32ThumbWidth_;
        }

        public static final int UINT32_THUMB_HEIGHT_FIELD_NUMBER = 22;
        private int uint32ThumbHeight_;
        /**
         * <code>uint32 uint32_thumb_height = 22;</code>
         * @return The uint32ThumbHeight.
         */
        @java.lang.Override
        public int getUint32ThumbHeight() {
            return uint32ThumbHeight_;
        }

        public static final int UINT32_WIDTH_FIELD_NUMBER = 23;
        private int uint32Width_;
        /**
         * <code>uint32 uint32_width = 23;</code>
         * @return The uint32Width.
         */
        @java.lang.Override
        public int getUint32Width() {
            return uint32Width_;
        }

        public static final int UINT32_HEIGHT_FIELD_NUMBER = 24;
        private int uint32Height_;
        /**
         * <code>uint32 uint32_height = 24;</code>
         * @return The uint32Height.
         */
        @java.lang.Override
        public int getUint32Height() {
            return uint32Height_;
        }

        public static final int UINT32_IMAGE_TYPE_FIELD_NUMBER = 25;
        private int uint32ImageType_;
        /**
         * <code>uint32 uint32_image_type = 25;</code>
         * @return The uint32ImageType.
         */
        @java.lang.Override
        public int getUint32ImageType() {
            return uint32ImageType_;
        }

        public static final int UINT32_SHOW_LEN_FIELD_NUMBER = 26;
        private int uint32ShowLen_;
        /**
         * <code>uint32 uint32_show_len = 26;</code>
         * @return The uint32ShowLen.
         */
        @java.lang.Override
        public int getUint32ShowLen() {
            return uint32ShowLen_;
        }

        public static final int UINT32_DOWNLOAD_LEN_FIELD_NUMBER = 27;
        private int uint32DownloadLen_;
        /**
         * <code>uint32 uint32_download_len = 27;</code>
         * @return The uint32DownloadLen.
         */
        @java.lang.Override
        public int getUint32DownloadLen() {
            return uint32DownloadLen_;
        }

        public static final int UINT32_CURRENT_LEN_FIELD_NUMBER = 28;
        private int uint32CurrentLen_;
        /**
         * <code>uint32 uint32_current_len = 28;</code>
         * @return The uint32CurrentLen.
         */
        @java.lang.Override
        public int getUint32CurrentLen() {
            return uint32CurrentLen_;
        }

        public static final int NOTPREDOWNLOADREASON_FIELD_NUMBER = 29;
        private int notPreDownloadReason_;
        /**
         * <code>uint32 notPreDownloadReason = 29;</code>
         * @return The notPreDownloadReason.
         */
        @java.lang.Override
        public int getNotPreDownloadReason() {
            return notPreDownloadReason_;
        }

        public static final int ENABLEENC_FIELD_NUMBER = 30;
        private boolean enableEnc_;
        /**
         * <code>bool enableEnc = 30;</code>
         * @return The enableEnc.
         */
        @java.lang.Override
        public boolean getEnableEnc() {
            return enableEnc_;
        }

        public static final int BIGTHUMBMSGURL_FIELD_NUMBER = 31;
        private volatile java.lang.Object bigThumbMsgUrl_;
        /**
         * <code>string bigThumbMsgUrl = 31;</code>
         * @return The bigThumbMsgUrl.
         */
        @java.lang.Override
        public java.lang.String getBigThumbMsgUrl() {
            java.lang.Object ref = bigThumbMsgUrl_;
            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();
                bigThumbMsgUrl_ = s;
                return s;
            }
        }
        /**
         * <code>string bigThumbMsgUrl = 31;</code>
         * @return The bytes for bigThumbMsgUrl.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getBigThumbMsgUrlBytes() {
            java.lang.Object ref = bigThumbMsgUrl_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                bigThumbMsgUrl_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int BYTES_PB_RESERVED_FIELD_NUMBER = 32;
        private com.google.protobuf.ByteString bytesPbReserved_;
        /**
         * <code>bytes bytes_pb_reserved = 32;</code>
         * @return The bytesPbReserved.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getBytesPbReserved() {
            return bytesPbReserved_;
        }

        public static final int BOOL_STORY_PIC_SEND_TO_RECENT_FIELD_NUMBER = 33;
        private boolean boolStoryPicSendToRecent_;
        /**
         * <code>bool bool_story_pic_send_to_recent = 33;</code>
         * @return The boolStoryPicSendToRecent.
         */
        @java.lang.Override
        public boolean getBoolStoryPicSendToRecent() {
            return boolStoryPicSendToRecent_;
        }

        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 (!getLocalPathBytes().isEmpty()) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, localPath_);
            }
            if (size_ != 0) {
                output.writeInt32(2, size_);
            }
            if (type_ != 0) {
                output.writeInt32(3, type_);
            }
            if (isRead_ != false) {
                output.writeBool(4, isRead_);
            }
            if (!getUuidBytes().isEmpty()) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 5, uuid_);
            }
            if (!getMd5Bytes().isEmpty()) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 6, md5_);
            }
            if (!getServerStorageSourceBytes().isEmpty()) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 7, serverStorageSource_);
            }
            if (!getThumbMsgUrlBytes().isEmpty()) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 8, thumbMsgUrl_);
            }
            if (!getBigMsgUrlBytes().isEmpty()) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 9, bigMsgUrl_);
            }
            if (!getRawMsgUrlBytes().isEmpty()) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 10, rawMsgUrl_);
            }
            if (fileSizeFlag_ != 0) {
                output.writeInt32(11, fileSizeFlag_);
            }
            if (uiOperatorFlag_ != 0) {
                output.writeInt32(12, uiOperatorFlag_);
            }
            if (forwardInfo_ != null) {
                output.writeMessage(13, getForwardInfo());
            }
            if (version_ != 0) {
                output.writeInt32(14, version_);
            }
            if (isReport_ != 0) {
                output.writeInt32(15, isReport_);
            }
            if (groupFileID_ != 0L) {
                output.writeUInt64(16, groupFileID_);
            }
            if (!getLocalUUIDBytes().isEmpty()) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 17, localUUID_);
            }
            if (preDownState_ != 0) {
                output.writeInt32(18, preDownState_);
            }
            if (preDownNetwork_ != 0) {
                output.writeInt32(19, preDownNetwork_);
            }
            if (previewed_ != 0) {
                output.writeInt32(20, previewed_);
            }
            if (uint32ThumbWidth_ != 0) {
                output.writeUInt32(21, uint32ThumbWidth_);
            }
            if (uint32ThumbHeight_ != 0) {
                output.writeUInt32(22, uint32ThumbHeight_);
            }
            if (uint32Width_ != 0) {
                output.writeUInt32(23, uint32Width_);
            }
            if (uint32Height_ != 0) {
                output.writeUInt32(24, uint32Height_);
            }
            if (uint32ImageType_ != 0) {
                output.writeUInt32(25, uint32ImageType_);
            }
            if (uint32ShowLen_ != 0) {
                output.writeUInt32(26, uint32ShowLen_);
            }
            if (uint32DownloadLen_ != 0) {
                output.writeUInt32(27, uint32DownloadLen_);
            }
            if (uint32CurrentLen_ != 0) {
                output.writeUInt32(28, uint32CurrentLen_);
            }
            if (notPreDownloadReason_ != 0) {
                output.writeUInt32(29, notPreDownloadReason_);
            }
            if (enableEnc_ != false) {
                output.writeBool(30, enableEnc_);
            }
            if (!getBigThumbMsgUrlBytes().isEmpty()) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 31, bigThumbMsgUrl_);
            }
            if (!bytesPbReserved_.isEmpty()) {
                output.writeBytes(32, bytesPbReserved_);
            }
            if (boolStoryPicSendToRecent_ != false) {
                output.writeBool(33, boolStoryPicSendToRecent_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (!getLocalPathBytes().isEmpty()) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, localPath_);
            }
            if (size_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(2, size_);
            }
            if (type_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(3, type_);
            }
            if (isRead_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(4, isRead_);
            }
            if (!getUuidBytes().isEmpty()) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, uuid_);
            }
            if (!getMd5Bytes().isEmpty()) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, md5_);
            }
            if (!getServerStorageSourceBytes().isEmpty()) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, serverStorageSource_);
            }
            if (!getThumbMsgUrlBytes().isEmpty()) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, thumbMsgUrl_);
            }
            if (!getBigMsgUrlBytes().isEmpty()) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, bigMsgUrl_);
            }
            if (!getRawMsgUrlBytes().isEmpty()) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, rawMsgUrl_);
            }
            if (fileSizeFlag_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(11, fileSizeFlag_);
            }
            if (uiOperatorFlag_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(12, uiOperatorFlag_);
            }
            if (forwardInfo_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(13, getForwardInfo());
            }
            if (version_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(14, version_);
            }
            if (isReport_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(15, isReport_);
            }
            if (groupFileID_ != 0L) {
                size += com.google.protobuf.CodedOutputStream
                        .computeUInt64Size(16, groupFileID_);
            }
            if (!getLocalUUIDBytes().isEmpty()) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(17, localUUID_);
            }
            if (preDownState_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(18, preDownState_);
            }
            if (preDownNetwork_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(19, preDownNetwork_);
            }
            if (previewed_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeInt32Size(20, previewed_);
            }
            if (uint32ThumbWidth_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeUInt32Size(21, uint32ThumbWidth_);
            }
            if (uint32ThumbHeight_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeUInt32Size(22, uint32ThumbHeight_);
            }
            if (uint32Width_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeUInt32Size(23, uint32Width_);
            }
            if (uint32Height_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeUInt32Size(24, uint32Height_);
            }
            if (uint32ImageType_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeUInt32Size(25, uint32ImageType_);
            }
            if (uint32ShowLen_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeUInt32Size(26, uint32ShowLen_);
            }
            if (uint32DownloadLen_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeUInt32Size(27, uint32DownloadLen_);
            }
            if (uint32CurrentLen_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeUInt32Size(28, uint32CurrentLen_);
            }
            if (notPreDownloadReason_ != 0) {
                size += com.google.protobuf.CodedOutputStream
                        .computeUInt32Size(29, notPreDownloadReason_);
            }
            if (enableEnc_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(30, enableEnc_);
            }
            if (!getBigThumbMsgUrlBytes().isEmpty()) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(31, bigThumbMsgUrl_);
            }
            if (!bytesPbReserved_.isEmpty()) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBytesSize(32, bytesPbReserved_);
            }
            if (boolStoryPicSendToRecent_ != false) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBoolSize(33, boolStoryPicSendToRecent_);
            }
            size += unknownFields.getSerializedSize();
            memoizedSize = size;
            return size;
        }

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

            if (!getLocalPath()
                    .equals(other.getLocalPath())) return false;
            if (getSize()
                    != other.getSize()) return false;
            if (getType()
                    != other.getType()) return false;
            if (getIsRead()
                    != other.getIsRead()) return false;
            if (!getUuid()
                    .equals(other.getUuid())) return false;
            if (!getMd5()
                    .equals(other.getMd5())) return false;
            if (!getServerStorageSource()
                    .equals(other.getServerStorageSource())) return false;
            if (!getThumbMsgUrl()
                    .equals(other.getThumbMsgUrl())) return false;
            if (!getBigMsgUrl()
                    .equals(other.getBigMsgUrl())) return false;
            if (!getRawMsgUrl()
                    .equals(other.getRawMsgUrl())) return false;
            if (getFileSizeFlag()
                    != other.getFileSizeFlag()) return false;
            if (getUiOperatorFlag()
                    != other.getUiOperatorFlag()) return false;
            if (hasForwardInfo() != other.hasForwardInfo()) return false;
            if (hasForwardInfo()) {
                if (!getForwardInfo()
                        .equals(other.getForwardInfo())) return false;
            }
            if (getVersion()
                    != other.getVersion()) return false;
            if (getIsReport()
                    != other.getIsReport()) return false;
            if (getGroupFileID()
                    != other.getGroupFileID()) return false;
            if (!getLocalUUID()
                    .equals(other.getLocalUUID())) return false;
            if (getPreDownState()
                    != other.getPreDownState()) return false;
            if (getPreDownNetwork()
                    != other.getPreDownNetwork()) return false;
            if (getPreviewed()
                    != other.getPreviewed()) return false;
            if (getUint32ThumbWidth()
                    != other.getUint32ThumbWidth()) return false;
            if (getUint32ThumbHeight()
                    != other.getUint32ThumbHeight()) return false;
            if (getUint32Width()
                    != other.getUint32Width()) return false;
            if (getUint32Height()
                    != other.getUint32Height()) return false;
            if (getUint32ImageType()
                    != other.getUint32ImageType()) return false;
            if (getUint32ShowLen()
                    != other.getUint32ShowLen()) return false;
            if (getUint32DownloadLen()
                    != other.getUint32DownloadLen()) return false;
            if (getUint32CurrentLen()
                    != other.getUint32CurrentLen()) return false;
            if (getNotPreDownloadReason()
                    != other.getNotPreDownloadReason()) return false;
            if (getEnableEnc()
                    != other.getEnableEnc()) return false;
            if (!getBigThumbMsgUrl()
                    .equals(other.getBigThumbMsgUrl())) return false;
            if (!getBytesPbReserved()
                    .equals(other.getBytesPbReserved())) return false;
            if (getBoolStoryPicSendToRecent()
                    != other.getBoolStoryPicSendToRecent()) return false;
            if (!unknownFields.equals(other.unknownFields)) return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + LOCALPATH_FIELD_NUMBER;
            hash = (53 * hash) + getLocalPath().hashCode();
            hash = (37 * hash) + SIZE_FIELD_NUMBER;
            hash = (53 * hash) + getSize();
            hash = (37 * hash) + TYPE_FIELD_NUMBER;
            hash = (53 * hash) + getType();
            hash = (37 * hash) + ISREAD_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getIsRead());
            hash = (37 * hash) + UUID_FIELD_NUMBER;
            hash = (53 * hash) + getUuid().hashCode();
            hash = (37 * hash) + MD5_FIELD_NUMBER;
            hash = (53 * hash) + getMd5().hashCode();
            hash = (37 * hash) + SERVERSTORAGESOURCE_FIELD_NUMBER;
            hash = (53 * hash) + getServerStorageSource().hashCode();
            hash = (37 * hash) + THUMBMSGURL_FIELD_NUMBER;
            hash = (53 * hash) + getThumbMsgUrl().hashCode();
            hash = (37 * hash) + BIGMSGURL_FIELD_NUMBER;
            hash = (53 * hash) + getBigMsgUrl().hashCode();
            hash = (37 * hash) + RAWMSGURL_FIELD_NUMBER;
            hash = (53 * hash) + getRawMsgUrl().hashCode();
            hash = (37 * hash) + FILESIZEFLAG_FIELD_NUMBER;
            hash = (53 * hash) + getFileSizeFlag();
            hash = (37 * hash) + UIOPERATORFLAG_FIELD_NUMBER;
            hash = (53 * hash) + getUiOperatorFlag();
            if (hasForwardInfo()) {
                hash = (37 * hash) + FORWARDINFO_FIELD_NUMBER;
                hash = (53 * hash) + getForwardInfo().hashCode();
            }
            hash = (37 * hash) + VERSION_FIELD_NUMBER;
            hash = (53 * hash) + getVersion();
            hash = (37 * hash) + ISREPORT_FIELD_NUMBER;
            hash = (53 * hash) + getIsReport();
            hash = (37 * hash) + GROUPFILEID_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
                    getGroupFileID());
            hash = (37 * hash) + LOCALUUID_FIELD_NUMBER;
            hash = (53 * hash) + getLocalUUID().hashCode();
            hash = (37 * hash) + PREDOWNSTATE_FIELD_NUMBER;
            hash = (53 * hash) + getPreDownState();
            hash = (37 * hash) + PREDOWNNETWORK_FIELD_NUMBER;
            hash = (53 * hash) + getPreDownNetwork();
            hash = (37 * hash) + PREVIEWED_FIELD_NUMBER;
            hash = (53 * hash) + getPreviewed();
            hash = (37 * hash) + UINT32_THUMB_WIDTH_FIELD_NUMBER;
            hash = (53 * hash) + getUint32ThumbWidth();
            hash = (37 * hash) + UINT32_THUMB_HEIGHT_FIELD_NUMBER;
            hash = (53 * hash) + getUint32ThumbHeight();
            hash = (37 * hash) + UINT32_WIDTH_FIELD_NUMBER;
            hash = (53 * hash) + getUint32Width();
            hash = (37 * hash) + UINT32_HEIGHT_FIELD_NUMBER;
            hash = (53 * hash) + getUint32Height();
            hash = (37 * hash) + UINT32_IMAGE_TYPE_FIELD_NUMBER;
            hash = (53 * hash) + getUint32ImageType();
            hash = (37 * hash) + UINT32_SHOW_LEN_FIELD_NUMBER;
            hash = (53 * hash) + getUint32ShowLen();
            hash = (37 * hash) + UINT32_DOWNLOAD_LEN_FIELD_NUMBER;
            hash = (53 * hash) + getUint32DownloadLen();
            hash = (37 * hash) + UINT32_CURRENT_LEN_FIELD_NUMBER;
            hash = (53 * hash) + getUint32CurrentLen();
            hash = (37 * hash) + NOTPREDOWNLOADREASON_FIELD_NUMBER;
            hash = (53 * hash) + getNotPreDownloadReason();
            hash = (37 * hash) + ENABLEENC_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getEnableEnc());
            hash = (37 * hash) + BIGTHUMBMSGURL_FIELD_NUMBER;
            hash = (53 * hash) + getBigThumbMsgUrl().hashCode();
            hash = (37 * hash) + BYTES_PB_RESERVED_FIELD_NUMBER;
            hash = (53 * hash) + getBytesPbReserved().hashCode();
            hash = (37 * hash) + BOOL_STORY_PIC_SEND_TO_RECENT_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                    getBoolStoryPicSendToRecent());
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static RichMsg.PicRec parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static RichMsg.PicRec parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static RichMsg.PicRec parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static RichMsg.PicRec parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static RichMsg.PicRec parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static RichMsg.PicRec parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static RichMsg.PicRec parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static RichMsg.PicRec 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 RichMsg.PicRec parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static RichMsg.PicRec 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 RichMsg.PicRec parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static RichMsg.PicRec 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(RichMsg.PicRec 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 PicRec}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:PicRec)
                RichMsg.PicRecOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return RichMsg.internal_static_PicRec_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return RichMsg.internal_static_PicRec_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                RichMsg.PicRec.class, RichMsg.PicRec.Builder.class);
            }

            // Construct using RichMsg.PicRec.newBuilder()
            private Builder() {
                maybeForceBuilderInitialization();
            }

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

                size_ = 0;

                type_ = 0;

                isRead_ = false;

                uuid_ = "";

                md5_ = "";

                serverStorageSource_ = "";

                thumbMsgUrl_ = "";

                bigMsgUrl_ = "";

                rawMsgUrl_ = "";

                fileSizeFlag_ = 0;

                uiOperatorFlag_ = 0;

                if (forwardInfoBuilder_ == null) {
                    forwardInfo_ = null;
                } else {
                    forwardInfo_ = null;
                    forwardInfoBuilder_ = null;
                }
                version_ = 0;

                isReport_ = 0;

                groupFileID_ = 0L;

                localUUID_ = "";

                preDownState_ = 0;

                preDownNetwork_ = 0;

                previewed_ = 0;

                uint32ThumbWidth_ = 0;

                uint32ThumbHeight_ = 0;

                uint32Width_ = 0;

                uint32Height_ = 0;

                uint32ImageType_ = 0;

                uint32ShowLen_ = 0;

                uint32DownloadLen_ = 0;

                uint32CurrentLen_ = 0;

                notPreDownloadReason_ = 0;

                enableEnc_ = false;

                bigThumbMsgUrl_ = "";

                bytesPbReserved_ = com.google.protobuf.ByteString.EMPTY;

                boolStoryPicSendToRecent_ = false;

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return RichMsg.internal_static_PicRec_descriptor;
            }

            @java.lang.Override
            public RichMsg.PicRec getDefaultInstanceForType() {
                return RichMsg.PicRec.getDefaultInstance();
            }

            @java.lang.Override
            public RichMsg.PicRec build() {
                RichMsg.PicRec result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public RichMsg.PicRec buildPartial() {
                RichMsg.PicRec result = new RichMsg.PicRec(this);
                result.localPath_ = localPath_;
                result.size_ = size_;
                result.type_ = type_;
                result.isRead_ = isRead_;
                result.uuid_ = uuid_;
                result.md5_ = md5_;
                result.serverStorageSource_ = serverStorageSource_;
                result.thumbMsgUrl_ = thumbMsgUrl_;
                result.bigMsgUrl_ = bigMsgUrl_;
                result.rawMsgUrl_ = rawMsgUrl_;
                result.fileSizeFlag_ = fileSizeFlag_;
                result.uiOperatorFlag_ = uiOperatorFlag_;
                if (forwardInfoBuilder_ == null) {
                    result.forwardInfo_ = forwardInfo_;
                } else {
                    result.forwardInfo_ = forwardInfoBuilder_.build();
                }
                result.version_ = version_;
                result.isReport_ = isReport_;
                result.groupFileID_ = groupFileID_;
                result.localUUID_ = localUUID_;
                result.preDownState_ = preDownState_;
                result.preDownNetwork_ = preDownNetwork_;
                result.previewed_ = previewed_;
                result.uint32ThumbWidth_ = uint32ThumbWidth_;
                result.uint32ThumbHeight_ = uint32ThumbHeight_;
                result.uint32Width_ = uint32Width_;
                result.uint32Height_ = uint32Height_;
                result.uint32ImageType_ = uint32ImageType_;
                result.uint32ShowLen_ = uint32ShowLen_;
                result.uint32DownloadLen_ = uint32DownloadLen_;
                result.uint32CurrentLen_ = uint32CurrentLen_;
                result.notPreDownloadReason_ = notPreDownloadReason_;
                result.enableEnc_ = enableEnc_;
                result.bigThumbMsgUrl_ = bigThumbMsgUrl_;
                result.bytesPbReserved_ = bytesPbReserved_;
                result.boolStoryPicSendToRecent_ = boolStoryPicSendToRecent_;
                onBuilt();
                return result;
            }

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

            public Builder mergeFrom(RichMsg.PicRec other) {
                if (other == RichMsg.PicRec.getDefaultInstance()) return this;
                if (!other.getLocalPath().isEmpty()) {
                    localPath_ = other.localPath_;
                    onChanged();
                }
                if (other.getSize() != 0) {
                    setSize(other.getSize());
                }
                if (other.getType() != 0) {
                    setType(other.getType());
                }
                if (other.getIsRead() != false) {
                    setIsRead(other.getIsRead());
                }
                if (!other.getUuid().isEmpty()) {
                    uuid_ = other.uuid_;
                    onChanged();
                }
                if (!other.getMd5().isEmpty()) {
                    md5_ = other.md5_;
                    onChanged();
                }
                if (!other.getServerStorageSource().isEmpty()) {
                    serverStorageSource_ = other.serverStorageSource_;
                    onChanged();
                }
                if (!other.getThumbMsgUrl().isEmpty()) {
                    thumbMsgUrl_ = other.thumbMsgUrl_;
                    onChanged();
                }
                if (!other.getBigMsgUrl().isEmpty()) {
                    bigMsgUrl_ = other.bigMsgUrl_;
                    onChanged();
                }
                if (!other.getRawMsgUrl().isEmpty()) {
                    rawMsgUrl_ = other.rawMsgUrl_;
                    onChanged();
                }
                if (other.getFileSizeFlag() != 0) {
                    setFileSizeFlag(other.getFileSizeFlag());
                }
                if (other.getUiOperatorFlag() != 0) {
                    setUiOperatorFlag(other.getUiOperatorFlag());
                }
                if (other.hasForwardInfo()) {
                    mergeForwardInfo(other.getForwardInfo());
                }
                if (other.getVersion() != 0) {
                    setVersion(other.getVersion());
                }
                if (other.getIsReport() != 0) {
                    setIsReport(other.getIsReport());
                }
                if (other.getGroupFileID() != 0L) {
                    setGroupFileID(other.getGroupFileID());
                }
                if (!other.getLocalUUID().isEmpty()) {
                    localUUID_ = other.localUUID_;
                    onChanged();
                }
                if (other.getPreDownState() != 0) {
                    setPreDownState(other.getPreDownState());
                }
                if (other.getPreDownNetwork() != 0) {
                    setPreDownNetwork(other.getPreDownNetwork());
                }
                if (other.getPreviewed() != 0) {
                    setPreviewed(other.getPreviewed());
                }
                if (other.getUint32ThumbWidth() != 0) {
                    setUint32ThumbWidth(other.getUint32ThumbWidth());
                }
                if (other.getUint32ThumbHeight() != 0) {
                    setUint32ThumbHeight(other.getUint32ThumbHeight());
                }
                if (other.getUint32Width() != 0) {
                    setUint32Width(other.getUint32Width());
                }
                if (other.getUint32Height() != 0) {
                    setUint32Height(other.getUint32Height());
                }
                if (other.getUint32ImageType() != 0) {
                    setUint32ImageType(other.getUint32ImageType());
                }
                if (other.getUint32ShowLen() != 0) {
                    setUint32ShowLen(other.getUint32ShowLen());
                }
                if (other.getUint32DownloadLen() != 0) {
                    setUint32DownloadLen(other.getUint32DownloadLen());
                }
                if (other.getUint32CurrentLen() != 0) {
                    setUint32CurrentLen(other.getUint32CurrentLen());
                }
                if (other.getNotPreDownloadReason() != 0) {
                    setNotPreDownloadReason(other.getNotPreDownloadReason());
                }
                if (other.getEnableEnc() != false) {
                    setEnableEnc(other.getEnableEnc());
                }
                if (!other.getBigThumbMsgUrl().isEmpty()) {
                    bigThumbMsgUrl_ = other.bigThumbMsgUrl_;
                    onChanged();
                }
                if (other.getBytesPbReserved() != com.google.protobuf.ByteString.EMPTY) {
                    setBytesPbReserved(other.getBytesPbReserved());
                }
                if (other.getBoolStoryPicSendToRecent() != false) {
                    setBoolStoryPicSendToRecent(other.getBoolStoryPicSendToRecent());
                }
                this.mergeUnknownFields(other.unknownFields);
                onChanged();
                return this;
            }

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

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

            private java.lang.Object localPath_ = "";
            /**
             * <code>string localPath = 1;</code>
             * @return The localPath.
             */
            public java.lang.String getLocalPath() {
                java.lang.Object ref = localPath_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    localPath_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <code>string localPath = 1;</code>
             * @return The bytes for localPath.
             */
            public com.google.protobuf.ByteString
            getLocalPathBytes() {
                java.lang.Object ref = localPath_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    localPath_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <code>string localPath = 1;</code>
             * @param value The localPath to set.
             * @return This builder for chaining.
             */
            public Builder setLocalPath(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                localPath_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>string localPath = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearLocalPath() {

                localPath_ = getDefaultInstance().getLocalPath();
                onChanged();
                return this;
            }
            /**
             * <code>string localPath = 1;</code>
             * @param value The bytes for localPath to set.
             * @return This builder for chaining.
             */
            public Builder setLocalPathBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private int size_ ;
            /**
             * <code>int32 size = 2;</code>
             * @return The size.
             */
            @java.lang.Override
            public int getSize() {
                return size_;
            }
            /**
             * <code>int32 size = 2;</code>
             * @param value The size to set.
             * @return This builder for chaining.
             */
            public Builder setSize(int value) {

                size_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>int32 size = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearSize() {

                size_ = 0;
                onChanged();
                return this;
            }

            private int type_ ;
            /**
             * <code>int32 type = 3;</code>
             * @return The type.
             */
            @java.lang.Override
            public int getType() {
                return type_;
            }
            /**
             * <code>int32 type = 3;</code>
             * @param value The type to set.
             * @return This builder for chaining.
             */
            public Builder setType(int value) {

                type_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>int32 type = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearType() {

                type_ = 0;
                onChanged();
                return this;
            }

            private boolean isRead_ ;
            /**
             * <code>bool isRead = 4;</code>
             * @return The isRead.
             */
            @java.lang.Override
            public boolean getIsRead() {
                return isRead_;
            }
            /**
             * <code>bool isRead = 4;</code>
             * @param value The isRead to set.
             * @return This builder for chaining.
             */
            public Builder setIsRead(boolean value) {

                isRead_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>bool isRead = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearIsRead() {

                isRead_ = false;
                onChanged();
                return this;
            }

            private java.lang.Object uuid_ = "";
            /**
             * <code>string uuid = 5;</code>
             * @return The uuid.
             */
            public java.lang.String getUuid() {
                java.lang.Object ref = uuid_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    uuid_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <code>string uuid = 5;</code>
             * @return The bytes for uuid.
             */
            public com.google.protobuf.ByteString
            getUuidBytes() {
                java.lang.Object ref = uuid_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    uuid_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <code>string uuid = 5;</code>
             * @param value The uuid to set.
             * @return This builder for chaining.
             */
            public Builder setUuid(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                uuid_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>string uuid = 5;</code>
             * @return This builder for chaining.
             */
            public Builder clearUuid() {

                uuid_ = getDefaultInstance().getUuid();
                onChanged();
                return this;
            }
            /**
             * <code>string uuid = 5;</code>
             * @param value The bytes for uuid to set.
             * @return This builder for chaining.
             */
            public Builder setUuidBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private java.lang.Object md5_ = "";
            /**
             * <code>string md5 = 6;</code>
             * @return The md5.
             */
            public java.lang.String getMd5() {
                java.lang.Object ref = md5_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    md5_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <code>string md5 = 6;</code>
             * @return The bytes for md5.
             */
            public com.google.protobuf.ByteString
            getMd5Bytes() {
                java.lang.Object ref = md5_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    md5_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <code>string md5 = 6;</code>
             * @param value The md5 to set.
             * @return This builder for chaining.
             */
            public Builder setMd5(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                md5_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>string md5 = 6;</code>
             * @return This builder for chaining.
             */
            public Builder clearMd5() {

                md5_ = getDefaultInstance().getMd5();
                onChanged();
                return this;
            }
            /**
             * <code>string md5 = 6;</code>
             * @param value The bytes for md5 to set.
             * @return This builder for chaining.
             */
            public Builder setMd5Bytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private java.lang.Object serverStorageSource_ = "";
            /**
             * <code>string serverStorageSource = 7;</code>
             * @return The serverStorageSource.
             */
            public java.lang.String getServerStorageSource() {
                java.lang.Object ref = serverStorageSource_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    serverStorageSource_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <code>string serverStorageSource = 7;</code>
             * @return The bytes for serverStorageSource.
             */
            public com.google.protobuf.ByteString
            getServerStorageSourceBytes() {
                java.lang.Object ref = serverStorageSource_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    serverStorageSource_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <code>string serverStorageSource = 7;</code>
             * @param value The serverStorageSource to set.
             * @return This builder for chaining.
             */
            public Builder setServerStorageSource(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                serverStorageSource_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>string serverStorageSource = 7;</code>
             * @return This builder for chaining.
             */
            public Builder clearServerStorageSource() {

                serverStorageSource_ = getDefaultInstance().getServerStorageSource();
                onChanged();
                return this;
            }
            /**
             * <code>string serverStorageSource = 7;</code>
             * @param value The bytes for serverStorageSource to set.
             * @return This builder for chaining.
             */
            public Builder setServerStorageSourceBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private java.lang.Object thumbMsgUrl_ = "";
            /**
             * <code>string thumbMsgUrl = 8;</code>
             * @return The thumbMsgUrl.
             */
            public java.lang.String getThumbMsgUrl() {
                java.lang.Object ref = thumbMsgUrl_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    thumbMsgUrl_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <code>string thumbMsgUrl = 8;</code>
             * @return The bytes for thumbMsgUrl.
             */
            public com.google.protobuf.ByteString
            getThumbMsgUrlBytes() {
                java.lang.Object ref = thumbMsgUrl_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    thumbMsgUrl_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <code>string thumbMsgUrl = 8;</code>
             * @param value The thumbMsgUrl to set.
             * @return This builder for chaining.
             */
            public Builder setThumbMsgUrl(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                thumbMsgUrl_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>string thumbMsgUrl = 8;</code>
             * @return This builder for chaining.
             */
            public Builder clearThumbMsgUrl() {

                thumbMsgUrl_ = getDefaultInstance().getThumbMsgUrl();
                onChanged();
                return this;
            }
            /**
             * <code>string thumbMsgUrl = 8;</code>
             * @param value The bytes for thumbMsgUrl to set.
             * @return This builder for chaining.
             */
            public Builder setThumbMsgUrlBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private java.lang.Object bigMsgUrl_ = "";
            /**
             * <code>string bigMsgUrl = 9;</code>
             * @return The bigMsgUrl.
             */
            public java.lang.String getBigMsgUrl() {
                java.lang.Object ref = bigMsgUrl_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    bigMsgUrl_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <code>string bigMsgUrl = 9;</code>
             * @return The bytes for bigMsgUrl.
             */
            public com.google.protobuf.ByteString
            getBigMsgUrlBytes() {
                java.lang.Object ref = bigMsgUrl_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    bigMsgUrl_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <code>string bigMsgUrl = 9;</code>
             * @param value The bigMsgUrl to set.
             * @return This builder for chaining.
             */
            public Builder setBigMsgUrl(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                bigMsgUrl_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>string bigMsgUrl = 9;</code>
             * @return This builder for chaining.
             */
            public Builder clearBigMsgUrl() {

                bigMsgUrl_ = getDefaultInstance().getBigMsgUrl();
                onChanged();
                return this;
            }
            /**
             * <code>string bigMsgUrl = 9;</code>
             * @param value The bytes for bigMsgUrl to set.
             * @return This builder for chaining.
             */
            public Builder setBigMsgUrlBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private java.lang.Object rawMsgUrl_ = "";
            /**
             * <code>string rawMsgUrl = 10;</code>
             * @return The rawMsgUrl.
             */
            public java.lang.String getRawMsgUrl() {
                java.lang.Object ref = rawMsgUrl_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    rawMsgUrl_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <code>string rawMsgUrl = 10;</code>
             * @return The bytes for rawMsgUrl.
             */
            public com.google.protobuf.ByteString
            getRawMsgUrlBytes() {
                java.lang.Object ref = rawMsgUrl_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    rawMsgUrl_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <code>string rawMsgUrl = 10;</code>
             * @param value The rawMsgUrl to set.
             * @return This builder for chaining.
             */
            public Builder setRawMsgUrl(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                rawMsgUrl_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>string rawMsgUrl = 10;</code>
             * @return This builder for chaining.
             */
            public Builder clearRawMsgUrl() {

                rawMsgUrl_ = getDefaultInstance().getRawMsgUrl();
                onChanged();
                return this;
            }
            /**
             * <code>string rawMsgUrl = 10;</code>
             * @param value The bytes for rawMsgUrl to set.
             * @return This builder for chaining.
             */
            public Builder setRawMsgUrlBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private int fileSizeFlag_ ;
            /**
             * <code>int32 fileSizeFlag = 11;</code>
             * @return The fileSizeFlag.
             */
            @java.lang.Override
            public int getFileSizeFlag() {
                return fileSizeFlag_;
            }
            /**
             * <code>int32 fileSizeFlag = 11;</code>
             * @param value The fileSizeFlag to set.
             * @return This builder for chaining.
             */
            public Builder setFileSizeFlag(int value) {

                fileSizeFlag_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>int32 fileSizeFlag = 11;</code>
             * @return This builder for chaining.
             */
            public Builder clearFileSizeFlag() {

                fileSizeFlag_ = 0;
                onChanged();
                return this;
            }

            private int uiOperatorFlag_ ;
            /**
             * <code>int32 uiOperatorFlag = 12;</code>
             * @return The uiOperatorFlag.
             */
            @java.lang.Override
            public int getUiOperatorFlag() {
                return uiOperatorFlag_;
            }
            /**
             * <code>int32 uiOperatorFlag = 12;</code>
             * @param value The uiOperatorFlag to set.
             * @return This builder for chaining.
             */
            public Builder setUiOperatorFlag(int value) {

                uiOperatorFlag_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>int32 uiOperatorFlag = 12;</code>
             * @return This builder for chaining.
             */
            public Builder clearUiOperatorFlag() {

                uiOperatorFlag_ = 0;
                onChanged();
                return this;
            }

            private RichMsg.ForwardExtra forwardInfo_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    RichMsg.ForwardExtra, RichMsg.ForwardExtra.Builder, RichMsg.ForwardExtraOrBuilder> forwardInfoBuilder_;
            /**
             * <code>.ForwardExtra forwardInfo = 13;</code>
             * @return Whether the forwardInfo field is set.
             */
            public boolean hasForwardInfo() {
                return forwardInfoBuilder_ != null || forwardInfo_ != null;
            }
            /**
             * <code>.ForwardExtra forwardInfo = 13;</code>
             * @return The forwardInfo.
             */
            public RichMsg.ForwardExtra getForwardInfo() {
                if (forwardInfoBuilder_ == null) {
                    return forwardInfo_ == null ? RichMsg.ForwardExtra.getDefaultInstance() : forwardInfo_;
                } else {
                    return forwardInfoBuilder_.getMessage();
                }
            }
            /**
             * <code>.ForwardExtra forwardInfo = 13;</code>
             */
            public Builder setForwardInfo(RichMsg.ForwardExtra value) {
                if (forwardInfoBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    forwardInfo_ = value;
                    onChanged();
                } else {
                    forwardInfoBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <code>.ForwardExtra forwardInfo = 13;</code>
             */
            public Builder setForwardInfo(
                    RichMsg.ForwardExtra.Builder builderForValue) {
                if (forwardInfoBuilder_ == null) {
                    forwardInfo_ = builderForValue.build();
                    onChanged();
                } else {
                    forwardInfoBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <code>.ForwardExtra forwardInfo = 13;</code>
             */
            public Builder mergeForwardInfo(RichMsg.ForwardExtra value) {
                if (forwardInfoBuilder_ == null) {
                    if (forwardInfo_ != null) {
                        forwardInfo_ =
                                RichMsg.ForwardExtra.newBuilder(forwardInfo_).mergeFrom(value).buildPartial();
                    } else {
                        forwardInfo_ = value;
                    }
                    onChanged();
                } else {
                    forwardInfoBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <code>.ForwardExtra forwardInfo = 13;</code>
             */
            public Builder clearForwardInfo() {
                if (forwardInfoBuilder_ == null) {
                    forwardInfo_ = null;
                    onChanged();
                } else {
                    forwardInfo_ = null;
                    forwardInfoBuilder_ = null;
                }

                return this;
            }
            /**
             * <code>.ForwardExtra forwardInfo = 13;</code>
             */
            public RichMsg.ForwardExtra.Builder getForwardInfoBuilder() {

                onChanged();
                return getForwardInfoFieldBuilder().getBuilder();
            }
            /**
             * <code>.ForwardExtra forwardInfo = 13;</code>
             */
            public RichMsg.ForwardExtraOrBuilder getForwardInfoOrBuilder() {
                if (forwardInfoBuilder_ != null) {
                    return forwardInfoBuilder_.getMessageOrBuilder();
                } else {
                    return forwardInfo_ == null ?
                            RichMsg.ForwardExtra.getDefaultInstance() : forwardInfo_;
                }
            }
            /**
             * <code>.ForwardExtra forwardInfo = 13;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    RichMsg.ForwardExtra, RichMsg.ForwardExtra.Builder, RichMsg.ForwardExtraOrBuilder>
            getForwardInfoFieldBuilder() {
                if (forwardInfoBuilder_ == null) {
                    forwardInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            RichMsg.ForwardExtra, RichMsg.ForwardExtra.Builder, RichMsg.ForwardExtraOrBuilder>(
                            getForwardInfo(),
                            getParentForChildren(),
                            isClean());
                    forwardInfo_ = null;
                }
                return forwardInfoBuilder_;
            }

            private int version_ ;
            /**
             * <code>int32 version = 14;</code>
             * @return The version.
             */
            @java.lang.Override
            public int getVersion() {
                return version_;
            }
            /**
             * <code>int32 version = 14;</code>
             * @param value The version to set.
             * @return This builder for chaining.
             */
            public Builder setVersion(int value) {

                version_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>int32 version = 14;</code>
             * @return This builder for chaining.
             */
            public Builder clearVersion() {

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

            private int isReport_ ;
            /**
             * <code>int32 isReport = 15;</code>
             * @return The isReport.
             */
            @java.lang.Override
            public int getIsReport() {
                return isReport_;
            }
            /**
             * <code>int32 isReport = 15;</code>
             * @param value The isReport to set.
             * @return This builder for chaining.
             */
            public Builder setIsReport(int value) {

                isReport_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>int32 isReport = 15;</code>
             * @return This builder for chaining.
             */
            public Builder clearIsReport() {

                isReport_ = 0;
                onChanged();
                return this;
            }

            private long groupFileID_ ;
            /**
             * <code>uint64 groupFileID = 16;</code>
             * @return The groupFileID.
             */
            @java.lang.Override
            public long getGroupFileID() {
                return groupFileID_;
            }
            /**
             * <code>uint64 groupFileID = 16;</code>
             * @param value The groupFileID to set.
             * @return This builder for chaining.
             */
            public Builder setGroupFileID(long value) {

                groupFileID_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>uint64 groupFileID = 16;</code>
             * @return This builder for chaining.
             */
            public Builder clearGroupFileID() {

                groupFileID_ = 0L;
                onChanged();
                return this;
            }

            private java.lang.Object localUUID_ = "";
            /**
             * <code>string localUUID = 17;</code>
             * @return The localUUID.
             */
            public java.lang.String getLocalUUID() {
                java.lang.Object ref = localUUID_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    localUUID_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <code>string localUUID = 17;</code>
             * @return The bytes for localUUID.
             */
            public com.google.protobuf.ByteString
            getLocalUUIDBytes() {
                java.lang.Object ref = localUUID_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    localUUID_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <code>string localUUID = 17;</code>
             * @param value The localUUID to set.
             * @return This builder for chaining.
             */
            public Builder setLocalUUID(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                localUUID_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>string localUUID = 17;</code>
             * @return This builder for chaining.
             */
            public Builder clearLocalUUID() {

                localUUID_ = getDefaultInstance().getLocalUUID();
                onChanged();
                return this;
            }
            /**
             * <code>string localUUID = 17;</code>
             * @param value The bytes for localUUID to set.
             * @return This builder for chaining.
             */
            public Builder setLocalUUIDBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private int preDownState_ ;
            /**
             * <code>int32 preDownState = 18;</code>
             * @return The preDownState.
             */
            @java.lang.Override
            public int getPreDownState() {
                return preDownState_;
            }
            /**
             * <code>int32 preDownState = 18;</code>
             * @param value The preDownState to set.
             * @return This builder for chaining.
             */
            public Builder setPreDownState(int value) {

                preDownState_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>int32 preDownState = 18;</code>
             * @return This builder for chaining.
             */
            public Builder clearPreDownState() {

                preDownState_ = 0;
                onChanged();
                return this;
            }

            private int preDownNetwork_ ;
            /**
             * <code>int32 preDownNetwork = 19;</code>
             * @return The preDownNetwork.
             */
            @java.lang.Override
            public int getPreDownNetwork() {
                return preDownNetwork_;
            }
            /**
             * <code>int32 preDownNetwork = 19;</code>
             * @param value The preDownNetwork to set.
             * @return This builder for chaining.
             */
            public Builder setPreDownNetwork(int value) {

                preDownNetwork_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>int32 preDownNetwork = 19;</code>
             * @return This builder for chaining.
             */
            public Builder clearPreDownNetwork() {

                preDownNetwork_ = 0;
                onChanged();
                return this;
            }

            private int previewed_ ;
            /**
             * <code>int32 previewed = 20;</code>
             * @return The previewed.
             */
            @java.lang.Override
            public int getPreviewed() {
                return previewed_;
            }
            /**
             * <code>int32 previewed = 20;</code>
             * @param value The previewed to set.
             * @return This builder for chaining.
             */
            public Builder setPreviewed(int value) {

                previewed_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>int32 previewed = 20;</code>
             * @return This builder for chaining.
             */
            public Builder clearPreviewed() {

                previewed_ = 0;
                onChanged();
                return this;
            }

            private int uint32ThumbWidth_ ;
            /**
             * <code>uint32 uint32_thumb_width = 21;</code>
             * @return The uint32ThumbWidth.
             */
            @java.lang.Override
            public int getUint32ThumbWidth() {
                return uint32ThumbWidth_;
            }
            /**
             * <code>uint32 uint32_thumb_width = 21;</code>
             * @param value The uint32ThumbWidth to set.
             * @return This builder for chaining.
             */
            public Builder setUint32ThumbWidth(int value) {

                uint32ThumbWidth_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>uint32 uint32_thumb_width = 21;</code>
             * @return This builder for chaining.
             */
            public Builder clearUint32ThumbWidth() {

                uint32ThumbWidth_ = 0;
                onChanged();
                return this;
            }

            private int uint32ThumbHeight_ ;
            /**
             * <code>uint32 uint32_thumb_height = 22;</code>
             * @return The uint32ThumbHeight.
             */
            @java.lang.Override
            public int getUint32ThumbHeight() {
                return uint32ThumbHeight_;
            }
            /**
             * <code>uint32 uint32_thumb_height = 22;</code>
             * @param value The uint32ThumbHeight to set.
             * @return This builder for chaining.
             */
            public Builder setUint32ThumbHeight(int value) {

                uint32ThumbHeight_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>uint32 uint32_thumb_height = 22;</code>
             * @return This builder for chaining.
             */
            public Builder clearUint32ThumbHeight() {

                uint32ThumbHeight_ = 0;
                onChanged();
                return this;
            }

            private int uint32Width_ ;
            /**
             * <code>uint32 uint32_width = 23;</code>
             * @return The uint32Width.
             */
            @java.lang.Override
            public int getUint32Width() {
                return uint32Width_;
            }
            /**
             * <code>uint32 uint32_width = 23;</code>
             * @param value The uint32Width to set.
             * @return This builder for chaining.
             */
            public Builder setUint32Width(int value) {

                uint32Width_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>uint32 uint32_width = 23;</code>
             * @return This builder for chaining.
             */
            public Builder clearUint32Width() {

                uint32Width_ = 0;
                onChanged();
                return this;
            }

            private int uint32Height_ ;
            /**
             * <code>uint32 uint32_height = 24;</code>
             * @return The uint32Height.
             */
            @java.lang.Override
            public int getUint32Height() {
                return uint32Height_;
            }
            /**
             * <code>uint32 uint32_height = 24;</code>
             * @param value The uint32Height to set.
             * @return This builder for chaining.
             */
            public Builder setUint32Height(int value) {

                uint32Height_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>uint32 uint32_height = 24;</code>
             * @return This builder for chaining.
             */
            public Builder clearUint32Height() {

                uint32Height_ = 0;
                onChanged();
                return this;
            }

            private int uint32ImageType_ ;
            /**
             * <code>uint32 uint32_image_type = 25;</code>
             * @return The uint32ImageType.
             */
            @java.lang.Override
            public int getUint32ImageType() {
                return uint32ImageType_;
            }
            /**
             * <code>uint32 uint32_image_type = 25;</code>
             * @param value The uint32ImageType to set.
             * @return This builder for chaining.
             */
            public Builder setUint32ImageType(int value) {

                uint32ImageType_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>uint32 uint32_image_type = 25;</code>
             * @return This builder for chaining.
             */
            public Builder clearUint32ImageType() {

                uint32ImageType_ = 0;
                onChanged();
                return this;
            }

            private int uint32ShowLen_ ;
            /**
             * <code>uint32 uint32_show_len = 26;</code>
             * @return The uint32ShowLen.
             */
            @java.lang.Override
            public int getUint32ShowLen() {
                return uint32ShowLen_;
            }
            /**
             * <code>uint32 uint32_show_len = 26;</code>
             * @param value The uint32ShowLen to set.
             * @return This builder for chaining.
             */
            public Builder setUint32ShowLen(int value) {

                uint32ShowLen_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>uint32 uint32_show_len = 26;</code>
             * @return This builder for chaining.
             */
            public Builder clearUint32ShowLen() {

                uint32ShowLen_ = 0;
                onChanged();
                return this;
            }

            private int uint32DownloadLen_ ;
            /**
             * <code>uint32 uint32_download_len = 27;</code>
             * @return The uint32DownloadLen.
             */
            @java.lang.Override
            public int getUint32DownloadLen() {
                return uint32DownloadLen_;
            }
            /**
             * <code>uint32 uint32_download_len = 27;</code>
             * @param value The uint32DownloadLen to set.
             * @return This builder for chaining.
             */
            public Builder setUint32DownloadLen(int value) {

                uint32DownloadLen_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>uint32 uint32_download_len = 27;</code>
             * @return This builder for chaining.
             */
            public Builder clearUint32DownloadLen() {

                uint32DownloadLen_ = 0;
                onChanged();
                return this;
            }

            private int uint32CurrentLen_ ;
            /**
             * <code>uint32 uint32_current_len = 28;</code>
             * @return The uint32CurrentLen.
             */
            @java.lang.Override
            public int getUint32CurrentLen() {
                return uint32CurrentLen_;
            }
            /**
             * <code>uint32 uint32_current_len = 28;</code>
             * @param value The uint32CurrentLen to set.
             * @return This builder for chaining.
             */
            public Builder setUint32CurrentLen(int value) {

                uint32CurrentLen_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>uint32 uint32_current_len = 28;</code>
             * @return This builder for chaining.
             */
            public Builder clearUint32CurrentLen() {

                uint32CurrentLen_ = 0;
                onChanged();
                return this;
            }

            private int notPreDownloadReason_ ;
            /**
             * <code>uint32 notPreDownloadReason = 29;</code>
             * @return The notPreDownloadReason.
             */
            @java.lang.Override
            public int getNotPreDownloadReason() {
                return notPreDownloadReason_;
            }
            /**
             * <code>uint32 notPreDownloadReason = 29;</code>
             * @param value The notPreDownloadReason to set.
             * @return This builder for chaining.
             */
            public Builder setNotPreDownloadReason(int value) {

                notPreDownloadReason_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>uint32 notPreDownloadReason = 29;</code>
             * @return This builder for chaining.
             */
            public Builder clearNotPreDownloadReason() {

                notPreDownloadReason_ = 0;
                onChanged();
                return this;
            }

            private boolean enableEnc_ ;
            /**
             * <code>bool enableEnc = 30;</code>
             * @return The enableEnc.
             */
            @java.lang.Override
            public boolean getEnableEnc() {
                return enableEnc_;
            }
            /**
             * <code>bool enableEnc = 30;</code>
             * @param value The enableEnc to set.
             * @return This builder for chaining.
             */
            public Builder setEnableEnc(boolean value) {

                enableEnc_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>bool enableEnc = 30;</code>
             * @return This builder for chaining.
             */
            public Builder clearEnableEnc() {

                enableEnc_ = false;
                onChanged();
                return this;
            }

            private java.lang.Object bigThumbMsgUrl_ = "";
            /**
             * <code>string bigThumbMsgUrl = 31;</code>
             * @return The bigThumbMsgUrl.
             */
            public java.lang.String getBigThumbMsgUrl() {
                java.lang.Object ref = bigThumbMsgUrl_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    bigThumbMsgUrl_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <code>string bigThumbMsgUrl = 31;</code>
             * @return The bytes for bigThumbMsgUrl.
             */
            public com.google.protobuf.ByteString
            getBigThumbMsgUrlBytes() {
                java.lang.Object ref = bigThumbMsgUrl_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    bigThumbMsgUrl_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <code>string bigThumbMsgUrl = 31;</code>
             * @param value The bigThumbMsgUrl to set.
             * @return This builder for chaining.
             */
            public Builder setBigThumbMsgUrl(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                bigThumbMsgUrl_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>string bigThumbMsgUrl = 31;</code>
             * @return This builder for chaining.
             */
            public Builder clearBigThumbMsgUrl() {

                bigThumbMsgUrl_ = getDefaultInstance().getBigThumbMsgUrl();
                onChanged();
                return this;
            }
            /**
             * <code>string bigThumbMsgUrl = 31;</code>
             * @param value The bytes for bigThumbMsgUrl to set.
             * @return This builder for chaining.
             */
            public Builder setBigThumbMsgUrlBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private com.google.protobuf.ByteString bytesPbReserved_ = com.google.protobuf.ByteString.EMPTY;
            /**
             * <code>bytes bytes_pb_reserved = 32;</code>
             * @return The bytesPbReserved.
             */
            @java.lang.Override
            public com.google.protobuf.ByteString getBytesPbReserved() {
                return bytesPbReserved_;
            }
            /**
             * <code>bytes bytes_pb_reserved = 32;</code>
             * @param value The bytesPbReserved to set.
             * @return This builder for chaining.
             */
            public Builder setBytesPbReserved(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                bytesPbReserved_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>bytes bytes_pb_reserved = 32;</code>
             * @return This builder for chaining.
             */
            public Builder clearBytesPbReserved() {

                bytesPbReserved_ = getDefaultInstance().getBytesPbReserved();
                onChanged();
                return this;
            }

            private boolean boolStoryPicSendToRecent_ ;
            /**
             * <code>bool bool_story_pic_send_to_recent = 33;</code>
             * @return The boolStoryPicSendToRecent.
             */
            @java.lang.Override
            public boolean getBoolStoryPicSendToRecent() {
                return boolStoryPicSendToRecent_;
            }
            /**
             * <code>bool bool_story_pic_send_to_recent = 33;</code>
             * @param value The boolStoryPicSendToRecent to set.
             * @return This builder for chaining.
             */
            public Builder setBoolStoryPicSendToRecent(boolean value) {

                boolStoryPicSendToRecent_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>bool bool_story_pic_send_to_recent = 33;</code>
             * @return This builder for chaining.
             */
            public Builder clearBoolStoryPicSendToRecent() {

                boolStoryPicSendToRecent_ = 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:PicRec)
        }

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

        public static RichMsg.PicRec getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public RichMsg.PicRec getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    public interface MarketFaceRecOrBuilder extends
            // @@protoc_insertion_point(interface_extends:MarketFaceRec)
            com.google.protobuf.MessageOrBuilder {
    }
    /**
     * Protobuf type {@code MarketFaceRec}
     */
    public static final class MarketFaceRec extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:MarketFaceRec)
            MarketFaceRecOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use MarketFaceRec.newBuilder() to construct.
        private MarketFaceRec(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private MarketFaceRec() {
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private MarketFaceRec(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            this();
            if (extensionRegistry == null) {
                throw new java.lang.NullPointerException();
            }
            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
                    com.google.protobuf.UnknownFieldSet.newBuilder();
            try {
                boolean done = false;
                while (!done) {
                    int tag = input.readTag();
                    switch (tag) {
                        case 0:
                            done = true;
                            break;
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
                throw new com.google.protobuf.InvalidProtocolBufferException(
                        e).setUnfinishedMessage(this);
            } finally {
                this.unknownFields = unknownFields.build();
                makeExtensionsImmutable();
            }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
            return RichMsg.internal_static_MarketFaceRec_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return RichMsg.internal_static_MarketFaceRec_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            RichMsg.MarketFaceRec.class, RichMsg.MarketFaceRec.Builder.class);
        }

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

            memoizedIsInitialized = 1;
            return true;
        }

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

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

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

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

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

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

        public static RichMsg.MarketFaceRec parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static RichMsg.MarketFaceRec parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static RichMsg.MarketFaceRec parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static RichMsg.MarketFaceRec parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static RichMsg.MarketFaceRec parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static RichMsg.MarketFaceRec parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static RichMsg.MarketFaceRec parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static RichMsg.MarketFaceRec 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 RichMsg.MarketFaceRec parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static RichMsg.MarketFaceRec 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 RichMsg.MarketFaceRec parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static RichMsg.MarketFaceRec 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(RichMsg.MarketFaceRec 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 MarketFaceRec}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:MarketFaceRec)
                RichMsg.MarketFaceRecOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return RichMsg.internal_static_MarketFaceRec_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return RichMsg.internal_static_MarketFaceRec_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                RichMsg.MarketFaceRec.class, RichMsg.MarketFaceRec.Builder.class);
            }

            // Construct using RichMsg.MarketFaceRec.newBuilder()
            private Builder() {
                maybeForceBuilderInitialization();
            }

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

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return RichMsg.internal_static_MarketFaceRec_descriptor;
            }

            @java.lang.Override
            public RichMsg.MarketFaceRec getDefaultInstanceForType() {
                return RichMsg.MarketFaceRec.getDefaultInstance();
            }

            @java.lang.Override
            public RichMsg.MarketFaceRec build() {
                RichMsg.MarketFaceRec result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public RichMsg.MarketFaceRec buildPartial() {
                RichMsg.MarketFaceRec result = new RichMsg.MarketFaceRec(this);
                onBuilt();
                return result;
            }

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

            public Builder mergeFrom(RichMsg.MarketFaceRec other) {
                if (other == RichMsg.MarketFaceRec.getDefaultInstance()) return this;
                this.mergeUnknownFields(other.unknownFields);
                onChanged();
                return this;
            }

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

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

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


            // @@protoc_insertion_point(builder_scope:MarketFaceRec)
        }

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

        public static RichMsg.MarketFaceRec getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public RichMsg.MarketFaceRec getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

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

        /**
         * <code>repeated .Elem elems = 1;</code>
         */
        java.util.List<RichMsg.Elem>
        getElemsList();
        /**
         * <code>repeated .Elem elems = 1;</code>
         */
        RichMsg.Elem getElems(int index);
        /**
         * <code>repeated .Elem elems = 1;</code>
         */
        int getElemsCount();
        /**
         * <code>repeated .Elem elems = 1;</code>
         */
        java.util.List<? extends RichMsg.ElemOrBuilder>
        getElemsOrBuilderList();
        /**
         * <code>repeated .Elem elems = 1;</code>
         */
        RichMsg.ElemOrBuilder getElemsOrBuilder(
                int index);
    }
    /**
     * Protobuf type {@code Msg}
     */
    public static final class Msg extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:Msg)
            MsgOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use Msg.newBuilder() to construct.
        private Msg(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private Msg() {
            elems_ = java.util.Collections.emptyList();
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private Msg(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            this();
            if (extensionRegistry == null) {
                throw new java.lang.NullPointerException();
            }
            int mutable_bitField0_ = 0;
            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
                    com.google.protobuf.UnknownFieldSet.newBuilder();
            try {
                boolean done = false;
                while (!done) {
                    int tag = input.readTag();
                    switch (tag) {
                        case 0:
                            done = true;
                            break;
                        case 10: {
                            if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                                elems_ = new java.util.ArrayList<RichMsg.Elem>();
                                mutable_bitField0_ |= 0x00000001;
                            }
                            elems_.add(
                                    input.readMessage(RichMsg.Elem.parser(), extensionRegistry));
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
                throw new com.google.protobuf.InvalidProtocolBufferException(
                        e).setUnfinishedMessage(this);
            } finally {
                if (((mutable_bitField0_ & 0x00000001) != 0)) {
                    elems_ = java.util.Collections.unmodifiableList(elems_);
                }
                this.unknownFields = unknownFields.build();
                makeExtensionsImmutable();
            }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
            return RichMsg.internal_static_Msg_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return RichMsg.internal_static_Msg_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            RichMsg.Msg.class, RichMsg.Msg.Builder.class);
        }

        public static final int ELEMS_FIELD_NUMBER = 1;
        private java.util.List<RichMsg.Elem> elems_;
        /**
         * <code>repeated .Elem elems = 1;</code>
         */
        @java.lang.Override
        public java.util.List<RichMsg.Elem> getElemsList() {
            return elems_;
        }
        /**
         * <code>repeated .Elem elems = 1;</code>
         */
        @java.lang.Override
        public java.util.List<? extends RichMsg.ElemOrBuilder>
        getElemsOrBuilderList() {
            return elems_;
        }
        /**
         * <code>repeated .Elem elems = 1;</code>
         */
        @java.lang.Override
        public int getElemsCount() {
            return elems_.size();
        }
        /**
         * <code>repeated .Elem elems = 1;</code>
         */
        @java.lang.Override
        public RichMsg.Elem getElems(int index) {
            return elems_.get(index);
        }
        /**
         * <code>repeated .Elem elems = 1;</code>
         */
        @java.lang.Override
        public RichMsg.ElemOrBuilder getElemsOrBuilder(
                int index) {
            return elems_.get(index);
        }

        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 {
            for (int i = 0; i < elems_.size(); i++) {
                output.writeMessage(1, elems_.get(i));
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            for (int i = 0; i < elems_.size(); i++) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(1, elems_.get(i));
            }
            size += unknownFields.getSerializedSize();
            memoizedSize = size;
            return size;
        }

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

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

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

        public static RichMsg.Msg parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static RichMsg.Msg parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static RichMsg.Msg parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static RichMsg.Msg parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static RichMsg.Msg parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static RichMsg.Msg parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static RichMsg.Msg parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static RichMsg.Msg 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 RichMsg.Msg parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static RichMsg.Msg 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 RichMsg.Msg parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static RichMsg.Msg 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(RichMsg.Msg 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 Msg}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:Msg)
                RichMsg.MsgOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return RichMsg.internal_static_Msg_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return RichMsg.internal_static_Msg_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                RichMsg.Msg.class, RichMsg.Msg.Builder.class);
            }

            // Construct using RichMsg.Msg.newBuilder()
            private Builder() {
                maybeForceBuilderInitialization();
            }

            private Builder(
                    com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
                super(parent);
                maybeForceBuilderInitialization();
            }
            private void maybeForceBuilderInitialization() {
                if (com.google.protobuf.GeneratedMessageV3
                        .alwaysUseFieldBuilders) {
                    getElemsFieldBuilder();
                }
            }
            @java.lang.Override
            public Builder clear() {
                super.clear();
                if (elemsBuilder_ == null) {
                    elems_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                } else {
                    elemsBuilder_.clear();
                }
                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return RichMsg.internal_static_Msg_descriptor;
            }

            @java.lang.Override
            public RichMsg.Msg getDefaultInstanceForType() {
                return RichMsg.Msg.getDefaultInstance();
            }

            @java.lang.Override
            public RichMsg.Msg build() {
                RichMsg.Msg result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public RichMsg.Msg buildPartial() {
                RichMsg.Msg result = new RichMsg.Msg(this);
                int from_bitField0_ = bitField0_;
                if (elemsBuilder_ == null) {
                    if (((bitField0_ & 0x00000001) != 0)) {
                        elems_ = java.util.Collections.unmodifiableList(elems_);
                        bitField0_ = (bitField0_ & ~0x00000001);
                    }
                    result.elems_ = elems_;
                } else {
                    result.elems_ = elemsBuilder_.build();
                }
                onBuilt();
                return result;
            }

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

            public Builder mergeFrom(RichMsg.Msg other) {
                if (other == RichMsg.Msg.getDefaultInstance()) return this;
                if (elemsBuilder_ == null) {
                    if (!other.elems_.isEmpty()) {
                        if (elems_.isEmpty()) {
                            elems_ = other.elems_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                        } else {
                            ensureElemsIsMutable();
                            elems_.addAll(other.elems_);
                        }
                        onChanged();
                    }
                } else {
                    if (!other.elems_.isEmpty()) {
                        if (elemsBuilder_.isEmpty()) {
                            elemsBuilder_.dispose();
                            elemsBuilder_ = null;
                            elems_ = other.elems_;
                            bitField0_ = (bitField0_ & ~0x00000001);
                            elemsBuilder_ =
                                    com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                                            getElemsFieldBuilder() : null;
                        } else {
                            elemsBuilder_.addAllMessages(other.elems_);
                        }
                    }
                }
                this.mergeUnknownFields(other.unknownFields);
                onChanged();
                return this;
            }

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

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

            private java.util.List<RichMsg.Elem> elems_ =
                    java.util.Collections.emptyList();
            private void ensureElemsIsMutable() {
                if (!((bitField0_ & 0x00000001) != 0)) {
                    elems_ = new java.util.ArrayList<RichMsg.Elem>(elems_);
                    bitField0_ |= 0x00000001;
                }
            }

            private com.google.protobuf.RepeatedFieldBuilderV3<
                    RichMsg.Elem, RichMsg.Elem.Builder, RichMsg.ElemOrBuilder> elemsBuilder_;

            /**
             * <code>repeated .Elem elems = 1;</code>
             */
            public java.util.List<RichMsg.Elem> getElemsList() {
                if (elemsBuilder_ == null) {
                    return java.util.Collections.unmodifiableList(elems_);
                } else {
                    return elemsBuilder_.getMessageList();
                }
            }
            /**
             * <code>repeated .Elem elems = 1;</code>
             */
            public int getElemsCount() {
                if (elemsBuilder_ == null) {
                    return elems_.size();
                } else {
                    return elemsBuilder_.getCount();
                }
            }
            /**
             * <code>repeated .Elem elems = 1;</code>
             */
            public RichMsg.Elem getElems(int index) {
                if (elemsBuilder_ == null) {
                    return elems_.get(index);
                } else {
                    return elemsBuilder_.getMessage(index);
                }
            }
            /**
             * <code>repeated .Elem elems = 1;</code>
             */
            public Builder setElems(
                    int index, RichMsg.Elem value) {
                if (elemsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureElemsIsMutable();
                    elems_.set(index, value);
                    onChanged();
                } else {
                    elemsBuilder_.setMessage(index, value);
                }
                return this;
            }
            /**
             * <code>repeated .Elem elems = 1;</code>
             */
            public Builder setElems(
                    int index, RichMsg.Elem.Builder builderForValue) {
                if (elemsBuilder_ == null) {
                    ensureElemsIsMutable();
                    elems_.set(index, builderForValue.build());
                    onChanged();
                } else {
                    elemsBuilder_.setMessage(index, builderForValue.build());
                }
                return this;
            }
            /**
             * <code>repeated .Elem elems = 1;</code>
             */
            public Builder addElems(RichMsg.Elem value) {
                if (elemsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureElemsIsMutable();
                    elems_.add(value);
                    onChanged();
                } else {
                    elemsBuilder_.addMessage(value);
                }
                return this;
            }
            /**
             * <code>repeated .Elem elems = 1;</code>
             */
            public Builder addElems(
                    int index, RichMsg.Elem value) {
                if (elemsBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    ensureElemsIsMutable();
                    elems_.add(index, value);
                    onChanged();
                } else {
                    elemsBuilder_.addMessage(index, value);
                }
                return this;
            }
            /**
             * <code>repeated .Elem elems = 1;</code>
             */
            public Builder addElems(
                    RichMsg.Elem.Builder builderForValue) {
                if (elemsBuilder_ == null) {
                    ensureElemsIsMutable();
                    elems_.add(builderForValue.build());
                    onChanged();
                } else {
                    elemsBuilder_.addMessage(builderForValue.build());
                }
                return this;
            }
            /**
             * <code>repeated .Elem elems = 1;</code>
             */
            public Builder addElems(
                    int index, RichMsg.Elem.Builder builderForValue) {
                if (elemsBuilder_ == null) {
                    ensureElemsIsMutable();
                    elems_.add(index, builderForValue.build());
                    onChanged();
                } else {
                    elemsBuilder_.addMessage(index, builderForValue.build());
                }
                return this;
            }
            /**
             * <code>repeated .Elem elems = 1;</code>
             */
            public Builder addAllElems(
                    java.lang.Iterable<? extends RichMsg.Elem> values) {
                if (elemsBuilder_ == null) {
                    ensureElemsIsMutable();
                    com.google.protobuf.AbstractMessageLite.Builder.addAll(
                            values, elems_);
                    onChanged();
                } else {
                    elemsBuilder_.addAllMessages(values);
                }
                return this;
            }
            /**
             * <code>repeated .Elem elems = 1;</code>
             */
            public Builder clearElems() {
                if (elemsBuilder_ == null) {
                    elems_ = java.util.Collections.emptyList();
                    bitField0_ = (bitField0_ & ~0x00000001);
                    onChanged();
                } else {
                    elemsBuilder_.clear();
                }
                return this;
            }
            /**
             * <code>repeated .Elem elems = 1;</code>
             */
            public Builder removeElems(int index) {
                if (elemsBuilder_ == null) {
                    ensureElemsIsMutable();
                    elems_.remove(index);
                    onChanged();
                } else {
                    elemsBuilder_.remove(index);
                }
                return this;
            }
            /**
             * <code>repeated .Elem elems = 1;</code>
             */
            public RichMsg.Elem.Builder getElemsBuilder(
                    int index) {
                return getElemsFieldBuilder().getBuilder(index);
            }
            /**
             * <code>repeated .Elem elems = 1;</code>
             */
            public RichMsg.ElemOrBuilder getElemsOrBuilder(
                    int index) {
                if (elemsBuilder_ == null) {
                    return elems_.get(index);  } else {
                    return elemsBuilder_.getMessageOrBuilder(index);
                }
            }
            /**
             * <code>repeated .Elem elems = 1;</code>
             */
            public java.util.List<? extends RichMsg.ElemOrBuilder>
            getElemsOrBuilderList() {
                if (elemsBuilder_ != null) {
                    return elemsBuilder_.getMessageOrBuilderList();
                } else {
                    return java.util.Collections.unmodifiableList(elems_);
                }
            }
            /**
             * <code>repeated .Elem elems = 1;</code>
             */
            public RichMsg.Elem.Builder addElemsBuilder() {
                return getElemsFieldBuilder().addBuilder(
                        RichMsg.Elem.getDefaultInstance());
            }
            /**
             * <code>repeated .Elem elems = 1;</code>
             */
            public RichMsg.Elem.Builder addElemsBuilder(
                    int index) {
                return getElemsFieldBuilder().addBuilder(
                        index, RichMsg.Elem.getDefaultInstance());
            }
            /**
             * <code>repeated .Elem elems = 1;</code>
             */
            public java.util.List<RichMsg.Elem.Builder>
            getElemsBuilderList() {
                return getElemsFieldBuilder().getBuilderList();
            }
            private com.google.protobuf.RepeatedFieldBuilderV3<
                    RichMsg.Elem, RichMsg.Elem.Builder, RichMsg.ElemOrBuilder>
            getElemsFieldBuilder() {
                if (elemsBuilder_ == null) {
                    elemsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                            RichMsg.Elem, RichMsg.Elem.Builder, RichMsg.ElemOrBuilder>(
                            elems_,
                            ((bitField0_ & 0x00000001) != 0),
                            getParentForChildren(),
                            isClean());
                    elems_ = null;
                }
                return elemsBuilder_;
            }
            @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:Msg)
        }

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

        public static RichMsg.Msg getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public RichMsg.Msg getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

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

        /**
         * <code>bytes textMsg = 1;</code>
         * @return The textMsg.
         */
        com.google.protobuf.ByteString getTextMsg();

        /**
         * <code>bytes picMsg = 2;</code>
         * @return The picMsg.
         */
        com.google.protobuf.ByteString getPicMsg();

        /**
         * <code>.MarketFaceRec markfaceMsg = 3;</code>
         * @return Whether the markfaceMsg field is set.
         */
        boolean hasMarkfaceMsg();
        /**
         * <code>.MarketFaceRec markfaceMsg = 3;</code>
         * @return The markfaceMsg.
         */
        RichMsg.MarketFaceRec getMarkfaceMsg();
        /**
         * <code>.MarketFaceRec markfaceMsg = 3;</code>
         */
        RichMsg.MarketFaceRecOrBuilder getMarkfaceMsgOrBuilder();

        /**
         * <code>string sourceMsgInfo = 4;</code>
         * @return The sourceMsgInfo.
         */
        java.lang.String getSourceMsgInfo();
        /**
         * <code>string sourceMsgInfo = 4;</code>
         * @return The bytes for sourceMsgInfo.
         */
        com.google.protobuf.ByteString
        getSourceMsgInfoBytes();
    }
    /**
     * Protobuf type {@code Elem}
     */
    public static final class Elem extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:Elem)
            ElemOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use Elem.newBuilder() to construct.
        private Elem(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private Elem() {
            textMsg_ = com.google.protobuf.ByteString.EMPTY;
            picMsg_ = com.google.protobuf.ByteString.EMPTY;
            sourceMsgInfo_ = "";
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private Elem(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            this();
            if (extensionRegistry == null) {
                throw new java.lang.NullPointerException();
            }
            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
                    com.google.protobuf.UnknownFieldSet.newBuilder();
            try {
                boolean done = false;
                while (!done) {
                    int tag = input.readTag();
                    switch (tag) {
                        case 0:
                            done = true;
                            break;
                        case 10: {

                            textMsg_ = input.readBytes();
                            break;
                        }
                        case 18: {

                            picMsg_ = input.readBytes();
                            break;
                        }
                        case 26: {
                            RichMsg.MarketFaceRec.Builder subBuilder = null;
                            if (markfaceMsg_ != null) {
                                subBuilder = markfaceMsg_.toBuilder();
                            }
                            markfaceMsg_ = input.readMessage(RichMsg.MarketFaceRec.parser(), extensionRegistry);
                            if (subBuilder != null) {
                                subBuilder.mergeFrom(markfaceMsg_);
                                markfaceMsg_ = subBuilder.buildPartial();
                            }

                            break;
                        }
                        case 34: {
                            java.lang.String s = input.readStringRequireUtf8();

                            sourceMsgInfo_ = s;
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
                throw new com.google.protobuf.InvalidProtocolBufferException(
                        e).setUnfinishedMessage(this);
            } finally {
                this.unknownFields = unknownFields.build();
                makeExtensionsImmutable();
            }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
            return RichMsg.internal_static_Elem_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return RichMsg.internal_static_Elem_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            RichMsg.Elem.class, RichMsg.Elem.Builder.class);
        }

        public static final int TEXTMSG_FIELD_NUMBER = 1;
        private com.google.protobuf.ByteString textMsg_;
        /**
         * <code>bytes textMsg = 1;</code>
         * @return The textMsg.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getTextMsg() {
            return textMsg_;
        }

        public static final int PICMSG_FIELD_NUMBER = 2;
        private com.google.protobuf.ByteString picMsg_;
        /**
         * <code>bytes picMsg = 2;</code>
         * @return The picMsg.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString getPicMsg() {
            return picMsg_;
        }

        public static final int MARKFACEMSG_FIELD_NUMBER = 3;
        private RichMsg.MarketFaceRec markfaceMsg_;
        /**
         * <code>.MarketFaceRec markfaceMsg = 3;</code>
         * @return Whether the markfaceMsg field is set.
         */
        @java.lang.Override
        public boolean hasMarkfaceMsg() {
            return markfaceMsg_ != null;
        }
        /**
         * <code>.MarketFaceRec markfaceMsg = 3;</code>
         * @return The markfaceMsg.
         */
        @java.lang.Override
        public RichMsg.MarketFaceRec getMarkfaceMsg() {
            return markfaceMsg_ == null ? RichMsg.MarketFaceRec.getDefaultInstance() : markfaceMsg_;
        }
        /**
         * <code>.MarketFaceRec markfaceMsg = 3;</code>
         */
        @java.lang.Override
        public RichMsg.MarketFaceRecOrBuilder getMarkfaceMsgOrBuilder() {
            return getMarkfaceMsg();
        }

        public static final int SOURCEMSGINFO_FIELD_NUMBER = 4;
        private volatile java.lang.Object sourceMsgInfo_;
        /**
         * <code>string sourceMsgInfo = 4;</code>
         * @return The sourceMsgInfo.
         */
        @java.lang.Override
        public java.lang.String getSourceMsgInfo() {
            java.lang.Object ref = sourceMsgInfo_;
            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();
                sourceMsgInfo_ = s;
                return s;
            }
        }
        /**
         * <code>string sourceMsgInfo = 4;</code>
         * @return The bytes for sourceMsgInfo.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getSourceMsgInfoBytes() {
            java.lang.Object ref = sourceMsgInfo_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                sourceMsgInfo_ = 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 (!textMsg_.isEmpty()) {
                output.writeBytes(1, textMsg_);
            }
            if (!picMsg_.isEmpty()) {
                output.writeBytes(2, picMsg_);
            }
            if (markfaceMsg_ != null) {
                output.writeMessage(3, getMarkfaceMsg());
            }
            if (!getSourceMsgInfoBytes().isEmpty()) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 4, sourceMsgInfo_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (!textMsg_.isEmpty()) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBytesSize(1, textMsg_);
            }
            if (!picMsg_.isEmpty()) {
                size += com.google.protobuf.CodedOutputStream
                        .computeBytesSize(2, picMsg_);
            }
            if (markfaceMsg_ != null) {
                size += com.google.protobuf.CodedOutputStream
                        .computeMessageSize(3, getMarkfaceMsg());
            }
            if (!getSourceMsgInfoBytes().isEmpty()) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, sourceMsgInfo_);
            }
            size += unknownFields.getSerializedSize();
            memoizedSize = size;
            return size;
        }

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

            if (!getTextMsg()
                    .equals(other.getTextMsg())) return false;
            if (!getPicMsg()
                    .equals(other.getPicMsg())) return false;
            if (hasMarkfaceMsg() != other.hasMarkfaceMsg()) return false;
            if (hasMarkfaceMsg()) {
                if (!getMarkfaceMsg()
                        .equals(other.getMarkfaceMsg())) return false;
            }
            if (!getSourceMsgInfo()
                    .equals(other.getSourceMsgInfo())) return false;
            if (!unknownFields.equals(other.unknownFields)) return false;
            return true;
        }

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + TEXTMSG_FIELD_NUMBER;
            hash = (53 * hash) + getTextMsg().hashCode();
            hash = (37 * hash) + PICMSG_FIELD_NUMBER;
            hash = (53 * hash) + getPicMsg().hashCode();
            if (hasMarkfaceMsg()) {
                hash = (37 * hash) + MARKFACEMSG_FIELD_NUMBER;
                hash = (53 * hash) + getMarkfaceMsg().hashCode();
            }
            hash = (37 * hash) + SOURCEMSGINFO_FIELD_NUMBER;
            hash = (53 * hash) + getSourceMsgInfo().hashCode();
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static RichMsg.Elem parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static RichMsg.Elem parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static RichMsg.Elem parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static RichMsg.Elem parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static RichMsg.Elem parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static RichMsg.Elem parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static RichMsg.Elem parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static RichMsg.Elem 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 RichMsg.Elem parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static RichMsg.Elem 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 RichMsg.Elem parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static RichMsg.Elem 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(RichMsg.Elem 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 Elem}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:Elem)
                RichMsg.ElemOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return RichMsg.internal_static_Elem_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return RichMsg.internal_static_Elem_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                RichMsg.Elem.class, RichMsg.Elem.Builder.class);
            }

            // Construct using RichMsg.Elem.newBuilder()
            private Builder() {
                maybeForceBuilderInitialization();
            }

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

                picMsg_ = com.google.protobuf.ByteString.EMPTY;

                if (markfaceMsgBuilder_ == null) {
                    markfaceMsg_ = null;
                } else {
                    markfaceMsg_ = null;
                    markfaceMsgBuilder_ = null;
                }
                sourceMsgInfo_ = "";

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return RichMsg.internal_static_Elem_descriptor;
            }

            @java.lang.Override
            public RichMsg.Elem getDefaultInstanceForType() {
                return RichMsg.Elem.getDefaultInstance();
            }

            @java.lang.Override
            public RichMsg.Elem build() {
                RichMsg.Elem result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public RichMsg.Elem buildPartial() {
                RichMsg.Elem result = new RichMsg.Elem(this);
                result.textMsg_ = textMsg_;
                result.picMsg_ = picMsg_;
                if (markfaceMsgBuilder_ == null) {
                    result.markfaceMsg_ = markfaceMsg_;
                } else {
                    result.markfaceMsg_ = markfaceMsgBuilder_.build();
                }
                result.sourceMsgInfo_ = sourceMsgInfo_;
                onBuilt();
                return result;
            }

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

            public Builder mergeFrom(RichMsg.Elem other) {
                if (other == RichMsg.Elem.getDefaultInstance()) return this;
                if (other.getTextMsg() != com.google.protobuf.ByteString.EMPTY) {
                    setTextMsg(other.getTextMsg());
                }
                if (other.getPicMsg() != com.google.protobuf.ByteString.EMPTY) {
                    setPicMsg(other.getPicMsg());
                }
                if (other.hasMarkfaceMsg()) {
                    mergeMarkfaceMsg(other.getMarkfaceMsg());
                }
                if (!other.getSourceMsgInfo().isEmpty()) {
                    sourceMsgInfo_ = other.sourceMsgInfo_;
                    onChanged();
                }
                this.mergeUnknownFields(other.unknownFields);
                onChanged();
                return this;
            }

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

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

            private com.google.protobuf.ByteString textMsg_ = com.google.protobuf.ByteString.EMPTY;
            /**
             * <code>bytes textMsg = 1;</code>
             * @return The textMsg.
             */
            @java.lang.Override
            public com.google.protobuf.ByteString getTextMsg() {
                return textMsg_;
            }
            /**
             * <code>bytes textMsg = 1;</code>
             * @param value The textMsg to set.
             * @return This builder for chaining.
             */
            public Builder setTextMsg(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                textMsg_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>bytes textMsg = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearTextMsg() {

                textMsg_ = getDefaultInstance().getTextMsg();
                onChanged();
                return this;
            }

            private com.google.protobuf.ByteString picMsg_ = com.google.protobuf.ByteString.EMPTY;
            /**
             * <code>bytes picMsg = 2;</code>
             * @return The picMsg.
             */
            @java.lang.Override
            public com.google.protobuf.ByteString getPicMsg() {
                return picMsg_;
            }
            /**
             * <code>bytes picMsg = 2;</code>
             * @param value The picMsg to set.
             * @return This builder for chaining.
             */
            public Builder setPicMsg(com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                picMsg_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>bytes picMsg = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearPicMsg() {

                picMsg_ = getDefaultInstance().getPicMsg();
                onChanged();
                return this;
            }

            private RichMsg.MarketFaceRec markfaceMsg_;
            private com.google.protobuf.SingleFieldBuilderV3<
                    RichMsg.MarketFaceRec, RichMsg.MarketFaceRec.Builder, RichMsg.MarketFaceRecOrBuilder> markfaceMsgBuilder_;
            /**
             * <code>.MarketFaceRec markfaceMsg = 3;</code>
             * @return Whether the markfaceMsg field is set.
             */
            public boolean hasMarkfaceMsg() {
                return markfaceMsgBuilder_ != null || markfaceMsg_ != null;
            }
            /**
             * <code>.MarketFaceRec markfaceMsg = 3;</code>
             * @return The markfaceMsg.
             */
            public RichMsg.MarketFaceRec getMarkfaceMsg() {
                if (markfaceMsgBuilder_ == null) {
                    return markfaceMsg_ == null ? RichMsg.MarketFaceRec.getDefaultInstance() : markfaceMsg_;
                } else {
                    return markfaceMsgBuilder_.getMessage();
                }
            }
            /**
             * <code>.MarketFaceRec markfaceMsg = 3;</code>
             */
            public Builder setMarkfaceMsg(RichMsg.MarketFaceRec value) {
                if (markfaceMsgBuilder_ == null) {
                    if (value == null) {
                        throw new NullPointerException();
                    }
                    markfaceMsg_ = value;
                    onChanged();
                } else {
                    markfaceMsgBuilder_.setMessage(value);
                }

                return this;
            }
            /**
             * <code>.MarketFaceRec markfaceMsg = 3;</code>
             */
            public Builder setMarkfaceMsg(
                    RichMsg.MarketFaceRec.Builder builderForValue) {
                if (markfaceMsgBuilder_ == null) {
                    markfaceMsg_ = builderForValue.build();
                    onChanged();
                } else {
                    markfaceMsgBuilder_.setMessage(builderForValue.build());
                }

                return this;
            }
            /**
             * <code>.MarketFaceRec markfaceMsg = 3;</code>
             */
            public Builder mergeMarkfaceMsg(RichMsg.MarketFaceRec value) {
                if (markfaceMsgBuilder_ == null) {
                    if (markfaceMsg_ != null) {
                        markfaceMsg_ =
                                RichMsg.MarketFaceRec.newBuilder(markfaceMsg_).mergeFrom(value).buildPartial();
                    } else {
                        markfaceMsg_ = value;
                    }
                    onChanged();
                } else {
                    markfaceMsgBuilder_.mergeFrom(value);
                }

                return this;
            }
            /**
             * <code>.MarketFaceRec markfaceMsg = 3;</code>
             */
            public Builder clearMarkfaceMsg() {
                if (markfaceMsgBuilder_ == null) {
                    markfaceMsg_ = null;
                    onChanged();
                } else {
                    markfaceMsg_ = null;
                    markfaceMsgBuilder_ = null;
                }

                return this;
            }
            /**
             * <code>.MarketFaceRec markfaceMsg = 3;</code>
             */
            public RichMsg.MarketFaceRec.Builder getMarkfaceMsgBuilder() {

                onChanged();
                return getMarkfaceMsgFieldBuilder().getBuilder();
            }
            /**
             * <code>.MarketFaceRec markfaceMsg = 3;</code>
             */
            public RichMsg.MarketFaceRecOrBuilder getMarkfaceMsgOrBuilder() {
                if (markfaceMsgBuilder_ != null) {
                    return markfaceMsgBuilder_.getMessageOrBuilder();
                } else {
                    return markfaceMsg_ == null ?
                            RichMsg.MarketFaceRec.getDefaultInstance() : markfaceMsg_;
                }
            }
            /**
             * <code>.MarketFaceRec markfaceMsg = 3;</code>
             */
            private com.google.protobuf.SingleFieldBuilderV3<
                    RichMsg.MarketFaceRec, RichMsg.MarketFaceRec.Builder, RichMsg.MarketFaceRecOrBuilder>
            getMarkfaceMsgFieldBuilder() {
                if (markfaceMsgBuilder_ == null) {
                    markfaceMsgBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                            RichMsg.MarketFaceRec, RichMsg.MarketFaceRec.Builder, RichMsg.MarketFaceRecOrBuilder>(
                            getMarkfaceMsg(),
                            getParentForChildren(),
                            isClean());
                    markfaceMsg_ = null;
                }
                return markfaceMsgBuilder_;
            }

            private java.lang.Object sourceMsgInfo_ = "";
            /**
             * <code>string sourceMsgInfo = 4;</code>
             * @return The sourceMsgInfo.
             */
            public java.lang.String getSourceMsgInfo() {
                java.lang.Object ref = sourceMsgInfo_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    sourceMsgInfo_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <code>string sourceMsgInfo = 4;</code>
             * @return The bytes for sourceMsgInfo.
             */
            public com.google.protobuf.ByteString
            getSourceMsgInfoBytes() {
                java.lang.Object ref = sourceMsgInfo_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    sourceMsgInfo_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <code>string sourceMsgInfo = 4;</code>
             * @param value The sourceMsgInfo to set.
             * @return This builder for chaining.
             */
            public Builder setSourceMsgInfo(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                sourceMsgInfo_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>string sourceMsgInfo = 4;</code>
             * @return This builder for chaining.
             */
            public Builder clearSourceMsgInfo() {

                sourceMsgInfo_ = getDefaultInstance().getSourceMsgInfo();
                onChanged();
                return this;
            }
            /**
             * <code>string sourceMsgInfo = 4;</code>
             * @param value The bytes for sourceMsgInfo to set.
             * @return This builder for chaining.
             */
            public Builder setSourceMsgInfoBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

                sourceMsgInfo_ = value;
                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:Elem)
        }

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

        public static RichMsg.Elem getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public RichMsg.Elem getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

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

        /**
         * <code>string strMsgTxt = 1;</code>
         * @return The strMsgTxt.
         */
        java.lang.String getStrMsgTxt();
        /**
         * <code>string strMsgTxt = 1;</code>
         * @return The bytes for strMsgTxt.
         */
        com.google.protobuf.ByteString
        getStrMsgTxtBytes();

        /**
         * <code>string strFromMobile = 2;</code>
         * @return The strFromMobile.
         */
        java.lang.String getStrFromMobile();
        /**
         * <code>string strFromMobile = 2;</code>
         * @return The bytes for strFromMobile.
         */
        com.google.protobuf.ByteString
        getStrFromMobileBytes();

        /**
         * <code>string strFromName = 3;</code>
         * @return The strFromName.
         */
        java.lang.String getStrFromName();
        /**
         * <code>string strFromName = 3;</code>
         * @return The bytes for strFromName.
         */
        com.google.protobuf.ByteString
        getStrFromNameBytes();
    }
    /**
     * Protobuf type {@code SafeMoreInfo}
     */
    public static final class SafeMoreInfo extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:SafeMoreInfo)
            SafeMoreInfoOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use SafeMoreInfo.newBuilder() to construct.
        private SafeMoreInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private SafeMoreInfo() {
            strMsgTxt_ = "";
            strFromMobile_ = "";
            strFromName_ = "";
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private SafeMoreInfo(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            this();
            if (extensionRegistry == null) {
                throw new java.lang.NullPointerException();
            }
            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
                    com.google.protobuf.UnknownFieldSet.newBuilder();
            try {
                boolean done = false;
                while (!done) {
                    int tag = input.readTag();
                    switch (tag) {
                        case 0:
                            done = true;
                            break;
                        case 10: {
                            java.lang.String s = input.readStringRequireUtf8();

                            strMsgTxt_ = s;
                            break;
                        }
                        case 18: {
                            java.lang.String s = input.readStringRequireUtf8();

                            strFromMobile_ = s;
                            break;
                        }
                        case 26: {
                            java.lang.String s = input.readStringRequireUtf8();

                            strFromName_ = s;
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
                throw new com.google.protobuf.InvalidProtocolBufferException(
                        e).setUnfinishedMessage(this);
            } finally {
                this.unknownFields = unknownFields.build();
                makeExtensionsImmutable();
            }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
            return RichMsg.internal_static_SafeMoreInfo_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return RichMsg.internal_static_SafeMoreInfo_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            RichMsg.SafeMoreInfo.class, RichMsg.SafeMoreInfo.Builder.class);
        }

        public static final int STRMSGTXT_FIELD_NUMBER = 1;
        private volatile java.lang.Object strMsgTxt_;
        /**
         * <code>string strMsgTxt = 1;</code>
         * @return The strMsgTxt.
         */
        @java.lang.Override
        public java.lang.String getStrMsgTxt() {
            java.lang.Object ref = strMsgTxt_;
            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();
                strMsgTxt_ = s;
                return s;
            }
        }
        /**
         * <code>string strMsgTxt = 1;</code>
         * @return The bytes for strMsgTxt.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getStrMsgTxtBytes() {
            java.lang.Object ref = strMsgTxt_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                strMsgTxt_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int STRFROMMOBILE_FIELD_NUMBER = 2;
        private volatile java.lang.Object strFromMobile_;
        /**
         * <code>string strFromMobile = 2;</code>
         * @return The strFromMobile.
         */
        @java.lang.Override
        public java.lang.String getStrFromMobile() {
            java.lang.Object ref = strFromMobile_;
            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();
                strFromMobile_ = s;
                return s;
            }
        }
        /**
         * <code>string strFromMobile = 2;</code>
         * @return The bytes for strFromMobile.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getStrFromMobileBytes() {
            java.lang.Object ref = strFromMobile_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                strFromMobile_ = b;
                return b;
            } else {
                return (com.google.protobuf.ByteString) ref;
            }
        }

        public static final int STRFROMNAME_FIELD_NUMBER = 3;
        private volatile java.lang.Object strFromName_;
        /**
         * <code>string strFromName = 3;</code>
         * @return The strFromName.
         */
        @java.lang.Override
        public java.lang.String getStrFromName() {
            java.lang.Object ref = strFromName_;
            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();
                strFromName_ = s;
                return s;
            }
        }
        /**
         * <code>string strFromName = 3;</code>
         * @return The bytes for strFromName.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getStrFromNameBytes() {
            java.lang.Object ref = strFromName_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                strFromName_ = 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 (!getStrMsgTxtBytes().isEmpty()) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 1, strMsgTxt_);
            }
            if (!getStrFromMobileBytes().isEmpty()) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 2, strFromMobile_);
            }
            if (!getStrFromNameBytes().isEmpty()) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 3, strFromName_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (!getStrMsgTxtBytes().isEmpty()) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, strMsgTxt_);
            }
            if (!getStrFromMobileBytes().isEmpty()) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, strFromMobile_);
            }
            if (!getStrFromNameBytes().isEmpty()) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, strFromName_);
            }
            size += unknownFields.getSerializedSize();
            memoizedSize = size;
            return size;
        }

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

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

        @java.lang.Override
        public int hashCode() {
            if (memoizedHashCode != 0) {
                return memoizedHashCode;
            }
            int hash = 41;
            hash = (19 * hash) + getDescriptor().hashCode();
            hash = (37 * hash) + STRMSGTXT_FIELD_NUMBER;
            hash = (53 * hash) + getStrMsgTxt().hashCode();
            hash = (37 * hash) + STRFROMMOBILE_FIELD_NUMBER;
            hash = (53 * hash) + getStrFromMobile().hashCode();
            hash = (37 * hash) + STRFROMNAME_FIELD_NUMBER;
            hash = (53 * hash) + getStrFromName().hashCode();
            hash = (29 * hash) + unknownFields.hashCode();
            memoizedHashCode = hash;
            return hash;
        }

        public static RichMsg.SafeMoreInfo parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static RichMsg.SafeMoreInfo parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static RichMsg.SafeMoreInfo parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static RichMsg.SafeMoreInfo parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static RichMsg.SafeMoreInfo parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static RichMsg.SafeMoreInfo parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static RichMsg.SafeMoreInfo parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static RichMsg.SafeMoreInfo 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 RichMsg.SafeMoreInfo parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static RichMsg.SafeMoreInfo 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 RichMsg.SafeMoreInfo parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static RichMsg.SafeMoreInfo 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(RichMsg.SafeMoreInfo 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 SafeMoreInfo}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:SafeMoreInfo)
                RichMsg.SafeMoreInfoOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return RichMsg.internal_static_SafeMoreInfo_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return RichMsg.internal_static_SafeMoreInfo_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                RichMsg.SafeMoreInfo.class, RichMsg.SafeMoreInfo.Builder.class);
            }

            // Construct using RichMsg.SafeMoreInfo.newBuilder()
            private Builder() {
                maybeForceBuilderInitialization();
            }

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

                strFromMobile_ = "";

                strFromName_ = "";

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return RichMsg.internal_static_SafeMoreInfo_descriptor;
            }

            @java.lang.Override
            public RichMsg.SafeMoreInfo getDefaultInstanceForType() {
                return RichMsg.SafeMoreInfo.getDefaultInstance();
            }

            @java.lang.Override
            public RichMsg.SafeMoreInfo build() {
                RichMsg.SafeMoreInfo result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public RichMsg.SafeMoreInfo buildPartial() {
                RichMsg.SafeMoreInfo result = new RichMsg.SafeMoreInfo(this);
                result.strMsgTxt_ = strMsgTxt_;
                result.strFromMobile_ = strFromMobile_;
                result.strFromName_ = strFromName_;
                onBuilt();
                return result;
            }

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

            public Builder mergeFrom(RichMsg.SafeMoreInfo other) {
                if (other == RichMsg.SafeMoreInfo.getDefaultInstance()) return this;
                if (!other.getStrMsgTxt().isEmpty()) {
                    strMsgTxt_ = other.strMsgTxt_;
                    onChanged();
                }
                if (!other.getStrFromMobile().isEmpty()) {
                    strFromMobile_ = other.strFromMobile_;
                    onChanged();
                }
                if (!other.getStrFromName().isEmpty()) {
                    strFromName_ = other.strFromName_;
                    onChanged();
                }
                this.mergeUnknownFields(other.unknownFields);
                onChanged();
                return this;
            }

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

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

            private java.lang.Object strMsgTxt_ = "";
            /**
             * <code>string strMsgTxt = 1;</code>
             * @return The strMsgTxt.
             */
            public java.lang.String getStrMsgTxt() {
                java.lang.Object ref = strMsgTxt_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    strMsgTxt_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <code>string strMsgTxt = 1;</code>
             * @return The bytes for strMsgTxt.
             */
            public com.google.protobuf.ByteString
            getStrMsgTxtBytes() {
                java.lang.Object ref = strMsgTxt_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    strMsgTxt_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <code>string strMsgTxt = 1;</code>
             * @param value The strMsgTxt to set.
             * @return This builder for chaining.
             */
            public Builder setStrMsgTxt(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                strMsgTxt_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>string strMsgTxt = 1;</code>
             * @return This builder for chaining.
             */
            public Builder clearStrMsgTxt() {

                strMsgTxt_ = getDefaultInstance().getStrMsgTxt();
                onChanged();
                return this;
            }
            /**
             * <code>string strMsgTxt = 1;</code>
             * @param value The bytes for strMsgTxt to set.
             * @return This builder for chaining.
             */
            public Builder setStrMsgTxtBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private java.lang.Object strFromMobile_ = "";
            /**
             * <code>string strFromMobile = 2;</code>
             * @return The strFromMobile.
             */
            public java.lang.String getStrFromMobile() {
                java.lang.Object ref = strFromMobile_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    strFromMobile_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <code>string strFromMobile = 2;</code>
             * @return The bytes for strFromMobile.
             */
            public com.google.protobuf.ByteString
            getStrFromMobileBytes() {
                java.lang.Object ref = strFromMobile_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    strFromMobile_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <code>string strFromMobile = 2;</code>
             * @param value The strFromMobile to set.
             * @return This builder for chaining.
             */
            public Builder setStrFromMobile(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                strFromMobile_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>string strFromMobile = 2;</code>
             * @return This builder for chaining.
             */
            public Builder clearStrFromMobile() {

                strFromMobile_ = getDefaultInstance().getStrFromMobile();
                onChanged();
                return this;
            }
            /**
             * <code>string strFromMobile = 2;</code>
             * @param value The bytes for strFromMobile to set.
             * @return This builder for chaining.
             */
            public Builder setStrFromMobileBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

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

            private java.lang.Object strFromName_ = "";
            /**
             * <code>string strFromName = 3;</code>
             * @return The strFromName.
             */
            public java.lang.String getStrFromName() {
                java.lang.Object ref = strFromName_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    strFromName_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <code>string strFromName = 3;</code>
             * @return The bytes for strFromName.
             */
            public com.google.protobuf.ByteString
            getStrFromNameBytes() {
                java.lang.Object ref = strFromName_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    strFromName_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <code>string strFromName = 3;</code>
             * @param value The strFromName to set.
             * @return This builder for chaining.
             */
            public Builder setStrFromName(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                strFromName_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>string strFromName = 3;</code>
             * @return This builder for chaining.
             */
            public Builder clearStrFromName() {

                strFromName_ = getDefaultInstance().getStrFromName();
                onChanged();
                return this;
            }
            /**
             * <code>string strFromName = 3;</code>
             * @param value The bytes for strFromName to set.
             * @return This builder for chaining.
             */
            public Builder setStrFromNameBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

                strFromName_ = value;
                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:SafeMoreInfo)
        }

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

        public static RichMsg.SafeMoreInfo getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public RichMsg.SafeMoreInfo getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

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

        /**
         * <code>string str = 16;</code>
         * @return The str.
         */
        java.lang.String getStr();
        /**
         * <code>string str = 16;</code>
         * @return The bytes for str.
         */
        com.google.protobuf.ByteString
        getStrBytes();
    }
    /**
     * Protobuf type {@code Test}
     */
    public static final class Test extends
            com.google.protobuf.GeneratedMessageV3 implements
            // @@protoc_insertion_point(message_implements:Test)
            TestOrBuilder {
        private static final long serialVersionUID = 0L;
        // Use Test.newBuilder() to construct.
        private Test(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
            super(builder);
        }
        private Test() {
            str_ = "";
        }

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

        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
            return this.unknownFields;
        }
        private Test(
                com.google.protobuf.CodedInputStream input,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            this();
            if (extensionRegistry == null) {
                throw new java.lang.NullPointerException();
            }
            com.google.protobuf.UnknownFieldSet.Builder unknownFields =
                    com.google.protobuf.UnknownFieldSet.newBuilder();
            try {
                boolean done = false;
                while (!done) {
                    int tag = input.readTag();
                    switch (tag) {
                        case 0:
                            done = true;
                            break;
                        case 130: {
                            java.lang.String s = input.readStringRequireUtf8();

                            str_ = s;
                            break;
                        }
                        default: {
                            if (!parseUnknownField(
                                    input, unknownFields, extensionRegistry, tag)) {
                                done = true;
                            }
                            break;
                        }
                    }
                }
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
                throw e.setUnfinishedMessage(this);
            } catch (java.io.IOException e) {
                throw new com.google.protobuf.InvalidProtocolBufferException(
                        e).setUnfinishedMessage(this);
            } finally {
                this.unknownFields = unknownFields.build();
                makeExtensionsImmutable();
            }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
            return RichMsg.internal_static_Test_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
            return RichMsg.internal_static_Test_fieldAccessorTable
                    .ensureFieldAccessorsInitialized(
                            RichMsg.Test.class, RichMsg.Test.Builder.class);
        }

        public static final int STR_FIELD_NUMBER = 16;
        private volatile java.lang.Object str_;
        /**
         * <code>string str = 16;</code>
         * @return The str.
         */
        @java.lang.Override
        public java.lang.String getStr() {
            java.lang.Object ref = str_;
            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();
                str_ = s;
                return s;
            }
        }
        /**
         * <code>string str = 16;</code>
         * @return The bytes for str.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
        getStrBytes() {
            java.lang.Object ref = str_;
            if (ref instanceof java.lang.String) {
                com.google.protobuf.ByteString b =
                        com.google.protobuf.ByteString.copyFromUtf8(
                                (java.lang.String) ref);
                str_ = 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 (!getStrBytes().isEmpty()) {
                com.google.protobuf.GeneratedMessageV3.writeString(output, 16, str_);
            }
            unknownFields.writeTo(output);
        }

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

            size = 0;
            if (!getStrBytes().isEmpty()) {
                size += com.google.protobuf.GeneratedMessageV3.computeStringSize(16, str_);
            }
            size += unknownFields.getSerializedSize();
            memoizedSize = size;
            return size;
        }

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

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

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

        public static RichMsg.Test parseFrom(
                java.nio.ByteBuffer data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static RichMsg.Test parseFrom(
                java.nio.ByteBuffer data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static RichMsg.Test parseFrom(
                com.google.protobuf.ByteString data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static RichMsg.Test parseFrom(
                com.google.protobuf.ByteString data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static RichMsg.Test parseFrom(byte[] data)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data);
        }
        public static RichMsg.Test parseFrom(
                byte[] data,
                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                throws com.google.protobuf.InvalidProtocolBufferException {
            return PARSER.parseFrom(data, extensionRegistry);
        }
        public static RichMsg.Test parseFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static RichMsg.Test 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 RichMsg.Test parseDelimitedFrom(java.io.InputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseDelimitedWithIOException(PARSER, input);
        }
        public static RichMsg.Test 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 RichMsg.Test parseFrom(
                com.google.protobuf.CodedInputStream input)
                throws java.io.IOException {
            return com.google.protobuf.GeneratedMessageV3
                    .parseWithIOException(PARSER, input);
        }
        public static RichMsg.Test 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(RichMsg.Test 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 Test}
         */
        public static final class Builder extends
                com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
                // @@protoc_insertion_point(builder_implements:Test)
                RichMsg.TestOrBuilder {
            public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
                return RichMsg.internal_static_Test_descriptor;
            }

            @java.lang.Override
            protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
                return RichMsg.internal_static_Test_fieldAccessorTable
                        .ensureFieldAccessorsInitialized(
                                RichMsg.Test.class, RichMsg.Test.Builder.class);
            }

            // Construct using RichMsg.Test.newBuilder()
            private Builder() {
                maybeForceBuilderInitialization();
            }

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

                return this;
            }

            @java.lang.Override
            public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
                return RichMsg.internal_static_Test_descriptor;
            }

            @java.lang.Override
            public RichMsg.Test getDefaultInstanceForType() {
                return RichMsg.Test.getDefaultInstance();
            }

            @java.lang.Override
            public RichMsg.Test build() {
                RichMsg.Test result = buildPartial();
                if (!result.isInitialized()) {
                    throw newUninitializedMessageException(result);
                }
                return result;
            }

            @java.lang.Override
            public RichMsg.Test buildPartial() {
                RichMsg.Test result = new RichMsg.Test(this);
                result.str_ = str_;
                onBuilt();
                return result;
            }

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

            public Builder mergeFrom(RichMsg.Test other) {
                if (other == RichMsg.Test.getDefaultInstance()) return this;
                if (!other.getStr().isEmpty()) {
                    str_ = other.str_;
                    onChanged();
                }
                this.mergeUnknownFields(other.unknownFields);
                onChanged();
                return this;
            }

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

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

            private java.lang.Object str_ = "";
            /**
             * <code>string str = 16;</code>
             * @return The str.
             */
            public java.lang.String getStr() {
                java.lang.Object ref = str_;
                if (!(ref instanceof java.lang.String)) {
                    com.google.protobuf.ByteString bs =
                            (com.google.protobuf.ByteString) ref;
                    java.lang.String s = bs.toStringUtf8();
                    str_ = s;
                    return s;
                } else {
                    return (java.lang.String) ref;
                }
            }
            /**
             * <code>string str = 16;</code>
             * @return The bytes for str.
             */
            public com.google.protobuf.ByteString
            getStrBytes() {
                java.lang.Object ref = str_;
                if (ref instanceof String) {
                    com.google.protobuf.ByteString b =
                            com.google.protobuf.ByteString.copyFromUtf8(
                                    (java.lang.String) ref);
                    str_ = b;
                    return b;
                } else {
                    return (com.google.protobuf.ByteString) ref;
                }
            }
            /**
             * <code>string str = 16;</code>
             * @param value The str to set.
             * @return This builder for chaining.
             */
            public Builder setStr(
                    java.lang.String value) {
                if (value == null) {
                    throw new NullPointerException();
                }

                str_ = value;
                onChanged();
                return this;
            }
            /**
             * <code>string str = 16;</code>
             * @return This builder for chaining.
             */
            public Builder clearStr() {

                str_ = getDefaultInstance().getStr();
                onChanged();
                return this;
            }
            /**
             * <code>string str = 16;</code>
             * @param value The bytes for str to set.
             * @return This builder for chaining.
             */
            public Builder setStrBytes(
                    com.google.protobuf.ByteString value) {
                if (value == null) {
                    throw new NullPointerException();
                }
                checkByteStringIsUtf8(value);

                str_ = value;
                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:Test)
        }

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

        public static RichMsg.Test getDefaultInstance() {
            return DEFAULT_INSTANCE;
        }

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

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

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

        @java.lang.Override
        public RichMsg.Test getDefaultInstanceForType() {
            return DEFAULT_INSTANCE;
        }

    }

    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_ForwardExtra_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_ForwardExtra_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_PicRec_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_PicRec_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_MarketFaceRec_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_MarketFaceRec_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_Msg_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_Msg_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_Elem_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_Elem_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_SafeMoreInfo_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_SafeMoreInfo_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
            internal_static_Test_descriptor;
    private static final
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internal_static_Test_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\rRichMsg.proto\"\255\001\n\014ForwardExtra\022\025\n\rforw" +
                        "ard_orgId\030\001 \001(\005\022\026\n\016forward_orgUin\030\002 \001(\t\022" +
                        "\032\n\022forward_orgUinType\030\003 \001(\005\022\026\n\016forward_o" +
                        "rgUrl\030\004 \001(\t\022\031\n\021forward_thumbPath\030\005 \001(\t\022\037" +
                        "\n\027forward_orgFileSizeType\030\006 \001(\005\"\366\005\n\006PicR" +
                        "ec\022\021\n\tlocalPath\030\001 \001(\t\022\014\n\004size\030\002 \001(\005\022\014\n\004t" +
                        "ype\030\003 \001(\005\022\016\n\006isRead\030\004 \001(\010\022\014\n\004uuid\030\005 \001(\t\022" +
                        "\013\n\003md5\030\006 \001(\t\022\033\n\023serverStorageSource\030\007 \001(" +
                        "\t\022\023\n\013thumbMsgUrl\030\010 \001(\t\022\021\n\tbigMsgUrl\030\t \001(" +
                        "\t\022\021\n\trawMsgUrl\030\n \001(\t\022\024\n\014fileSizeFlag\030\013 \001" +
                        "(\005\022\026\n\016uiOperatorFlag\030\014 \001(\005\022\"\n\013forwardInf" +
                        "o\030\r \001(\0132\r.ForwardExtra\022\017\n\007version\030\016 \001(\005\022" +
                        "\020\n\010isReport\030\017 \001(\005\022\023\n\013groupFileID\030\020 \001(\004\022\021" +
                        "\n\tlocalUUID\030\021 \001(\t\022\024\n\014preDownState\030\022 \001(\005\022" +
                        "\026\n\016preDownNetwork\030\023 \001(\005\022\021\n\tpreviewed\030\024 \001" +
                        "(\005\022\032\n\022uint32_thumb_width\030\025 \001(\r\022\033\n\023uint32" +
                        "_thumb_height\030\026 \001(\r\022\024\n\014uint32_width\030\027 \001(" +
                        "\r\022\025\n\ruint32_height\030\030 \001(\r\022\031\n\021uint32_image" +
                        "_type\030\031 \001(\r\022\027\n\017uint32_show_len\030\032 \001(\r\022\033\n\023" +
                        "uint32_download_len\030\033 \001(\r\022\032\n\022uint32_curr" +
                        "ent_len\030\034 \001(\r\022\034\n\024notPreDownloadReason\030\035 " +
                        "\001(\r\022\021\n\tenableEnc\030\036 \001(\010\022\026\n\016bigThumbMsgUrl" +
                        "\030\037 \001(\t\022\031\n\021bytes_pb_reserved\030  \001(\014\022%\n\035boo" +
                        "l_story_pic_send_to_recent\030! \001(\010\"\017\n\rMark" +
                        "etFaceRec\"\033\n\003Msg\022\024\n\005elems\030\001 \003(\0132\005.Elem\"c" +
                        "\n\004Elem\022\017\n\007textMsg\030\001 \001(\014\022\016\n\006picMsg\030\002 \001(\014\022" +
                        "#\n\013markfaceMsg\030\003 \001(\0132\016.MarketFaceRec\022\025\n\r" +
                        "sourceMsgInfo\030\004 \001(\t\"M\n\014SafeMoreInfo\022\021\n\ts" +
                        "trMsgTxt\030\001 \001(\t\022\025\n\rstrFromMobile\030\002 \001(\t\022\023\n" +
                        "\013strFromName\030\003 \001(\t\"\023\n\004Test\022\013\n\003str\030\020 \001(\tb" +
                        "\006proto3"
        };
        descriptor = com.google.protobuf.Descriptors.FileDescriptor
                .internalBuildGeneratedFileFrom(descriptorData,
                        new com.google.protobuf.Descriptors.FileDescriptor[] {
                        });
        internal_static_ForwardExtra_descriptor =
                getDescriptor().getMessageTypes().get(0);
        internal_static_ForwardExtra_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_ForwardExtra_descriptor,
                new java.lang.String[] { "ForwardOrgId", "ForwardOrgUin", "ForwardOrgUinType", "ForwardOrgUrl", "ForwardThumbPath", "ForwardOrgFileSizeType", });
        internal_static_PicRec_descriptor =
                getDescriptor().getMessageTypes().get(1);
        internal_static_PicRec_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_PicRec_descriptor,
                new java.lang.String[] { "LocalPath", "Size", "Type", "IsRead", "Uuid", "Md5", "ServerStorageSource", "ThumbMsgUrl", "BigMsgUrl", "RawMsgUrl", "FileSizeFlag", "UiOperatorFlag", "ForwardInfo", "Version", "IsReport", "GroupFileID", "LocalUUID", "PreDownState", "PreDownNetwork", "Previewed", "Uint32ThumbWidth", "Uint32ThumbHeight", "Uint32Width", "Uint32Height", "Uint32ImageType", "Uint32ShowLen", "Uint32DownloadLen", "Uint32CurrentLen", "NotPreDownloadReason", "EnableEnc", "BigThumbMsgUrl", "BytesPbReserved", "BoolStoryPicSendToRecent", });
        internal_static_MarketFaceRec_descriptor =
                getDescriptor().getMessageTypes().get(2);
        internal_static_MarketFaceRec_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_MarketFaceRec_descriptor,
                new java.lang.String[] { });
        internal_static_Msg_descriptor =
                getDescriptor().getMessageTypes().get(3);
        internal_static_Msg_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_Msg_descriptor,
                new java.lang.String[] { "Elems", });
        internal_static_Elem_descriptor =
                getDescriptor().getMessageTypes().get(4);
        internal_static_Elem_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_Elem_descriptor,
                new java.lang.String[] { "TextMsg", "PicMsg", "MarkfaceMsg", "SourceMsgInfo", });
        internal_static_SafeMoreInfo_descriptor =
                getDescriptor().getMessageTypes().get(5);
        internal_static_SafeMoreInfo_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_SafeMoreInfo_descriptor,
                new java.lang.String[] { "StrMsgTxt", "StrFromMobile", "StrFromName", });
        internal_static_Test_descriptor =
                getDescriptor().getMessageTypes().get(6);
        internal_static_Test_fieldAccessorTable = new
                com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
                internal_static_Test_descriptor,
                new java.lang.String[] { "Str", });
    }

    // @@protoc_insertion_point(outer_class_scope)
}


